问题描述
我正在参加 nand2tetris coursera 课程。 我试图了解你们如何设计寻找 HDL 核心部分的潜在心理过程。 例如,让我们以 DMUX4way 为例。 实现零件的完整心理过程是什么?看到结果我就明白背后的逻辑,但我很难自己找出来 谢谢
* {a,b,c,d} = {in,0} if sel==00
* {0,in,0} if sel==01
* {0,0} if sel==10
* {0,in} if sel==11
*/
CHIP DMux4Way {
IN in,sel[2];
OUT a,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,a=c,b=d);
}
解决方法
我发现它有助于分解事物,在复杂的情况下,写下各种信号(包括中间信号)的真值表。有时这会导致“啊哈”时刻,您会看到可以用来简化事情的联系。
您可能还会发现绘制一个图表来映射通过电路的信号流。
最后,“先让它工作,然后让它变得漂亮”的格言适用。一旦你有一些工作,你可以查看设计并找到简化和优化。一个很好的例子是构建 XOR 电路。一旦有了直白的版本,再仔细看,就能发现巧妙的优化。
我想这只是您在掌握诀窍之前必须练习的事情之一。您可能会发现重新审视早期的项目很有用,着眼于使它们更清晰、您更容易理解。通常有几种方法可以构建所需的电路,但有些方法对您来说可能更容易理解。另外,我建议你养成评论你的设计的习惯;提醒您做某事时在想什么会很有帮助。