集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1968|回复: 9

简谈FPGA/Verilog中inout端口使用方法

[复制链接]
晓灰灰 发表于 2018-8-13 11:24:13 | 显示全部楼层 |阅读模式
        大家好,又到了每日学习的时间了,今天我们来聊一聊FPGA/Verilog中inout端口使用方法。

        输入端口可以由wire/reg驱动,但输入端口只能是wire;输出端口可以使wire/reg类型,输出端口只能驱动wire;若输出端口在过程块中赋值则为reg型,若在过程块外赋值则为net型。用关键词inout声明一个双向端口, inout端口不能声明为reg类型,只能是wire类型;输入和双向端口不能声明为寄存器类型。

INOUT引脚:

1.FPGA IO在做输入时,可以用作高阻态,这就是所说的高阻输入;

2.FPGA IO在做输出时,则可以直接用来输入输出。

        芯片外部引脚很多都使用inout类型的,为的是节省管腿。就是一个端口同时做输入和输出。 inout在具体实现上一般用三态门来实现。三态门的第三个状态就是高阻'Z'。当inout端口不输出时,将三态门置高阻。这样信号就不会因为两端同时输出而出错了,更详细的内容可以搜索一下三态门tri-state的资料.
       
        1 使用inout类型数据,可以用如下写法:
        inout data;
        reg data_in;
        reg data_out;

        //data为输出时
        reg en_output;
        assign data_inout=en_output?data_out:1'bz;//en_output控制三态门
        //对于data_out,可以通过组合逻辑或者时序逻辑根据data对其赋值.通过控制en_output的高低电平,从而设置data是输出数据还是处于高阻态,如果处于高阻态,则此时当作输入端口使用.en_output可以通过相关电路来控制.

        2 编写测试模块时,对于inout类型的端口,需要定义成wire类型变量,而其它输入端口都定义成reg类型,这两者是有区别的.
        当上面例子中的data_inout用作输入时,需要赋值给data_inout,其余情况可以断开.

        此时可以用assign语句实现:assign data_inout=link?data_in_t:1'bz;

        其中的link ,data_in_t是reg类型变量,在测试模块中赋值.

        另外,可以设置一个输出端口观察data_inout用作输出的情况:
        Wire data_out;
        Assign data_out_t=(!link)?data_inout:1'bz;

        但要注意给data_inout赋值的时候,link选通信号如何给呢?

        首先测试文件给源文件的data_inout数据赋值,那只能在原INOUT数据为高阻态的时候才可以赋值,故link信号即该INOUT数据为高阻太时的控制信号。
       
        当不需要测试文件给你data_inout数据赋值的时候,测试文件的data_inout接口因为高阻态,从而不影响源文件data_inout接口的其他操作。

         今天就聊到这里,各位,加油。
 楼主| 晓灰灰 发表于 2018-8-13 11:25:30 | 显示全部楼层
简谈FPGA/Verilog中inout端口使用方法

点评

是我自己理解错误了,没有分清楚驱动和数据类型的意思  发表于 2019-11-21 09:19
开头似乎有点小错误。输入端口可以是wire/reg,输出端口只能是wire  发表于 2019-11-21 09:10
zhangyukun 发表于 2018-8-14 09:34:45 | 显示全部楼层
简谈FPGA/Verilog中inout端口使用方法
 楼主| 晓灰灰 发表于 2018-8-14 11:39:03 | 显示全部楼层
简谈FPGA/Verilog中inout端口使用方法
 楼主| 晓灰灰 发表于 2018-8-14 11:40:02 | 显示全部楼层
简谈FPGA/Verilog中inout端口使用方法
 楼主| 晓灰灰 发表于 2018-8-15 14:02:02 | 显示全部楼层
简谈FPGA/Verilog中inout端口使用方法
 楼主| 晓灰灰 发表于 2018-8-16 14:56:59 | 显示全部楼层
简谈FPGA/Verilog中inout端口使用方法
 楼主| 晓灰灰 发表于 2018-8-17 10:25:34 | 显示全部楼层
简谈FPGA/Verilog中inout端口使用方法
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-4-25 16:46 , Processed in 0.078394 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表