用verilog HDL设计的4x4键盘扫描程序的testbench怎么写

2019-03-25 07:17发布

小白求教部分程序如图 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
火影星飞
2019-03-26 00:08
module gmdz40x40(clk,start,col,row,row_out,col_out);
input clk;            //扫描时钟信号,高电平有效
input start;          //开始信号,高电平有效
input[39:0]col;      //行扫描信号

output[39:0]row;     //列扫描信号
output[5:0]row_out;  //光照后列输出信号
output[5:0]col_out;  //光照后行输出信号

reg[39:0]row;
reg[5:0]col_out;
reg[5:0]row_out;
reg[5:0]col_out0;
reg[5:0]row_out0;
reg[5:0]count;
reg[5:0]sta;            
reg[10:0]dat;
reg gz;                //光照标志位,判断是否有光照

always @(posedge clk)
    begin
       if(start == 0)
                   begin
                     col_out0<=6'd0;
                          row_out0<=6'd0;
                        end
                 else begin
                    if(count == 6'd39)
                         begin
                                count<=6'd0;
                              end
                    else
                      begin
                              count<=count+1;
                                        //循环列扫描
                                        case(count)
                                           6'b000001 : begin row<=40'b0000_0000_0000_0000_0000_0000_0000_0000_0000_0001;sta<=6'd1; end
                                                6'b000010 : begin row<=40'b0000_0000_0000_0000_0000_0000_0000_0000_0000_0010;sta<=6'd2; end
                                                6'b000011 : begin row<=40'b0000_0000_0000_0000_0000_0000_0000_0000_0000_0100;sta<=6'd3; end
                                                6'b000100 : begin row<=40'b0000_0000_0000_0000_0000_0000_0000_0000_0000_1000;sta<=6'd4; end
                                                6'b000101 : begin row<=40'b0000_0000_0000_0000_0000_0000_0000_0000_0001_0000;sta<=6'd5; end
                                                6'b000110 : begin row<=40'b0000_0000_0000_0000_0000_0000_0000_0000_0010_0000;sta<=6'd6; end
                                                6'b000111 : begin row<=40'b0000_0000_0000_0000_0000_0000_0000_0000_0100_0000;sta<=6'd7; end
                                                6'b001000 : begin row<=40'b0000_0000_0000_0000_0000_0000_0000_0000_1000_0000;sta<=6'd8; end
                                                6'b001001 : begin row<=40'b0000_0000_0000_0000_0000_0000_0000_0001_0000_0000;sta<=6'd9; end
                                                6'b001010 : begin row<=40'b0000_0000_0000_0000_0000_0000_0000_0010_0000_0000;sta<=6'd10; end
                                                6'b001011 : begin row<=40'b0000_0000_0000_0000_0000_0000_0000_0100_0000_0000;sta<=6'd11; end
                                                6'b001100 : begin row<=40'b0000_0000_0000_0000_0000_0000_0000_1000_0000_0000;sta<=6'd12; end
                                                6'b001101 : begin row<=40'b0000_0000_0000_0000_0000_0000_0001_0000_0000_0000;sta<=6'd13; end
                                                6'b001110 : begin row<=40'b0000_0000_0000_0000_0000_0000_0010_0000_0000_0000;sta<=6'd14; end
                                                6'b001111 : begin row<=40'b0000_0000_0000_0000_0000_0000_0100_0000_0000_0000;sta<=6'd15; end
                                                6'b010000 : begin row<=40'b0000_0000_0000_0000_0000_0000_1000_0000_0000_0000;sta<=6'd16; end
                                                6'b010001 : begin row<=40'b0000_0000_0000_0000_0000_0001_0000_0000_0000_0000;sta<=6'd17; end
                                                6'b010010 : begin row<=40'b0000_0000_0000_0000_0000_0010_0000_0000_0000_0000;sta<=6'd18; end
                                                6'b010011 : begin row<=40'b0000_0000_0000_0000_0000_0100_0000_0000_0000_0000;sta<=6'd19; end
                                                6'b010100 : begin row<=40'b0000_0000_0000_0000_0000_1000_0000_0000_0000_0000;sta<=6'd20; end
                                                6'b010101 : begin row<=40'b0000_0000_0000_0000_0001_0000_0000_0000_0000_0000;sta<=6'd21; end
                                                6'b010110 : begin row<=40'b0000_0000_0000_0000_0010_0000_0000_0000_0000_0000;sta<=6'd22; end
                                                6'b010111 : begin row<=40'b0000_0000_0000_0000_0100_0000_0000_0000_0000_0000;sta<=6'd23; end
                                                6'b011000 : begin row<=40'b0000_0000_0000_0000_1000_0000_0000_0000_0000_0000;sta<=6'd24; end
                                                6'b011001 : begin row<=40'b0000_0000_0000_0001_0000_0000_0000_0000_0000_0000;sta<=6'd25; end
                                                6'b011010 : begin row<=40'b0000_0000_0000_0010_0000_0000_0000_0000_0000_0000;sta<=6'd26; end
                                                6'b011011 : begin row<=40'b0000_0000_0000_0100_0000_0000_0000_0000_0000_0000;sta<=6'd27; end
                                                6'b011100 : begin row<=40'b0000_0000_0000_1000_0000_0000_0000_0000_0000_0000;sta<=6'd28; end
                                                6'b011101 : begin row<=40'b0000_0000_0001_0000_0000_0000_0000_0000_0000_0000;sta<=6'd29; end
                                                6'b011110 : begin row<=40'b0000_0000_0010_0000_0000_0000_0000_0000_0000_0000;sta<=6'd30; end
                                                6'b011111 : begin row<=40'b0000_0000_0100_0000_0000_0000_0000_0000_0000_0000;sta<=6'd31; end
                                                6'b100000 : begin row<=40'b0000_0000_1000_0000_0000_0000_0000_0000_0000_0000;sta<=6'd32; end
                                                6'b100001 : begin row<=40'b0000_0001_0000_0000_0000_0000_0000_0000_0000_0000;sta<=6'd33; end
                                                6'b100010 : begin row<=40'b0000_0010_0000_0000_0000_0000_0000_0000_0000_0000;sta<=6'd34; end
                                                6'b100011 : begin row<=40'b0000_0100_0000_0000_0000_0000_0000_0000_0000_0000;sta<=6'd35; end
                                                6'b100100 : begin row<=40'b0000_1000_0000_0000_0000_0000_0000_0000_0000_0000;sta<=6'd36; end
                                                6'b100101 : begin row<=40'b0001_0000_0000_0000_0000_0000_0000_0000_0000_0000;sta<=6'd37; end
                                                6'b100110 : begin row<=40'b0010_0000_0000_0000_0000_0000_0000_0000_0000_0000;sta<=6'd38; end
                                                6'b100111 : begin row<=40'b0100_0000_0000_0000_0000_0000_0000_0000_0000_0000;sta<=6'd39; end
                                                6'b101000 : begin row<=40'b1000_0000_0000_0000_0000_0000_0000_0000_0000_0000;sta<=6'd40; end
                                        endcase
                                        //行扫描译码
                                        case(sta)
                                           6'd1:begin
                                                     case(col)

一周热门 更多>