畢業(yè)論文-基于FPGA的邏輯分析儀設計與實現(xiàn)_第1頁
畢業(yè)論文-基于FPGA的邏輯分析儀設計與實現(xiàn)_第2頁
畢業(yè)論文-基于FPGA的邏輯分析儀設計與實現(xiàn)_第3頁
畢業(yè)論文-基于FPGA的邏輯分析儀設計與實現(xiàn)_第4頁
畢業(yè)論文-基于FPGA的邏輯分析儀設計與實現(xiàn)_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、大連東軟信息學院本科畢設計(論文)論文題目論文題目:基于FPGA的邏輯分析儀設計與實現(xiàn)系 所: 電子工程系 專 業(yè):電子信息工程(集成電路設計與系統(tǒng)方向) 學生姓名: 學生學號: 指導教師: 導師職稱: 副教授 完成日期: 2014年 4月 28日 大連東軟信息學院Dalian Neusoft University of Informatio大連東軟信息學院畢業(yè)設計(論文) 摘要 - 32 -第1章 緒 論1.1 課題研究背景與意義 當前,數(shù)字邏輯電路的出現(xiàn),使得計算機和大規(guī)模集成電路的迅速發(fā)展。數(shù)字電路是處理由離散的二進制信息所表示的信息,用“1”表示高電平,“0”表示低電平。這些二進制數(shù)的

2、組合是多樣化的,在此區(qū)域被稱為數(shù)據(jù)域;用來測試數(shù)據(jù)域的技術叫數(shù)據(jù)域測試技術。一般情況數(shù)據(jù)信號忽視了實際的特定的波形,而只關心邏輯和時序關系。大量的數(shù)據(jù)流中,包含了大量的非隱蔽,隨機誤差的信號,要想找到它們無異于大海撈針。像邏輯分析儀一類的新的測試設備,能夠及時,迅速,準確的解決問題。邏輯分析儀會用時鐘信號從測試設備去采集和顯示的數(shù)字信號。邏輯分析儀沒有很多的電壓等級,通常只顯示兩個電壓(邏輯0和1)。設置參考電壓后,邏輯分析儀將通過一個比較器確定,低于參考電壓顯示高電平(邏輯1),低于顯示(邏輯0)。邏輯分析儀測量信號只是顯示邏輯1或邏輯0。邏輯分析儀和示波器之間還有另一個區(qū)別是信道數(shù)。示波器

3、一般只有雙通道或四通道,而邏輯分析儀的渠道可以有很多,甚至達到上百個。所以在測試多渠道時邏輯分析儀優(yōu)勢會很明顯,特別適合總線調試信號。邏輯分析儀一般用于大規(guī)模數(shù)字系統(tǒng)組成的數(shù)字集成電路的檢測,例如微處理器組成的數(shù)字系統(tǒng),硬件和軟件故障的檢測。硬件邏輯分析儀的核心部件非常昂貴,投資高,技術更新周期長的缺點。更關鍵的是它與其他儀器設備的連接有限,無法自己編程硬件,二次開發(fā)差?;谲浖腇PGA邏輯分析儀(軟邏輯分析儀)有機地與計算機相結合,用軟件開發(fā)系統(tǒng),大大減少了產品開發(fā)周期,設計簡單,成本也大大降低,但同時也更方便與網絡外設連接、技術更新周期短、實用性更高。1.2 本課題的研究內容本文研究了邏

4、輯分析儀工作基本思路,仔細的分析了邏輯分析儀的整體架構和系統(tǒng)解決方案。主要對邏輯分析儀的主要組成部分數(shù)據(jù)采集、觸發(fā)控制、數(shù)據(jù)存儲和顯示控制四大部分進行了研究。確定了系統(tǒng)的設計方案后,研究了FPGA并利用Verilog HDL硬件描述語言進行硬件電路的設計。本設計采用自下而上的設計方法對系統(tǒng)進行功能劃分和定義,隨后采用Verilog HDL硬件描述語言對每個模塊進行描述。在做完電路設計后,在FPGA的開發(fā)環(huán)境Quartus II中對邏輯分析儀的進行仿真。最終會對論文的主要工作進行總結,總結該邏輯分析儀的特點和不足,并指出需要進一步完善和發(fā)展的方面,和未來邏輯分析儀的發(fā)展趨勢。第2章關鍵技術介紹2

5、.1 FPGA介紹集成電路(ASIC)領域中的一種半定制電路而出現(xiàn)的,它是的前身是PAL(可編程陣列邏輯)、GAL(通用陣列邏輯)等可編程器件。FPGA既終結了定制電路的缺陷,又改善了原有可編程器件門電路數(shù)不足的缺點。FPGA是一種PLD(可編程邏輯器件)芯片,它是的主要結構是以一種RAM,即查找表(LookUpTable,LUT)作為基礎的。目前FPGA中多使用4輸入的LUT,因此每一個LUT都可以認為是一個有4位地址線的16X1的RAM。當用戶通過原理圖或HDL描述了一個邏輯電路以后,F(xiàn)PGA開發(fā)軟件會自動計算邏輯電路的所有可能結果,并把結果事先寫入RAM。就如同輸入一個地址查表一樣,當有

6、一個信號進行邏輯計算時,就能找出與地址內容相對應的部分,只需要輸出它就可以了。FPGA設計流程分為設計規(guī)范、設計輸入、功能仿真、綜合設計、布局布線:時序仿真、下載驗證等步驟,簡明設計流程如圖2.1所示。圖2.1 FPGA設計流程圖2.2 硬件描述語言硬件描述語言HDL用形式化的方法描述數(shù)字電路和系統(tǒng)。這種語言設計的數(shù)字電路系統(tǒng),不但可以從上層到下層(從抽象到具體)逐層描述自己的設計思想,而且可以用一些分層次的模塊去表示一個極其復雜的數(shù)字系統(tǒng)。使用電子設計自動化(EDA)工具,對用硬件描述語言設計的數(shù)字邏輯模型進行仿真,然后在用自動綜合工具將設計的內容轉換成門級電路網表。這其中具有代表性的語言就

