Aug 31
类似VHDL的Generic语句,Verilog也可以在例化时传递参数

例子见http://www.sutherland-hdl.com/on-line_ref_guide/vl...

传递的参数是子模块中定义的parameter。

传递的方法:
1、module_name #( parameter1, parameter2) inst_name( port_map);

2、module_name #( .parameter_name(para_value), .parameter_name(para_value)) inst_name (port map);

用#方法和port map的写法差不多

3、defparam
defparam heirarchy_path.parameter_name = value;
这种方法与例化分开,参数需要写绝对路径来指定。
Tags: ,
Aug 28
Situation: 我们平时使用Verilog进行状态机编码时,通常使用parameter对状态名进行定义,这样写Case语句的时候就不会对这一串10摸不着头脑。可是通常这样做的话,在Modelsim里看到的还是一串10,使排错非常困难,特别是在用OneHot编码的时候,就看到一串0中间的一个1 #_# 简直要疯掉。

Question: 我们可不可以像VHDL一样,在仿真的时候看到状态名字,而不仅仅是状态编码呢?

答案当然是可以的拉,事在人为嘛!

Solution1:
另外定义一个reg: state_name,长度根据状态名称长度而改变(状态名称字符数x8);
在每个状态执行的语句中加入state_name <= "IDLE"; 类似的一句语句;
仿真时添加state_name进行观察,使用ASCII Radix。

Solution2:
使用如下语句:
`ifdef SIMULATION
       parameter S_idle        = "idle  ";
       parameter S_decode      = "decode";
       parameter S_start       = "start ";
       parameter S_wait        = "wait  ";
       parameter state_wid_msb = 47;
`else
       parameter S_idle        = 4'b0001;
       parameter S_decode      = 4'b0010;
       parameter S_start       = 4'b0100;
       parameter S_wait        = 4'b1000;
       parameter state_wid_msb = 3;
`endif

reg    [state_wid_msb:0] state;

只要在仿真的时候`define SIMULATION就可以了。一样用ASCII Radix查看。

参考资料:
Google Group
Tags: ,
Aug 26
Situation: 在对FPGA设计进行最初步的系统规划的时候,需要进行模块划分,模块接口定义等工作。通常,我们只能在纸上进行设计。虽然在纸上我们可以很随意地书写,而用纸画的不方便就在于,如果对某一个模块进行较大改动,那么常常因为留出的空余纸张不够,而导致拿一张新的白纸重新画一遍。

Question: 我们能不能使用软件进行系统规划呢?

Solution: 答案是可以的。下面以ISE 7.1为例作说明:
Tags: ,
Aug 21

SelectMap32 不指定

RickySu , 18:25 , 技术经验 , 评论(0) , 引用(0) , 阅读(427) , Via 本站原创
SelectMap32要点:

1、SelectMap8和SelectMap32的顺序是相反的,如果一个做了倒序,另一个就不需要了。

2、生成的Bit文件,开头同步字AA 99 55 66 前的0xFFFFFFF是冗余信息,只是为了FPGA配置准备而加的。原来SelectMap8的时候,这4个字节可以提供4个Clock的时间,可是SelectMap32的时候只有一个Clock时间了。因此会导致准备时间不足,配置不成功。因此再加上12个字节的0xFF,变成16个字节,变成了4个Clock时间,基本上就没问题了。

3、当然,不要忘了改Mode Pin:)

4、UG071 P40中也有提到,增加一个CONFIG约束可能有所帮助:
CONFIG CONFIG_MODE=string;
此处string可以是S_SELECTMAP32(Slave SelectMAP32 Mode)或S_SELECTMAP32+READBACK (Slave SelectMAP Mode with Persist set to support Readback and reconfiguration)。
Tags: ,
Aug 15

ChipScope 不指定

RickySu , 09:54 , 技术经验 , 评论(0) , 引用(0) , 阅读(480) , Via 本站原创
Chipscope的基本体系结构是

JTAG <=> ICON <=> VIO/IBA/ILA/ATC2

ICON
ICON是control模块,最多可带15个ILA

VIO
使用VIO时,要注意in/out方向,in表示显示数据,out表示控制信号

ILA
ILA是chipscope最常用的模块吧。里面有很多容易混淆的词汇。match unit, match type等等,我暂时也还没有完全清楚。

Analyzer
使用ILA设置trigger时,很多术语和ILA相同,不理解就不能按照想象的方式设置触发。
waveform有一个很有用的功能是token。这个功能可以使调试状态机变得格外方便。把state信号设置成token,然后编写tok文件(安装目录下有tok文件的sample,编写很方便,特别是对verilog程序来说,只需要删除/替换一些文字就可以了)
可以说,这个Analyzer用会了的话,比大多数逻辑分析仪使用方便。

BSCAN
设置ICON时会要设置BSCAN。一般情况下保持默认。但是我还是很想搞清楚里面BSCAN模块的连接和数据流向。

Chipscope还可以远程控制:
使用server/client结构。
server上连接测试板,client上运行chipscope analyzer观察调试数据
使用方法:server端运行sc_server.bat文件(在chipscope/bin/nt目录下),client端运行analyzer,在JTAG -> Server Host Setting设置server的ip地址和端口,然后就可以像通常那样使用了。
Tags: ,
分页: 24/28 第一页 上页 21 22 23 24 25 26 27 下页 最后页 [ 显示模式: 摘要 | 列表 ]