Autosave: 2022-12-29 13:00:07
This commit is contained in:
parent
e68240a776
commit
b4fb88aed7
1 changed files with 31 additions and 1 deletions
|
@ -15,8 +15,38 @@ There are many HDLs but the most popular are VHDL ("very high speed integrated-c
|
||||||
|
|
||||||
## Usage in _NAND to Tetris_
|
## Usage in _NAND to Tetris_
|
||||||
|
|
||||||
We won't use an actual HDL language, instead we will use a simplified toy language called HDL that is simple enough that when it is used with a simulator, we can learn the main facets of chip design.
|
We won't use an actual HDL language, instead we will use a simplified toy language called HDL that is simple enough that when it is used with a simulator, we can learn the main facets of chip design. Its syntax is very similar to VHDL.
|
||||||
|
|
||||||
## Demonstration
|
## Demonstration
|
||||||
|
|
||||||
We will create an HDL program for an XOR gate that is implemented through the following arrangement of NOT, AND, and OR gates:
|
We will create an HDL program for an XOR gate that is implemented through the following arrangement of NOT, AND, and OR gates:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Here is our HDL file:
|
||||||
|
|
||||||
|
```vhdl
|
||||||
|
/* Xor gate
|
||||||
|
If a!=b out=1 else out=0
|
||||||
|
*/
|
||||||
|
CHIP Xor {
|
||||||
|
IN a, b;
|
||||||
|
OUT out;
|
||||||
|
PARTS:
|
||||||
|
Not (in=a, out=nota);
|
||||||
|
Not (in=b, out=notb);
|
||||||
|
And (a=a, b=notb, out=w1);
|
||||||
|
And (a=nota, b=b, out=w2);
|
||||||
|
Or (a=w1, b=w2, out=out)
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Key points of note
|
||||||
|
|
||||||
|
#### Interface (`CHIP, IN, OUT`)
|
||||||
|
|
||||||
|
At the top level of the HDL program, the `CHIP` name and `IN`/`OUT` declaration is the _interface_ of the chip. Here we specify our naming convention for the `IN` and `OUT` values which we will refer to in the implementation declaration in `PARTS`.
|
||||||
|
|
||||||
|
#### Implementation (`PARTS`)
|
||||||
|
|
||||||
|
Everything under the `PARTS` section is the chip _implementation_. We can draw on composite gates in the `PARTS` declaration (e.g. `Not`, `And`, `Or`). The convention is to work from left to right when transcribing from a digital circuit diagram
|
||||||
|
|
Loading…
Add table
Reference in a new issue