fpga系列 HDL: 竞争和冒险 01

  • 卡诺图是一种逻辑化简工具,用来在布尔函数的最小项和形式中,找到冗余项并实现逻辑化简。也可用于HDL中竞争和冒险的判断。

最小项

  • 任何一个逻辑函数都能化简为最小项的和的形式
  • 对于 n 个变量的布尔表达式,每个变量都必须以原变量(如A)或非变量(即否定的形式A’)出现,且在每个最小项中只能出现一次。每个最小项代表一个特定的输入组合。
  • 例:假设有两个变量 A A A B B B,则最小项可以表示为:

A ′ B ′ : 对应  ( A , B ) = ( 0 , 0 ) A'B' : \text{对应 } (A, B) = (0, 0) AB:对应 (A,B)=(0,0)

A ′ B : 对应  ( A , B ) = ( 0 , 1 ) A'B : \text{对应 } (A, B) = (0, 1) AB:对应 (A,B)=(0,1)

A B ′ : 对应  ( A , B ) = ( 1 , 0 ) AB' : \text{对应 } (A, B) = (1, 0) AB:对应 (A,B)=(1,0)

A B : 对应  ( A , B ) = ( 1 , 1 ) AB : \text{对应 } (A, B) = (1, 1) AB:对应 (A,B)=(1,1)

格雷码

格雷码(Gray Code)是一种特殊的二进制编码,每相邻两个数之间只有一个位发生变化。格雷码的这种特性在某些应用中可以减少误差和干扰,因此被广泛用于数字电路设计、编码器、存储器地址生成、错误校验等领域。

  • 格雷码可以循环排列,即从最大值到最小值过渡时也只有一个位变化。

  • n 位的格雷码可以通过以下递归方式生成:

    • 0 位格雷码: G ( 0 ) = [ 0 ] \text{G}(0) = [0] G(0)=[0]
    • 1 位格雷码: G ( 1 ) = [ 0 , 1 ] \text{G}(1) = [0, 1] G(1)=[0,1]
    • n 位格雷码:将 n-1 位格雷码的所有数按顺序排列,然后将 n-1 位格雷码的所有数按逆序排列。然后在第一个排列前加 0,在第二个排列前加 1。
  • 2 位格雷码生成过程:

    • 从 1 位格雷码 [ 0 , 1 ] [0, 1] [0,1] 开始。
    • 正序排列:[0, 1],在前面加 0 得到 [ 00 , 01 ] [00, 01] [00,01]
    • 逆序排列:[1, 0],在前面加 1 得到 [ 11 , 10 ] [11, 10] [11,10]
    • 合并得出 2 位格雷码为 [ 00 , 01 , 11 , 10 ] [00, 01, 11, 10] [00,01,11,10]
  • 3 位格雷码生成类似:

    • 正序排列:[00, 01, 11, 10],前面加 0 得到 [ 000 , 001 , 011 , 010 ] [000, 001, 011, 010] [000,001,011,010]
    • 逆序排列:[10, 11, 01, 00],前面加 1 得到 [ 110 , 111 , 101 , 100 ] [110, 111, 101, 100] [110,111,101,100]
    • 合并得到 3 位格雷码为 [ 000 , 001 , 011 , 010 , 110 , 111 , 101 , 100 ] [000, 001, 011, 010, 110, 111, 101, 100] [000,001,011,010,110,111,101,100]
  • 二进制到格雷码的转换:一个给定的二进制数可以通过以下公式转换为格雷码:

    • 对于二进制数 B = B n − 1 B n − 2 … B 1 B 0 B = B_{n-1} B_{n-2} \dots B_1 B_0 B=Bn1Bn2B1B0,相应的格雷码 G = G n − 1 G n − 2 … G 1 G 0 G = G_{n-1} G_{n-2} \dots G_1 G_0 G=Gn1Gn2G1G0 可以表示为:
    • G n − 1 = B n − 1 G_{n-1} = B_{n-1} Gn1=Bn1
    • G i = B i ⊕ B i + 1 G_i = B_i \oplus B_{i+1} Gi=BiBi+1(对相邻位进行异或操作)

卡诺图与最小项的表示

  • 卡诺图是一种将布尔函数的最小项排列在网格上的方法,可以更直观地找到可以合并的最小项。卡诺图中的每个方格代表一个最小项,而方格的排列顺序遵循格雷码,相邻的方格之间仅有一个变量变化。

在卡诺图中,相邻的1最小项可以合并为一个更简化的项。例如:

  • 两个相邻的最小项可以合并为一个二变量的项。
  • 四个相邻的最小项可以合并为一个一变量的项。
  • 八个相邻的最小项可以简化为一个常数项。

