您的位置:首页 > 运维架构

利用ISE的ChipScope抓取FPGA内部信号

2018-01-02 16:43 330 查看
博客背景:做一个4路采集板,FPGA采用Spartan6,抓取与ADC通信的SPI信号

第一步

建立工程,SPI通信协议写好后,在项目中加入ICON和ILA核(使用ILA核或者VIO核时,必须要用ICON核的CONTROL与其相连,如下图所示)。



添加完IP核并设置好要监控的信号参数(参数个数及每个参数的宽度)后,在.v程序内例化上述两核,代码如下:

ICON ICON_inst1 (
.CONTROL0(CONTROL0) // INOUT BUS [35:0]
);

ILA ILA_inst1 (
.CONTROL(CONTROL0), // INOUT BUS [35:0]
.CLK(clk), // IN
.TRIG0(spi_cs), // IN BUS [0:0]
.TRIG1(spi_sck), // IN BUS [0:0]
.TRIG2(spi_sdio_in_r) // IN BUS [7:0]
); 即可完成观测三线SPI数据的准备工作了。接下来综合实现、生成BIT流文件后,双击Analyze Design Using ChipScope,

软件自动打开ChipScope Pro Analyzer。点击下图左下角的黑色按钮,完成JTAG扫描连接。





点击Device,选中连接器件,点击Confgure,将BIT流文件下载到FPGA内,此时左侧的工作栏会将生成的CDC文件一起导入到ChipScope内,数据端口的信号已经是我们想要观测的信号了。



将鼠标放在Data Port点击右键,将所有数据端口添加到Waveform上。



点击Trigger Setup,会出现一个触发设置的框,软件会根据用户的设置来完成信号的抓取。由于本次测试的是SPI信号,我只把触发信号设置为SPI_CS这个信号,SPI不工作时,SPI_CS是1,传输数据时是0,所以我们在中间的Trigger Condition Equation只设置M0为触发条件,并且M0的Value为0,表示当SPI_CS为0,也就是工作时被触发抓取。



在打开Trigger Setup的情况下,点击三角图标开始抓信号。



然后可以看到Trigger setup栏的下面一直在转圈,采样点是0,因为SPI现在没工作,SPI_CS一直是高电平,所以不触发。我们按下FPGA板用来作为复位的按键,可以看到已经出波形啦~~~~

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Spartan6 ChipScope ADC SPI