如何在HDL中制作位选择芯片?

问题描述 投票:0回答:2

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
2个回答
0
投票

与您描述相符的芯片称为解复用器。该课程的项目01中内置的DMux8Way几乎相同:

/**
 * 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位输出out [8]符合芯片的要求

如果您需要从更多基本部件中创建芯片,这是一个完全不同的故事,但是仍然应该给您一个很好的主意,即在设计中应该做什么和要寻找什么。当我将这个问题视为“作业帮助”时,无论它是实际的作业,我都不给您复制粘贴解决方案,但这应该可以帮助您保持正确的方向。如果您需要进一步的帮助,则始终可以用更具体的问题来编辑您的问题,或者如果主题与原始问题有很大不同,可以询问新的问题。


-1
投票

[您可以使用逻辑门来执行此操作,例如,111将是bit[0]bit[1],然后与bit[2]一起叠加

请不要窃任何作品,否则我将穆勒放在您身上。

© www.soinside.com 2019 - 2024. All rights reserved.