在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 1934|回复: 0

[求助] 求关于乘法器的思路

[复制链接]
发表于 2011-6-6 11:24:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 ap1990 于 2011-6-6 11:29 编辑

刚学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        


我去

我去
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-26 00:49 , Processed in 0.022535 second(s), 12 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表