FPGA中的inout接口问题

FPGA中inout接口有两种处理方式,assign判断和源语。个人推荐使用源语。

1. Assign形式

assign IO_sda  =  (sda_mode == 1'b1) ? sda_o : 1'bz ;

assign sda_i = IO_sda ;

当 sda_mode == 0 时, IO_sda=1’bz,此时为输入端口。

实际在写24C02芯片的IIC协议接口时,把读写分成两个子模块, sda_i/o 信号引到top层,使用上面的 assign 转接到 IO_sda 。实际发现这种方法在top层判断转换后外设芯片sda无反馈。

这种方法理论上可行,实际不知道为什么无响应。

2. 源语形式

实际使用时发现使用源语IO口必须直连TOP 层的IO口,中间不能有wire接线。(这一条忘记出现什么问题了....)

IOBUF IOBUF(
.O( ),
.IO( ),
.I( ),
.T( )
);

2.1 当模块外部信号输入FPGA逻辑时:

        .O( in )  : 此时有效,inout=in。 括号内填写从inout口输入到FPGA模块内部的逻辑信号。

        .IO():括号内填写顶层的inout端口信号名

        .I()   :括号内填写内部逻辑需要送至外部端口的信号(此时为高阻)

        .T( 1 )  :  括号内填写三态的控制信号,此时填写"1",表示外部输入有效, .O() 接口将外部IO端口的信号引入逻辑;  // 3-state enable input, high=input(外部信号输入内部有效), low=output(内部信号输出到外部有效)

2.2 当FPGA模块内部逻辑信号输出到inout端口外部时:

        .O()  :  括号内填写从inout口输入到FPGA模块内部的逻辑信号。(此时为高阻)

        .IO():括号内填写顶层的inout端口信号名。

        .I( out )   :此时有效,inout=out。括号内填写内部逻辑需要送至外部端口的信号

        .T( 0 )  :  括号内填写三态的控制信号,此时填写"0",表示内部信号输出有效, .IO() 接口将内部,  .I()  接口的送入信号发送到外部;  // 3-state enable input, high=input(外部信号输入内部有效), low=output(内部信号输出到外部有效)

参考:VIVADO IOBUF应用_通俗易懂篇!!-CSDN博客

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值