天天看點

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

部落格背景:做一個4路采集闆,FPGA采用Spartan6,抓取與ADC通信的SPI信号

第一步

建立工程,SPI通信協定寫好後,在項目中加入ICON和ILA核(使用ILA核或者VIO核時,必須要用ICON核的CONTROL與其相連,如下圖所示)。

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

添加完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内部信号
利用ISE的ChipScope抓取FPGA内部信号

點選Device,選中連接配接器件,點選Confgure,将BIT流檔案下載下傳到FPGA内,此時左側的工作欄會将生成的CDC檔案一起導入到ChipScope内,資料端口的信号已經是我們想要觀測的信号了。

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

将滑鼠放在Data Port點選右鍵,将所有資料端口添加到Waveform上。

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

點選Trigger Setup,會出現一個觸發設定的框,軟體會根據使用者的設定來完成信号的抓取。由于本次測試的是SPI信号,我隻把觸發信号設定為SPI_CS這個信号,SPI不工作時,SPI_CS是1,傳輸資料時是0,是以我們在中間的Trigger Condition Equation隻設定M0為觸發條件,并且M0的Value為0,表示當SPI_CS為0,也就是工作時被觸發抓取。

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

在打開Trigger Setup的情況下,點選三角圖示開始抓信号。

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

然後可以看到Trigger setup欄的下面一直在轉圈,采樣點是0,因為SPI現在沒工作,SPI_CS一直是高電平,是以不觸發。我們按下FPGA闆用來作為複位的按鍵,可以看到已經出波形啦~~~~

利用ISE的ChipScope抓取FPGA内部信号
上一篇: 0x02