Microblaze与片内逻辑分析工具Chipscopepro
扫描二维码
随时随地手机看文章
随着FPGA规模的不断增大,其封装形式大多向球形方式转移,这样使得传统的探针方式监测信号变得越来越困难。Chipscopepro是一种片内逻辑分析工具,它能通过JTAG口,将FPGA内部信号实时读出,传入计算机进行分析。它的基本实现方法是通过利用FPGA中未使用的BLOCKRAM,利用设置的触发条件将相应信号实时的存储其中,然后利用JTAG口将数据传入计算机,最后在计算机中显示其波形。
在XILINXEDK中提供的了5个Chipscopepro核,
1.chipscope_icon—集成控制核,与其它的ChipScopecores进行通讯,最后将数据通过JTAG口送出。
2.chipscope_opb_iba—监测OPB总线动作
3.chipscope_plb_iba—监测PLB总线动作
4.chipscope_vio—创建虚拟IO(VirtualIO),通过JTAG实现监测和驱动FPGA内部信号。
5.chipscope_ila—监测单独的非总线信号,现行版本只支持MHS级信号的探测。
下面简要介绍其在EDK中实现过程:
在MHS中加入相应的IPcores,图中加入了chipscope_icon,chipscope_opb_iba和chipscope_ila。
建立模块信号的连接关系,并对其相应参数做设置,
相应的MHS文件为,
BEGINchipscope_icon
PARAMETERINSTANCE=chipscope_icon_0
PARAMETERHW_VER=1.00.a
PARAMETERC_NUM_CONTROL_PORTS=2
PARAMETERC_SYSTEM_CONTAINS_MDM=1
PORTcontrol0=chipscope_icon_0_control0
PORTcontrol1=chipscope_icon_0_control1
END
BEGINchipscope_opb_iba
PARAMETERINSTANCE=chipscope_opb_iba_0
PARAMETERHW_VER=1.00.a
PARAMETERC_NUM_DATA_SAMPLES=512
PARAMETERC_CONTROL_UNITS=1
PARAMETERC_ADDR_UNITS=1
PARAMETERC_DATA_UNITS=1
BUS_INTERFACEMON_OPB=mb_opb
PORTOPB_Clk=sys_clk_s
PORTSYS_Rst=sys_rst_s
PORTchipscope_icon_control=chipscope_icon_0_control0
END
BEGINchipscope_ila
PARAMETERINSTANCE=chipscope_ila_0
PARAMETERHW_VER=1.00.a
PARAMETERC_ENABLE_TRIGGER_OUT=1
PARAMETERC_DATA_SAME_AS_TRIGGER=1
PARAMETERC_TRIG0_TRIGGER_IN_WIDTH=8
PORTCHIPSCOPE_ILA_CONTROL=chipscope_icon_0_control1
PORTCLK=sys_clk_s
PORTTRIG0=fpga_0_LEDs_8Bit_GPIO_d_out
END[!--empirenews.page--]
相应的设置完成之后,连接好硬件,就可以将包含chipscope核的整个系统重新下载到FPGA中,然后利用打开Chipscopeproanalyzer进行信号的上传观察,
点击,扫描JTAG键,
找到JTAG键上的两个器件,选择XC3S400,点OK。导入.cdc文件,Platgen和ChipScopecores的Tclwrappers基于设计参数在<EDKProjectDirectory>/implementation/<OPBIBAinstancename>_wrapper/<OPBIBAinstancename>.cdc目录中创建了包含信号的.cdc文件,如设计中的OPBILA例化为chipscope_ila_0,然后录<Project>/implementation/chipscope_opb_ila_0_wrapper/chipscope_opb_ila_0.cdc中建立ChipScope信号的.cdc文件,将其导入ChipScopeanalyzer即可得到其信号信息,
此时可选择相应的DEV(XC3S400,XCF02S)和DEV中的UNIT(MyIBA/OPB0和MyILA1),然后对其触发条件进行设置,将关心的信号加入波形窗口中,最后执行触发即可。
上述过程只是简单介绍,具体关于chipscope的使用,请参见其帮助文档。文中错误在所难免,希望大家指正