【 Verilog HDL 】避免出现锁存器的组合电路描述方式
无论多么复杂的FPGA设计,如果我们将其中具有存储功能的机构(寄存器、RAM、FIFO等)全部拿掉,那么剩下的若干独立数字电路网络则都是纯组合逻辑电路,对应的,我们称FPGA设计中这些具有存储功能的结构为纯时序逻辑电路。
在数字电路的世界中,只有两种电路,即组合逻辑电路和时序逻辑电路,而时序逻辑电路中则包含了组合逻辑电路部分和纯时序逻辑电路部分。
分析下面这个代码:
module test(...);...
always@(sel,b)
beginif( sel = 1'b1 )a = b;
endendmodule
请问上述代码描述的是不是一个组合逻辑电路呢?
我们首先要知道组合逻辑电路的概念:如果数字电路满足任意时刻的输出仅仅取决于该时刻的输入,那么该数字电路为组合逻辑电路。
根据此概念,我们分析一下,上述HDL描述: 上述例子中,输出为a,输入为sel,b。当sel为逻辑1时,输出a完全取决于b,可当sel为逻辑0呢?从语法上分析,此时a应该保持为最近一次sel为逻辑1时b的值,而与当前的b值无关。由此可见,上述代码并不符合组合逻辑的定义。
事实上,该段代码在综合时会引入锁存器,这是一个具有存储功能的单元,因此实际上实现的是一个时序逻辑电路。而且锁存器还有很多缺点:
首先,由于锁存器是毛刺敏感的,如果不能保证sel信号的质量,那么会造成输出信号a的不稳定;
其次,FPGA芯片中一般没有锁存器这样一个资源,需要使用一个触发器和一些逻辑门来实现,比较浪费资源;
第三,锁存器的引入会对时序分析造成困难。
因此,除非你现在就需要实现一个锁存功能,否则在编写组合逻辑电路时,请务必确认HDL代码覆盖到了组合逻辑的所有分子,以避免锁存器的引入。仍以上述代码为例,判断是否覆盖到了所有分子的一个方法,就是要确定无论输入sel和b怎么变化,always块中的代码从begin到end执行一遍,都能够经过至少一条对输出a的赋值语句。
修改后的代码类似如下:
always@(sel,b)
beginif(sel = 1'b1)a = b;elsea = 1'b0;end
这篇博文与下面这篇博文同时服用:【Verilog HDL】设计硬件电路时,如何避免生成锁存器?
【 Verilog HDL 】避免出现锁存器的组合电路描述方式相关推荐
- 【 Verilog HDL 】不同抽象级别的Verilog HDL模型之门级结构描述
本博文参考:<从算法设计到硬件逻辑实现>,仅供学习交流使用. Verilog模型可以是实际电路不同级别的抽象.这些抽象的级别和它们对应的模型类型共有以下五种: 1) 系统级(system) ...
- 【连载】【FPGA黑金开发板】Verilog HDL那些事儿--数码管电路驱动(八)
声明:本文为原创作品,版权归akuei2及黑金动力社区(http://www.heijin.org)共同所有,如需转载,请注明出处http://www.cnblogs.com/kingst/ 3.1 ...
- 多路选择器——Verilog HDL语言
多路选择器 任务描述 相关知识 逻辑原理 多路选择真值表 编程要求 源代码 任务描述 设计一个 2 选 1 多路选择器.进一步熟悉 Verilog HDL 设计流程,组合电路的设计和测试. 相关知识 ...
- Verilog HDL简明教程
Verilog HDL简明教程 来源: 郭红卫的日志 Verilog HDL简明教程 Verilog HDL是一种硬件描述语言,用于从算法级.门级到开关级的多种抽象设计层次的数字系统建模.被建模的数字 ...
- Verilog HDL可综合描述(高质量Verilog书写)
参考视频:中国大学MOOC 芯动力--硬件加速设计方法 (2.1节) 本篇所有内容来源于<芯动力--硬件加速设计方法>此课程的教学视频 .ppt等相关资料. 一.VerilogHDL可综 ...
- 爆肝4万字❤️零基础掌握Verilog HDL
文章目录 0.前言 1.Verilog HDL简介 1.1 什么是Verilog HDL 1.2 verilog发展历史ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ 1.3 为什么要使用verilog ...
- hdl语言哪种语言类似c,Verilog HDL笔记
<设计与验证 Verilog HDL> 设计与验证的发展历程 早期:卡诺图设计,面包板验证 中期:原理图设计,EDA工具仿真验证 后期:硬件描述语言HDL设计,EDA工具仿真验证 抽象层次 ...
- Verilog HDL学习笔记
目录 1 硬件描述语言简介 1.1 概述 1.2 HDL语言特点 2 程序的基本语法 2.1 Verilog HDL 程序结构 2.1 Verilog HDL 程序规则 模块 连续赋值语句assign ...
- Verilog HDL 语法学习笔记
今天给大侠带来Verilog HDL 语法学习笔记,话不多说,上货. 关于详细的VHDL语法以及Verilog HDL语法可参见往期文章. 一周掌握 FPGA VHDL Day 7 暨汇总篇 一周掌握 ...
最新文章
- idea 不能粘贴复制问题
- 【Verilog HDL】设计硬件电路时,如何避免生成锁存器?
- JavaScript高级程序设计学习笔记二(在HTML中使用JavaScript)
- 用VS2010调试微软开放的部分源码
- 《计量经济学》学习笔记之多元线性回归模型
- 日常问题——使用Xshell 连接虚拟机报错 Disconnected from remote host
- qc中的流程图怎么画_QC流程图参考
- 《Android 第1行代码》读后感—第12章【最佳的UI体验——Material Design实战】
- Spring Boot 学习笔记,这个太全了!
- SQLite介绍及使用
- 决策树分箱-特征工程之数据离散化处理-基于python实现
- visio2013安装包及破解工具KMS
- 南阳理工ACM954--N!
- 使用 AES 对称加密算法对视频文件进行加密解密(C++ 及 Java 实现)
- 大话信号与系统 --- 奇文共欣赏
- signature=0e936ad5c99bd8d603e71fa74e787bee,JavaScript 的 BASE64 算法 实现 完美解决中文乱码...
- Docker容器-----Consul部署
- html中radio设置默认值
- 观点| 如何避免GitHub那样断网43秒瘫痪 24 个小时?
- 少壮不努力,ChatGPT来代替!
热门文章
- 运用BeautifulSoup抓取网页的链接
- jetspeed 安装及数据库配置
- franze kafka 游戏_The Franz Kafka Videogame
- 世界人口钟实时数据_用数字孪生重新定义智慧城市,美象VR推出MxDATA智慧城市CIM数据可视化平台...
- Java根据模板创建excel文件
- java什么叫实例化_在JAVA中实例化的确切含义是什么
- 图集打包算法_UGUI打包图集工具-插件Simple Sprite Packer详解
- 导出数据库API接口文档
- 制作灵动单片机MM32F3277 测试版
- 2020年春季学期信号与系统课程作业参考答案-第十五次作业