From Nand To Tetris 从与非门到俄罗斯方块

5、P1 W1 U1.4 硬件描述语言HDL

2019-07-25  本文已影响0人  shazizm

如果本次课程对应的 Coursera 的视频打不开,可以点击下面链接
P1W1U1.4 - Hardware Description Language

经过了上几节的课程,这节我们终于可以开始实践了,可惜在实践前。我们又要先介绍一下 我们需要用到的工具和语言。

这节先说语言。我们后面几周的工作都离不开的一种硬件描述语言,如下图蓝色区域的部分。

我们去实现一个复杂的逻辑门时,起码会提供 下图上部分 的一种 逻辑门的符号,或者语言描述等,总之都能归纳成真值表。

然后利用真值表 经过\color{red}{三步转换}。最终我们就可以得到对应的HDL(下图蓝色区域)来模拟实现对应的逻辑门。

蓝色区域 第一行是注释。 CHIP 后面定义我们要设计的逻辑门名称(比如 Xor),IN 后面定义了两个 输入 a、b。OUT后面定义了一个输出 out。最后红圈里PARTS:下面 是写 布尔函数的 代码实现的地方

\color{red}{三步转换}
1.真值表(下图右上) ==> 布尔表达式
(转换参考 Unit1.2 里 教的方法,简述:真值表里挑出out为1的行,挑出的每行里 ab用and连,遇到0加not,最后挑出的行用or连)

2.布尔表达式(下图左下) ==> 逻辑门示意图
(这个只能靠经验自己观察琢磨了,多看例子了)

3.逻辑门示意图 ==> HDL(下图右下)
(后面讲解)


工作流:真值表 ==> 布尔表达式 ==> 逻辑门图示

逻辑门的图示 转 HDL:
首先在逻辑门上 标示出 a、b、out。

然后为了避免每个逻辑门的 标识重复,需要再给虚框内每个需要的逻辑门的输入或输出端,确定好自定义的名字(比如上方的Not的out 就可以改为 nota。),我们要保留虚框外面的 a 、b、out不变,因为它们是提供给外部其它逻辑门交互的接口。

对应下面蓝色区域,HDL的语言可以分两大块,一块(interface)是定义要编写的逻辑门的名称和外部接口(a、b、out),另一块(implementation)是要写的实现代码。

那么实现代码,就是从图示的左往右依次写完每个逻辑门的输入和输出(理论上,你可以不按顺序写,但是从左往右写可读性更好)。


逻辑门图示 ==> HDL,另外每种逻辑门都可能有多种实现方式

这里大概介绍了一下本课程的HDL 和 默认编写规范,


写好HDL之后,是要放在老师提供的一个对应的模拟器里来测试验证,下节讲

课程里用到的硬件描述语言,是老师围绕课程以简单、方便、高效理解、为原则设计的。

另外一些专业领域会用到的硬件描述语言,比如我听说过的有 VHDL 和 Verilog。关于HDL的文档可以参考下图链接


然后这个链接我打不开。。。www.nand2tetris.org/HDL Survival Guide

这节课我们学会了写 逻辑门 的 HDL语言了。

那么下节课就是讲如何在模拟器的使用,如何加载文件、调试、测试我们的设计了。

上一篇下一篇

猜你喜欢

热点阅读