7、包括Verilog HDL語言Verilog HDL語言的誕生要追溯到上世紀80年代初,當時的GateWay Design Automation公司需要為其模擬器產品開發(fā)一種新的硬件建模語言,該公司的工程師菲爾莫比(Phil Moorby)完成了Verilog的主要設計工作。Verilog HDL作為一種便于使用的語言漸漸的為眾多設計者所青睞,也因此他們的模擬仿真器產品也得到了大面積的應用,Verilog HDL語言在公眾領域開始普及是在1993年,當時的一個組織,OVI(Open Verilog Intemational)決定推廣Verilog HDL語言,使得這門新起之秀得到了快速的發(fā)展。

8、VerflogHDL的優(yōu)越性得到了廣泛的認同,因此IEEE于1995年制定了Verilog HDL的IEEE標準。Verilog HDL的優(yōu)點主要有以下幾個方面,首先它在1983年就誕生了,設計資源及其的豐富,也因此擁有廣泛的設計群體。其次這種硬件描述語言非常的簡單易懂,只要有一些C語言基本知識,經過一段時間的學習與實際操作,就可以在極短的時間內掌握這種設計技術??紤]到這種語言的靈活性和實用性,本文的設計將采用Verilog HDL作為硬件開發(fā)語言。2.3 集成開發(fā)環(huán)境Quartus II介紹Quartus II是Altera公司在本世紀初推出的FPGACPLD集成開發(fā)環(huán)境,它持原理圖、內嵌自

9、有的綜合器以及 HYPERLINK /view/557623.htm t _blank 仿真器,可以完成從設計輸入到硬件配置的完整PLD設計流程。Quartus II設計工具完全支持VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多種設計輸入形式,為模塊化的設計提供了方便。Quartus II能夠提供完美的層次化設計,在一個輸入編輯環(huán)境中可以相互使用不同的設計輸入形式,可以有效的運用原理圖與HDL進行混合設計;Quartus II能夠使用RTL Viewer觀察器觀察綜合后的RTL圖,RTL圖提供了綜合后邏輯模塊及它們之間

10、的相互連接方式;完成編譯成功,可以進行仿真來驗證設計的功能正確與否可;最后,綜合和仿真沒有問題后,便可以將編程文件(如sof文件、.pof文件)通過編程器下載到目標器件中驗證功能的實現(xiàn)。Quartus II的Nios II軟核處理器開發(fā)包SOPC Builder,主要用于實現(xiàn)Nios II系統(tǒng)的配置和生成,以及與Nios II系統(tǒng)相關的監(jiān)控和軟件調試平臺的生成。除此以外,用戶也能夠使用Quartus II結合基于MATLAB的DSP Builder進行FPGA的DSP系統(tǒng)開發(fā)。Quartus II是一種綜合性的開發(fā)平臺,它集 HYPERLINK /view/2517315.htm t _bla

11、nk 嵌入式軟件開發(fā)、Altera的片上可編程系統(tǒng)(SOPC)開發(fā)、集系統(tǒng)級設計于一體。由于Altera Quartus II這種可編程邏輯的設計環(huán)境的強大的設計能力和直觀易用的接口,很受 HYPERLINK /view/3114367.htm t _blank 數(shù)字系統(tǒng)設計者的青睞。本論文采用Verilog HDL實現(xiàn)硬件設計。仿真、綜合、采用Quartus II和modelsim軟件工具實現(xiàn)。作為一種可編程邏輯的設計環(huán)境第3章系統(tǒng)功能需求3.1 邏輯分析儀的基本結構與特點3.1.1 邏輯分析儀的基本結構邏輯分析儀通道輸入,主要按照數(shù)據(jù)的捕獲方式,去尋找已經規(guī)定好的數(shù)據(jù)。用數(shù)據(jù)采集模塊將其轉

12、換成相應的數(shù)據(jù)流形式。數(shù)據(jù)采立即集模塊的主要作用是用來捕獲需要觀察的數(shù)據(jù)的;當時鐘模塊工作時,一旦搜索數(shù)據(jù),會有一個控制數(shù)據(jù)存儲器的觸發(fā)信號被數(shù)據(jù)觸發(fā);存儲在存儲器里的數(shù)據(jù)將會在顯示控制模塊里顯示出來。3.1.2 邏輯分析儀的特點 邏輯分析儀要有如下主要特點: 要求測試速度大于被測數(shù)字系統(tǒng)的工作速率。 為了便于觀察,以VGA接口的顯示屏顯示數(shù)字系統(tǒng)的運行情況。 輸出通道足夠多,可同時檢查16路,32路甚至更多路的信號。 要有記憶功能,它的高速存儲器是能夠將數(shù)據(jù)快速的進行采集和存儲的。數(shù)據(jù)采集速度是由儲存器的速度決定的;而存儲器的容量又影響著采集數(shù)據(jù)的多少。 具有超前的觀察能力。因為邏輯分析儀內

