我已经查看了这篇文章,我仍然有点困惑(并且不确定它是否回答了我的问题):Bidirectional port in verilog testbench
我正在为i2c协议编写主代码,并且已经转向测试工作。我有一个输入端口(SDA),在大多数情况下,是写入数据(模块中给出的数据)。然后偶尔会从另一台设备读取信号。
在我的测试平台中,我需要将SDA驱动为高电平(好像是从其他设备获取输入)并将其用作输入。怎么去做呢?
主代码片段:
assign SDA = (RST)? 1'b1 :
(STATE_wack || STATE_data) ? 1'bz :
(STATE_addr) ? addr[count] :
(STATE_idle || STATE_rw || STATE_stop) ? 1'b1 :
(STATE_start) ? 1'b0 : 1'bz;
测试平台的片段:
wire SDA;
wire input_value;
reg output_value;
reg output_valid;
.
.
.
assign input_value = SDA;
assign SDA = (output_valid==1'b1)? output_value : 1'hz;