微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 求关于乘法器的思路

求关于乘法器的思路

时间:10-02 整理:3721RD 点击:

刚学FPGA 老师布置了一个关于乘法器的作业...矩阵扫描 数码管 组成一个简单的乘法计算器0-99,直接输出结果到数码管
现在不知道怎么写关于寄存器的问题一个数(个位)直接就赋值就完成 两个数呢怎么写?
附上矩阵的程序新手不知道如何修改求帮改下,矩阵是直接显示到数码管的程序,主要是第二个数(十位)该如何判断
按下符号键后
是不是用if(符号)来触发下一次的矩阵扫描来赋值在被乘数?
第二个数(也就是十位)如何写?新手不太懂

module key1(clk,rst,row,column,dataout,en) ;
input clk,rst;
input[2:0] column;//列线
output[3:0] row;//行线
output[7:0] dataout;//数码管显示数据
reg[7:0] dataout;
output[7:0] en;//数码管显示使能
reg[3:0] row;
reg[3:0] scan_key; //扫描码寄存器
reg[15:0] cnt_scan;//扫描频率计数器
assign en=0;
always@(posedge clk or negedge rst)
begin
    if(!rst) begin
        row<=4'b1110;
        cnt_scan<=0;
     end
    else begin
        cnt_scan<=cnt_scan+1;
        if(cnt_scan==16'hffff) begin
            row[3:1]<=row[2:0];
            row[0]<=row[3];  //4根行线循环送出低电平
         end
     end
end

always@(posedge clk or negedge rst)
begin
    if(!rst) begin
        scan_key<=0;
     end
    else begin
        case(row)  //该case结果检测何处有键按下
            4'b1110:
                case(column)
                    3'b110: begin
                        scan_key<=0;
                     end
                    3'b101: begin
                        scan_key<=1;
                     end
                    3'b011: begin
                        scan_key<=2;
                     end
                 endcase
            4'b1101:
                case(column)
                    3'b110: begin
                        scan_key<=3;
                     end
                    3'b101: begin
                        scan_key<=4;
                     end
                    3'b011: begin
                        scan_key<=5;
                     end
                 endcase
            4'b1011:
                case(column)
                    3'b110: begin
                        scan_key<=6;
                     end
                    3'b101: begin
                        scan_key<=7;
                     end
                    3'b011: begin
                        scan_key<=8;
                     end
                 endcase
            4'b0111:
                case(column)
                    3'b110: begin
                        scan_key<=9;
                     end
                    3'b101: begin
                        scan_key<=10;
                     end
                    3'b011: begin
                        scan_key<=11;
                     end
                 endcase
             default:
                scan_key<=11;
         endcase
     end
end

always@(scan_key)
begin
    case(scan_key)
        4'b0000:
            dataout=8'b0000_0011;
        4'b0001:
            dataout=8'b1001_1111;
        4'b0010:
            dataout=8'b0010_0101;
        4'b0011:
            dataout=8'b0000_1101;
        4'b0100:
            dataout=8'b1001_1001;
        4'b0101:
            dataout=8'b0100_1001;
        4'b0110:
            dataout=8'b0100_0001;
        4'b0111:
            dataout=8'b0001_1111;
        4'b1000:
            dataout=8'b0000_0001;
        4'b1001:
            dataout=8'b0001_1001;
        4'b1010:
            dataout=8'b0001_0001;
        4'b1011:
            dataout=8'b1100_0001;
     endcase
end   
endmodule        



Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top