共阳极管的代码_《手把手教你学FPGA》第三章设计实例
設計實例
3.1.1 流水燈設計
3.1.1 試驗任務
8個LED燈依次順序點亮,產生流水效果,相鄰LED燈發光時間間隔大約為0.5s,人眼可以明顯感知到這個間隔。
3.1.2 程序設計
1、設計思路
通過控制1/O口的高低電平可以實現LED發光或者熄滅,但是該怎樣使用計數器實現延時呢?
實驗要求相鄰的LED時間間隔為0.5s,FPGA開發板的晶振為50MHz,所以有0.5s/20ns=25000000(224<25000000<225),需要25位計數位寬。當有效位計數達到最大值時,實現翻轉(全1變全0,往高一位進1)。
本實驗使用兩個計數器。第一個計數器實現延遲間隔,計數器位寬為25bit,計數器命名為counter;第二個計數器控制哪個LED燈亮,計數器位寬為3bit,計數器命名count。
counter會一直持續計數,計數到最大值后,會翻轉為0.當counter每計數至0的時候, count加1;當count計數到最大值后,也會翻轉為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簡介
按鍵是最常用的輸入設備,廣泛用于單片機/FPGA/DSP的輸入控制,操作人員可以通過按鍵輸人數據或者命令,實現簡單的人機對話。FPGA開發板使用的按鍵是一種常開型的開關,通常按鍵的兩個觸點不按下時處于斷開狀態,按下時處于閉合狀態。
本實驗使用按鍵控制發光二極管。發光二極管輸入為高時發光,按鍵默認未按下時由于上拉電阻原因輸出高電平,所以需要將按鍵輸入取反后賦值給發光二極管輸入端,即可控制發光二極管發光。按鍵未按下時LED燈處于熄滅狀態,按鍵按下時LED燈處于點亮狀態。
3.2.3 實驗任務
一個按鍵控制兩個發光二極管,按下按鍵的可以使兩個LED燈發光,未按下時兩個LED燈不發光。
3.2.4 程序設計
1、設計思路
輸入為4個按鍵,輸出為8個LED,按鍵按下時按鍵輸入為低電平,而LED需要驅動為高電平才能亮,所以需要對按鍵輸入進行取反,作為LED的輸入。
2、源代碼
module KeyToLED(
input [3:0] key,
output wire [7:0] LED
);
assign LED = ~{key,key};
endmodule
3.3 七段數碼管靜態顯示實驗
3.3.1 數碼管簡介
數碼管由7個條狀和一個點狀發光二極管制成,通過七段發光二極管亮暗的不同組合,可以顯示多種數字,字母以及其他符號。
2.LED數碼管分類
(1)共陰極接法(也叫共陰數碼管)
把發光二極管的陰極連在一起構成公共陰極。使用時公共陰極接地,這樣陽極端輸人高電平的段發光二極管就導通點亮,而輸入低電平的段發光二極管則不點亮。
(2)共陽極接法(也叫共陽數碼管)
把發光二極管的陽極連在一起構成公共陽極。使用時公共陽極接+5V,這樣陰極端輸人低電平的段發光二極管就導通點亮,而輸入高電平的段發光二極管則不點亮。
數碼管的邏輯圖如圖3.8所示,全部由發光二極管組合構成。
本實驗使用的是共陽極數碼管,例如:假如要顯示數字1,則b、c接低電平。
總結
以上是生活随笔為你收集整理的共阳极管的代码_《手把手教你学FPGA》第三章设计实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dmx512协议的编程c语言,我在此分享
- 下一篇: 小白能读懂的 《手把手教你学DSP(TM