菜鸟求助,inout口的定义
时间:10-02
整理:3721RD
点击:
我用verilog写的一个程序 I2C_SDAT是inout口,在源文件中定义成assign I2C_SDAT=I2C_SDAT_EN?SDO:1'bz;(SDO为output) 激励文件中定义initial
begin
I2C_SDAT_EN=1;
treg_I2C_SDAT=0;
end
assign I2C_SDAT=I2C_SDAT_EN?SDO:1'bz;仿真出来的波形

在I2C_SDAT的波形总体跟SDO都是一致的,但是I2C_SDAT上升沿全部变红线了,要怎样修改才能使I2C_SDAT跟SDO全部一致,都是绿线
begin
I2C_SDAT_EN=1;
treg_I2C_SDAT=0;
end
assign I2C_SDAT=I2C_SDAT_EN?SDO:1'bz;仿真出来的波形

在I2C_SDAT的波形总体跟SDO都是一致的,但是I2C_SDAT上升沿全部变红线了,要怎样修改才能使I2C_SDAT跟SDO全部一致,都是绿线
求大神帮忙,菜鸟完全不懂这些问题
可以的话,把代码列详细点啊!
根据定义inout口看似没错。
问题可能出在SDO上,你定义了SDO为reg吗?具体的赋值语句是什么?很可能是那里出了问题。或者是你有multiple signal assign comfilct,也就是用多个语句同时赋值给SDO。
PS,你给的信息太少了,我只能帮你到这了。
SDO应该是内部reg
自己改几次代码,看一下有什么变化,比如不用选择语句。
加pullup(I2C_SDAT);I2C总线要上拉!
外部需要增加pullup。
上拉上拉
应该是对SDA赋值有冲突
加pull up