13、部有存儲器,可以存儲處出發(fā)前的數(shù)據(jù),可以顯示付延遲的數(shù)據(jù),有助于分析故障原因。3.2 邏輯分析儀的功能需求本次設計工程的功能需求,需要實現(xiàn)的邏輯分析儀的功能,羅列了下述9個功能點。本次設計在理想情況下最大頻率可以達到275MHz,但實際情況卻不能達到如此高的頻率只能到150MHz。所以這次設計的信號捕獲精度定位在100MHz。采集模式共有三種:MODE1觸發(fā)后顯示后64個采集數(shù)據(jù);MODE2觸發(fā)后顯示前32個采集后32個采集數(shù)據(jù);MODE3觸發(fā)后顯示前64個采集數(shù)據(jù)。共有4路信號捕獲輸入通道,1路信號觸發(fā)通道(可配置的上升沿或者下降沿觸發(fā))。使用60Hz/640*480分辨率下的電腦顯示器(V

14、GA),用作顯示波形的屏幕,以每8個像素點為單位作為一個采集數(shù)據(jù)的顯示長度。一位撥碼開關,控制上升沿觸發(fā)或者下降沿觸發(fā)的。配置觸發(fā)模式的三位撥碼開關,例如:開關1拉高則開啟MODE1,開關2拉高則開啟MODE2,開關3拉高則開啟MODE3。同一時刻三個開關只能有一個置高,多開沒有效果。有一個FPGA的系統(tǒng)復位按鍵和一個邏輯分析儀的采集清除按鍵,低有效。用于清除當前采集波形,以開始一個新的采集觸發(fā)。兩個調節(jié)按鍵,控制采集頻率(采集周期)的設置??烧{的采集頻率(采集周期)。3.3 邏輯分析儀的工作原理邏輯分析儀的一般工作過程就是數(shù)據(jù)采集、存儲、觸發(fā)、顯示。由于它采用了數(shù)字存儲技術可將數(shù)據(jù)采集工作和

15、顯示工作分開進行。同時,也可以對存儲的數(shù)據(jù)反復進行顯示,對于分析和研究會有很大的幫助。使用邏輯分析儀的探頭(邏輯分析儀的探頭是將若干個探極集中起來,其觸針細小,以便于探測高密度集成電路)監(jiān)測接進被測系統(tǒng)的數(shù)據(jù)流,之后會形成并行數(shù)據(jù)。再將其送到比較器里處理,在比較器中,輸入信號與外部設定的門限電平進行比較,當輸入信號的值比門限電平值大時,就在相應的線上輸出高電平,反之輸出低電平,并對輸進波形進行整形。之后,再在時鐘脈沖控制下將經比較整形后的信號送至采樣器進行采樣,被采樣的信號按順序存儲在存儲器中。采樣信號在存儲器中存儲的組織依據(jù) “先進先出”的原則,當有顯示命令輸入時,信息會依據(jù)先后順序逐一讀出

16、,并按照之前設定的顯示方式來顯示信息。邏輯分析儀的基本功能有兩個,一是分析系統(tǒng)和診斷系統(tǒng)故障;二是用便于觀察的形式,顯示出數(shù)字系統(tǒng)的運行情況,起到一個邏輯顯示器的作用。為了簡化設計,本設計原理圖如圖3.1所示,數(shù)據(jù)獲取部分是用于捕獲并存儲所要觀察分析的數(shù)據(jù),而數(shù)據(jù)顯示則是用多種形式來顯示所獲取的數(shù)據(jù)。其中觸發(fā)產生是邏輯分析儀中最為關鍵的部分,它的作用,簡單的說就是在被分析的數(shù)據(jù)流中搜索特定的數(shù)字,一旦發(fā)現(xiàn)這個數(shù)字,便產生觸發(fā)信號來控制和存儲有效的數(shù)據(jù),它的功能決定了欲觀察的數(shù)據(jù)窗口在整個數(shù)據(jù)流中的位置;那么數(shù)據(jù)流從何而來呢,這就是數(shù)據(jù)輸入部分的功能,數(shù)據(jù)輸入部分就是將各通道的輸入信號變換成相應

17、的數(shù)據(jù)流;最后,數(shù)據(jù)顯示部分的功能則是將存儲器中的有效數(shù)據(jù),最終以多種不同的顯示方式顯示出來。需要說明的是,整個系統(tǒng)都是在同步(外部時鐘)或異步(內部時鐘)的作用下實現(xiàn)運行的。圖 3.1邏輯分析儀的原理結構第4章系統(tǒng)RTL級設計4.1 PLL4.1.1 PLL配置該PLL的輸入時鐘為FPGA外部的25MHz晶振,希望得到一個100MHz(輸入時鐘的4倍頻)的系統(tǒng)時鐘供FPGA內部使用。該PLL的輸入輸出接口如表4.1所示。表4.1 PLL接口定義信號名方向功能描述inclk0 inputPLL 輸入時鐘aresetinput PLL 復位信號,高電平有效c0output PLL 輸出時鐘c1o

18、utputPLL 輸出時鐘Lockedoutput該信號用于指示 PLL 處理后的時鐘已經穩(wěn)定輸出,高有效。4.1.2 PLL復位電路FPGA設計中復位方式有異步復位和同步復位是兩種很常用的復位方式。異步復位是指,無論時鐘沿是否到來,當復位信號有效時,就對系統(tǒng)進行復位。而同步復位則是,只要復位信號和時鐘信號同步,一旦時鐘上升沿到來并且檢測到復位信號就進行復位的操作。根據(jù)表4.2所列出的同步復位信號與異步復位信號的優(yōu)缺點,可以從中看出,要想解決同步復位的資源消耗問題以及異步復位的亞穩(wěn)態(tài)問題,只要設計一個異步復位,同步釋放的電路就能夠解決。表 4.2同步復位與異步復位優(yōu)、缺點的比較同步復位異步復位

19、 優(yōu)點仿真器的仿真異步復位可以節(jié)省資源,有利于時序分析設計相對簡單可以濾除高于時鐘頻率的毛刺。異步復位可以節(jié)省資源優(yōu)設計相對簡單點異步復位信號識別便。缺點復位信號的有效時長必須大于時鐘周期,同時組合邏輯的路徑延時,復位延時等會耗費較多的邏輯資源。在復位信號釋放的時候容易出現(xiàn)問題。復位信號容易受到毛刺的影響。如圖4.1所示,為一個異步復位,同步釋放的雙緩沖PLL后復位電路。該電路采用 FPGA的外部時鐘clk作為輸入時鐘,該電路先把輸入復位信號rst_n做異步復位、同步釋放處理,隨后同時將時鐘clk以及復位信號輸入到PLL。為了達到PLL輸出時鐘有效前的目的,要把系統(tǒng)其他部分維持在復位的狀態(tài)。也

20、就是說,在PLL有效輸出之前,其輸出locked信號要一直保持在低電平,而要把它置于高電平,需要在PLL的輸出穩(wěn)定以后才能做到。然后,需要把locked和FPGA外部輸入復位信號rst_n進行相與的操作后,再作為整個系統(tǒng)的復位信號。而這個復位信號也是讓合適的PLL輸出時鐘異步復位、同步釋放處理的。該電路在PLL輸出前和PLL輸出后對復位信號進行了兩次處理,因此它的復位信號特別穩(wěn)定。圖4.1 PLL后復位電路設計4.1.3 復位信號產生當PLL得到一個時鐘輸入(一般是外部晶振時鐘)時,經過其內部處理后輸出端能得到一些時鐘頻率。PLL輸出的時鐘頻率和相位上很穩(wěn)定,而且時鐘網絡延時比外電路的分頻時鐘

21、小很多,因此其應用非常廣泛。如圖4.2所示,在邏輯分析儀的復位設計里,先用FPGA的外部輸入時鐘clk將輸入復位信號rst_n異步復位、同步釋放處理,然后將復位信號輸PLL,同時clk也輸入PLL。在PLL輸出時鐘有效前,系統(tǒng)的其它部分都保持復位狀態(tài)。PLL的輸出locked信號在PLL有效輸出之前一直是低電平,等PLL輸出穩(wěn)定有效之后拉高該信號。FPGA外部輸入復位信號rst_n和locked信號相與之后在作為整個系統(tǒng)的復位信號。圖4.2復位設計原理圖4.2 數(shù)據(jù)采集模塊sampling_ctrl模塊的功能主要是包含按鍵檢測、觸發(fā)控制和模式選擇、數(shù)據(jù)采集、數(shù)據(jù)存儲等,數(shù)據(jù)采集的主要功能都是由

22、它實現(xiàn)的,因此它是采集控制部分的核心模塊。4.2.1 按鍵檢測人們日常生活中所用的鍵盤,分為編碼鍵盤和非編碼鍵盤。用專用的硬件編碼器才能識別鍵盤的閉合,同時輸出鍵編碼號或鍵值的稱為編碼鍵盤,如計算機鍵盤。非編碼鍵盤則是利用軟件編程來識別。嵌入式系統(tǒng)的鍵盤應用中,一般會使用非編碼鍵盤,也有用到編碼鍵盤的。 如圖4.3所示,按鍵在閉合和斷開的那一刻,觸點會存在抖動現(xiàn)象。在按鍵按下或釋放時,可能都會出現(xiàn)一個不穩(wěn)定的抖動時間,而這個抖動時間會使得按鍵編碼無法處理好,所以有必要有效消除按鍵抖動。圖 4.3按鍵波形按鍵檢測的代碼如下:reg20:0 delay;/延時計數(shù)器reg1:0 key_value

23、r1,key_valuer2;wire1:0 key_change;/ always (posedge clk_100m or negedge rst_n)if(!rst_n) delay = 21d0;else delay = delay+1b1;/ always (posedge clk_100m or negedge rst_n)if(!rst_n) beginkey_valuer1 = 2b11;key_valuer2 = 2b11;endelse if(delay = 21h1fffff) beginkey_valuer1 = add_key,dec_key;/delay 20ms,

24、鎖定鍵值key_valuer2 = key_valuer1;endassign key_change = (delay = 21d1) ? (key_valuer1 & (key_valuer2) : 2b00;程序設計的基本思路是:第一個always模塊啟動計數(shù)器,延時20ms左右的時間。(2) 第二個always語句,每過一個20ms,進行一次鍵值采集。(3) 如果前后20ms的鍵值是否發(fā)生了改變,則鎖定鍵值,同時輸出控制信號key_change。4.2.2 觸發(fā)控制組合觸發(fā)(也叫基本觸發(fā))是將邏輯分析儀各通道的信號與各通道預置的觸發(fā)字進行比較,當這些觸發(fā)字一一匹配時,就能夠產生觸發(fā)信號。

25、這種功能可以在復雜的數(shù)據(jù)流中觀察和分析某些特定的數(shù)據(jù)塊。如選擇“AMP”指令在數(shù)據(jù)線上出現(xiàn)的時刻作為觸發(fā)條件,就可以使邏輯分析儀跟蹤AMP指令,監(jiān)視程序的轉移。這對組合觸發(fā)是非常有利的。邏輯分析儀都必須要具備組合觸發(fā)的功能。它主要由主要由兩種方式構成,即觸發(fā)開始跟蹤和觸發(fā)終止跟蹤(也被稱為開始顯示觸發(fā)和終止顯示觸發(fā)或后置觸發(fā)和預觸發(fā))。開始觸發(fā)的原理是直到寫滿數(shù)據(jù)為止,存儲采集的數(shù)據(jù)的先決條件(從數(shù)據(jù)流中識別觸發(fā)字)只要滿足,存儲器就一直存儲數(shù)據(jù)。而終止觸發(fā)的先決條件是存儲器存滿新數(shù)據(jù)后才開始觸發(fā),也就是說當存儲器存滿新數(shù)據(jù)時,就開始在數(shù)據(jù)流中搜索觸發(fā)字,只要能搜素到數(shù)據(jù)就停止存儲的動作。此時

26、存儲器中所寫入的信息就是以觸發(fā)字為終點的一組數(shù)據(jù)。對于故障診斷來說,這樣的功能是很有實際意義的。一旦系統(tǒng)出錯的數(shù)據(jù)被設置為觸發(fā)字,邏輯分析儀就會去搜索這些出錯的數(shù)據(jù),甚至一些意想不到的情況也能找得到,這對于分析故障的原因很有幫助。組合觸發(fā)的代碼如下:input trigger;reg trigger_r1,trigger_r2,trigger_r3;wire pos_tri;wire neg_tri;always (posedge clk_100m or negedge rst_n) if(!rst_n) begintrigger_r1 = 1b0;trigger_r2 = 1b0;trigg

27、er_r3 = 1b0;endelse begintrigger_r1 = trigger;trigger_r2 = trigger_r1;trigger_r3 = trigger_r2;endassign pos_tri = trigger_r2 & trigger_r3;assign neg_tri = trigger_r2 & trigger_r3reg trigger_valid;/設定的觸發(fā)條件滿足后,該標志位拉高always (posedge clk_100m or negedge rst_n)if(!rst_n) trigger_valid = 1b0;else if(!samp

28、ling_clr_n) trigger_valid = 1b0;else if(tri_mode & pos_tri) trigger_valid = 1b1; else if(!tri_mode & neg_tri) trigger_valid = 1b1;4.2.3 數(shù)據(jù)采集在數(shù)據(jù)采集模塊的采樣時鐘的作用下對被測數(shù)據(jù)進行采樣,采樣的數(shù)據(jù)經過觸發(fā)模塊與觸發(fā)條件進行比較,若滿足觸發(fā)條件,將采集到的數(shù)據(jù)按照觸發(fā)前和觸發(fā)后兩種方式放置在數(shù)據(jù)移位寄存器中,然后經VGA接口傳送到顯示屏上上進行顯示,以供使用者對采集到的數(shù)據(jù)進行分析。數(shù)據(jù)采集的時鐘即基本的時鐘為PLL_c0 = 100MHz,其可調的采

29、集頻率如表4.3下:共10級。表4.3 可調的采集頻率頻率:100M50M25M10M2M1M500K200K100K10K周期:10ns20ns40ns100ns500ns1us2us5us10us100us計數(shù):01394999199499999999計數(shù)為PLL_c0計數(shù)值,使用時鐘使能方式控制采集時刻。sapdiv_cnt為采集率分頻計數(shù)器計數(shù)信號。sampling_rate為采集率設置寄存器。sapdiv_max為采集率對應的分頻計數(shù)值。數(shù)據(jù)采集的部分代碼如下:reg13:0 sapdiv_cnt;/采樣率分頻計數(shù)器 0-9999reg3:0 sampling_rate;/采樣率設置

30、寄存器,0-100M,1-50M,9-10Kreg13:0 sapdiv_max;/采樣率對應的分頻計數(shù)值wire sapdiv_end;/采樣點到置高一個時鐘周期/采樣頻率控制按鍵處理always (posedge clk_100m or negedge rst_n)if(!rst_n) sampling_rate = 4d0;else if(key_change1 & (sampling_rate 4d9) sampling_rate 4d0) sampling_rate = sampling_rate-1b1;/采樣周期模式最小到0/計算采樣率對應的分頻計數(shù)值always (sampli

31、ng_rate)case(sampling_rate)4d0: sapdiv_max = 14d0;4d1: sapdiv_max = 14d1;4d2: sapdiv_max = 14d3;4d3: sapdiv_max = 14d9; 4d4: sapdiv_max = 14d49; 4d5: sapdiv_max = 14d99; 4d6: sapdiv_max = 14d199; 4d7: sapdiv_max = 14d499; 4d8: sapdiv_max = 14d999; 4d9: sapdiv_max = 14d9999; default: sapdiv_max = 14d

32、0;endcase/采樣頻率分頻計數(shù)always (posedge clk_100m or negedge rst_n)if(!rst_n) sapdiv_cnt = 14d0;else if(sapdiv_cnt = sapdiv_max) sapdiv_cnt = 14d0;/采樣率計數(shù)最大值到else sapdiv_cnt = sapdiv_cnt+1b1; assign sapdiv_end = (sapdiv_cnt = 14d0);/采樣點到/產生64*16個移位寄存器reg63:0 sft_r0;/移位寄存器組0reg63:0 sft_r1;/移位寄存器組1/采集信號signal

33、0always (posedge clk_100m or negedge rst_n)if(!rst_n) sft_r0 = 64d0;else if(sampling_start) sft_r0 = signal0,sft_r063:1;/向右移位,最高位輸入新數(shù)據(jù)4.2.4 移位寄存器本設計采用Cyclone芯片內部M4K結構配置移位寄存器對數(shù)據(jù)實時采集,并且設置2個按鍵調節(jié)控制采集頻率。圖4.4為M4K移位寄存器原理圖。它的參數(shù)w,m,n分別表示為輸入輸出的數(shù)據(jù)位寬,移位寄存器的一個taps位寬,總的taps數(shù)量。這三個參數(shù)相乘得到的結果就是占用的M4K存儲空間的大小。從圖中可得知,每個

34、clk輸入時,有一個移位數(shù)據(jù)和一個輸出數(shù)據(jù),M4K內部則是每個clk周期移位一次,每個tap的輸出直接移位到下一個tap的輸入,配置后的輸出里可以看到每個tap的最后一個w位寬的數(shù)據(jù)。本設計共使用16組移位寄存器來采集數(shù)據(jù),sft_r063:0到sft_rf63:0這16組數(shù)據(jù)就是16路輸入信號在觸發(fā)后,最終需要顯示到液晶屏供用戶觀察的連續(xù)64個采集值。這16個數(shù)組一直以移位寄存器的方式不斷的讀進新的采集值,直到觸發(fā)信號到來,根據(jù)采集模式的不同,在相應的時刻這個移位寄存器停止工作,當前的64位采用值也就固定不變了。移位寄存器部分代碼:reg63:0 sft_r0; always (posedg

35、e clk_100m or negedge rst_n)if(!rst_n) sft_r0 = 64d0;else if(sampling_start) sft_r0 = signal0,sft_r063:1;圖4.4 M4K移位寄存器原理圖4.2.5 數(shù)據(jù)采集模塊接口定義信號采集模塊sampling_ctrl.v的輸入接口定義如表4.4所示表4.4輸出接口定義信號名方向功能描述clk_100minputFPAG 采集時鐘信號,頻率為100MHzrst_ninput系統(tǒng)復位信號,低電平有效signal15:0input16 路被采集信號TriggerInput1 路觸發(fā)信號,可配置為上升沿或者

36、下降沿觸發(fā)tri_modeinput觸發(fā)信號模式選擇,1-上升沿觸發(fā),0-下降沿觸發(fā)sampling_mode2:0input采集模式選擇,高電平表示選中。001-MODE1,010-MODE2,100-MODE3add_keyinput按鍵用于控制采集頻率的降低,低電平表示按下dec_keyInput按鍵用于控制采集頻率的提高,低電平表示按下sampling_clr_nInput采集清除信號,用于清除當前采集數(shù)據(jù),低有效disp_ctrloutputVGA 觸發(fā)且采集完成,顯示波形使能sampling_rate3:0output采集率設置寄存器, 0-100M, 1-50M, , 9-10s

37、ft_r063:0output移位寄存器組 0,送給 VGA 顯示的數(shù)據(jù)sft_r163:0output移位寄存器組 0,送給 VGA 顯示的數(shù)據(jù)sft_r263:0output移位寄存器組 0,送給 VGA 顯示的數(shù)據(jù)sft_r363:0output移位寄存器組 0,送給 VGA 顯示的數(shù)據(jù)sft_r463:0output移位寄存器組 0,送給 VGA 顯示的數(shù)據(jù)sft_r563:0output移位寄存器組 0,送給 VGA 顯示的數(shù)據(jù)sft_r663:0output移位寄存器組 0,送給 VGA 顯示的數(shù)據(jù)sft_r763:0output移位寄存器組 0,送給 VGA 顯示的數(shù)據(jù)sft_r

38、863:0output移位寄存器組 0,送給 VGA 顯示的數(shù)據(jù)sft_r963:0output移位寄存器組 0,送給 VGA 顯示的數(shù)據(jù)ft_ra63:0output移位寄存器組 a,送給 VGA 顯示的數(shù)據(jù)ft_rb63:0output移位寄存器組 a,送給 VGA 顯示的數(shù)據(jù)ft_rc63:0output移位寄存器組 a,送給 VGA 顯示的數(shù)據(jù)ft_rd63:0output移位寄存器組 a,送給 VGA 顯示的數(shù)據(jù)ft_re63:0output移位寄存器組 a,送給 VGA 顯示的數(shù)據(jù)ft_rf63:0output移位寄存器組 a,送給 VGA 顯示的數(shù)據(jù)時鐘clk_100m是由PLL

39、電路對FPGA輸入的25MHz晶振時鐘倍頻得到的,用于對16路待采集信號的采集。觸發(fā)信號模式選擇輸入tri_mode和采集模式選擇輸入。sampling_mode2:0都是直接由FPGA外部的一組撥碼開關控制的。用戶可以通過撥碼開關控制這些輸入電平為高或者低,從而設置不同的觸發(fā)和采集模式。觸發(fā)信號輸入trigger可以配置成上升沿有效或者下降沿有效。若設置為上升沿有效(撥碼開關設置 tri_mode=1),則當FPGA檢測到trigger的輸入電平由0到1跳變時,F(xiàn)PGA就根據(jù)一定的采集模式將采集到的16路信號顯示到液晶屏上。若設置為下降沿有效(撥碼開關設置tri_mode=0),則當FPGA

40、檢測到trigger的輸入電平由1到0跳變時,相應顯示16路信號的一組采集值。disp_ctrl信號用于控制液晶屏是否顯示波形,只有當觸發(fā)信號有效后(出現(xiàn)上升沿或者下降沿),disp_ctr才會被置高電平,液晶屏才會顯示采集到的數(shù)據(jù)波形。add_key和dec_key是兩個按鍵,F(xiàn)PGA中設計了一個按鍵檢測電路用于處理它們的鍵值。按鍵未被按下時保持高電平,按下則相應鍵值為低電平,設計中通過20ms間隔采集和脈沖邊沿檢測法實現(xiàn)這個按鍵的檢測。這兩個按鍵每次有效按下后,相應的提高或者降低信號采集的頻率。也就是說,用這兩個按鍵可以設置10檔采集頻率。采集清除信號sampling_clr_n也是FPG

41、A外部的一個按鍵,該按鍵的作用就是清除之前采集到的數(shù)據(jù)以及當前顯示的采集波形,準備下一次數(shù)據(jù)采集。sampling_rate3:0表示了當前的數(shù)據(jù)采集頻率,它輸出到VGA顯示模塊,主要是用于液晶屏顯示相應的數(shù)值,便于用戶把握當前的采集頻率值。本文利用Cyclone芯片內部M4K結構配置移位寄存器結合普通的組合觸發(fā)方式,對數(shù)據(jù)實時采集,并且設置2個按鍵調節(jié)控制采集頻率,通過FPGA外部的一組撥碼開關控制輸入電平的高或者低,從而設置不同的觸發(fā)和采集模式。使本邏輯分析儀能夠有效的在測量中將復雜的數(shù)據(jù)流進行分段采集、存儲、觀察和分析。4.3 VGA顯示模塊4.3.1 VGA接口原理視頻圖形陣列( HY

42、PERLINK /wiki/%E8%8B%B1%E8%AF%AD o 英語 英語:Video Graphics Array,簡稱VGA)是 HYPERLINK /wiki/IBM o IBM IBM于1987年提出的一個使用 HYPERLINK /wiki/%E9%A1%9E%E6%AF%94%E8%A8%8A%E8%99%9F o 模擬信號 模擬信號的計算機顯示標準。盡管VGA如今已經顯得過時,但它仍然是最多制造商所共同支持的一個標準,個人計算機在加載自己的獨特驅動程序之前,都必須支持VGA的標準。通過對FPGA編程,可以輸出RGB三基色信號和HSYNC行同步信號、VSYNC場同步信號。當輸

43、出的控制信號送到FPGA內部時,根據(jù)控制信號數(shù)據(jù)選擇器會選通相對應的圖像生成模塊輸出圖像信號,之后通過15針D型接口電路與行場掃描信號一起送入VGA顯示器,在VGA顯示器就會有彩色圖像顯示。它的接口圖如圖4.5所示。圖4.5 VGA接口VGA的接口定義如下表4.5所示。表4.5 VGA接口定義管腳定義1紅基色 red2 綠基色 green3 藍基色 blue4地址碼 10 Bit5自測試(各家定義不同)6紅地7綠地8藍地9保留(各家定義不同)10數(shù)字地11地址碼12地址碼13行同步14場同步15地址碼(各家定義不同)對于VGA顯示器來說,真正用到的信號只有RGB三基色信號和HSY行同步信號、V

44、SY場同步信號這五個信號。它們的時序驅動要嚴格遵循“VGA工業(yè)標準”,即64048060HZ模式,否則無法顯示正確地圖象。如果需要在顯示設備上顯示一幅圖片,則可以設置相應的計數(shù)器,產生出水平和垂直掃描信號,并將圖片信息保存在ROM中,然后從ROM中讀入緩沖區(qū),不停的刷新即可。VGA接口的部分代碼如下:input clk_25m;/ 25MHzinput rst_n; /低電平復位/ FPGA與VGA接口信號output hsync; /行同步信號output vsync; /場同步信號output2:0 vga_r;output2:0 vga_g;output1:0 vga_b;reg hsy

45、nc_r,vsync_r;/同步信號always (posedge clk_25m or negedge rst_n)if(!rst_n) hsync_r = 1b1;else if(x_cnt = 10d0) hsync_r = 1b0;/產生hsync信號else if(x_cnt = 10d96) hsync_r = 1b1;always (posedge clk_25m or negedge rst_n)if(!rst_n) vsync_r = 1b1; else if(y_cnt = 10d0) vsync_r = 1b0;/產生vsync信號else if(y_cnt = 10d2

46、) vsync_r = 1b1;assign hsync = hsync_r;assign vsync = vsync_r;/有效顯示標志位產生reg valid_yr;/行顯示有效信號always (posedge clk_25m or negedge rst_n)if(!rst_n) valid_yr = 1b0;else if(y_cnt = 10d32) valid_yr = 1b1;else if(y_cnt = 10d512) valid_yr = 1b0;wire valid_y = valid_yr;reg valid_r;/ VGA有效顯示區(qū)標志位always (posedg

47、e clk_25m or negedge rst_n)if(!rst_n) valid_r = 1b0;else if(x_cnt = 10d141) & valid_y) valid_r = 1b1;else if(x_cnt = 10d781) & valid_y) valid_r = 1b0;wire valid = valid_r;4.3.2 VGA字符顯示若要顯示字符,首先得獲得字模數(shù)據(jù),在本模塊的設計中使用字模軟件 PCtoLCD2002,顯示字符獲得字模的數(shù)據(jù),該字模軟件的1bit代表一個像素點的色彩,可以根據(jù)需要來決定這1bit數(shù)據(jù)(0或1)代表的色彩。PCtoLCD2002字

