请教对双向端口的仿真
请教各位大虾,如果设计中有双向端口,在verilog测试文件中应该如何编写激励?
请教对双向端口的仿真
在初始时设置为高阻,有输入时设置相应值,作为输出前要把端口设成高阻。
请教对双向端口的仿真
在test bench中,我将双向端口声明为wire型变量,在initial中用过程赋值语句吗,但是仿真波形会出现“X”,的确,一旦赋值,变量将保持该值,但是当被测试模块DUT中
该双向端口呈现出输出端口特性时,对wire型变量的赋值便出现了冲突,出现不定态“X”。我的解决办法是采用FORCE和RELEASE对变量进行赋值。
但是是否有其它办法。请各位大虾知无不言,言无不尽,互相交流,共同提高!
请教对双向端口的仿真
大概如下:
reg iic_sda_in;
regiic_sda_out;
regiic_sda_out_enable;
wireiic_sda;//源双向I/O
assigniic_sda = iic_sda_out_enable?iic_sda_out:iic_sda_in;
initial
begin
#0 iic_sda_in = 1; iic_sda_out_enable = 0;iic_sda_out = 0;
......
end
其实最主要的问题就是拿三个已知的变量来作为输入,分别控制输入/输出信号。主要是输入/输出方向控制信号
请教对双向端口的仿真
JackyHu 说得很对.具体在VERILOG怎么写?
请教对双向端口的仿真
在verilog中双向口定义为带有映射寄存器的线,故按照这个定义应该这样处理双向口:
对于双向口声明为wire wire data;
声明双向口的映射寄存器 reg data_reg;
建立映射关系 assign data=data_reg;
添加对双向口的读写控制信号 always @(wr) data_reg=....;
alwasy @(rd) tmp=data;
需要注意的是:如jackhu所说“在初始时设置为高阻,有输入时设置相应值,作为输出前要把端口设成高阻”
按照上面的做法去处理,应该不会有任何问题
请教对双向端口的仿真
对于双向口声明为reg io_data;
其对应的映射信号定义为wire data;
端口信号和其映射信号之间通过一个小的module实现连接,
在cadence的verilog仿真系统中有个cds_alias.v的模型,可以调用该模型来实现。
具体调用为cds_alias #(8) cds_alias_inst1(data,io_data);
其中#(8)代表data为8位数据双向口,改变数值可以改变位宽。
多谢大侠指点
既然是双向端口,自然有控制in还是out的信号,通常就是oen,
根据oen决定你是应该output值还是output highz。
是在是有待研究
由输出使能来控制好点。
参考下ISE中的模板
