锁存器(Latch)是数字逻辑电路中很重要的一种基本电路,常见的锁存器包括三个端口:数据输入口、数据输出口、使能端。当使能端为高电平时,输入口的数据直接送到输出口,此时输入输出口可以看成是直接连通的;当使能端为低电平时,输出口的数据保持之前的数据不变,无论输入口的数据怎么变化,输出都保持不变,就是把原来的状态锁存下来了(所以才叫锁存器)。锁存器与触发器的区别在于:**锁存器是电平触发,而触发器是边沿触发。**锁存器在不锁存数据时,输出随输入变化;但一旦数据锁存时,输入对输出不产生任何影响。数字电路设计中,不规范的描述语言,往往会产生意想不到的锁存器,导致综合出的数字电路出现逻辑错误。在数字电路中,产生意外的锁存器的情况一般有以下两种:是不是在所有情况下,只要if后边没有else就会产生锁存器呢?(1)缺少else时,先看时序电路代码和RTL图:(1)缺少else时,时序电路的RTL图生成的是一个FDRE,即D型触发器,没有生成锁存器。(2)缺少else时,组合逻辑电路的RTL图中生成了一个LDCE,即带异步复位的锁存器 。(2) if…else…完整时,先看时序电路代码和RTL图:(1)if…else,结构完整时,时序电路的RTL图生成的还是一个FDRE,即D型触发器,与没有else时结果一样。(2)if…else,结构完整时,组合逻辑电路的RTL图中生成了一个LUT2,即查找表,不再生成锁存器了 。在时序电路中,if…else…结构完整与否对是否生成锁存器没有关系在组合逻辑电路中,if…else…结构完整与否,直接影响组合逻辑电路是否生成锁存器。在组合逻辑电路中,if…else…结构不完整时会导致电路生成不必要的锁存器,可能会导致综合出的组合逻辑电路的逻辑是错误的。2、case结构中的分支没有包含所有情况且没有default语句、此种情况经测试,与if…else…结构是否完整的结果是一样的。此处就省略去一万个字了。因此,在设计组合逻辑电路时,要注意将 if…else… 结构中的else写完整,case结构中一定要加上default语句,这样可以减少综合出锁存器的可能性。
欢迎关注至芯科技
至芯官网:www.zxopen.com
至芯科技技术论坛:www.fpgaw.com
至芯科技淘宝网址:
https://zxopen.taobao.com
至芯科技FPGA初级课程(B站):
https://space.bilibili.com/521850676
至芯科技FPGA在线课程(腾讯课堂):
https://zxopenbj.ke.qq.com/
至芯科技-FPGA 交流群(QQ):282124839
更多资料下载欢迎注册http://www.fpgaw.com
欢迎加入至芯科技FPGA微信学习交流群,这里有一群优秀的FPGA工程师、学生、老师、这里FPGA技术交流学习氛围浓厚、相互分享、相互帮助、叫上小伙伴一起加入吧!
原文标题:关于FPGA中锁存器的生成:if语句和case语句的完整性影响
文章出处:【微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
原文标题:关于FPGA中锁存器的生成:if语句和case语句的完整性影响
文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。
相关推荐
Assign语句和Always语句是在硬件描述语言(HDL)中常用的两种语句,用于对数字电路建模和设计。Assign语句用于连续赋值,而Always
发表于 02-22 16:24
•491次阅读
单片机中的if语句是一种条件语句,用于根据不同的条件执行不同的代码块。在程序执行过程中,条件语句用来决定是否执行特定的代码段。在单片机编程中,if语句是最常见和最基础的一种条件
发表于 01-05 14:04
•504次阅读
单片机中的for语句是一种常见的循环控制结构,用于重复执行一段代码块,可以简化程序的编写和减少代码量。本文将详细介绍单片机中for语句的运用。 一、for语句的基本结构和功能 for语句
发表于 01-05 14:02
•619次阅读
Oracle数据库是一种常用的关系型数据库管理系统,具有强大的SQL查询功能。Oracle执行SQL查询语句的步骤包括编写SQL语句、解析SQL语句、生成执行计划、执行SQL
发表于 12-06 10:49
•416次阅读
: // 当expression的值与value2的值匹配时执行的代码块 break ;... default : // 当expression的值与所有case中的值都不匹配时执行的代码块 } 以下是关于switch语句中
发表于 11-30 16:05
•334次阅读
在Java中,switch case语句是一种用于多分支选择的控制流语句。它允许根据某个表达式的值来执行不同的代码块。下面是关于switch cas
发表于 11-30 14:40
•355次阅读
是的,"case" 后面可以跟多个语句。在编程语言中,"case" 通常被用于 switch 语句中,用于检查一个变量或表达式是否匹配某个特定的值。当匹配成功时,可以执行一个或多个
发表于 11-30 14:19
•2521次阅读
if语句 对于if语句,若条件判定为真,那么后面的语句块就会被执行。若条件判定为假,语句块就会被跳过,不会执行。 1 #if语句 2 age
发表于 09-12 16:45
•361次阅读
条件判断 语句块 什么是语句块呢? 语句块是在条件为真(条件语句)时执行或者执行多次(循环语句)的一组语
发表于 09-12 16:41
•631次阅读
用case语句实现8段数码管对应数字显示的控制,4bit的dig信号表示应显示的数字(0~9),8bit的seg信号表示数码管8段led的控制,且数码管为共阳数码管,[7:0]seg从高位到低位分别表示DP、A、B、C、D、E、F、G
发表于 08-28 11:02
在C语言中,有三种条件判断结构:if语句、if-else语句和switch语句。
发表于 08-18 16:36
•1017次阅读
条件语句和循环语句是计算机编程中常用的两种控制结构
发表于 07-21 16:48
•6519次阅读
CASE语句用于根据不同的条件执行不同的操作。以下是使用CASE语句的示例: 示例1:根据输入的值执行不同的操作 在示例1中,根据Input的值,会执行相应的操作。如果Input的值为
发表于 06-19 09:57
•1010次阅读
非常复杂,不具备可重用性。
·在FPGA/CPLD芯片中,基本的单元是由查找表和触发器组成的,若生成锁存
发表于 06-02 14:20
。这些语句统称为顺序语句。case 语句和 if 语句都是 verilog 中顺序语句的示例。在
发表于 05-11 15:37
•3140次阅读
评论