学习ZYNQ之FPGA9(按键控制led灯)

学习ZYNQ之FPGA9(按键控制led灯)_第1张图片

上图为控制led灯的设计图,输入信号包括时钟信号、复位信号、两位的key信号(需要注意的是按键按下为低电平),输出信号为两位led的信号。

学习ZYNQ之FPGA9(按键控制led灯)_第2张图片

程序中的输出端口led需要在always语句中赋值,所以定义成reg类。,比较难绕的是led_ctrl,它代表的是每隔0.5秒变化一次。

module key_led(
    input             clk,
    input             rst_n,
    
    input      [1:0]  key,
    output reg [1:0]  led 
);
reg [24:0] cnt;
reg        led_ctrl;

always @ (posedge clk or negedge rst_n) begin
    if(!rst_n)
        cnt <= 25'd0;
    else if(cnt < 25'd2500_0000)
        cnt <= cnt+1'b1;
    else
        cnt <= 25'd0;
end
always @ (posedge clk or negedge rst_n) begin
    if(!rst_n)
        led_ctrl <= 1'b0;
    else if(cnt == 25'd2500_0000)
        led_ctrl <= ~led_ctrl;
end
always @ (posedge clk or negedge rst_n) begin
    if(!rst_n)    
        led <= 2'b11;
    else case(key)
        2'b10:
            if(led_ctrl == 1'b0)
                led <= 2'b01;
            else
                led <= 2'b10;
        2'b01:
            if(led_ctrl == 1'b0)
                led <= 2'b11;
            else
                led <= 2'b00;
        2'b11:
            led <= 2'b11;
        default: ;
    endcase
end
endmodule

 

你可能感兴趣的:(FPGA)