FPGACPLD應用技術 數字系統的驗證_第1頁
FPGACPLD應用技術 數字系統的驗證_第2頁
FPGACPLD應用技術 數字系統的驗證_第3頁
FPGACPLD應用技術 數字系統的驗證_第4頁
FPGACPLD應用技術 數字系統的驗證_第5頁
已閱讀5頁,還剩31頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

會計學1FPGACPLD應用技術數字系統的驗證任務:設計一個具有“百分秒、秒、分”計時功能的數字跑表,可以實現一個小時以內精確百分之一秒的計時,具有復位、暫停功能,其設計方案框圖如圖5.1所示。要求復位信號高電平有效,對系統異步清零,暫停信號高電平有效,即高電平停止計數,低電平繼續計數,百分秒、秒、分鐘計數均采用BCD碼計數方式。第1頁/共36頁邏輯設計`timescale1ns/1nsModulepaobiao(clk,reset,pause,ms_h,ms_l,s_h,s_l,m_h,m_l);第2頁/共36頁3.Testbench設計在數字系統設計完成后,就要對設計電路進行功能仿真,以驗證設計的正確性,這是本任務的核心步驟。編寫Testbench的主要目的是為了對使用硬件描述語言(HDL)設計的電路進行仿真驗證,測試設計電路的功能、部分性能是否與預期的目標相符。第3頁/共36頁moduletb_paobiao;reg clk,reset,pause;wire[3:0] ms_h,ms_l,s_h,s_l,m_h,m_l;paobiaou_paobiao(clk,reset,pause,ms_h,ms_l,s_h,s_l,m_h,m_l);//時鐘產生模塊initialbegin clk=1'b0;endalways #5clk=~clk;//復位信號產生initialbegin reset=1'b0; #100reset=1'b1; #10reset=1'b0;end//暫停信號產生initialbegin pause=1'b1; #300pause=1'b0; #119905pause=1'b1; #30pause=1'b0;endinitial$monitor($stime,,reset,,clk,,,pause,,ms_h,,ms_l,,s_h,,s_l,,m_h,,m_l);endmodule第4頁/共36頁Modelsim仿真1)新建project(1)選擇菜單File/new/project,彈出CreateProject對話框,如圖5.2所示。第5頁/共36頁Modelsim仿真1)新建project(2)添加文件到Project中在彈出的CreateProject對話框中點擊OK,彈出AdditemstotheProject對話框,選擇AddExistingFile,彈出CreateProjectFile對話框,如圖5.3所示。第6頁/共36頁Modelsim仿真1)新建project(3)在AddfileasType欄中選擇Verilog,點擊Browse,添加文件后的對話框,如圖5.4所示。第7頁/共36頁Modelsim仿真2)編譯源代碼點擊菜單Compile/Compileall,編譯后的文件狀態如圖5.5所示。第8頁/共36頁Modelsim仿真3)啟動仿真器點擊StartSimulation,啟動仿真器,如圖5.6所示。第9頁/共36頁Modelsim仿真3)啟動仿真器在work工作庫下找到testbench文件,并選中,然后點擊OK,如圖5.7所示。第10頁/共36頁Modelsim仿真4)執行仿真將仿真信號添加到仿真波形窗口,用鼠標選中仿真信號,選擇菜單Add/Wave/SelectedSignals,如圖5.8所示。第11頁/共36頁Modelsim仿真4)執行仿真選擇菜單Simulation/Run/RunAll,執行仿真,仿真波形如圖5.9所示。第12頁/共36頁ModelsimModelsim是Mentor公司開發的HDL硬件描述語言仿真軟件,該軟件可以用來實現對用戶設計的VHDL、Verilog或者兩種語言混合的程序進行仿真,同時也支持IEEE常見的各種硬件描述語言標準。第13頁/共36頁使用Modelsim進行功能仿真

1.新建工程

在Modelsim軟件中選擇“File”菜單下的“New”選項,選擇“Project”選項,打開如圖5.16所示的新建工程對話框。在該對話框中填寫工程名稱,路徑和庫。單擊“OK”按鈕,彈出如圖5.17所示的添加工程項目對話框。選擇向工程添加的項目類型,然后單擊“Close”按鈕完成工程的建立。這里選擇“AddExitingFile”項目。第14頁/共36頁使用Modelsim進行功能仿真

2.加入文件在新建工程時,也可以不選擇添加的項目種類,而是在project欄里面單擊右鍵,在彈出的菜單中選擇“AddtoProject→ExistingFile”,如圖5.18所示。第15頁/共36頁使用Modelsim進行功能仿真

3.編譯源代碼Verilog源文件的GUI模式的編譯方法是:直接執行主窗口中“Compile”菜單下的各種不同的編譯命令,如圖5.20所示。第16頁/共36頁使用Modelsim進行功能仿真

3.編譯源代碼當文件窗口中“Status”欄的“﹖”圖標變成一個“√”的圖標時,說明文件編譯成功,如圖5.21所示。第17頁/共36頁使用Modelsim進行功能仿真

4.啟動仿真器并加載頂層設計這一步驟的GUI操作方法:執行主菜單中的Simulate/Simulate命令。打開開始仿真對話框,如圖5.24所示,選擇頂層模塊,如圖5.25所示。

第18頁/共36頁使用Modelsim進行功能仿真

5.執行仿真,查看波形右鍵單擊test,選擇“Add”選項下面的“AddtoWave”選項,為波形窗口添加信號,如圖5.26所示。

第19頁/共36頁使用Modelsim進行功能仿真

5.執行仿真,查看波形此時即可在新彈出的窗口中看到已添加的信號,如圖5.27所示。

第20頁/共36頁使用Modelsim進行功能仿真

5.執行仿真,查看波形單擊工具欄中的圖標就能看見仿真結果了,如圖5.28所示。

第21頁/共36頁5.3Testbench設計方法通常Testbench沒有輸入與輸出端口,通常應包括信號或變量定義,產生激勵波形語句,例化設計模塊,監控和比較響應輸出語句。5.3.1Testbench基本結構moduletest_bench;

信號或變量定義聲明使用initial或always語句來產生激勵波形例化設計模塊監控和比較輸出響應endmodule第22頁/共36頁5.3Testbench設計方法HDL用于描述硬件電路,同樣也可以用于描述仿真激勵的產生。HDL描述可以產生所需要的控制信號,以及一些簡單的數據。5.3.2簡單CPU接口激勵產生方式initialbegin cs_n=1;//CPU接口初始狀態

wr_n=1; rd_n=1; addr=8’hxx; data=8’hzz; #1000; //一次寫操作

cs_n=0;

wr_n=0; addr=8’h80; data=8’h00; #100; cs_n=1;wr_n=1;#10;addr=8’hxx;data=8’hzz;end第23頁/共36頁5.3Testbench設計方法5.3.4常用產生激勵描述方式1)產生時鐘的幾種方式(1)使用initial方式產生占空比為50%的時鐘initialbegin clk=0; #delay; forever #(period/2)clk=~clk;end第24頁/共36頁5.3Testbench設計方法5.3.4常用產生激勵描述方式1)產生時鐘的幾種方式(2)使用always方式initial clk=0;always #(period/2)clk=~clk;第25頁/共36頁5.3Testbench設計方法5.3.4常用產生激勵描述方式1)產生時鐘的幾種方式(3)使用repeat方式產生確定數目的時鐘脈沖initialbegin clk=0;repeat(6)

#(period/2)clk=~clk;end第26頁/共36頁5.3Testbench設計方法5.3.4常用產生激勵描述方式1)產生時鐘的幾種方式(4)產生占空比非50%的時鐘initial clk=0;alwaysbegin #3clk=~clk; #2clk=~clk;end第27頁/共36頁5.3Testbench設計方法5.3.4常用產生激勵描述方式2)產生復位信號的幾種方式(1)異步復位initialbegin rst=1; #100; rst=0; #500; rst=1;end第28頁/共36頁5.3Testbench設計方法5.3.4常用產生激勵描述方式2)產生復位信號的幾種方式(2)同步復位1initialbegin rst=1; @(negedgeclk);//等待時鐘下降沿

rst=0; #30; @(negedgeclk);//等待時鐘下降沿

rst=1;end第29頁/共36頁5.3Testbench設計方法5.3.4常用產生激勵描述方式2)產生復位信號的幾種方式(3)同步復位2initialbegin rst=1; @(negedgeclk); //等待時鐘下降沿

repeat(3)@(negedgeclk);//經過3個時鐘下降沿

rst=1;end第30頁/共36頁5.4常用的Verilog測試語句1.$display/$monitor//在終端上打印信號的ASCII值initialbegin $timeformat(-9,1,“ns”,12);//設置輸出時鐘格式

$display(“stimeclkrstpausems_hms_ls_hs_lm_hm_l”);//顯示輸入的字符串

$monitor(“%t%b%b%b%b%b%b%b%b”,//設置輸出信號格式

$realtime,clock,reset,pause,ms_h,ms_l,s_h,s_l,m_h,m_l);//指定輸出的信號end$display是將函數內部雙引號中的字符串輸出在終端上。而$monitor則不同,它的輸出是事件驅動的。在例子中,$monitor信號列表中的$realtime信號變化會觸發終端顯示事件的發生,該信號被設計者對應到仿真時間中,每次$monitor的觸發將會把信號列表中的信號值顯示在終端中。$monitor語句中的“%”用于定義信號列表中信號的輸出格式。例如,%t將信號按照時間格式輸出,%b將信號按照二進制格式輸出。另外VerilogHDL語言還提供了其它的輸出格式,比如%h為十六進制輸出,%d為十進制輸出,%o為八進制輸出等。第31頁/共36頁5.4常用的Verilog測試語句2.timescales'timescale1ns/1ps//度量參考為1ns,精度為1psmoduletestbench; … initialbegin #10rst=1;//10個仿真時間延時,相當于10x1ns=10ns的仿真時間

… end initialbegin //display語句將在每一個仿真推進布進中執行,也就是1ps執行一次

$display(''%d,rst=%b"m$time,rst); endendmodule'timescalereference_time/precision其中reference_time是單位時間的度量,precision決定了仿真的推進延遲精度,同時也設置了仿真的推進步進單位。第32頁/共36頁5.4常用的Verilog測試語句3.force/releasemodule testbench; ... initialbegin rst=1;//在仿真時間零點將rst賦值1 forcedata=101;//在仿真時間零點強制使data為101,并保持

#30rst=0;//在仿真絕對時間30將rst賦值0 #50releasedata;//在仿真絕對時間80釋放

...//data值將保持直到下一個

溫馨提示

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

評論

0/150

提交評論