48、模配置界面如圖4.6所示。圖 4.6 PCtoLCD2002 字模配置界面字符的取模要用到PCtoLCD2002這個軟件,單擊菜單“模式”,選擇“字符模式”。菜單欄中單擊“選項”,彈出對話框,在其中進行設置。這里主要是針對取模的方向,輸出數(shù)據(jù)的格式等進行配置,配置完成后單擊“確定”。之后在輸入文字處輸入想要輸入的字,單擊“生成字?!保敵鲎帜?shù)據(jù)如下:0000000002000020將上面的字模數(shù)據(jù)定義為Verilog的參數(shù),用于VGA顯示。每一字符的像素都是816個像素,一個數(shù)據(jù)要占用16字節(jié)的空間,而一行要用去1個字節(jié)相當于8個像素的數(shù)據(jù)。parameter char_addr=24h00

49、000000, char_addr=24h 02000020,字模取模輸出數(shù)制為十六進制,方式為三種,分別為采取陰碼的高位在前的逆向取模走向,點陣格式以及逐行式。一個字節(jié)的開始是從第一行向右的每8個字節(jié),若不足8個點就補滿8位取模順序是從高到低,即第一個點作為最高位。如圖4.7所示,為輸入文字“DIY 邏輯分析儀”的輸出字模數(shù)據(jù):圖 4.7 字模數(shù)據(jù)下面舉例說明如何將字模數(shù)據(jù)送到顯示屏幕的制定位置。假設有3個字符要求送到顯示屏幕上,那么首先要把這3個字符看做一個整體,即共占用2416個像素點。假設顯示字符的坐標區(qū)域是從(0,0)坐標到(23,16)坐標,當坐標計數(shù)從(0,0)開始計數(shù),到23的

