小腳丫板載的數碼管是7段數碼管(如果包括右下的小點可以認為是8段),它分別由a、b、c、d、e、f、g位段和表示小數點的dp位段組成,見圖1。
圖1 7段數碼管數碼管的各個段位是由LED燈組成的,控制每個LED的點亮或熄滅實現數字顯示。通常數碼管分為共陽極數碼管和共陰極數碼管,結構如圖所示。共陰8段數碼管的信號端低電平有效,而共陽端接高電平有效。比如,使共陽端數碼管的a段發光,則在a段信號端加上低電平即可。共陰極的數碼管則相反。 ? ?
小腳丫的板載數碼管為7段共陰極數碼管,可以顯示數字0-9以及字母A-F共計16種選擇。因此,如果我們需要數碼管能顯示所有的16種選擇,需要至少4位輸入碼(24=16)。表1列出了各個數碼管字符所對應的LED燈段位。
表1各數碼管字符所對應的LED燈段位
圖2標注了小腳丫板載的兩個數碼管的各LED段位以及小腳丫上所對應的引腳。其中SEG_DIP為公共端,因此在共陰極數碼管的設計中需要接低電平。可以看出,每一個數碼管都含有9個引腳,因此每一個字符的顯示都需要由一個9位的輸出信號來實現。
接下來我們通過Verilog實現對數碼管的控制。其中,我們將模塊的輸出定義為兩個7段數碼管,每個數碼管有9個引腳,分別由9位信號控制。輸入端由4路信號控制,可以分別對應0-F等十六個字符選擇。
module segment
(
input wire[3:0] seg_data_1, //四位輸入數據信號,可通過4個撥碼開關控制
input wire[3:0] seg_data_2, //四位輸入數據信號,可通過4個按鍵開關控制
output wire[8:0] segment_led_1, //數碼管1,MSB~LSB =SEG,DP,G,F,E,D,C,B,A
output wire[8:0] segment_led_2 //數碼管2,MSB~LSB =SEG,DP,G,F,E,D,C,B,A
);
reg[8:0] seg [15:0]; //存儲7段數碼管譯碼數據
initial
begin
seg[0]=9'h3f; // 0
seg[1]=9'h06; // 1
seg[2]=9'h5b; // 2
seg[3]=9'h4f; // 3
seg[4]=9'h66; // 4
seg[5]=9'h6d; // 5
seg[6]=9'h7d; // 6
seg[7]=9'h07; // 7
seg[8]=9'h7f; // 8
seg[9]=9'h6f; // 9
seg[10]=9'h77; // A
seg[11]=9'h7C; // b
seg[12]=9'h39; // C
seg[13]=9'h5e; // d
seg[14]=9'h79; // E
seg[15]=9'h71; // F
end
assign segment_led_1 = seg[seg_data_1]; // 將對應字符導入數碼管1并顯示
assign segment_led_2 = seg[seg_data_2]; // 將對應字符導入數碼管2并顯示
endmodule
上述代碼是定義7段共陰極數碼管的通用模塊,可以保存起來作為一個獨立模塊。這樣,在以后遇到需要用數碼管顯示的實驗時我們可以直接調用(之后我們還會講解如何調用子模塊),而不用再重新寫一遍代碼。
接下來是提問環節:
當我們指定用撥碼開關SW1-SW4來控制左邊數碼管,按鍵開關K1-K4來控制右側數碼管,此時如果開關的狀態分別如下圖所示,數碼管應該顯示什么字符?
而為了幫助更多老師快速上手FPGA的使用和教學,在即將到來的寒假,我們針對高校從事教學/實驗室一線工作的教師,推出一個為期5天(2021年1月25日-1月29日)的FPGA設計及應用快速培訓,通過實用性非常強的典型案例動手實踐,幫助大家快速、有效地上手FPGA,并能夠在未來的教學、實踐、電賽中大顯身手,硬禾實戰營也將成為參加培訓的老師們長期的教學后援。
責任編輯:xj
原文標題:基于FPGA的數字電路實驗3:點亮數碼管
文章出處:【微信公眾號:FPGA入門到精通】歡迎添加關注!文章轉載請注明出處。
-
FPGA
+關注
關注
1630文章
21776瀏覽量
604679 -
數碼管
+關注
關注
32文章
1883瀏覽量
91283 -
數字電路
+關注
關注
193文章
1613瀏覽量
80717
原文標題:基于FPGA的數字電路實驗3:點亮數碼管
文章出處:【微信號:xiaojiaoyafpga,微信公眾號:電子森林】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論