微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请教对双向端口的仿真

请教对双向端口的仿真

时间:10-02 整理:3721RD 点击:

请教各位大虾,如果设计中有双向端口,在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中的模板

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top