Verilog中三态门(高阻态)的理解与例子
以前只知道电路的输出有高阻态,但是对高阻态的理解不够,对高阻态的用法也不清楚,直到用Verilog实现单端口SRAM时,才有了一个进一步的认识,记录如下;
Verilog实现单端口SRAM的内容见:Verilog实现RAM(2-单端口同步读写SRAM) 此处不再赘述
一、百度百科概念照搬
高阻态是一个数字电路里常见的术语,指的是电路的一种输出状态,既不是高电平也不是低电平,如果高阻态再输入下一级电路的话,对下级电路无任何影响,和没接一样,如果用万用表测的话有可能是高电平也有可能是低电平,随它后面接的东西定的。
简介:在电子学中,高阻态(英语:High impedance)表示电路中的某个节点具有相对电路中其他点相对更高的阻抗。这个概念在三态逻辑、上拉电阻中有所涉及。在硬件描述语言(如Verilog HDL和VHDL)中,高阻态通常用字母z来表示。
实质:电路分析时高阻态可做开路理解。你可以把它看作输出(输入)电阻非常大。它的极限状态可以认为悬空(开路)。也就是说理论上高阻态不是悬空,它是对地或对电源电阻极大的状态。而实际应用上与引脚的悬空几乎是一样的。
意义:当门电路的输出上拉管导通而下拉管截止时,输出为高电平;反之就是低电平;如上拉管和下拉管都截止时,输出端就相当于浮空(没有电流流动),其电平随外部电平高低而定,即该门电路放弃对输出端电路的控制 。
表示方法:高阻态常用字母 Z 表示。
典型应用 实例1:在总线连接的结构上。总线上挂有多个设备,设备与总线以高阻的形式连接。这样在设备不占用总线时自动释放总线,以方便其他设备获得总线的使用权。
三态逻辑:在数字电路中,三态逻辑(英语:Three-state logic)允许输出端在0和1两种逻辑电平之外呈现高阻态,等效于将输出的影响从后级电路中移除。这允许多个电路共同使用同一个输出线(例如总线)。
二、单端口SRAM中的应用
d为inout端口,如果在输出的时候简单使用
assign d = (输出) ? reg_d : 0;//写逻辑时d作为数据输入,而输出逻辑将d置数;
还是
assign d = reg_d;//写逻辑时d作为数据输入,而输出逻辑将d与reg_d连接;
可见,输出部分电路设计势必对输入部分逻辑产生影响;
因此应利用三态逻辑中高阻态不占用总线这一逻辑,实现输入输出的交替逻辑,使得两者互不影响;实现代码如下
`timescale 1ns / 1ps
//
// Company:
// Engineer: guoliang CLL
//
// Create Date: 2020/02/23 12:06:07
//module sram_sp_srsw
#(parameter DW = 8,AW = 4)
(input [AW-1:0]a,//addressinput clk,input cs,// chip selectinput oe,// output enableinput we,// write enableinout [DW-1:0]d// data);//
parameter DP = 1 << AW;// depth
reg [DW-1:0]mem[0:DP-1];
reg [DW-1:0]reg_d;
//initialization
// synopsys_translate_off
integer i;
initial beginfor(i=0; i < DP; i = i + 1) beginmem[i] = 8'h00;end
end
// synopsys_translate_on
//
always@(posedge clk)
beginif(cs & we)//write declarationbeginmem[a] <= d;endelse if(cs & !we & oe)beginreg_d <= mem[a];endelsebeginmem[a] <= mem[a];reg_d <= reg_d;end
end
//
assign d = (cs & !we & oe) ? reg_d : {DW{1'bz}};
endmodule
三、参考文献
高阻态
Verilog中三态门(高阻态)的理解与例子相关推荐
- 51单片机的io口可不可以接gnd_纯干货!简析单片机中的高阻态
在我们刚一开始接触到51单片机的时候对P0口必须加上上拉电阻,否则P0就是高阻态. 对这个问题可能感到疑惑,为什么是高阻态?加上拉电阻?今天针对这一概念进行简单讲解.高阻态 高阻态这是一个数字电路里常 ...
- verilog中的inout端口与三态门、高阻态的使用
高阻态 百度百科:高阻态是一个数字电路里常见的术语,指的是电路的一种输出状态,既不是高电平也不是低电平,如果高阻态再输入下一级电路的话,对下级电路无任何影响,和没接一样,如果用万用表测的话有可能是高电 ...
- 三态门三个状态vhdl_温故知新,高阻态和三态门
欢迎FPGA工程师加入官方微信技术群 高阻态 高阻态这是一个数字电路里常见的术语,指的是电路的一种输出状态,既不是高电平也不是低电平,如果高阻态再输入下一级电路的话,对下级电路无任何影响,和没接一样, ...
- IC基础知识(九)三态门与高阻态
在数字系统中,常常需要把多个门电路的输出端连接在一起,比如接到数据总线上.把这些门电路的输出端连接在一起,在某一个时刻,可能会出现一个以上的门电路的输出同时为高电平状态或者低电平状态,这样就会引起逻辑 ...
- 嵌入式基础知识之高阻态、驱动、三态门
高阻态 很显然,当处理器从目标外设读数据时,我们希望其它没有被选上的芯片的数据总线不会对目标外设所要传送的数据有影响,那怎么办呢?实际上,当芯片没有被选中时,其数据总线都处于高阻态. 所谓的高阻态,我 ...
- verilog自加为什么会出现高阻态
之前在写自加逻辑时,仿真结果经常会出现高阻态,常常百思不得其解,这次简单分析一下. always@(negedge clk_ad or negedge rst_n)begin if(!rst_n)be ...
- 有关modelsim/Questa Sim中出现蓝线高阻态(Z)的问题解决
关于在modelsim/Questa Sim出现高阻态的原因,可能大家比较熟悉的是该端口没被链接或没有初始化,这里主要介绍的原因可能是大家不是那么容易被关注到的,那就是位宽不一致也会导致出现高阻态.这 ...
- 仿真时信号出现高阻态、不定态——Test Bench中要做声明
仿真时信号出现高阻态或者不定态zx 检查模块例化时是否包含了全部信号列表的信号
- 高阻态是0还是1_FPGA/ASIC笔试面试题集锦(1)知识点高频复现练习题
写在前面 正文内容 简述ASIC设计流程,并列举出各部分用到的工具? 简述FPGA的开发流程? 名词解释 数制转换 什么是竞争和冒险?如何消除? 2分频描述 简述建立时间和保持时间,画图表示? 简述触 ...
最新文章
- python第五章_Python数据分析-第5章Series(下)
- HDU 4619 Warm up 2 最大独立集
- C# 加载图片image --(C#)Image.FromFile 方法会锁住文件的原因及可能的解决方法
- P1121 环状最大两段子段和
- Mac OS X 10.10.3对SSD开启Trim功能
- simulink仿真学习(关系运算及逻辑模块、离散时间积分模块)day2
- 一周以来的工作总结--oracle分区的迁移
- css布局:多列等高布局
- Jupyter的安装和使用(windows)
- Rbf神经网络使用Tensorflow实现
- 模式识别与机器学习第六章有监督学习方法
- 求素数 java 101 200_JAVA编程题2 101——200素数个数
- html中图片一角的卷起效果,CSS3实现图片折角效果例子
- 三消游戏死局算法的解析
- 父子盒子边距塌陷之为什么设置margin-top父子盒子会一起移动
- 命令行操作时提示“请求的操作需要提升作为管理员运行。”解决办法
- UTC相关的时区转换
- Android学习之——APP番茄工作法——小结(1)
- 编写SQL语句,从Customers表中检索所有的ID(cust_id)
- 数字后端知识点扫盲——Floorplan