50、值的期間就要判斷char_addr的位23的值。之后會判斷送出何種色彩,VGA色彩的定義如表4.6所示。當坐標計數(shù)到(0,1)時,相應的要判斷char_addr的位22的值。以此類推,直到坐標計數(shù)到(0,23)時,判斷char_addr的位0的值。如此一來,就完成了一次字模數(shù)據(jù)的譯碼。當所有的字模數(shù)據(jù)都尋址完后,屏幕上就會顯示出想要顯示的字了。表4.6 VGA色彩的定義RGB = 000黑色RGB = 100紅色 = 001藍色= 101紫色 = 010綠色= 110黃色 = 011青色= 111白色VGA字符坐標代碼如下:reg9:0 x_cnt;/行坐標reg9:0 y_cnt;/列坐標a

51、lways (posedge clk_25m or negedge rst_n)if(!rst_n) x_cnt = 10d0;else if(x_cnt = 10d799) x_cnt = 10d0;else x_cnt = x_cnt+1b1;always (posedge clk_25m or negedge rst_n)if(!rst_n) y_cnt = 10d0;else if(y_cnt = 10d524) y_cnt = 10d0;else if(x_cnt = 10d799) y_cnt = y_cnt+1b1;4.3.3 VGA顯示模塊接口定義VGA顯示驅動控制模塊vga_

