|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
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
我去
|
|