fpga綜合出來的電路都在晶元內部,基本上是沒法用示波器或者邏輯分析儀器去測量訊號的,所以xilinx等廠家就發明了內建的邏輯分析儀。在vivado中叫 ila(integrated logic analyzer),之前在ise中是叫chipscope。基本原理就是用fpga內部的閘電路去搭建乙個邏輯分析儀,綜合成乙個ila的core核伸出許多probe去探測訊號線。
第一大部分 新增被測訊號線
通常有兩種方式 :
1、在**中新增這麼一句 (*mark_debug="true"*) 。不管是reg還是wire型的,介面訊號或者內部變數,都可以新增。
2、在setup debug過程中,直接新增netlist
我一般是,常用訊號都加debug標識,臨時測量的就手動加net,需要的就加,不要的就刪。
第二大部分 生成ila模組
完成綜合之後,open synth design,點裡面的set up debug
按需要選乙個
進去之後,就可以新增/刪除被測net。如果提示沒有參考時鐘,右鍵選擇乙個合適的即可
選擇fifo深度。這個深度可以選很大,每個被測訊號都會得到這麼大的乙個fifo,所以邏輯分析儀非常占用bram資源!合理設定觸發條件,fifo就不用選太大的。
我這裡再跳回上一步選時鐘域的部分,結合上面的fifo來說明選取clock domain的重要性。
時鐘域的選擇會影響兩大方面:生成幾個ila核,以及能探測多少時間。
1) 選了3個時鐘就一定會生成3個ila核,畢竟給d觸發器的clk不一樣嘛;
2) fifo的參考時鐘不同,直接決定fifo多久會被存滿;
比如我這個設計中有3個時鐘進來 50mhz 20mhz 以及8mhz轉400khz給iic用。如果iic的參考50mhz,那scl sda的fifo瞬間就存滿了,觸發後fifo的任務完成了,但是我們連乙個訊號跳變都看不到。如果參考400khz的,那從起始條件到8bit資料到停止條件都能抓到了。
fifo存資料是參考訊號時鐘的,有一拍clk才會存1bit資料。
選擇合適的clock domain非常重要,因為最終影響到資源的占用。ila核的個數,fifo的個數(經常會出現要抓500個甚至1000個訊號。為什麼這麼多!比如你32位的位址,32位的匯流排,還讀寫分開,還有好幾個,慢慢就聚集多了,fpga本來功能就是採用並行匯流排提高速度的原理)。
比如下面這個設定,鐵定會生成3個ila核,分3個波形介面顯示。其實如果資源確實夠用的話,建議按照大功能分開,這樣能顯示在不同介面上,然後各自設定觸發條件。
第三大部分 訊號波形
連上jtag,open目標板,然後燒寫bit和ltx檔案。
設定觸發條件。這裡就跟示波器是一樣的用法了,可以run也可以trig。
右鍵有很多功能:short顯示名 設定顏色 進製轉換 分組 等等,可以琢磨一下。
舉例子下面被測的訊號是20mhz的clk,但是顯示的波形卻不是均勻方波!為什麼?因為是用50mhz的時鐘採的,就是這樣的,沒有錯。所以再說一遍,clock domain的選擇非常重要。
Vivado中使用邏輯分析儀ILA
fpga綜合出來的電路都在晶元內部,基本上是沒法用示波器或者邏輯分析儀器去測量訊號的,所以xilinx等廠家就發明了內建的邏輯分析儀。在vivado中叫 ila integrated logic analyzer 之前在ise中是叫chipscope。基本原理就是用fpga內部的閘電路去搭建乙個邏輯...
Vivado中使用邏輯分析儀ILA
fpga綜合出來的電路都在晶元內部,基本上是沒法用示波器或者邏輯分析儀器去測量訊號的,所以xilinx等廠家就發明了內建的邏輯分析儀。在vivado中叫 ila integrated logic analyzer 之前在ise中是叫chipscope。基本原理就是用fpga內部的閘電路去搭建乙個邏輯...
Signal tap 邏輯分析儀使用教程
本系列將帶來fpga的系統性學習,從最基本的數位電路基礎開始,最詳細操作步驟,最直白的言語描述,手把手的 傻瓜式 講解,讓電子 資訊 通訊類專業學生 初入職場小白及打算高階提公升的職業開發者都可以有系統性學習的機會。signal tap 邏輯分析儀使用教程 在之前的設計開發時,利用modelsim得...