hdl - 从一开始就设计 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);
}
解决方案
我发现它有助于分解事物,在复杂的情况下,写下各种信号(包括中间信号)的真值表。有时这会导致“啊哈”时刻,您会看到可以用来简化事情的连接。
您可能还会发现绘制一张图来映射通过电路的信号流会很有帮助。
最后,“首先让它工作,然后让它变得漂亮”的格言适用。一旦你有一些工作,你可以查看设计并找到简化和优化。一个很好的例子是构建 XOR 电路。一旦你有了简单的版本,如果你仔细看,你会发现巧妙的优化。
我想这只是你必须练习的事情之一,直到你掌握它的诀窍。您可能会发现重新审视早期项目以使它们更清晰、更易于理解是很有用的。通常有几种方法可以构建所需的电路,但有些方法对您来说可能更容易理解。另外,我建议您养成评论您的设计的习惯;提醒您做某事时的想法会很有帮助。
推荐阅读
- python - Python 枚举 1 和 0
- automapper - 调用 AutoMapper 的 Persist().InsertOrUpdate() 时“没有可用的构造函数”
- python - 每次有人使用命令时如何计算?
- python - 使用python中的相对路径寻址到上层目录
- r - 未能在 R 中使用 ggmap 和 Google Geocoding API 进行地理编码;在公司防火墙后面
- r - 在R中如何转义变量中的单个',然后将其发送到sqlQuery
- c# - 如何根据组合框wpf中的用户输入显示数据
- error-handling - 使用规划器运行问题文件时出现“未声明的要求”错误
- ruby-on-rails - 自动为用户设置密码 - 无需设计
- php - 将缺货库存状态添加到 Woocommerce 可变产品下拉列表