本篇內容包括兩部分:
1、介紹一下Signal Tap如何抓取波形,
2、以我剛做完的實驗為例(實作四個數碼管以1HZ的頻率進行跳變,從“0000”~“EEEE”一共16個狀態的回圈跳變),觀察SignalTap波形抓取結果,并分析一下實驗中遇到的問題以及解決辦法,實驗代碼和BDF原理圖會在篇末給出,
1 SignalTap如何抓取波形
- 編譯無誤且programming到板子上結果正確后,點擊File→New…→SignalTap II Logic Analyzer File→OK

下面逐一對SignalTap頁面進行功能及其相應的配置方法介紹, - ①在setup頁面的右上角 Hardware那欄點擊 setup… ,在彈出的框框里Current selected hardware 的下拉選單中選擇USB-Blaster→Close
②Device 那欄會顯示你的芯片型號,點擊Scan Chain會自動掃描,如圖顯示的是我板子的型號EP3C16,
③在SOF Manager 那一欄點擊**…** 按鍵,在彈出的框框里選擇生成的 .sof 檔案 →打開 →點擊左側帶有箭頭的藍色小圖示 進行燒錄,

- Signal Configuration板塊:
①Clock:點擊右側的 … 按鈕 → 在彈出框框里 Filter的下拉選單里選擇Design Entry(all name)→ 點擊list,可以看到 Nodes Found下面的方框□里列出了project里所有的管腳→選中clk(也就是我們定義的時鐘)→ 點擊>(位于Nodes Found和Selected Nodes兩欄中間那里),在Selected Nodes里會看到剛剛選擇的clk →OK
②Sample depth 表示采樣深度(從0~128k),表示采取多少個樣點,可以在下拉選單里進行設定,

segmented(分段采樣模式):如果想要通過segmented觸發-捕獲模式進行波形抓取,可以勾選上,在它的下拉選單里有很多選項,我們以其中一個為例進行解釋,如2 256sample segment的含義是分成2段,每段采樣256個樣本,
③我們也可以選擇storage qualifier → type (回圈采樣模式),包括多種方式:continuous(連續采樣)、……,我們一般選擇continuous,

- Trigger
①Trigger flow control(觸發流程控制)有兩個選項:“Sequential”(順序的)、“State-based”(基于狀態的)
②Trigger position(觸發位置):有三個選項:“Pre trigger position”(觸發位置在前面)、Center trigger position(觸發位置在中間)、Post trigger position(觸發位置在后面)

③Trigger Conditions(觸發條件)(這個還不太會用……以后寫)

- 在 trigger一欄 雙擊 ,在彈出框里,Filter選擇Design Enty(all names)→ 點擊 list→ 在Nodes Found里選擇想要觀察的引腳 → 點擊 > ,在Selected Nodes里面會看到你剛剛選中的引腳 →OK,這時我們就會在這個trigger下的框里看到剛剛選出來的引腳,選中你想要觀察的引腳 → 滑鼠🖱?停留在 Trigger Condition→ 右鍵,會出現幾個選項 “Don’t care”、“Low”(低電平時觸發)、“Falling Edge”(下降沿觸發)、“Rising Edge”(上升沿觸發)、“High”(高電平時觸發)、“Either Edge”(上升沿和下降沿都觸發) ,你可以選擇其中的一種,
【這里我想要觀察OUT[6…0],選中這7個輸出,滑鼠🖱?停留在Trigger Condition 右鍵,選擇“Either Edge”】

- “紅色部分”會提示你此時應該進行編譯,

- 回到project,點擊紫色小箭頭進行編譯,

- 編譯時會彈出框框讓你保存SignalTap檔案,自己給它命名并保存就好,
- 編譯完成后回到SignalTap檔案,此刻紅色提示內容顯示讓你把程式下載到板子上,

- 回到project中,programming,把程式下載到板子,

