【测试结果】//按键控制LED灯 module key_led(clk,key,rst,led); input clk;//系统时钟50MHz input rst; input [3:0] key;//四个按键 output [3:0] led;//四个led灯 reg [3:0]led; //reg define reg [23:0] cnt; reg [1:0] led_control; //用于计数的计数器 always @ (posedge clk or negedge rst) begin if(!rst) cnt<=24'd2500000; else if(cnt<24'd2500000) cnt<=cnt+1; else cnt<=0; end //用于led灯状态的选择 always @(posedge clk or negedge rst) begin if (!rst) led_control <= 2'b00; else if(cnt == 24'd2500000) led_control <= led_control + 1'b1; else led_control <= led_control; end //识别按键,切换显示模式 always @(posedge clk or negedge rst) begin if(!rst) begin led<=4'b0000; end else if(key[0]==0) //按键1按下时,从右向左的流水灯效果 case (led_control) 2'b00 : led<=4'b1000; 2'b01 : led<=4'b0100; 2'b10 : led<=4'b0010; 2'b11 : led<=4'b0001; //led_control共2位,一直累加到11后再次累加会恢复到00,以此来达到控制效果 default : led<=4'b0000; endcase else if (key[1]==0) //按键2按下时,从左向右的流水灯效果 case (led_control) 2'b00 : led<=4'b0001; 2'b01 : led<=4'b0010; 2'b10 : led<=4'b0100; 2'b11 : led<=4'b1000; default : led<=4'b0000; endcase else if (key[2]==0) //按键3按下时,LED闪烁 case (led_control) 2'b00 : led<=4'b1111; 2'b01 : led<=4'b0000; 2'b10 : led<=4'b1111; 2'b11 : led<=4'b0000; default : led<=4'b0000; endcase else if (key[3]==0) //按键4按下时,LED全亮 led=4'b1111; else led<=4'b0000; //无按键按下时,LED熄灭 end endmodule
时间: 2023-06-27 13:05:57 浏览: 111
FPGA/CPLD实验教程二(闪烁灯)
这是一个 Verilog HDL 代码,实现了控制 LED 灯的功能。代码中包含了一个按键模块(key_led),输入时钟信号(clk)、复位信号(rst)和四个按键信号(key),输出四个 LED 灯的状态信号(led)。代码中使用了计数器(cnt)和 led_control 寄存器来控制 LED 显示模式的切换,分别实现了从右向左的流水灯、从左向右的流水灯、闪烁和全亮四种模式。
阅读全文