52、ctrl.v的輸入輸出接口定義如表4.7所示。表4.7 VGA顯示模塊接口定義信號名稱方向描述clk_25minputVGA時序驅動時鐘,頻率為25MHzrst_ninput系統(tǒng)復位信號,低電平有效sampling_mode2:0input采集模式選擇,高電平表示選中。001-MODE1,010-MODE2,100-MODE3tri_modeinput觸發(fā)信號模式選擇,1-上升沿觸發(fā),0-下降沿觸發(fā)disp_ctrlinputVGA觸發(fā)且采集完成,顯示波形使能sampling_rate3:0input采集率設置寄存器,0-100M,1-50M,9-10Ksft_r063:0input移位寄存器

53、組 0,送給 VGA 顯示的數(shù)據(jù)續(xù)表4.7 VGA顯示模塊接口定義信號名稱方向描述sft_r163:0input移位寄存器組 0,送給 VGA 顯示的數(shù)據(jù)sft_r263:0input移位寄存器組 0,送給 VGA 顯示的數(shù)據(jù)sft_r363:0input移位寄存器組 0,送給 VGA 顯示的數(shù)據(jù)sft_r463:0input移位寄存器組 0,送給 VGA 顯示的數(shù)據(jù)sft_r563:0input移位寄存器組 0,送給 VGA 顯示的數(shù)據(jù)sft_r663:0input移位寄存器組 0,送給 VGA 顯示的數(shù)據(jù)sft_r763:0input移位寄存器組 0,送給 VGA 顯示的數(shù)據(jù)sft_r96

