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) , 阅读(839) , 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)。
Aug 15

ChipScope

RickySu , 09:54 , 技术经验 , 评论(1) , 引用(0) , 阅读(1209) , 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地址和端口,然后就可以像通常那样使用了。
Aug 11
无论使用HDL flow还是schematic flow,只需要例化IBUFDS,OBUFDS之类的差分缓冲器,就可以使用LVDS了。

例化之后,要定位Pin位置,使用PACE,在IO Standard中选择LVDS33或者LVDS25,还能选择有DCI的版本。定端口时,注意看Datasheet中Pin名字分P/N,这P也要对应buffer中的P,N也要对应N。而且注意同一个bank只能有一个电压标准。

如果用FPGA Editor观察布局布线后的情况,就会发现,FPGA Editor中没有IBUFDS这个Component,这个Buffer是藏在IOB里的,点击到Pin的图块中,可以看到里面有一个Buffer,就起到了IBUFDS这个作用。
Tags: ,
分页: 26/28 第一页 上页 23 24 25 26 27 28 下页 最后页 [ 显示模式: 摘要 | 列表 ]