首页 > 解决方案 > 从一开始就设计 HDL 部件的逻辑:DM

问题描述

我正在学习 nand2tetris coursera 课程。我试图了解你们如何设计寻找 HDL 核心部件的潜在心理过程。例如,让我们以 DMUX4way 为例。实现零件的完整心理过程是什么?一旦我看到结果,我就明白背后的逻辑,但我自己很难找到谢谢

    * {a,b,c,d} = {in,0,0,0} if sel==00
     *             {0,in,0,0} if sel==01
     *             {0,0,in,0} if sel==10
     *             {0,0,0,in} if sel==11
     */
    
    CHIP DMux4Way {
        IN in, sel[2];
        OUT a, b, c, d;
    
        PARTS:
        DMux(in=in,sel=sel[1],a=ao,b=bo);
        DMux(in=ao,sel=sel[0],a=a,b=b);
        DMux(in=bo,sel=sel[0],a=c,b=d);
}

标签: hdlnand2tetris

解决方案


我发现它有助于分解事物,在复杂的情况下,写下各种信号(包括中间信号)的真值表。有时这会导致“啊哈”时刻,您会看到可以用来简化事情的连接。

您可能还会发现绘制一张图来映射通过电路的信号流会很有帮助。

最后,“首先让它工作,然后让它变得漂亮”的格言适用。一旦你有一些工作,你可以查看设计并找到简化和优化。一个很好的例子是构建 XOR 电路。一旦你有了简单的版本,如果你仔细看,你会发现巧妙的优化。

我想这只是你必须练习的事情之一,直到你掌握它的诀窍。可能会发现重新审视早期项目以使它们更清晰、更易于理解是很有用的。通常有几种方法可以构建所需的电路,但有些方法对您来说可能更容易理解。另外,我建议您养成评论您的设计的习惯;提醒您做某事时的想法会很有帮助。


推荐阅读