在线咨询 切换到宽版
eetop公众号 创芯大讲堂 创芯人才网

 找回密码
 注册

手机号码,快捷登录

手机号码,快捷登录

搜全文
查看: 8001|回复: 14

[求助] 关于Verilog中的inout数据类型,求助啊

[复制链接]
发表于 2010-3-7 15:37:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
inout数据类型的赋值总是不对。

比如rom_data[7:0],mode[1:0]都为输入信号,IO[7:0]为inout信号,

always@ (posedge clk)
begin
if(!reset)
    begin
   无关紧要的东西
    end

else
    begin
    case(mode)
    2'b00 :
      IO[7:0]<=rom_data[7:0];
      ......

    endcase
    end

end

怎么仿真的时候IO赋值根本就不是rom_data的值啊,是怎么回事啊,难道inout还有别的什么赋值方式??
发表于 2010-3-8 13:42:47 | 显示全部楼层
先把rom_data[7:0] 赋给一个reg型变量,如IO_reg[7:0]
然后assign IO = IO_reg;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-8 13:54:02 | 显示全部楼层
试试啊,看看行不行 2# fslrayman
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-3-8 13:56:38 | 显示全部楼层

如果这样的话,我后面还有别的时刻还有读取IO的内容啊,这样还能够读吗?
比如ram_data[7:0]<=IO[7:0];
你那样的话就是把IO当成输出了吧,没有考虑到IO的输入功能吧
回复 支持 反对

使用道具 举报

发表于 2010-3-8 14:40:06 | 显示全部楼层
111111111111111111
回复 支持 反对

使用道具 举报

发表于 2010-3-8 16:20:35 | 显示全部楼层
IO口是双向口,需要一个方向选通信号oEN
一般是
assign port_io = oEN ? 1'bz : port_o;
assign port_i = port_io;

所以你还应该有选通信号的register
回复 支持 反对

使用道具 举报

发表于 2010-3-8 22:01:02 | 显示全部楼层
楼上正解
回复 支持 反对

使用道具 举报

发表于 2010-3-8 22:34:10 | 显示全部楼层
我觉得对于HDL语言设计时一定要先明白它综合后对应的硬件逻辑电路。对于inout型,并不要简单理解为一种数据类型,综合后它要对应一个硬件电路。因此“小富人”同学的HDL描述有道理。只有再加上门控信号,才能实现inout功能 呵呵
回复 支持 反对

使用道具 举报

发表于 2010-3-10 01:17:00 | 显示全部楼层
试试 buffer 类型??
回复 支持 反对

使用道具 举报

发表于 2010-3-10 09:24:50 | 显示全部楼层
搞清楚为什么要用IO。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条


手机版| 小黑屋| 关于我们| 联系我们| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2025-10-6 09:26 , Processed in 0.019997 second(s), 3 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表