原创 双向数据总线

2010-3-9 09:14 3103 4 4 分类: FPGA/CPLD

1、  先声明一个双向总线:inout[size-1:0] bus;


2、  读双向总线:a= bus;;


3、  通过一个过程块写双向总线


l         声明一个临时regreg [size-1:0] temp;


l         将临时reg放到双向总线:assign bus = (read)?temp:`bz;


l         将总线输出写入临时regalways …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


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条