設計流程:
設計規劃--波形繪制--編寫代碼--代碼編譯--編寫testbench--對比波形--綁定管腳--全編譯--上板驗證
設計規劃
使用用戶手冊,了解硬件資源,這個示例中需要用到按鍵和LED燈:
1、按鍵
在沒有按鍵按下時,輸出高電平(紅色); 當按鍵按下的時候,被按下的按鍵端會輸出低電平(藍色)。
2、LED燈
當 FPGA 輸出低電平時,LED 點亮,當 LED 輸出高電平時,沒有電位差,LED 燈熄滅。
由上可知:需要實現的功能是,當按下按鍵時(key_in=0,PIN_M16管腳),LED燈要被點亮(led_out=0,PIN_A2管腳)。 此處波形非常簡單,省略畫波形的步驟,對于復雜電路還是需要畫波形來理清思路。 這里波形應該是key與led波形一致。
打開quartus,新建工程。
編寫代碼
編寫.v文件,代碼如下:
module led
(
input wire key_in , //輸入按鍵
output wire led_out //輸出控制led燈
);
//led_out:led燈輸出的結果為key_in按鍵的輸入值
assign led_out = key_in;
endmodule
將.v文件添加到文件目錄下,右鍵Files文件夾選擇添加.v文件,添加完成后可以在Files下看到添加的.v文件:
代碼編譯
點擊如圖所示的圖標,可以檢查語法是否有錯,綜合器將代碼解釋為電路的形式。 綠色表示通過。
點擊RTL viewer可以查看設計的硬件電路結構,和我們設計所表達的意思相同
編寫testbench
Testbench是測試電路功能和性能的腳本。 在線邏輯分析雖然好用但是每次修改代碼都需要綜合一次,而使用testbench做仿真的速度就很快,所以一開始就應該編寫testbench以便后面大型電路的驗證。
testbench就是產生輸入波形,加入到被測模塊上并觀測其輸出,和我們之前畫好的波形進行比對。
編寫.v文件
`timescale 1ns/1ns //時間尺度/時間精度,時間精度<=時間尺度
module tb_led();
wire led_out ;
reg key_in ;
//初始化輸入信號
initial key_in <= 1'b0;
//key_in:產生輸入隨機數,模擬按鍵的輸入情況
always #10 key_in <= {$random} % 2; /*取模求余數,產生非負隨機數0、1
每隔10ns產生一次隨機數*/
//\\* Instantiate \\//
led led_inst
(
.key_in (key_in ), //input key_in
.led_out(led_out) //output led_out
);
endmodule
tb_led模塊中,首先定義初始的輸入信號為低電平(一般時序電路使用非阻塞賦值<=),延遲10個時間單位(ns)產生隨機數0或1賦值給輸入,就完成了輸入信號的波形設計。 根據上一節中實例化的講解,第2-5行和第14-19行完成的功能是將上一個led.v文件中led模塊與tb_led模塊相連。 這樣隨機生成的輸入信號就被加到led模塊上,并得到輸出led_out,通過驗證led_out與我們期望的輸出是否一致,就知道我們的設計是否正確。
和之前的操作一樣,將這個tb_led.v文件添加到Files文件下。 然后在quartus的菜單欄中找到assignments-setting,如圖所示。
對比波形
設置完成后,點擊菜單欄的tools-run simulation tool-RTL simulation,能自動打開modelsim說明之前的關聯操作是成功的,如果不成功,在上一節中看怎么關聯。 得到波形如圖,觀察得知led_out波形與key_in波形一致。
分配管腳
在開發板用戶手冊中就有對應管腳,按鍵有三個,我們選擇M16的S0作為key_in,LED有四個,我們選擇A2的LED0作為led_out。
全編譯
全編譯需要進行布局布線,管腳綁定后就可以對全局進行布局布線了。 沒有錯誤就可以上板了,有錯誤的話根據提示改。
上板驗證
上板是需要安裝USB_blaster驅動的,在設備管理器中如果USB-blaster有黃色感嘆號需要右鍵更新,文件在安裝文件quartus-drivers-USBblaster或USBblaster ii中。 安裝完成后感嘆號消失。
再點start,右上角的progress到100%,開發板就下載完成了。
按著按鍵A0不放,LED0一直被點亮,松手就關閉。
這樣最簡單的小設計就實現了,堅持到這里就成功了一半哦。
-
FPGA
+關注
關注
1626文章
21678瀏覽量
602043 -
led燈
+關注
關注
22文章
1592瀏覽量
107851 -
usb
+關注
關注
60文章
7903瀏覽量
264054 -
按鍵
+關注
關注
4文章
223瀏覽量
57576 -
開發板
+關注
關注
25文章
4959瀏覽量
97217
發布評論請先 登錄
相關推薦
評論