我设计了一个IIC从机模块(fpga),请问我想要测试其正确性,模拟主机的咋写啊?求思路

这是部分原理图,引出的就只有2根线,要模拟主机对从机里面的数据读出来,可是这个模拟主机的时序咋写啊?没有一点思路!也就是说要创造出SDA线高低电平来对从机进行读出数据!请问大家有啥好思路吗?谢谢

你遇到的这个问题,在FPGA开发中叫做写TESTBENCH,更详细点就是设计测试向量,这是FPGA开发中必不可少的环节。至于你想要测试的这个I2C的模块,别无他法,只有自己写测试向量。
--怎么写? VHDL/VERILOG 两种语言都行,在testbench中加入你的测试向量. I2C协议怎么规定的,你的测试向量就怎么写。比如什么时候SCL拉高,什么时候SDA接受ACQ信号等等。。
--用什么测? 很多软件都可以仿真,推荐MODELSIM,好用并且现在应用面广,很多公司里就用这个。

好了,希望能帮到你。 也希望你看了以后采纳下我的答案,好歹我这么认真的打字~~
PS:那个思路.rar是骗人的。。追问

嗯,我对于这中Testbench感觉不知道咋入手写,还有那个scl时钟不是固定的吗?主机提供的时钟。

追答

SCL是不是固定的,取决于你主机信号怎么写,因为I2C的开始信号是由SCL和SDA共同产生,所以SCL可以只在总线忙的时候作用,也可以让SCL时刻都运作,都行,看你想怎么写。

我建议,你再写一个主机模块,然后将主从机都作为模块加入TESTBENCH里,这样testbench更加短小,增加可读性。
至于testbench怎么写,就要你去找点例子从简单的开始了,这不是什么很难得东西,花点时间就搞懂了。
把这些做一次,仿真完美通过后,你就明白这个流程了。。

追问

想给你一个赞!!幸苦了呀!如果再编一个主机模块就好复杂吧!本来我就是引出来了2根线,只要在仿真时候操作这2根就可以了吧,我打算SCL一直作为时钟,固定不变,就只是操作SDA线,那样就比较简单点,可是SDA是inout类型,不能像其他一样取值,我打算用force 语句去做,可是就是收不到确认信号,奇怪了。还有问下,我那个3态的线那样做的不知道是不是对的,您看下呗!

追答

。。光看线我看不出什么。。有代码比较好。。我有时间的话可以看下

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答