- 再次回到SignalTap,會看到提示Ready to acquire,在抓取波形前要先點擊SOF Manager 那里的藍色小按鈕,把程式燒錄到板子里,接著可以點擊帶有🔍的紅色小三角(如下圖中橙色框框所示),它表示單次運行,抓取到的是靜態波形;也可以點擊帶有旋轉箭頭的紅色小三角(如下圖中藍色框框所示),它表示連續運行,抓取到的是動態波形,(下圖中紫色框框里的是暫停 按鈕,當開始抓取波形時,暫停按鈕會變成黑色的,如需暫停抓取波形,點擊它就好)

上圖中Status狀態分為:Not running(未運行)、Waiting for trigger(等待觸發)、Acquiring post-trigger data(正在捕獲data)、offloading acquire data(匯出捕獲到的data),
2.1 問題與解答
問題:當我點紅色的小三角抓取波形的時候,發現沒有波形,此時的Status 是綠色的Waiting for trigger,這是為什么呢?應該如何解決?
答: ①waiting for trigger的意思是沒有達到觸發條件,比如說我把OUT設為上升沿觸發,那么只有當OUT出現上升沿時(比如由0變為1),SignalTap才會開始波形抓取,其余時間都是處于waiting for trigger狀態,也就是陷入僵局,
②因為在本實驗的SignalTap中我添加了一組七段數碼管的管腳OUT1[6…0],將它們trigger 設定的是Either Edge,那么只有當7個輸出同時出現上升沿(0→1)或者同時出現下降沿(1→0)時,SignalTap才會開始波形抓取,否則就會一直Waiting for trigger,
③但經過分析發現,0→1→…→E→F變化時,7個輸出并沒有同時出現上升沿或下降沿,所以就會出現波形抓不出來的結果,
④為了驗證我的猜想,現在我把OUT1[0]的trigger變為Rising Edge,把OUT1[6…1]變為Don’t care,點擊帶有旋轉箭頭的紅色小三角進行波形抓取,發現只有當OUT1[0]從0變為1時,state為抓取資料的狀態(如下圖所示Acquiring post-trigger data、offloading acquired data),同時在下邊的大框里可以看到抓出來的波形,其余時間都是waiting for trigger,


因此我的解決辦法為:把7個輸出的trigger全部改為Don’t care,也就是隨即抓波形,不用等觸發條件到才抓取,

