【问题标题】:How to make a bit select chip in HDL?如何在HDL中制作位选择芯片?
【发布时间】:2019-11-26 14:25:09
【问题描述】:

BitSelect芯片有:3位输入和8位输出。

CHIP BitSelect
{
    IN bit[3];
    OUT out[8];

    PARTS:
    // what parts to use?

}

如何实现下面真值表描述的行为?

in          out
000.      00000001
001.      00000010
010.      00000100
011.      00001000
100.      00010000
101.      00100000
110.      01000000
111.      10000000

【问题讨论】:

    标签: hdl nand2tetris


    【解决方案1】:

    符合你描述的芯片叫做多路解复用器
    DMux8Way在课程01中内置的几乎是一样的:

    /**
     * 8-way demultiplexor:
     * {a, b, c, d, e, f, g, h} = {in, 0, 0, 0, 0, 0, 0, 0} if sel == 000
     *                            {0, in, 0, 0, 0, 0, 0, 0} if sel == 001
     *                            etc.
     *                            {0, 0, 0, 0, 0, 0, 0, in} if sel == 111
     */
    

    它有 2 个输入:

    IN in, sel[3];
    

    和 8 个输出:

     OUT a, b, c, d, e, f, g, h;
    

    你现在必须稍微调整一下,让它成为你唯一需要的部分:

    1) inDMux8Way 必须始终为 1(或在 HDL 中为 true),因为您需要切换 1 的位置。

    2) 而不是 8 个单输出 a..h,您必须将它们连接起来以生成一个 8 位输出 [8] 以满足您的芯片要求

    如果您需要使用更基本的部件来创建芯片,那就另当别论了,但仍然应该让您非常清楚地知道要做什么以及在设计中要寻找什么。
    当我将此问题视为“作业帮助”时,无论它是否是实际作业,我都不会为您提供复制粘贴解决方案,但这应该可以帮助您继续朝着正确的方向前进。
    如果您需要进一步的帮助,您可以随时编辑您的问题并添加更具体的问题,或者如果主题与原始问题有很大不同,请提出新问题。

    【讨论】:

      【解决方案2】:

      您可以使用逻辑门来做到这一点,例如,111 将是 bit[0]bit[1],然后与 bit[2] 进行与运算

      请不要抄袭任何作品,否则我会把穆勒放在你身上。

      【讨论】:

        猜你喜欢
        • 2022-12-13
        • 2019-09-11
        • 1970-01-01
        • 2021-01-25
        • 1970-01-01
        • 1970-01-01
        • 2019-08-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多