54、3:0input移位寄存器組 0,送給 VGA 顯示的數(shù)據(jù)sft_ra63:0input移位寄存器組 0,送給 VGA 顯示的數(shù)據(jù)sft_rb63:0input移位寄存器組 0,送給 VGA 顯示的數(shù)據(jù)sft_rc63:0input移位寄存器組 0,送給 VGA 顯示的數(shù)據(jù)sft_rd63:0input移位寄存器組 0,送給 VGA 顯示的數(shù)據(jù)sft_re63:0input移位寄存器組 0,送給 VGA 顯示的數(shù)據(jù)sft_rf63:0input移位寄存器組 0,送給 VGA 顯示的數(shù)據(jù)HsyncoutputVGA 行同步信號VsyncoutputVGA 場同步信號vga_r2:0outputV

55、GA 色彩vga_g2:0outputVGA 色彩vga_b2:0outputVGA 色彩該模塊的時鐘clk_25m是由PLL電路對FPGA輸入的25MHz晶振時鐘分頻后得到的,用于VGA工作于640*480/60Hz的驅動時鐘。采集模式選擇信號sampling_mode2:0和觸發(fā)信號模式選擇tri_mode都是由FPGA 外部撥碼開關控制的輸入信號。波形顯示控制位disp_ctrl和采集頻率寄存器sampling_rate3:0都是由上一個模塊sampling_ctrl.v送過來的。這些信號之所以要輸入到該模塊,主要傳遞一些需要顯示到液晶屏上的字符的相關信息。也就是說該模塊就是要完成這樣一