點擊紅色小箭頭抓取波形,成功!
2.2 波形抓取結果分析
如圖所示是我抓到的一個波形,由邏輯值OUT1=7’b 1000000,可以知道抓到的這個是**“0”**的波形,每次點“單次運行”紅色的小三角,都會抓到一個波形,點“連續運行”紅色小三角就會看到波形的動態變化程序,
? 我想把0~F的波形顯示在一個頁面上,直觀地看波形的變化,但是試了好多次都沒有成功(留待我以后嘗試吧!)
以下是我試過兩種方法:
①增加采樣點,即增加sample depth的值
②更改時間軸范圍(如下圖)
附上“代碼”和BDF原理圖
代碼
module clk(
CLK , // clock
CNTVAL, // counter value
OV ); // overflow
input CLK;
output [32-1:0] CNTVAL;
output OV;
parameter MAX_VAL = 500_000;
reg [32-1:0] CNTVAL;
reg OV;
always @ (posedge CLK) begin
if(CNTVAL >= MAX_VAL)
CNTVAL <= 0;
else
CNTVAL <= CNTVAL + 1'b1;
end
always @ (CNTVAL) begin
if(CNTVAL == MAX_VAL)
OV = 1'b1;
else
OV = 1'b0;
end
endmodule
//
module cnt_en_0to1(
CLK , // clock
CNTVAL, // counter value
EN ,);
input CLK;
input EN;
output [4-1:0] CNTVAL;
reg [4-1:0] CNTVAL;
reg OV;
always @ (posedge CLK) begin
if(EN) begin // work enable
if(CNTVAL >= 15)
CNTVAL <= 0;
else
CNTVAL <= CNTVAL + 1'b1;
end
else
CNTVAL <= CNTVAL ; // hold same value
end
endmodule
module dec_4to7(
IN ,
OUT1,
OUT2,
OUT3,
OUT4);
input [4-1:0]IN;
output [7-1:0] OUT1 ;
output [7-1:0] OUT2 ;
output [7-1:0] OUT3 ;
output [7-1:0] OUT4 ;
reg [7-1:0] OUT1 ;
reg [7-1:0] OUT2 ;
reg [7-1:0] OUT3 ;
reg [7-1:0] OUT4 ;
always @ (IN) begin
case(IN)
4'b 0000: OUT1 = 7'b 1000000;
4'b 0001: OUT1 = 7'b 1111001;
4'b 0010: OUT1 = 7'b 0100100;
4'b 0011: OUT1 = 7'b 0110000;
4'b 0100: OUT1 = 7'b 0011001;
4'b 0101: OUT1 = 7'b 0010010;
4'b 0110: OUT1 = 7'b 0000010;
4'b 0111: OUT1 = 7'b 1111000;
4'b 1000: OUT1 = 7'b 0000000;
4'b 1001: OUT1 = 7'b 0010000;
4'b 1010: OUT1 = 7'b 0001000;
4'b 1011: OUT1 = 7'b 0000000;
4'b 1100: OUT1 = 7'b 1000110;
4'b 1101: OUT1 = 7'b 1000000;
4'b 1110: OUT1 = 7'b 0000110;
4'b 1111: OUT1 = 7'b 0001110;
endcase
case(IN)
4'b0000: OUT2 = 7'b 1000000;
4'b0001: OUT2 = 7'b 1111001;
4'b0010: OUT2 = 7'b 0100100;
4'b0011: OUT2 = 7'b 0110000;
4'b0100: OUT2 = 7'b 0011001;
4'b0101: OUT2 = 7'b 0010010;
4'b0110: OUT2 = 7'b 0000010;
4'b0111: OUT2 = 7'b 1111000;
4'b1000: OUT2 = 7'b 0000000;
4'b1001: OUT2 = 7'b 0010000;
4'b1010: OUT2 = 7'b 0001000;
4'b1011: OUT2 = 7'b 0000000;
4'b1100: OUT2 = 7'b 1000110;
4'b1101: OUT2 = 7'b 1000000;
4'b1110: OUT2 = 7'b 0000110;
4'b1111: OUT2 = 7'b 0001110;
endcase
case(IN)
4'b0000: OUT3 = 7'b 1000000;
4'b0001: OUT3 = 7'b 1111001;
4'b0010: OUT3 = 7'b 0100100;
4'b0011: OUT3 = 7'b 0110000;
4'b0100: OUT3 = 7'b 0011001;
4'b0101: OUT3 = 7'b 0010010;
4'b0110: OUT3 = 7'b 0000010;
4'b0111: OUT3 = 7'b 1111000;
4'b1000: OUT3 = 7'b 0000000;
4'b1001: OUT3 = 7'b 0010000;
4'b1010: OUT3 = 7'b 0001000;
4'b1011: OUT3 = 7'b 0000000;
4'b1100: OUT3 = 7'b 1000110;
4'b1101: OUT3 = 7'b 1000000;
4'b1110: OUT3 = 7'b 0000110;
4'b1111: OUT3 = 7'b 0001110;
endcase
case(IN)
4'b0000: OUT4 = 7'b 1000000;
4'b0001: OUT4 = 7'b 1111001;
4'b0010: OUT4 = 7'b 0100100;
4'b0011: OUT4 = 7'b 0110000;
4'b0100: OUT4 = 7'b 0011001;
4'b0101: OUT4 = 7'b 0010010;
4'b0110: OUT4 = 7'b 0000010;
4'b0111: OUT4 = 7'b 1111000;
4'b1000: OUT4 = 7'b 0000000;
4'b1001: OUT4 = 7'b 0010000;
4'b1010: OUT4 = 7'b 0001000;
4'b1011: OUT4 = 7'b 0000000;
4'b1100: OUT4 = 7'b 1000110;
4'b1101: OUT4 = 7'b 1000000;
4'b1110: OUT4 = 7'b 0000110;
4'b1111: OUT4 = 7'b 0001110;
endcase
end
endmodule
BDF原理圖

fpga板子結果


--------------------------------- 完 ---------------------------------
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/274499.html
標籤:其他
