akuei2 发表于 2010-9-13 21:15:05

关于 at24c02控制模块 - inout端口仿真失败 { 救命!这是怎么一回事 ... }

呜呜!主要是仿真 at24c02 的控制模块!
已经换了3种写法了。

问题是这样的~

当单独测试 SDA_In , 或者 SDA_Out 端口的时候是没有问题的 ( SDA = SDA_In + SDA_Out )
但是一旦整合 SDA ,inout端口,仿真会一直出现“红线”~

整合表达式如下:

inout SDA;
reg SDA_Out;
wire SDA_In;

assign SDA_In = SDA;
assign SDA = isEn ? SDA_Out : 1'bz;

/**************************************************/

inout 端口是第一次玩~

http://cache.amobbs.com/bbs_upload782111/files_33/ourdev_582761PUZ4A1.jpg
(原文件名:why.jpg)

这是源代码:

点击此处下载 ourdev_582762Q4HVHJ.rar(文件大小:1.50M) (原文件名:Experiment13.rar)

呜呜,已经测试4天了!

minux 发表于 2010-9-13 22:18:11

总线冲突了吧。
isEn怎么控制的?虽然实际SDA是上拉的,可以一起输出,但是你的模块和testbench都不能一起输出……

wcabcd 发表于 2010-9-16 11:06:44

楼主可以看看下面的链接
http://blog.ednchina.com/ilove314/152825/message.aspx
它的仿真就没有问题!

akuei2 发表于 2010-9-16 13:02:36

嗯,特权同学的呀!
参考过了,但是代码风格 ... 让我畏惧!

我的问题是:“为什么会有红色线”?

/********************************************/

已经找到原因了,但是还是找不到方法解决~

嗯,死马当活马医吧!

wcabcd 发表于 2010-9-16 13:28:00

你可以试试做如下定义
inout SDA
output scl
仿真时定义如下
wire scl
wire sda
看看还有没有红线?
我仿真过特权的代码,是没有红线的!如何你的按照上述定义有红线,是不是代码本身有点问题!

akuei2 发表于 2010-9-16 17:30:39

咕~~(╯﹏╰)b!
inout的定义基本是一样!

问题发生在是,我没有加入源文件编译!
红线,没有影响任何输出呀!

不过很感谢你呀!

wcabcd 发表于 2010-9-16 20:53:25

那现在问题解决了吗?我最近也在做IIC方面的程序,有时间多讨论一下,感谢你的Verilog那些事,对我这样的初学者意义很大!希望能推出更多的实例!

akuei2 发表于 2010-9-17 17:24:05

呵呵,楼上你爱开玩笑呀!
嗯!忽然感触起来,想起用AVR驱动IIC的年代 ...
页: [1]
查看完整版本: 关于 at24c02控制模块 - inout端口仿真失败 { 救命!这是怎么一回事 ... }