Chipscope是xilinx公司的嵌入式逻辑分析仪,和Altera的signal tap II一样,是一种通过JTAG接口探测FPGA内部信号的工具,比起外部逻辑分析仪,它用起来更加的方便和省时。
逻辑分析核工作原理如下:采集内部信号,存入片内RAM(深度),再通过JTAG发送至PC,PC上有一个界面,将波形显示出来。
在chipscope中有控制核和分析核,每一个分析核都必须要连接到控制核(ICON)上,才能有效的工作,常用的分析核有Integrated Logic Analyzer(ILA)、PLBv46 Integrated Bus Analyzer(IBA),一个是用来分析内部逻辑的,它有16个端口,可连接16个内部信号;另一个是总线分析核,它是用来分析PLB总线的。
下面我们将介绍一个基于ILA分析枋核调试XCH_EMC IP的范例
如何建立XCH_EMC IP核请看我的另一篇文章《EDK下sram IP的使用》
http://blog.ednchina.com/liu_xf/1929131/message.aspx
注:EDK软件版本为12.2
我们需要将SRAM IP的地址线,数据线及控制线接到ILA核上
TRIG0 <= SRAM_A[0:31]
TRIG1 <= SRAM_D_T[0:15]
TRIG2 <= SRAM_D_O [0:15]
TRIG3 <= SRAM_D_I [0:15]
TRIG4 <= SRAM_CE
TRIG5 <= SRAM_WE
TRIG6 <= SRAM_OE
因此需要开启ILA核7个端口,将TRIG0设置成32位宽,TRIG1、TRIG2、TRIG3设置成16位宽,TRIG4、TRIG5、TRIG6设置成1位宽。
ILA核配制如下:
TRIG2 3 4 5 6按相同方式设置
注意:被采样信号只能是内部信号,不能连接到External Ports上
比如接xps_mch_emc_0_Mem_A可以,接xps_mch_emc_0_Mem_A_pin就不行,因为它是输出端口,无法再做为输入信号接到ILA了。
//一直读写,观察波形
while(1)
{
if(addr>65535)addr=0;
*(volatile Xuint16 *)(RAM+addr) = 0x1314;
dat = *(volatile Xuint16 *)(RAM+addr);
addr += 2; //16位的地址要加2
}
选中文件后,点击OK,开始配制FPGA,配制完成后,检测到FPGA的chipscope核,如下图
点击Trigger Setup,打开Trigger Setup窗口,设置触发条件,默认是XXXX,即无条件触发,先不管这里;
点击Waveform打开波形窗口
在上图中,右边的TrigerPort和我们在EDK中的TRIG是相对应的,这里显示的并不是我们在EDK中的网络名,我们可以Rename成EDK中的网络名,但这样手动修改太费时了,EDK在update bitstream时就已经帮我生成了一个文件,直接导入就可以了,点击File -> Import
选择导入到ICON哪个UNIT,这里ICON只有1个UNIT,没有可选的;勾上Auto-create Buses。
点击OK,端口全部变成了网络名,如下图
窗口显示波形如下:
由于EDK中的总线顺序是倒序的,所以看到的数据可能和程序中写入的不一样,我们将总线数据位再倒序一次
怎么样,是不是看得很清楚了。
某些时候我们关心的只是某一时刻的数据,其它的数据我们并不关心,因此可以设置触发条件,比如,我们需要观察从SRAM地址0x1126起后面写入的是什么内容,则可在Trigger Setup中设置当ADDR==0x84421126(0x84420000是RAM的基地址)时触发chipscope
还有些时候,当我们自定义IP时,我们需要查看PLB的总线时序,则可以用到IBA核,它是连接到PLB总线上的,我们可直接通过连接ICON核就可以看到它所有的波形(可在config IP中配制需要查看的波形),不需要像ILA那样,连接被测信号,在chipcope pro软件中,同样也有一个cdc文件导入,和上面介绍的方法一样,这里就不多介绍了。
ChipScope的核有很多,这里就不一一介绍了,大家在用的过程中慢慢摸索吧。 :)
本文PDF
文章评论(0条评论)
登录后参与讨论