在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设计中的三态节点。





没有回复内容