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