在Verilog HDL中有三种方法可以创建三态节点:
- 实例化
bufif1
模块。syntax: bufif1 tristate_name (out, in, oe);
- 通过创建包含单个三态基元的虚拟图形设计文件( .gdf ),文本设计文件( .tdf )或VHDL设计文件( .vhd ),在MAX + PLUS II软件中实例化三态基元(例如, ,< my_tri > .gdf )。在顶级Verilog HDL代码中实例化< my_tri > .gdf 。
eq:module tristate(out,in,output_enab); 输出; 输入,输出_enab; my_tri tristate_name(.in(in),. out(out), .oe(output_enab)); endmodule
- 用
?
和:
条件语句。eq:模块三态(in,out,oe); 输入,oe; 输出; 分配= oe? in:1'bz; endmodule
MAX + PLUS II编译器不支持三态节点的行为建模。
以下是MAX + PLUS II软件将错误实现的Verilog HDL代码示例:
模块三态(in,out,oe); 输入,oe; 输出; reg temp; assign out = temp; 总是@(in或oe) 如果(oe) temp = in; // MAX + PLUS II会 //不将它综合为三态 其他 temp = 1'bz; endmodule
如果你有一个always@
块来仿真三态行为,MAX + PLUS II软件将对输入和输出使能信号进行AND
运算,而不是创建一个三态缓冲器。
给出的前三个示例将有效地仿真MAX + PLUS II Verilog HDL设计中的三态节点。
没有回复内容