PREVIEW
标签

circuit-optimization

共 2 篇文章

数字逻辑门(AND、OR、NOT)与真值表、信号流,展示布尔代数原理。
boolean-algebra

布尔代数:数字电路设计的基石

TL;DR: 布尔代数是用 AND、OR 和 NOT 操作 TRUE/FALSE 值的形式系统。它的定律——恒等律、吸收律、分配律、互补律和德摩根定理——让你可以把一个布尔表达式变换成等价的更简形式,而这种简化在硅片上直接对应更少的门和更小的传输延迟。 19 世纪中叶,乔治·布尔(George Boole)将"思想的代数"形式化,如今它已是每一颗数字芯片的运行数学。无论是微处理器、存储单元还是图形流水线,最终都会归约到他所定义的 AND、OR、NOT 三个操作。 对于工程师或计算机科学家,掌握布尔定律绝非纸上谈兵。化简一个布尔表达式意味着删除门、消除连线、从传输延迟中抠出皮秒。如果你能把数学化简下来,你就能把硅片化简下来。 三个原语操作:AND、OR、NOT 无论数字逻辑多复杂,都建立在三个原语操作之上。理解它们就等于掌握数字设计的字母表。在 digisim.io 中,它们由分立元件表示,你可以把它们任意连接,搭出任意复杂的逻辑。 1. AND 操作 只有当所有输入都为 TRUE 时,输出才是 TRUE (1)。把它当成一种严格要求:在重型机械的安全系统里,可能要求"启动按钮"被按下且"安全防护"已合上,电机才能运转。在电路上,AND 门相当于串联连接——必须每个开关都闭合,电流才能流通。 - 布尔表达式: -...

5 min read
卡诺图与化简后的数字电路并排展示,演示逻辑化简过程。
karnaugh-maps

卡诺图:可视化的布尔化简

TL;DR: 卡诺图(K-map)把真值表排成一张格雷码编码的二维网格,相邻单元只差一个变量。把网格上相邻的 1 圈成 2 的幂次大小的矩形组,直接得到最小积之和(SOP)表达式——根本不需要做代数推演。卡诺图对最多 4 个变量的函数能可靠地最小化;对 5–6 变量,可使用 Quine–McCluskey 算法;再多就要靠 ESPRESSO 之类的算法化综合工具。 基于布尔定律的代数化简 当然有效,但它依赖于在合适的时机看出合适的因式分解。一旦错过一次机会,就可能得到次优结果。当表达式涉及四个或更多变量时,可能的变形数量会爆炸式增长。 卡诺图(K-map)通过把代数化简变成可视化的图形识别来解决这个问题。它由贝尔实验室物理学家 Maurice Karnaugh 于 1953 年提出,把真值表排成一张二维网格,相邻单元恰好只差一个变量。在网格上把相邻的 1 圈成组,就直接得到最小积之和表达式——不需要任何代数操作。 可视化的真值表:什么是 K-map? 本质上,卡诺图就是真值表的另一种伪装。真值表把输入与输出按线性、垂直方式列出;K-map 把它们重新排成一张二维网格。这并不只是为了好看。K-map 的精妙之处在于它对单元格的特定排列方式。 在标准真值表中,行按二进制递增(00、01、10、11)。在...