點亮一個LED燈
設計定義:
二選一多路器
兩個輸入IO,a、b。可以是高電平,
輸入按鍵按下時,LED燈與a端口狀態保持一致,
按鍵釋放時,LED燈與b端口狀態保持一致
設計輸入:創建一個project
編寫功能代碼
module LED(a,b,key_in,led_out);
input a;//輸入端口a,b;
input b;
input key_in;//按鍵輸入,實現輸入通道的選擇
output led_out;//led控制端口
assign led_out=(key_in==0)?a:b;//當key_in==0,led_out=a;
endmodule
編寫testbench
`timescale 1ns/1ps
module LED_tb;
reg signal_a;
reg signal_b;
reg signal_c;
//激勵信號定義,對應連接到待測試模塊的輸入輸出
wire led;
//待檢測信號定義,對應連接到待測試模塊的輸出端口
LED u0(
.a(signal_a),
.b(signal_b),
.key_in(signal_c),
.led_out(led));
//例化待測試模塊
initial
begin
signal_a=0;signal_b=0;signal_c=0;
#100//延時100ms
signal_a=0;signal_b=0;signal_c=1;
#100
signal_a=0;signal_b=1;signal_c=0;
#100
signal_a=0;signal_b=1;signal_c=1;
#100
signal_a=1;signal_b=0;signal_c=0;
#100
signal_a=1;signal_b=0;signal_c=1;
#100
signal_a=1;signal_b=1;signal_c=0;
#100
signal_a=1;signal_b=1;signal_c=1;
$stop;
//產生激勵
end
endmodule
設置腳本
前仿
前仿結果
後仿結果
會發現在後仿的波形中會產生脈沖波形
還存在邏輯的延遲
這些問題在後面的學習中,現在重點學習流程。
假設這些問題都是可以接受的,現在回到quartus II中對IO進行分配,將設計對應到具體的電路板。
這裏查閱DE1-SOC開發板的相關技術文檔,可以查到鍵盤和LED燈的接口,我下篇隨筆會專門講解下DE1-SOC的軟硬件核,現在先貼著,之後再貼鏈接
從圖中可以看出可以選擇LED為V16等四個燈,KEY為AA14等案件,a,b信號輸入選擇AC12,AD12等SW撥碼開關
下面選擇引腳分配
設置好後的引腳分配圖,設置好後點擊關閉即可。
全編譯後,點點擊programer鍵即可打開下載界面。點擊Hardware Setup
選擇DE-soc後close(第一次用開發板的可能沒有這個選項,這個在最後的附錄中將進行補充)
然後點擊autodetect,選擇FPGA設置,FPGA和HPS裝置會出現在JTAG chain裏面
選定器件後右鍵,選擇Change file
選定軟件程序生成的output file 下的.sof文件,最後點擊start即可成功燒寫到開發板中。
實物測試方法
把SW1撥到靠燈一端,SW5在另一端,按下KEY0後LED燈會亮,不按下會熄滅,效果如下圖所示。
到這裏,整個項目的基本開發流程就基本能夠理解了。
附錄:
第一次插上DE1-soc系統因為沒有驅動,會檢測不到開發板,打開系統的設備管理器會發現有個無法檢測的設備。
雙擊它後選擇驅動導入-----》然後自己從quartus-----》安裝路徑\quartus\drivers\\usb-blaster-ii中導入即可添加設備驅動。
點亮一個LED燈