Aug
15
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地址和端口,然后就可以像通常那样使用了。
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这个作用。
例化之后,要定位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这个作用。
Aug
7
学习微软TechNet文章,经少许修改版本
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_Environment Where Name = 'Xilinx'")
For Each objItem in colItems
'Please change the path to your ISE 8.1 path'
objItem.VariableValue = "C:\Xilinx81"
objItem.Put_
Next
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_Environment Where Name = 'Xilinx_EDK'")
For Each objItem in colItems
'Please change the path to your EDK 8.1 path'
objItem.VariableValue = "C:\EDK81"
objItem.Put_
Next
存成.vbs文件然后运行即可
[参考资料]
http://www.microsoft.com/china/technet/community/scriptcenter/resources/hey0318.mspx
引用
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_Environment Where Name = 'Xilinx'")
For Each objItem in colItems
'Please change the path to your ISE 8.1 path'
objItem.VariableValue = "C:\Xilinx81"
objItem.Put_
Next
Set colItems = objWMIService.ExecQuery _
("Select * from Win32_Environment Where Name = 'Xilinx_EDK'")
For Each objItem in colItems
'Please change the path to your EDK 8.1 path'
objItem.VariableValue = "C:\EDK81"
objItem.Put_
Next
存成.vbs文件然后运行即可
[参考资料]
http://www.microsoft.com/china/technet/community/scriptcenter/resources/hey0318.mspx
Jul
31
在XPower中如果可以提供描述翻转率的VCD文件,就可以得到FPGA的动态功耗
生成VCD文件有这几种方法:
1、使用ISE Project Navigator
2、在Testbench中添加属性
1、使用ISE Project Navigator
设定仿真使用Xilinx ISIM或者Modelsim或者其他仿真工具
在Testbench右键属性(Post PAR属性)--> Generate VCD打勾
使用结果:用ISIM生成正常,可是用ModelSim XE 6.0d只能出来一个VCD的头,实质内容没有出来
2、在Testbench中添加属性
Verilog:
initial begin
$dumpfile ("invchn26.vcd"); // Change filename as appropriate.
$dumpvars(1, t.uut); //t是testbench 的module name
end
VHDL:
vcd file my_design.vcd
vcd add testbench/uut/*
使用结果:Verilog正常,VHDL还没用
生成VCD文件有这几种方法:
1、使用ISE Project Navigator
2、在Testbench中添加属性
1、使用ISE Project Navigator
设定仿真使用Xilinx ISIM或者Modelsim或者其他仿真工具
在Testbench右键属性(Post PAR属性)--> Generate VCD打勾
使用结果:用ISIM生成正常,可是用ModelSim XE 6.0d只能出来一个VCD的头,实质内容没有出来
2、在Testbench中添加属性
Verilog:
initial begin
$dumpfile ("invchn26.vcd"); // Change filename as appropriate.
$dumpvars(1, t.uut); //t是testbench 的module name
end
VHDL:
vcd file my_design.vcd
vcd add testbench/uut/*
使用结果:Verilog正常,VHDL还没用
Jul
28
1、Hold Time违例可能导致数据在不到一个时钟内穿越触发器。具体例子见参考资料1,P28
2、对有关系的不同时钟域进行约束方法有二:
TIMESPEC TS_CLKA=PERIOD A_GRP 20;
TIMESPEC TS_CLKB=PERIOD B_GRP TS_CLKA*2;
Or
TIMESPEC TS_CLKA=PERIOD A_GRP 20;
TIMESPEC TS_CLKB=PERIOD B_GRP 20;
TIMESPEC TS_CLKA2B=FROM A_GRP TO B_GRP 20;
推荐第一种
3、对没关系的不同时钟域约束,其中间相连的部分需要TIG
具体参见资料P104
参考资料
1、Timing Presentation[ftp://ftp.xilinx.com/pub/documentation/misc/timingcsts6i.pdf]
2、Constraints Guide
2、对有关系的不同时钟域进行约束方法有二:
TIMESPEC TS_CLKA=PERIOD A_GRP 20;
TIMESPEC TS_CLKB=PERIOD B_GRP TS_CLKA*2;
Or
TIMESPEC TS_CLKA=PERIOD A_GRP 20;
TIMESPEC TS_CLKB=PERIOD B_GRP 20;
TIMESPEC TS_CLKA2B=FROM A_GRP TO B_GRP 20;
推荐第一种
3、对没关系的不同时钟域约束,其中间相连的部分需要TIG
具体参见资料P104
参考资料
1、Timing Presentation[ftp://ftp.xilinx.com/pub/documentation/misc/timingcsts6i.pdf]
2、Constraints Guide








