Q51、编译ModelSim需求的Xilinx库的操作
首要要将装置的ModelSim目录下的ModelSim.ini特点设置为存档类型(去掉只读)
然后从DOS界面到ISE装置目录bin\nt(假如在Windows的环境变量中现已设置过Xilinx途径,就不必了),
运转指令:(for ISE 6)
compxlib -s mTI_se -f all -l all -p e:\modeltech_6.0\win32 -o e:\modeltech_6.0\xilinx_libs (for ISE 6)
-p 指定modelsim装置目录
-o 指定编译库输出目录
(for ISE 7)
compxlib -s mTI_se -arch all -lib all -l all -p e:\modeltech_6.0\win32 -dir e:\modeltech_6.0\xilinx_libs (for ISE 7)
-arch : device architecture:spartan2, virtex, etc.
-lib : library: unisim, smartmodel, etc.
新的版别把本来的-f拆开成了-arch和-lib,而-f则指读取文件,不过也还能够兼容本来的写法的
编译之后,compxlib会主动修正modelsim.ini,从头翻开ModelSim,就能看到新的库了
Q52 SE中一些常用的实用功用
镜像:Project –> Take Snapshot,用这个很简略做版别操控;
打包:Project –> Archive,将工程文件夹打包,便利搬运与沟通
Q53、门控时钟收拾与总结
当归纳器呈现这样的Warning时,即提示发现了门控时钟
WARNING DesignRules:372 – Netcheck: Gated clock. Clock net _n0019 is sourced by
a combinatorial pin. This is not good design pracTIce. Use the CE pin to
control the loading of data into the flip-flop.
Q54:假如一个时钟节点由组合逻辑驱动,那么它就形成了门控时钟了。归纳器主张用组合逻辑驱动CE引脚。
为什么归纳器会呈现这样的正告呢?
本来门控时钟简略发生毛刺、增加延时、引起时钟漂移(Clock Skew),而且还会下降可测性。
Q55:门控时钟引起的这些问题怎样处理呢?
用组合逻辑来驱动CE端口,而不要驱动Clock端口,这样能更好地坚持同步。
Q56:说了那么多害处,有没有优点呢?
门控时钟的优点常用在ASIC而不是FPGA中。在ASIC中能够经过门控时钟下降功耗。不过即便是在ASIC中,上述的缺陷仍是存在的,所以必需求小心肠规划。
Q58:JTAG衔接不上怎么处理?
有时分碰到这样的问题:在iMPACT中履行IniTIalize指令后呈现一连串的Error,无论怎么找不到FPGA了。
假如你遇到的问题跟我描绘的相同,那么下面的办法或许能够为你处理:
1、首要承认并口是否翻开:
在BIOS设置中找到Parallel Port的选项,一般情况下将它设置到EPP+ECP(增强型并口)办法。
2、从头装置ISE顺便的并口驱动程序:
一般情况下发生这种问题的最主要的原因是Xilinx ISE的并口驱动被掩盖,或许你装置ISE的时分就没有装置并口驱动程序。因而,处理办法便是从头装置并口驱动程序。提示:你只需求装置并口驱动程序,而不需求装置整个ISE,整个进程只需求不到1分钟就能够处理的。
Q59:、ISE中增加特点,使ModelSim能显现仿真代码掩盖率
在ISE中的操作
1) 点中modelsim图标,右键特点
2) VLOG指令行参加-cover bcest
3) VSIM指令行参加-coverage
(此条来自EDACN)
Q60、Xilinx软件装置事项
Xilinx悉数软件都不能装置在带空格带中文字符的目录中,也便是说不能装在Program Files这个目录下。主张一切软件都装在某个盘的根目录下。
需求留意的是,SysGen由于需求装置在Matlab的toolbox目录下,因而Matlab也不能够装置在带空格带中文的目录中!
Q61:为什么Xilinx器材中BRAM巨细是18K?
18K是为了寄存校验位的考虑。一般需求校验时,每8bit需一位校验位,因而长度是16+2=18。
可是,BRAM并没有发生校验位的功用,他内部一切的位功用都是共同的,都能够用作存储。
在运用BRAM时,存储深度以2k为分界点,假如存储深度=2k,即存储办法为9bit x 2k,那么此刻能够用满18K的BRAM;而假如存储深度>2k,即4bit x 4K或2 bit x 8k这种办法,则最多只能用到16K的BRAM。
Q62:Toggle Path是什么意思?
ISE中有个指令叫做Toggle Path,它的效果便是改动Project中文件的相对途径/绝对途径存储办法。这儿所说的文件,是指非工程目录下的文件。
详细解说拜见Xilinx Answer Record 23415
Q63:iMPACT可不能够独自装?
iMPACT能够独自装置。
ISE8.2装置时能够选Standalone Programming Tool,这样就会只装impact。不过还要记住还要选你运用的Cable Driver。
可是8.2有个问题:装好的impact会由于短少MSVCR7.dll而不能发动
…
所以,要么你还顺手带一个MSVCR7.dll,要么用其他版别:)
1. waveform compare
比较两个wlf文件。
Tools -> Waveform Compare -> Comparision Wizard
2. dataflow hierarchy
在dataflow窗口显现出某个信号地点的hierarchy。
Dataflow窗口 -> Tools -> Options -> Show Hierarchy
3. udo file
将某个增加了除顶层端口信号的wave的do文件保存下来,以便下一次敞开时不必从头增加信号和restart。此办法是我觉得最简略的调试办法。
Wave窗口 -> File -> Save -> Format -> x.do
翻开do文件并将有用的内容复制到ISE工程目录下的.udo文件中,今后每次做仿真都能够不必再增加信号了。
假如更改了源代码需求从头compile,也不需求将ModelSim关掉,只需求按向上键,履行一次xx.fdo或许xx.tdo文件即可,由于fdo和tdo文件都会主动调用udo。
4. Verilog FSM state name
Verilog写的状况机在仿真时状况名是数字。假如能运用状况名来调试就会便利许多。
运用virtual function。太长,办法请参阅这儿
5. ModelSim的体系设置
ModelSim的设置信息一个是modelsim.ini,另一个在注册表[HKEY_CURRENT_USER\Software\Model Technology Incorporated\ModelSim]途径下
6. 假如要运用两个自己编译的库
众所周知,ModelSim PE/SE是要编译Xilinx库的。假如既想要ISE8.1的库,又想要ISE8.2的库,直接编译两次会使ModelSim的lib极端紊乱。
处理方案便是,保存三个modelsim.ini文件,一个8.1的,一个8.2的,一个原始的。8.1的和8.2的很好了解,什么时分要用就复制到Modelsim装置目录下去;原始的为了今后还要编译其他版别而保存。
Q64: 怎么进步FPGA的运转速度?)
1. 修正你的体系结构规划,或许VERILOG代码: 这个是最好的办法,别的一个是加TIMING CONSTRAINTS,这个我呆会儿说。详细的办法许多,比方切开大的逻辑,用一个大CLK(比方10NS)完结的大逻辑切开成两个小CLK(6NS)完结的小逻辑,这样尽管延时增加了,可是体系的频率上去了,你的规划就能够打破这个BOTTLE NECK.那什么是大的逻辑什么是小的逻辑,你能够看静态时序陈述,这玩艺你必定要懂,否则你做FPGA便是在玩,即便你的规划能跑起来,那你也是玩起来的,而不是做起来的。
静态时序陈述会提示你那个PATH是推迟最大的,这个推迟便是你规划中限制你频率的PATH,这个延时有两个东西带来,逻辑推迟和布线推迟,逻辑推迟大的话,就切开逻辑为小的逻辑,现在FPGA基本上是一个4输入SRAM,你的逻辑输入就被当作地址,而逻辑成果早就在FPGA装备后放在SRAM里边,这样FPGA运转的时分,依据不同的逻辑输入,从SRAM中获得逻辑成果输出,比方你的逻辑是Fout = f(x,y,z,t),那么x,y,z,t便是当作了一个sram的地址,各种成果就放在sram的16个内存中,依据不同的x,y,z,t来取出成果放在Fout上输出,假如你的逻辑比较复杂,比方要5个输入信号(超过了4个)要在一个clk中完结,那你的逻辑一个sram必定完结不了,需求两个sram,好,这便是一个大逻辑,你要切开它,所谓切开便是搞一个暂时中心变量,比方F= X + Y + Z,你能够分为两步走:第一个CLK: TEMP = X + Y;第二个CLK: F = TEMP + Z。
简略的判别你能够经过归纳成果也能够看到,比方在SYNPLIFYPRO里的TECKNOLOGUY OR RTL VIEWER看你的逻辑是不是在一个SRAM里,假如不在便是大逻辑了。别的一个便是布线推迟带来的频率BOTTLE NECK。这就需求用布局布线的TIME CONSTRAINTS来辅佐你了。
2 TIME CONSTRAINTS:作IC的和作FPGA的什么区别:?CONSTRAINTS! 做IC你不光要写RTL CODE,还要加面积CONSTRAINTS,时序CONSTRAINTS,功耗CONSTRAINTS。那你现在就能够理解了CONSTRAINTS有多重要,CONSTRAINTS得东西要看FPGA厂商的东西了,比方ISE QUANTUS。一起在写RTL代码的时分也要加CONSTRAINTS,由于它直接决议你的网表的结构,假如你的RTL的束缚写的欠好,比方一个状况机有ONEHOT 或许 GRAY CODE风格,你假如写的是ONEHOT风格,可是在CONSTRAINTS却让归纳期归纳为GRAY CODE风格(现在的归纳器很智能,能够把你写的风格代码归纳为你设定的CONSTRAINTS其他风格),那你的网表就不相同了,后边的布局布线东西再尽力也没有用。
要加CONSTRAINTS,就要看FPGA厂商的CONSTRAINTS文件格局,比方UCF(ISE),QSF(ALTERA)。详细不谈了,自己好好学习,这个真实太多,比方你看一个逻辑的输入源和输出目的地太远,带来了很大布线推迟,那就把加CONSTRAINTS把他们尽量拉近,可是间隔近不必定他们布线就近了,FPGA或许会在两个很近的单元之间布很长的线,你还要在CONSTRAINTS里告知布局布线东西让他们的的布线也很短,不引荐用手艺拉线,这样你今后的代码就不能当作IP给被人用了,而是要用CONSTRAINTS,这样你今后写好RTL代码和CONSTRAINTS文件,就能当作IP卖给客户了,否则你就藏着自己玩玩算了。CONSTRAINTS许多,不详细说了,最重要的是PERIOD或许Fmax束缚,别离对应xilinx和altera,详细自己学习,不多说了,一般的应用用这两个CONSTRAINTS就能够了