Verilog笔记.4.inout端口
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端口的更多相关文章
- 可控线性序列机(查看除了inout端口外的其他变量的波形的方法)
可控线性序列机: 可控:有个控制端控制何时输出线性序列. 线性序列机:输出一个线性序列. 知识点: 1.包含多个判定条件时用英文()括起来,用&&连接. 2.使能端EN的设置(类似于D ...
- Verilog笔记——Verilog数字系统设计(第二版)夏宇闻
本片记录Verilog学习笔记,主要是和以往用的C语言的不同之处,以例子.代码的形式记录.学习以<Verilog数字系统设计>(第二版)为参考资料,援助作者夏宇闻. 1. C语言和Veri ...
- 在verilog中关于inout口的设计方法
在学习IIC的时候我们知道这么设计inout inout scl : reg scl_reg , scl_en ; scl = scl_en ? scl_reg : 1'dz ; 当 ...
- kali linux学习笔记(四) : 网络端口大全介绍
端口大全介绍 2端口:管理实用程序 3端口:压缩进程 5端口:远程作业登录 7端口:回显 9端口:丢弃 11端口:在线用户 13端口:时间 17端口:每日引用 18端口:消息发送协议 19端口:字符发 ...
- Kali学习笔记10:端口扫描详解(下)
上一篇先是介绍了UDP的端口扫描,又谈了TCP的不完全连接端口扫描 https://www.cnblogs.com/xuyiqing/p/9389276.html 接下来我们看看TCP的全连接端口扫描 ...
- Kali学习笔记9:端口扫描详解(上)
UDP端口扫描: 原理:回应ICMP不可达,代表端口关闭:没有回应,端口开启 建议了解应用层的UDP包头结构,构建对应的UDP数据包用来提高准确度 另外:所有的扫描都存在误判情况 我们用Scapy写个 ...
- Verilog笔记.1.基本语法
0.前 抽象模型分级: • 系统级(system):用高级语言结构实现设计模块的外部性能的模型.• 算法级(algorithm):用高级语言结构实现设计算法的模型.• RTL级(Register Tr ...
- Thrift笔记(六)--单端口 多服务
多个服务,使用监听一个端口.先上一个demo Test.thrift namespace java com.gxf.thrift enum RequestType { SAY_HELLO, //问好 ...
- android学习笔记:adb更换端口后成功启动
搭建手机开发环境,android ADT,android SDK,然后按照PhoneGap官网的指引,拷贝文件,修改代码,运行,进度条到了某个位置后就停止不动了. 停止不动,又是停止不动.你都不知道问 ...
随机推荐
- Navicat Premium_11.2.7简体中文版 破解版本 windows版本
亲测可用 自己一直在用的 https://pan.baidu.com/s/1VVKKQoIKVB0BgNXBK4YTrQ
- 【.Net】在WinForm中选择本地文件
相信很多朋友在日常的编程中总会遇到各钟各样的问题,关于在WinForm中选择本地文件就是很多朋友们都认为很难的一个学习.net的难点, 在WebForm中提供了FileUpload控件来供我们选择本地 ...
- resp.getWriter().print的注意点
- bzoj5127[Lydsy12月赛]数据校验
多少年不写题解了 题目描述: 著名出题人小 Q 出了一道题,这个题给定一个正整数序列 a1, a2, ..., an,并保证输入数据中,对于 a 的任意一个非空连续子区间 [l, r],该区间内出现过 ...
- 如何用Qt Python创建简单的桌面条形码应用
Qt for Python可以快速跨平台的GUI应用.这篇文章分享下如何结合Dynamsoft Barcode Reader SDK来创建一个简单的读码应用. 安装Qt for Python 官方站点 ...
- 聊聊flink的Async I/O
// This example implements the asynchronous request and callback with Futures that have the // inter ...
- HDU.1495 非常可乐 (BFS)
题意分析 大家一定觉的运动以后喝可乐是一件很惬意的事情,但是seeyou却不这么认为.因为每次当seeyou买了可乐以后,阿牛就要求和seeyou一起分享这一瓶可乐,而且一定要喝的和seeyou一样多 ...
- [POJ1094] Sorting It All Out
link 题目大意 给出$m$个不等式关系,问可以从第几个开始确定所有之间的大小关系.若无解请输出是无法确定还是与已知矛盾. 试题分析 这题是真的是坑啊,尽然放在$floyd$传到闭包上面,还用二分, ...
- Lab颜色空间
原文:http://blog.csdn.net/carson2005/article/details/7200440 同RGB颜色空间相比,Lab是一种不常用的色彩空间.它是在1931年国际照明委员会 ...
- poj1006 生理周期
生理周期 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 138947 Accepted: 44597 Descripti ...