1、 先声明一个双向总线:inout[size-1:0] bus;
2、 读双向总线:a= bus;;
3、 通过一个过程块写双向总线
l 声明一个临时reg:reg [size-1:0] temp;
l 将临时reg放到双向总线:assign bus = (read)?temp:`bz;
l 将总线输出写入临时reg:always …begin temp = What_being_output; end
举例:
`timescale 1ns/100ps
module memory_M_by_N(
addr,
rd,
wr,
data
);
parameter M =3,N=4;
input [M-1:0] addr;
input wr,rd;
inout [N-1:0] data;
reg [N-1:0] memory [0:2**M-1];
reg [N-1:0] temp;
always @(data or addr or rd or wr)
begin
if(wr)
memory[addr] = data;
else if(rd)
temp = memory[addr];
else
temp = `bz;
end
assign data =(rd)?temp:`bz;
initial $readmemh("mem.dat",mem);
endmodule
文章评论(0条评论)
登录后参与讨论