inout是一个双向端口,实现为使用三态门,第三态为高阻态‘z’。

在实际电路中高阻态意味着响应的管脚悬空、断开。

当三态门的控制信号为真时,三态门选通,作输出端口使用;控制信号为假时,三态门是高阻态,作输入端口用。

使用时,可用一下写法

  inout data_inout;
input data_in; reg data_reg;//data_inout的映象寄存器
reg link_data; assign data_inout=link_data?data_reg:’bz;//link_data控制三态门
8 //对于data_reg,可以通过组合逻辑或者时序逻辑根据data_in对其赋值.
9 //通过控制link_data的高低电平,从而设置data_inout是输出数据还是处于高阻态,
10 //如果处于高阻态,则此时当作输入端口使用.link_data可以通过相关电路来控制.

模块代码

 module three_state(
//系统输入
clk,//系统时钟输入
rst_n,//低电平复位信号
data_buf,
//系统输出
sda//三态总线
); //-------------------系统输入-------------------
input clk;//系统时钟输入
input rst_n;//低电平复位信号
input data_buf;//待传输数据
//-------------------系统输出-------------------
inout sda;//三态总线
//------------------寄存器定义------------------
reg flag;//三态门开关定义
reg [:]counter;//计数器定义
//------------------三态门赋值------------------
assign sda=(flag==)?data_buf:'bz;
//----------------开关控制计数器----------------
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
counter<=;//计数器复位
end
else
begin
if(counter<</span>)//计数器范围
counter<=counter+;//计数器累加
else
counter<=;//计数器清零
end
end
//----------------开关/数据控制-----------------
always@(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
flag<=;//开关关闭
end
else
begin
if(counter==)
flag<=~flag;//开关信号翻转
end
end
endmodule

相连的两个inout端口由一对信号交叉控制:
在内部模块中inout端口不能独立存在,当一个模块的inout端口作为输出时,那么另一个模块的inout端口必然作为输入;反之,当一个模块的inout端口作为输入时,那么另一个模块的inout端口必然作为输出。因此,这两个inout端口的控制信号实际上是由一对信号交叉控制。

Verilog笔记.4.inout端口的更多相关文章

  1. 可控线性序列机(查看除了inout端口外的其他变量的波形的方法)

    可控线性序列机: 可控:有个控制端控制何时输出线性序列. 线性序列机:输出一个线性序列. 知识点: 1.包含多个判定条件时用英文()括起来,用&&连接. 2.使能端EN的设置(类似于D ...

  2. Verilog笔记——Verilog数字系统设计(第二版)夏宇闻

    本片记录Verilog学习笔记,主要是和以往用的C语言的不同之处,以例子.代码的形式记录.学习以<Verilog数字系统设计>(第二版)为参考资料,援助作者夏宇闻. 1. C语言和Veri ...

  3. 在verilog中关于inout口的设计方法

    在学习IIC的时候我们知道这么设计inout inout   scl : reg    scl_reg ,  scl_en ; scl  = scl_en ?   scl_reg : 1'dz ; 当 ...

  4. kali linux学习笔记(四) : 网络端口大全介绍

    端口大全介绍 2端口:管理实用程序 3端口:压缩进程 5端口:远程作业登录 7端口:回显 9端口:丢弃 11端口:在线用户 13端口:时间 17端口:每日引用 18端口:消息发送协议 19端口:字符发 ...

  5. Kali学习笔记10:端口扫描详解(下)

    上一篇先是介绍了UDP的端口扫描,又谈了TCP的不完全连接端口扫描 https://www.cnblogs.com/xuyiqing/p/9389276.html 接下来我们看看TCP的全连接端口扫描 ...

  6. Kali学习笔记9:端口扫描详解(上)

    UDP端口扫描: 原理:回应ICMP不可达,代表端口关闭:没有回应,端口开启 建议了解应用层的UDP包头结构,构建对应的UDP数据包用来提高准确度 另外:所有的扫描都存在误判情况 我们用Scapy写个 ...

  7. Verilog笔记.1.基本语法

    0.前 抽象模型分级: • 系统级(system):用高级语言结构实现设计模块的外部性能的模型.• 算法级(algorithm):用高级语言结构实现设计算法的模型.• RTL级(Register Tr ...

  8. Thrift笔记(六)--单端口 多服务

    多个服务,使用监听一个端口.先上一个demo Test.thrift namespace java com.gxf.thrift enum RequestType { SAY_HELLO, //问好 ...

  9. android学习笔记:adb更换端口后成功启动

    搭建手机开发环境,android ADT,android SDK,然后按照PhoneGap官网的指引,拷贝文件,修改代码,运行,进度条到了某个位置后就停止不动了. 停止不动,又是停止不动.你都不知道问 ...

随机推荐

  1. Navicat Premium_11.2.7简体中文版 破解版本 windows版本

    亲测可用 自己一直在用的 https://pan.baidu.com/s/1VVKKQoIKVB0BgNXBK4YTrQ

  2. 【.Net】在WinForm中选择本地文件

    相信很多朋友在日常的编程中总会遇到各钟各样的问题,关于在WinForm中选择本地文件就是很多朋友们都认为很难的一个学习.net的难点, 在WebForm中提供了FileUpload控件来供我们选择本地 ...

  3. resp.getWriter().print的注意点

  4. bzoj5127[Lydsy12月赛]数据校验

    多少年不写题解了 题目描述: 著名出题人小 Q 出了一道题,这个题给定一个正整数序列 a1, a2, ..., an,并保证输入数据中,对于 a 的任意一个非空连续子区间 [l, r],该区间内出现过 ...

  5. 如何用Qt Python创建简单的桌面条形码应用

    Qt for Python可以快速跨平台的GUI应用.这篇文章分享下如何结合Dynamsoft Barcode Reader SDK来创建一个简单的读码应用. 安装Qt for Python 官方站点 ...

  6. 聊聊flink的Async I/O

    // This example implements the asynchronous request and callback with Futures that have the // inter ...

  7. HDU.1495 非常可乐 (BFS)

    题意分析 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多 ...

  8. [POJ1094] Sorting It All Out

    link 题目大意 给出$m$个不等式关系,问可以从第几个开始确定所有之间的大小关系.若无解请输出是无法确定还是与已知矛盾. 试题分析 这题是真的是坑啊,尽然放在$floyd$传到闭包上面,还用二分, ...

  9. Lab颜色空间

    原文:http://blog.csdn.net/carson2005/article/details/7200440 同RGB颜色空间相比,Lab是一种不常用的色彩空间.它是在1931年国际照明委员会 ...

  10. poj1006 生理周期

    生理周期 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 138947   Accepted: 44597 Descripti ...