verilog双向端口测试问题
时间:10-02
整理:3721RD
点击:
在我的设计中, IIC设计测试:SDA, SCL。SDA是双向口,而且不同于网上说的那些没有rd,wt等读写标志位,在写testbench时,怎么写呢?
SDA, SCL这一类别的没有读写标识位,怎么写testbench呢?
SDA、SCL在ACK时,就是Master收,Slave发。这样的设计,在硬件上,应该是三态信号。不知道小编的DUV(Design Under Verification)是主还是从,总之,三态信号在逻辑内部,都是两根信号,通过三态门进行控制的。因此,在设计BFM(Bus Function Module)时,只需要对需要自己设计驱动的地方,编写相应的程序即可,而信号线作为接收信号时,信号受三态控制,就不需要关心了。
SDA, SCL这一类别的没有读写标识位,怎么写testbench呢?
双向的照双向的写就行了啊?
你问的什么意思呢?
小编的意思是:I2C 里,就是master几个bit传输后,要有一个ACK 信号反馈,然后说是双向,是吧?
[img]
SDA、SCL在ACK时,就是Master收,Slave发。这样的设计,在硬件上,应该是三态信号。不知道小编的DUV(Design Under Verification)是主还是从,总之,三态信号在逻辑内部,都是两根信号,通过三态门进行控制的。因此,在设计BFM(Bus Function Module)时,只需要对需要自己设计驱动的地方,编写相应的程序即可,而信号线作为接收信号时,信号受三态控制,就不需要关心了。
在testbench里,同样也做一个受控的buffer输出到总线:
assign sda = (enable == 1'b1) ? sda_reg : 1'bz;(输出到总线)
assign sda_in = sda ;(由总线输入)
另外这种I2C是外部上拉的,所以加上上拉:
pullup(sda);
good luck !
之前做双向端口的验证时,就是先将他分成入端和初端,
就可以了,
双向端口是PAD的问题,
------------------------------不懂