|
verilog怎么才会自动生成ram或rom?
下面的代码编译后报告中提示用到了1024memory bits,以前编过一些程序,用到过reg型变量,也用过case语句,但没使用到memory bits,不知道为什么在这个程序中占用了一些memory bits。请大家帮我看看,先谢了。这是一个4*4键盘程序,实际中可以用的
module key(clk,col,row,key_value,flag_out);
input clk;
input [3:0] col;
output [3:0] row,key_value;
output flag_out;
reg [3:0] row,key_value;
reg flag_out;
reg [3:0] x_value,keyval;
reg [7:0] xy_value;
reg hit_flag;
always @(posedge clk)// 时钟1ms,循环行扫描发生电路
begin
if(x_value==4'b0111)
x_value<=4'b1110;
else
x_value<={x_value[2:0],1'b1};
row<=x_value;
end
always @(posedge clk)
begin
if(col==4'b1111)
if (hit_flag==1)//在按键发生后输出键值及通知信号flag_out=1
begin
flag_out<=1;
hit_flag<=0;
key_value<=keyval;
end
else
flag_out<=0;//没有按键flag_out=0
else
begin //扫描到按键时进行键值译码
flag_out<=0; //译码过程中不输出
hit_flag<=1;//说明有按键了
xy_value<={col,row};
case(xy_value)
8'b11101110:keyval<=4'b0000;//0
8'b11011110:keyval<=4'b0001;//1
8'b10111110:keyval<=4'b0010;//2
8'b01111110:keyval<=4'b0011;//3
8'b11101101:keyval<=4'b0100;//4
8'b11011101:keyval<=4'b0101;//5
8'b10111101:keyval<=4'b0110;//6
8'b01111101:keyval<=4'b0111;//7
8'b11101011:keyval<=4'b1000;//8
8'b11011011:keyval<=4'b1001;//9
8'b10111011:keyval<=4'b1010;//A
8'b01111011:keyval<=4'b1011;//B
8'b11100111:keyval<=4'b1100;//C
default:keyval<=4'b0000;
endcase
end
end
endmodule |
|