卡诺图在最小项和表达式中的应用

  • 通过卡诺图,可以将最小项的和形式转换成更简化的逻辑表达式,步骤如下:
  1. 标记最小项:在卡诺图中标记所有输出为1的最小项。
  2. 寻找合并区域:将相邻的1组成成组的区域,尽可能合并更多的相邻项(如2的幂次个:2、4、8等)。
  3. 写出化简表达式:合并后的区域直接写出更简单的逻辑表达式。例如,四个相邻的最小项可以写成一个没有变化变量的项。
  4. 得到简化的SOP表达式:最终通过卡诺图的合并过程得到逻辑函数的最简化 SOP 表达式。

举例说明

假设一个布尔函数 F ( A , B , C ) F(A, B, C) F(A,B,C) 的最小项和为:

F ( A , B , C ) = m 1 + m 3 + m 5 + m 7 F(A, B, C) = m_1 + m_3 + m_5 + m_7 F(A,B,C)=m1+m3+m5+m7

  • 在三变量的卡诺图中标记出 m 1 , m 3 , m 5 , m 7 m_1, m_3, m_5, m_7 m1,m3,m5,m7 所对应的格子,并进行合并,得出最简化的表达式

在这里插入图片描述

  • F ( A , B , C ) = m 1 + m 3 + m 5 + m 7 F(A, B, C) = m_1 + m_3 + m_5 + m_7 F(A,B,C)=m1+m3+m5+m7

  • F ( A , B , C ) F(A, B, C) F(A,B,C)中任意相邻的两项可以消掉一个变量,比如 m 1 m_1 m1 m 3 m_3 m3相邻, m 1 + m 3 = ( A ′ B ′ C ) + ( A ′ B C ) = A ′ ( B ′ + B ) C = A ′ C m_1 + m_3=(A'B'C)+(A'BC)=A'(B'+B)C=A'C m1+m3=(ABC)+(ABC)=A(B+B)C=AC

  • 同样 m 5 + m 7 = ( A B ′ C ) + ( A B C ) = A ′ ( B ′ + B ) C = A C m_5 + m_7=(AB'C)+(ABC)=A'(B'+B)C=AC m5+m7=(ABC)+(ABC)=A(B+B)C=AC

  • F ( A , B , C ) = C F(A, B, C) = C F(A,B,C)=C

  • 使用卡诺图时,圈出这四个最小项,可发现,这四个最小项可以被一个2x2的方块覆盖。所以 m 1 + m 3 + m 5 + m 7 m_1+m_3+m_5+m_7 m1+m3+m5+m7 可以简化为 C C C(因为四个相邻的最小项可以合并为一个一变量的项,且所有这些项都有 C C C的出现)

CG

  • 图片地址:添加链接描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/883176.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Zabbix企业级分布式监控环境部署

“运筹帷幄之中,决胜千里之外”。在IT运维中,监控占据着重要的地位,按比例来算,说占30%一点也不为过。对IT运维工程师来说,构建一个真正可用的监控告警系统是一项艰巨的任务。在监控系统的开源软件中,可供选…

基于模型划分的云边协同推理算法

摘要 在网络状态和任务需求的动态变化下,为减少模型推理时延和计算成本,在软件定义网络( Software Defined Network,SDN) 中提出了一种基于模型划分的云边协同推理算法。通过构建复杂度预测器分配任务执行环境,采用深度Q网络(Dee…

国产标准数字隔离器的未来---克里雅半导体

标准数字隔离器是电信号隔离技术的重要组成部分,近年来取得了重大进展。随着工业自动化、汽车电子和电信等行业对更高性能的需求不断增长,国内数字隔离器制造商正在稳步赶上全球标准。本文讨论了数字隔离器技术的新兴趋势、材料创新的影响,以…

网站建设中需要注意哪些安全问题?----雷池社区版

服务器与应用安全指南 1. 服务器安全 1.1 操作系统安全 及时更新补丁:确保操作系统始终安装最新补丁,以防范系统漏洞。例如,Windows Server 定期推送安全更新,修复如远程代码执行等潜在威胁。优化系统服务配置:关闭不…

一家医药企业终止,收入依赖阿里健康,学术推广费快赶上净利润

知原药业终止原因如下:知原药业报告期三年的推广费用超3亿元,快赶上这三年累计3.68亿元的净利润了,交易所质疑其学术推广费单价合理性、是否存在销售返利。并且,公司研发费用率低于行业平均水平,在电商平台营销主要依赖…

pytorh学习笔记——cifar10(三)模仿VGGNet创建卷积网络

VGG16是由牛津大学视觉几何组(Visual Geometry Group)提出的一种深度卷积神经网络模型。 VGGNet 探索了卷积神经网络的深度与其性能之间的关系,成功地构筑了 16~19 层深的卷积神经网络,同时拓展性又很强,迁移到其它图片…

【LeetCode】11.盛最多水的容器

思路: 利用双指针法进行移动,一个在头一个在尾,此时宽度最宽,当宽度缩小时,高度发生变化,从而可以找到最大值。 代码: int maxArea(int* height, int heightSize) {int* left height;int* …

仿真学习 | Fluent版本迭代一览及选择指南

在计算机辅助工程(CAE)领域,软件版本的更新迭代,影响了工程师的工作效率、工作习惯和仿真精度,“如何选择软件版本”也永远是摆在每个初学者面前的第一个难题。 计算流体动力学(CFD)领域的领军…

嵌入式工程师必备——NTC曲线拟合

最近搞了一下NTC热敏电阻,打算和大家分享一下; 首先看NTC手册,25℃时是5K,温度系数B是3470,有一些NTC会直接给出公式,那种直接按照手册计算就好; 1、下面是温度和阻值对照表,这个表…

深度学习:YOLO目标检测和YOLO-V1算法损失函数的计算

简介 YOLO(You Only Look Once)是一种基于深度学习的目标检测算法,它的核心思想是将目标检测问题转化为一个回归问题,通过一个神经网络直接预测目标的类别和位置。 YOLO算法将输入图像分成SxS个网格,每个网格负责预测…

Golang | Leetcode Golang题解之第498题对角线遍历

题目&#xff1a; 题解&#xff1a; func findDiagonalOrder(mat [][]int) []int {m, n : len(mat), len(mat[0])ans : make([]int, 0, m*n)for i : 0; i < mn-1; i {if i%2 1 {x : max(i-n1, 0)y : min(i, n-1)for x < m && y > 0 {ans append(ans, mat[x…

uni-app微信小程序如何使用高德地图。通过经纬度获取所在城市

高德地图官方是这样介绍的使用方法可以参考&#xff1a;入门指南-微信小程序插件 | 高德地图API 我再介绍一下我得具体应用。 1&#xff0c;首先要在申请高德地图开放平台得账号。然后在这个账号中申请一个应用。类型选择微信小程序。 我的应用 | 高德控制台 获取Key-创建工…

怎样把学生的成绩单独告知家长?

期中考试季的到来让校园里的气氛似乎也变得紧张起来。家长们开始频繁地联系老师&#xff0c;希望了解孩子的表现&#xff1b;孩子们则在考试后&#xff0c;绞尽脑汁地想出各种理由&#xff0c;以期在成绩不理想时能减轻家长的失望。老师们更是忙得不可开交&#xff0c;不仅要批…

C++(标准输入输出流、命名空间、string字符串、引用)

C特点及优势 &#xff08;1&#xff09;实现了面向对象&#xff0c;在高级语言中&#xff0c;处理运行速度是最快&#xff1b; &#xff08;2&#xff09;非常灵活&#xff0c;功能非常强大&#xff0c;相对于C的指针优势&#xff0c;C的优势为性能和类层次结构&#x…

【天气识别系统】Python+卷积神经网络算法+人工智能+深度学习+TensorFlow+算法模型训练+Django网页界面

一、介绍 天气识别系统&#xff0c;以Python作为主要编程语言&#xff0c;通过收集了4种常见的天气图像数据集&#xff08;多云、雨天、晴天、日出&#xff09;&#xff0c;然后基于TensorFlow搭建卷积神经网络算法模型&#xff0c;通过多轮迭代训练&#xff0c;最后得到一个识…

Go 语言基础教程:6.条件判断

在这篇教程中&#xff0c;我们将通过一个简单的 Go 语言程序来学习条件判断结构的使用。以下是我们要分析的代码&#xff1a; package mainimport "fmt"func main() {if 7%2 0 {fmt.Println("7 is even")} else {fmt.Println("7 is odd")}if 8…

社交媒体与客户服务:新时代的沟通桥梁

在数字化时代&#xff0c;社交媒体已成为人们日常生活中不可或缺的一部分&#xff0c;它不仅改变了人们的沟通方式&#xff0c;也深刻影响着企业的客户服务模式。从传统的电话、邮件到如今的社交媒体平台&#xff0c;客户服务的渠道正在经历一场前所未有的变革。社交媒体以其即…

聚类分析算法——K-means聚类 详解

K-means 聚类是一种常用的基于距离的聚类算法&#xff0c;旨在将数据集划分为 个簇。算法的目标是最小化簇内的点到簇中心的距离总和。下面&#xff0c;我们将从 K-means 的底层原理、算法步骤、数学基础、距离度量方法、参数选择、优缺点 和 源代码实现 等角度进行详细解析。…

Easy Excel合并单元格情况简单导入导出

需求 实现报表数据的导入导出&#xff0c;表格中部分数据是系统生成&#xff0c;部分数据是甲方填写&#xff0c;录入系统。 批号唯一 Maven <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.…

《IDE 巧用法宝:使用技巧全解析与优质插件推荐》

在日常撸代码的时候&#xff0c;相信兄弟们在IDEA 中用到不少插件&#xff0c;利用插件&#xff0c;不仅可以提高工具效率&#xff0c;撸起代码来&#xff0c;也格外的娃哈哈…… 一、IntelliJ IDEA 作为一个资深 Java 程序员&#xff0c;除了 IDEA 中默认的插件&#xff0c;我…