56、個基本的顯示界面的設計。而sampling_rate3:0、tri_mod和 sampling_mode2:0這幾組信號也就是傳遞了Sampling Period: 、Trigger mode: 和Sampling Mode:這些選項后的集體參數(shù)信息。disp_ctrl則是控制著主界面中是否顯示信號的波形。該模塊中的很多字模數(shù)據(jù)并不是由其它模塊送過來的,它充分利用了M4K存儲塊配置了一些ROM,這些ROM里就存儲了這些字符的字模數(shù)據(jù)。第5章 時序約束與仿真驗證5.1 PLL仿真與時序5.1.1 PLL仿真在Quartus里面例化的PLL模塊,輸入為inclk0,25MHz,輸出為c0和c1,分

57、別為25M和100M。PLL的仿真結果如圖5.1所示,從圖片可以看出,時鐘c1經過4分頻后,產生c0的時鐘頻率是c1的4倍,基本驗證了PLL模塊的功能。圖5.1 PLL的仿真結果5.1.2 時序分析簡介靜態(tài)時序分析(英語:Static Timing Analysis, STA)的原理是,首先提取出電路的所有時序路徑,之后再在計算這些信號的傳播延時,檢查其建立時間與保持時間有沒有超出時序所規(guī)定的范圍。之后再采用窮盡分析方法來分析最大路徑延時和最小路徑延時,找出和時序約束不符的地方。它的優(yōu)點是,不用輸入向量就能窮盡所有的路徑,而且它占用內存較少,速度也很快。因此,靜態(tài)時序分析的使用,越來越多的數(shù)字

58、集成電路設計中被采用,一方面它可以進行全面的時序功能檢查,另一方面還可利用時序分析的結果來優(yōu)化設計。5.1.3 時序分析工具TimeQuestTimeQuests Timing Analyzer是一個功能強大的時序分析工具采用Synopsys Design Constraints(SDC)文件格式作為時序約束輸入,不同于Timing Analyzer采用的Quartus Settings File(QSF)約束文件。這正是TimeQuest的優(yōu)點:采用行業(yè)通用的約束語言而不是專有語言,有利于設計約束從FPGA向ASIC設計流程遷移;有利于創(chuàng)建更細致深入的約束條件。做為Altera FPGA開發(fā)

59、流程中的一個組成部分,TimeQuest執(zhí)行從驗證約束到時序仿真的所有工作。如圖5.3所示,Altera推薦使用下面的流程來完成TimeQuest的操作。圖5.2 TimeQuest的操作流程5.1.4 PLL時序約束在Altera的FPGA中,PLL電路是通過ALTPLL的IP庫被添加到設計中的。圖5.3是一個典型的ALTPLL的結構圖。圖5.3 ALTPLL的結構圖圖上可以看到,當我們選定了基準時鐘和PLL的參數(shù)以后,PLL的輸出c0和c1的參數(shù)就隨之確定了。所以在QuartusII環(huán)境下,可以通過一個簡單的命令讓軟件自動生成PLL輸出的時鐘的時序約束。derive_pll_clocks這

60、個命令會自動創(chuàng)建時鐘信息輸出的C0和C1的相關時序約束。 這個命令會自動創(chuàng)建PLL輸出的C0和C1的相關時序約束。同樣的,在sdc文件里添加該命令,然后編譯,在TimeQuest里查看時鐘信息。如圖5.4所示,derive_pll_clocks在系統(tǒng)里添加了兩個時鐘,PLL1|altpll_component|auto_generated|pll1|clk0和PLL1|altpll_component|auto_generated|pll1|clk1。可以看出,時鐘是按“PLL層次結構+時鐘端口名字”的規(guī)則命名的。時鐘的類型為created clock,周期頻率是在PLL里設定好的。Clock

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論