Felix

技术源于积累,成功始于执着! 个人邮箱:justlxy@mail.dhu.edu.cn QQ:1576109464

一个Testbench中如何处理双向IO(inout)的例子

0
阅读(6026)

举一个简单的例子:

//------------------------------------------------------------------------------------ // The following is an example of an inferred bidirectional bus in a Verilog design: //------------------------------------------------------------------------------------ module bidir_infer (DATA, READ_WRITE); input READ_WRITE ; inout [1:0] DATA ; reg [1:0] LATCH_OUT ; always @ (READ_WRITE or DATA) begin if (READ_WRITE == 1) LATCH_OUT <= DATA; end assign DATA = (READ_WRITE == 1) ? 2'bZ : LATCH_OUT; endmodule

其中,DATA为双向IO,则Testbench应做如下处理:


//------------------------------------------------------------------------------------ // The Verilog testbench can be set up as follows: //------------------------------------------------------------------------------------ module test_bidir_ver; reg read_writet; reg [1:0] data_in; wire [1:0] datat, data_out; bidir_infer uut (datat, read_writet); assign datat = (read_writet == 1) ? data_in : 2'bZ; assign data_out = (read_writet == 0) ? datat : 2'bZ; initial begin read_writet = 1; data_in = 11; #50 read_writet = 0; end endmodule

应当注意的是当read_writet的值与实际操作不一致是,所获得值应为Z!

注:例子中省略了timescale。

Baidu
map