共阳极管的代码_《手把手教你学FPGA》第三章设计实例
設(shè)計實例
3.1.1 流水燈設(shè)計
3.1.1 試驗任務(wù)
8個LED燈依次順序點亮,產(chǎn)生流水效果,相鄰LED燈發(fā)光時間間隔大約為0.5s,人眼可以明顯感知到這個間隔。
3.1.2 程序設(shè)計
1、設(shè)計思路
通過控制1/O口的高低電平可以實現(xiàn)LED發(fā)光或者熄滅,但是該怎樣使用計數(shù)器實現(xiàn)延時呢?
實驗要求相鄰的LED時間間隔為0.5s,FPGA開發(fā)板的晶振為50MHz,所以有0.5s/20ns=25000000(224<25000000<225),需要25位計數(shù)位寬。當(dāng)有效位計數(shù)達(dá)到最大值時,實現(xiàn)翻轉(zhuǎn)(全1變?nèi)?,往高一位進1)。
本實驗使用兩個計數(shù)器。第一個計數(shù)器實現(xiàn)延遲間隔,計數(shù)器位寬為25bit,計數(shù)器命名為counter;第二個計數(shù)器控制哪個LED燈亮,計數(shù)器位寬為3bit,計數(shù)器命名count。
counter會一直持續(xù)計數(shù),計數(shù)到最大值后,會翻轉(zhuǎn)為0.當(dāng)counter每計數(shù)至0的時候, count加1;當(dāng)count計數(shù)到最大值后,也會翻轉(zhuǎn)為0。
2、源代碼
module LED(
input sys_clk,
input sys_rst_n,
output reg[7:0] LED
);
reg [2:0] count;
reg [24:0] counter;
always @(posedge sys_clk or negedge sys_rst_n) begin
if (sys_rst_n == 1'b0)
counter <= 25'b0;
else
counter <= counter + 25'b1;
end
always @(posedge sys_clk or negedge sys_rst_n) begin
if(sys_rst_n == 1'b0)
count? <=3'b0;
else if(counter == 25'd0)
count <= count + 3'b1;
else ;
end
always @(posedge sys_clk or negedge sys_rst_n) begin
if(sys_rst_n == 1'b0)
LED <= 8'b0;
else begin
case(count)
0:LED = 8'b00000001;
1:LED = 8'b00000010;
2:LED = 8'b00000100;
3:LED = 8'b00001000;
4:LED = 8'b00010000;
5:LED = 8'b00100000;
6:LED = 8'b01000000;
7:LED = 8'b10000000;
default:LED = 8'b00000000;
endcase
end
end
endmodule
3.2 按鍵控制LED實驗
3.2.1 按鍵控制LED簡介
按鍵是最常用的輸入設(shè)備,廣泛用于單片機/FPGA/DSP的輸入控制,操作人員可以通過按鍵輸人數(shù)據(jù)或者命令,實現(xiàn)簡單的人機對話。FPGA開發(fā)板使用的按鍵是一種常開型的開關(guān),通常按鍵的兩個觸點不按下時處于斷開狀態(tài),按下時處于閉合狀態(tài)。
本實驗使用按鍵控制發(fā)光二極管。發(fā)光二極管輸入為高時發(fā)光,按鍵默認(rèn)未按下時由于上拉電阻原因輸出高電平,所以需要將按鍵輸入取反后賦值給發(fā)光二極管輸入端,即可控制發(fā)光二極管發(fā)光。按鍵未按下時LED燈處于熄滅狀態(tài),按鍵按下時LED燈處于點亮狀態(tài)。
3.2.3 實驗任務(wù)
一個按鍵控制兩個發(fā)光二極管,按下按鍵的可以使兩個LED燈發(fā)光,未按下時兩個LED燈不發(fā)光。
3.2.4 程序設(shè)計
1、設(shè)計思路
輸入為4個按鍵,輸出為8個LED,按鍵按下時按鍵輸入為低電平,而LED需要驅(qū)動為高電平才能亮,所以需要對按鍵輸入進行取反,作為LED的輸入。
2、源代碼
module KeyToLED(
input [3:0] key,
output wire [7:0] LED
);
assign LED = ~{key,key};
endmodule
3.3 七段數(shù)碼管靜態(tài)顯示實驗
3.3.1 數(shù)碼管簡介
數(shù)碼管由7個條狀和一個點狀發(fā)光二極管制成,通過七段發(fā)光二極管亮暗的不同組合,可以顯示多種數(shù)字,字母以及其他符號。
2.LED數(shù)碼管分類
(1)共陰極接法(也叫共陰數(shù)碼管)
把發(fā)光二極管的陰極連在一起構(gòu)成公共陰極。使用時公共陰極接地,這樣陽極端輸人高電平的段發(fā)光二極管就導(dǎo)通點亮,而輸入低電平的段發(fā)光二極管則不點亮。
(2)共陽極接法(也叫共陽數(shù)碼管)
把發(fā)光二極管的陽極連在一起構(gòu)成公共陽極。使用時公共陽極接+5V,這樣陰極端輸人低電平的段發(fā)光二極管就導(dǎo)通點亮,而輸入高電平的段發(fā)光二極管則不點亮。
數(shù)碼管的邏輯圖如圖3.8所示,全部由發(fā)光二極管組合構(gòu)成。
本實驗使用的是共陽極數(shù)碼管,例如:假如要顯示數(shù)字1,則b、c接低電平。
總結(jié)
以上是生活随笔為你收集整理的共阳极管的代码_《手把手教你学FPGA》第三章设计实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dmx512协议的编程c语言,我在此分享
- 下一篇: 快速定制开发CAD电路图(电气原理图)详