FPGA Editor,相信和Xilinx FPGA打过交道的人大都听说过,但用过的人就不是很多。我可以负责任的说,你一旦用过FPGA Editor,就会爱不释手,不能自已。
我毛华望QQ849886241。技术博客http://blog.csdn.net/my_share
好像很多的图都看不到了。网址一个。http://blog.sina.com.cn/s/articlelist_1836601230_0_1.html
这里有一些内容。
一、FPGA Editor是个啥
FPGA Editor是Xilinx提供的一个强大的FPGA后端工具,能够查看P&R(Place and Route)之后的网表,并对其进行修改。请看如下几个场景:
- 一个巨大的设计,把Reset的极性搞反了。改RTL重新编译?时间就是这么浪费的,用Fpga Editor吧,几分钟搞定。
- IO本应该上拉的,结果忘了。LVDS没有外部跨接电阻,但忘了加DIFF_TERM。加约束重新P&R?还是用Fpga Editor吧。
- 有一些简单逻辑搞错了,想要将if(a==2'b10)改成if(a>=2'b10),这也是可以用Fgpa Editor来完成的。
- 把内部变量引向引脚,修改chipscope,用FPGA Editor快捷很多。
- 调节IDELAY的延时,PLL的相位,FPGA Editor。
- 手动调整布局布线,这个FPGA Editor可以做,但很多时候很难做。。。
二、启动FPGA Editor
FPGA Editor可以从ISE里面启动,也可以单独启动。ISE里面启动的位置见下图:
三、界面布局
- 图标栏:关于显示的常用操作
- 命令栏:位于最右侧,关于FPGA的常用操作
- Array栏:布满了各种资源
- List栏:同样是各种资源,通常用来检索用
- Wrold栏:在整个FPGA中的位置
- Console:打印信息
- 命令行:最下面还有一个命令行,可以输入各种指令
有时不小心会把某些控制信号的极性搞错了,比如复位啊、片选啊、使能啊一类的。这种错误令人恼火,其实FPGA Editor可以轻松应对。第一步,启动FPGA Editor,并将工作模式更改为可读写。第二步:在List栏里搜索需要更改极性的信号,rstn。第五步,点击begin editing按钮进行编辑模式。第六步,单击选择器靠上的那个小三角,选择直通的一路。第八步,Tools->Run Bitgen生成bit文件,搞定。可以将新的bit文件下到板子里去试试,看有什么变化:)
-
经过漫长等待,终于编译完了,结果时序不满足。脾气再好,恐怕也有点上火。这时候,可能你想要降低些频率来迎合setup time,也可能想调整一点相位来迎合offset in。无论如何,先让时序过关跑一下。这个场合又是FPGA Editor出场的时刻了。还是先在list栏找到PLL,选中并打开。PLL窗口的上半部分是PLL_ADV的IO,下边有部分属性,我们首先修改一下输出的时钟频率。影响输出频率的有三个因素:CLKFBOUT_MULT,DIVCLK_DIVIDE,以及CLKOUT对应的DIVIDE。输出频率=输入频率*CLKFBOUT_MULT/DIVCLK_DIVIDE/CLKOUT对应的DIVIDE。仔细看过下面的属性,除了DIVCLK_DIVIDE之外,并没有发现其他两个。
其实,更多属性都在另外一个窗口中,单击按钮栏中的“F=”按钮。
如果要修改相位也很简单,只要修改CLKOUTn_PHASE属性就可以了。
对于如下一段语句:wire [3:0] din;reg dout;always @(posedge clk)dout<=&din;这段语句实现的是一个4输入与门,我们要将他改写成一个4输入的或门。打开FPGA Editor,首先找到dout这个寄存器。组合逻辑经常被优化,名字也是千变万化,因此从寄存器入手找到信号不失为明智的选择。
在Virtex5中每个Slice包含有4个LUT(分别编号为A,B,C,D),这里只用了编号为D的LUT的一个输出(D6LUT)。在属性窗口中,可以看到D6LUT后面描述的是(A1*(A5*(A3*A4))),这里的*表示逻辑与,A1,A3,A4,A5表示的是6输入LUT中的4个输入,因此描述了一个4输入与门的逻辑。如果想修改为4输入或门,只需要将D6LUT的值改为(A1+(A5+(A3+A4)))。描述LUT的功能支持以下几个运算符:- *:与
- +:或
- @:异或
- ~:非
一、移动单元有些情况下我们想要微调一下某些单元的位置,比如引脚分配错了、改善时序等等。这些工作可以通过三个步骤来完成:1.Unplace想要移动的单元。在选中的单元上右键,选择unplace。
2.将单元place到新位置。在list栏中找到需要place的单元,在array栏中找到想要place的位置,将list栏内的单元拖拽到array中的正确位置。
3.进行route。
二、添加/删除单元删除单元非常简单,选中要删除的单元,单击右侧按钮中的delete就可以了。添加单元的方法是选中空的位置,单击右侧按钮中的add,之后给单元起个名字就可以了。在调试阶段,将一些内部变量引到IO上,或者使用chipscope观察都是常见的手段。但是每次更改查看的变量都需要重新P&R会浪费掉大量的时间,而且每次P&R的结果可能会不一致,导致观察的结果出现偏差。一个简单的修改方法是通过FPGA Editor。一、ProbeProbe的作用是将内部变量引到IO上,供外部测量仪器使用。单击右侧按钮中的Probe打开窗口:
二、ILAILA是Chipscope中观察信号的模块,在FPGA Editor中可以方便的更改其连接的信号。单击右侧按钮中的ila。