部落格背景:做一個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闆用來作為複位的按鍵,可以看到已經出波形啦~~~~