电路设计的一些概念

news/2025/1/8 8:23:20/

锁存器的产生

论述1
在这里插入图片描述

(转)时序电路,生成触发器,触发器是有使能端的,使能端无效时数据不变,这是触发器的特性。
组合逻辑,由于数据要保持不变,只能通过锁存器来保存。
第一个代码,由于是时序逻辑,生成的触发器在enable无效时就可以保存数据。跟锁存器无关。
第二个代码就是在enable为低时,数据不变,因此要生成锁存器。

论述2
(转)所谓生成latch其实是针对使用always语句描述一个组合逻辑而言。
因为如果描述时序逻辑总是使用时钟或者时钟+复位作为敏感列表条件,所生成的电路总是组合逻辑+DFF;
如果是描述组合逻辑,敏感列表中必然没有时钟复位,而是组合逻辑的输入信号。在FPGA设计,避免使用latch,不利于时序分析和仿真。
楼上有提到latch比DFF省资源, 这个在FPGA设计中其实还好, 因为在FPGA中DFF就是一个专用的硬件资源,并且数量也比较多。

使用always描述组合逻辑时,好的习惯是使用always @(*)作为敏感列表, 并且需要检查每个分支都有明确的赋值,从而避免生成latch。

论述3
从阻塞和非阻塞的角度总结一下always块。
1.要生成DFF,是时序逻辑所以用<=,要用时钟所以用always@(posedge clk),。
2.要生成latch,是时序逻辑所以用<=,本质是个不完整的if分支,不用时钟所以用always@(*)。
3.要生成组合逻辑,是组合逻辑,都用=,自然不用时钟所以用always@(*)。

关于alway块,有两点是要小心的:
(一)写组合逻辑时,由于分支不完整带来的latch。
(二)写时序逻辑时错用=导致逻辑错误。

论述4
生成latch的代码

module top_module (input d, input ena,output q);assign q=(ena)?d:q;
endmodulemodule top_module (input d, input ena,output reg q);always @(*)beginq <= (ena) ? d : q;end  
endmodule不推荐
module top_module (input d, input ena,output reg q);always @(*)beginq = (ena) ? d : q;end  
endmodule//上述3种描述⽅式⽣成最终电路是相同的。or
always@(*) beginif(E) beginQ = Dend 
end

防止综合不必要的锁存器
锁存器并不是一种所谓的“不好的东西”,据说在 ASIC 设计中会使用锁存器减少硅片面积,提高流水线处理中的性能(这段来自书本)。糟糕的是综合器推断出了不必要的,和原本设计目的相冲突的锁存器。
方法一:使用同步设计
方法二:保持良好的编码风格,使用完整的 if 语句覆盖所有的 case

always @(latch ena) begin
if(latch_ena)latch_out = latch data;
elselatch_out = 1'b0;
end
综合器将代码综合为了一个选择器

总结
时序电路无论如何不会产生锁存器,组合电路只要条件不完备就会产生锁存器。

FPGA ug974

FDCE

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

FDPE

在这里插入图片描述
在这里插入图片描述

FDRE

在这里插入图片描述

在这里插入图片描述

FDSE

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

LDCE

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

LDPE

在这里插入图片描述
在这里插入图片描述

总结

在这里插入图片描述
关于FPGA中锁存器的生成 有FPGA电路图


http://www.ppmy.cn/news/34782.html

相关文章

第二十一天 数据库开发-MySQL

目录 数据库开发-MySQL 前言 1. MySQL概述 1.1 安装 1.2 数据模型 1.3 SQL介绍 1.4 项目开发流程 2. 数据库设计-DDL 2.1 数据库操作 2.2 图形化工具 2.3 表操作 3. 数据库操作-DML 3.1 增加(insert) 3.2 修改(update) 3.3 删除(delete) 数据库开发-MySQL 前言 …

C语言之按位取反~(七十一)

计算机存储数据基本知识计算机中二进制数包括&#xff08;正数和负数&#xff09;是以补码形式存储。符号位&#xff1a;补码的最左侧首位是符号位&#xff0c;0表示正数&#xff0c;1表示负数。二进制有三种形式&#xff1a;原码、反码、补码。正数的补码和反码&#xff1a;是…

四级数据库工程师 刷真题错题整理(三)数据库原理

1.数据模型是对现实世界进行抽象的工具&#xff0c;它按算机系统的观点模于提数据库系统中信息表示和操作手段的形式框架&#xff0c;主要用于 DBMS 的实现&#xff0c;是数据库系统的核心和基础。其中&#xff0c;数据操作是对数据间的动态行为。 2.数据库的型是稳定的&#…

并查集、并查集+离线、并查集+倒叙回答

文章目录并查集[200. 岛屿数量](https://leetcode.cn/problems/number-of-islands/)[721. 账户合并](https://leetcode.cn/problems/accounts-merge/)并查集 离线计算[1697. 检查边长度限制的路径是否存在](https://leetcode.cn/problems/checking-existence-of-edge-length-l…

SpringCloud学习笔记(一)认识微服务

一、微服务技术栈 二、单体架构和分布式架构的区别 1、单体架构&#xff1a; 将业务的所有功能集中在一个项目中开发&#xff0c;打成一个包进行部署 优点&#xff1a;架构简单&#xff0c;部署成本低缺点&#xff1a;耦合度高 2、分布式架构&#xff1a; 根据业务功能对系统…

【周末闲谈】文心一言,模仿还是超越?

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️周末闲谈】 周末闲谈 ✨第一周 二进制VS三进制 文章目录周末闲谈前言一、背景环境二、文心一言&#xff1f;(_)?三、文心一言的优势&#xff1f;&#x1f617;&#x1f617;&#x1f617;四、文心一…

Web站点性能优化经验分享

之前负责IT团队项目管理工作&#xff0c;手里有几套业务站点。其中一个站点被业务吐槽比较严重&#xff0c;主要涉及功能模块缺失、站点性能差会出现卡死的现象&#xff0c;同时也被旁边的项目团队埋怨调用我们的接口会比较慢&#xff0c;甚至超时的情况。 鉴于业务压力&#x…

E - 积木画(状态压缩DP)

E - 积木画&#xff08;状态压缩DP&#xff09; 1、问题 E - 积木画 2、分析 这道题很明显是一道DP题&#xff0c;而且是一个简化版的状态压缩DP。 &#xff08;1&#xff09;状态表示 f[i][j]f[i][j]f[i][j]表示前面i−1i-1i−1已经摆好&#xff0c;并且第iii列的状态是j…