门电路打字机 · 用逻辑门打出任意字符串

4 根索引线 → 8 位字符 · 纯组合逻辑 · 自动逻辑综合
这一关在做什么:前面几关的字符是「用 D 触发器一位一位搬进去」的 —— 有记忆。 现在把记忆拿掉:只给组合逻辑门,输入一个 4 位索引(0~15,代表第几个字符), 输出一个 8 位字节。索引一变,输出立刻跟着变,中间不存任何东西 —— 这就是一台「门电路打字机」。
怎么玩:点上面的 a3 / a2 / a1 / a0 四个方块改变索引,看右侧 8 盏灯、十六进制和字符一起跳; 中间那张 8 × N 的 0/1 矩阵就是这台「打字机」的全部真值表。 点任一 b_k 行(或下面的表达式),下面会画出这一位的门级电路图: 索引位先过反相器变成 x2'、x0',每条乘积项一个 与门,最后一个 或门把它们加起来 —— 图上的门和资料里画的一模一样,数一数就是右边的门数统计。
反直觉一:组合逻辑没有记忆。门只会对「此刻的输入」立刻给出答案。想让它一个字一个字往外打, 必须在外面加一个计数器不断推动索引 —— 打字机的「节奏」来自时序,不来自门。
反直觉二:逻辑综合能省门。同样一张真值表,直接把每个 1 写成一项要一大把门; 用卡诺图 / Q-M 合并相邻项之后,项数、反相器和门数一起往下掉。页面上给出的「未最小化 → 最小化」两个数字就是差值。
反直觉三:FPGA 的本质就是这一页。FPGA 里每个逻辑单元是一个小查找表(LUT):16 bit 的 SRAM 存真值表, 加一个多路选择器。所谓「烧进去」就是往真值表里写 0/1 —— 你现在正在做的事,和 FPGA 综合器一模一样。