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

博客背景:做一个4路采集板,FPGA采用Spartan6,抓取与ADC通信的SPI信号

第一步

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

利用ISE的ChipScope抓取FPGA内部信号_第1张图片

添加完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扫描连接。


利用ISE的ChipScope抓取FPGA内部信号_第2张图片

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

利用ISE的ChipScope抓取FPGA内部信号_第3张图片

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

利用ISE的ChipScope抓取FPGA内部信号_第4张图片

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

利用ISE的ChipScope抓取FPGA内部信号_第5张图片


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

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


你可能感兴趣的:(FPGA)