用verilog模拟16X4的可随机读写的存储器,求交流,求指点
用verilog模拟16X4的可随机读写的存储器,求交流,求指导
利用Verilog HDL设计一个16X4的可随机读写的存储器模块。其中16代表存储单元个数(寻址空间),4代表单个存储单元的位数为4 bit。
我看了老师给的原理图,输入有四个,addr[4:0],din[3:0],wr,rd,cs,其中addr管地址,din是输入的数据,cs是片选信号,低电平时有效,rd是读信号,低电平有效,wr是写入脉冲信号,上升沿有效,输出是dout[3:0]
我的想法是在程序中设定几个regsiter对存储器进行模拟代码如下
[code=Verilog]
module RAM(cout,din,adrr,cs,wr,rd,cin)
output [3:0] cout; //
input [3:0] din; //
input [4,0] adrr; //
input cs,wr,rd,cin;
reg [3:0] mem[0:15];//用来模拟存储器
integer int = arr[0] + arr[1] * 2 + arr[2] * 2 * 2 + arr[2] * 2 * 2 * 2;
always @(negedge rd and posedge cs)
begin
assign cout = men[int];
end
always @(negedge wr and posedge cs)
begin
assign men[int] = cin;
end
endmodule[/code]
求指导啊
------解决方案--------------------
帮顶
------解决方案--------------------
改成
建议仿真一下。
利用Verilog HDL设计一个16X4的可随机读写的存储器模块。其中16代表存储单元个数(寻址空间),4代表单个存储单元的位数为4 bit。
我看了老师给的原理图,输入有四个,addr[4:0],din[3:0],wr,rd,cs,其中addr管地址,din是输入的数据,cs是片选信号,低电平时有效,rd是读信号,低电平有效,wr是写入脉冲信号,上升沿有效,输出是dout[3:0]
我的想法是在程序中设定几个regsiter对存储器进行模拟代码如下
[code=Verilog]
module RAM(cout,din,adrr,cs,wr,rd,cin)
output [3:0] cout; //
input [3:0] din; //
input [4,0] adrr; //
input cs,wr,rd,cin;
reg [3:0] mem[0:15];//用来模拟存储器
integer int = arr[0] + arr[1] * 2 + arr[2] * 2 * 2 + arr[2] * 2 * 2 * 2;
always @(negedge rd and posedge cs)
begin
assign cout = men[int];
end
always @(negedge wr and posedge cs)
begin
assign men[int] = cin;
end
endmodule[/code]
求指导啊
------解决方案--------------------
------解决方案--------------------
begin
assign cout = men[int];
end
改成
begin
cout <= men[int];
end
建议仿真一下。