连接到GPIO引脚的LED闪烁而不是一直亮

时间:2015-10-06 02:00:34

标签: verilog calculator fpga gpio led

我实际上已经就此代码提出了上一个问题,但那是在此之前#34;正在工作"。这是代码:

module MatrixInput(CLOCK_50,MOutput, MInput, LEDR);
//10 -> 16 Cols INPUTS
//24 -> 18 rows OUTPUTS
input [16:10] MInput;
output reg [24:18] MOutput;
output [7:0] LEDR;
integer counter = 0;
input CLOCK_50; //50Mhz
reg [3:0] ButtonFlag;

initial counter = 0;


assign LEDR[7] = ~MInput[10]; //Assign Cols to Leds 7 to 4
assign LEDR[6] = ~MInput[12];
assign LEDR[5] = ~MInput[14];
assign LEDR[4] = ~MInput[16];
assign LEDR[3] = ButtonFlag[3]; //assign LED Rows to button Flag indicator
assign LEDR[2] = ButtonFlag[2];
assign LEDR[1] = ButtonFlag[1];
assign LEDR[0] = ButtonFlag[0];


always@(posedge CLOCK_50) begin

    if (counter > 3) //if counter is larger than amount of cases. reset to 0
        counter = 0;

    case(counter) //go through and set every row except one high which we will compare against columns
        0: MOutput[24:18] = 7'b1x0x1x1; //dont care about GPIO  23, 21 or 19 
        1:  MOutput[24:18] = 7'b1x1x0x1;
        2:  MOutput[24:18] = 7'b1x1x1x0;
        3:  MOutput[24:18] = 7'b0x1x1x1;
        default: counter = 0; //ideally shouldn't be needing a default case
    endcase


    if (MInput[10] == 1 && MInput[12] == 1 && MInput[14] == 1 && MInput[16] == 1)   begin
        ButtonFlag[counter] = 0;
    end else
        ButtonFlag[counter] = 1;

    counter = counter + 1;

end
endmodule

目前LEDS 7到4还没有开启"完全"按下相关列按钮时的亮度表示它实际上非常快地闪烁。 MOutput和Minput分配给GPIO引脚。

我的问题是如何解决这个问题,并在按下列中的按钮时让它们持续亮起。

1 个答案:

答案 0 :(得分:0)

我刚刚意识到这是因为我正在循环MOutput和Minput只能在MOutput处于正确的周期时开启,因此列LED闪烁。