原创 EDK下chipscope的使用

2010-11-27 13:27 5516 13 13 分类: FPGA/CPLD

前言


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


一、使用ILA和ICON核查看SRAM IP输出引脚波形


Step1:添加ICON和ILA核


8aeedd36-aad9-4ee9-a894-120dedb3e78a.JPG


Step2:配制ICON核,设置端口数量,我们这里只要一个,设置为1


01a353b5-28b0-4e95-97a6-784bfcfb06f9.JPG


Step3:配制ILA核


我们需要将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核配制如下:


03b06f11-90e3-4893-8e4c-f2620d86841f.JPG


4078bf73-0d59-4799-8d7b-ea7731c309db.JPG


TRIG2 3 4 5 6按相同方式设置


Step4:分析核信号连接,如下图:


注意:被采样信号只能是内部信号,不能连接到External Ports上


比如接xps_mch_emc_0_Mem_A可以,接xps_mch_emc_0_Mem_A_pin就不行,因为它是输出端口,无法再做为输入信号接到ILA了。


58382b32-cd0e-4fa5-9ba4-08b790804f04.JPG



Step5:在TestApp_Memory中添加如下代码


 


//一直读写,观察波形


        while(1)


       {


     if(addr>65535)addr=0;  


         *(volatile Xuint16 *)(RAM+addr) = 0x1314;


         dat = *(volatile Xuint16 *)(RAM+addr);


              addr += 2;  //16位的地址要加2


       }


Step6:点击update bitstream生成bit文件。


Step7:连接下载器至开发板,并将开发板上电。


Step8:打开Chipscope Pro Analyzer:


10dc4593-2df9-4ec4-a2f1-7745d0b4768f.JPG


选中文件后,点击OK,开始配制FPGA,配制完成后,检测到FPGA的chipscope核,如下图


6e10d908-6c6f-42bb-8b58-5e8071875df9.JPG


点击Trigger Setup,打开Trigger Setup窗口,设置触发条件,默认是XXXX,即无条件触发,先不管这里;


点击Waveform打开波形窗口


d264e238-4414-4bea-ab92-1c4e91dbb844.JPG


Step9:导入CDC文件


在上图中,右边的TrigerPort和我们在EDK中的TRIG是相对应的,这里显示的并不是我们在EDK中的网络名,我们可以Rename成EDK中的网络名,但这样手动修改太费时了,EDK在update bitstream时就已经帮我生成了一个文件,直接导入就可以了,点击File -> Import


bf7fdfd2-b3e7-405a-90d7-c2ea64a92365.JPG


选择导入到ICON哪个UNIT,这里ICON只有1个UNIT,没有可选的;勾上Auto-create Buses。


e0dbb499-f1e8-4811-803f-0c02bf0b0a48.JPG


点击OK,端口全部变成了网络名,如下图


d4e18feb-3841-4aac-8c4f-05362818317f.JPG


Step10:选中Trigger Setup,右键RUN,开始采集数据:


8831bce4-fb43-499c-beac-3c69b49b2062.JPG


窗口显示波形如下:


622c7b7c-66fe-4108-9e44-f5d797887c02.JPG


由于EDK中的总线顺序是倒序的,所以看到的数据可能和程序中写入的不一样,我们将总线数据位再倒序一次


5dcca304-79a5-46aa-ac5b-8ad9439a875c.JPG


怎么样,是不是看得很清楚了。


二、设置触发条件


某些时候我们关心的只是某一时刻的数据,其它的数据我们并不关心,因此可以设置触发条件,比如,我们需要观察从SRAM地址0x1126起后面写入的是什么内容,则可在Trigger Setup中设置当ADDR==0x84421126(0x84420000是RAM的基地址)时触发chipscope


ff5cacd7-d24f-4366-8eb6-997c01f9cb15.JPG


三、使用IBA核分析PLB总线时序


   还有些时候,当我们自定义IP时,我们需要查看PLB的总线时序,则可以用到IBA核,它是连接到PLB总线上的,我们可直接通过连接ICON核就可以看到它所有的波形(可在config IP中配制需要查看的波形),不需要像ILA那样,连接被测信号,在chipcope pro软件中,同样也有一个cdc文件导入,和上面介绍的方法一样,这里就不多介绍了。


ChipScope的核有很多,这里就不一一介绍了,大家在用的过程中慢慢摸索吧。 :)


 


本文PDF


PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
13
关闭 站长推荐上一条 /3 下一条