当前位置: 首页 > news >正文

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.mrgr.cn/news/58588.html

相关文章:

  • go 内存分配管理
  • 如何接受Date范围的数据
  • FreeSSl 申请免费证书,ACME实现自动化续期(https证书自动续期)
  • 【AIGC】ChatGPT提示词Prompt精确控制指南:Scott Guthrie的建议详解与普通用户实践解析
  • 谷歌开发者账号,为什么新号老是因为高风险被封?
  • tarjan算法笔记
  • 计算机网络:网络层 —— IPv4 协议的表示方法及其编址方法
  • python 线程间通信用什么手段
  • 微软投资比特币:将总资产1%投资于BTC?股东投票决定最终结果!
  • 洛谷 P1060 [NOIP2006 普及组] 开心的金明
  • C++ 移动语义
  • Vue学习记录之二十 postcss自定义插件及Unocss的使用
  • 遇到这3种接口测试问题,其实,你可以这么办~
  • 混个1024勋章
  • 2023年12月中国电子学会青少年软件编程(图形化)等级考试试卷(二级)答案 + 解析
  • CMU生成式人工智能大模型:从入门到放弃(九)
  • CMU生成式人工智能大模型:从入门到放弃(八)
  • 电机的旋转原理和发电原理!
  • 永恒之蓝漏洞利用复现
  • Oracle故障诊断(一线DBA必备技能)之ADRCI(一)
  • 大数据新视界 -- 大数据大厂之大数据与虚拟现实的深度融合之旅
  • Centos如何卸载docker
  • 论文学习 | 《电动汽车锂离子电池健康状态估计及寿命预测方法研究》
  • 面向对象进阶(下)(JAVA笔记第二十二期)
  • 海外著名新闻门户媒体软文发稿之华盛顿独立报-大舍传媒
  • Ubuntu 安装php7.3 nginx mysql