這裡介紹一下Nand2Tetris課程裡面用到的硬體模擬器的用法,可以在這裡找到下載方式。
HDL語法
假如我們要構建一個非門,這時候我們需要建立一個檔案,檔名為:Not.hdl
,內容如下:
// This file is part of www.nand2tetris.org
// and the book "The Elements of Computing Systems"
// by Nisan and Schocken, MIT Press.
// File name: projects/01/Not.hdl
/**
* Not gate:
* out = not in
*/
CHIP Not {
IN in;
OUT out;
PARTS:
Nand(a=in, b=in, out=out);
}
以//
開頭,或者在/** **/
之間的是註釋,這個和主流的程式語言一致。上面/** **/
之間的是Not
的描述。
CHIP
關鍵字定義了元件的名稱,IN
定義了元件的輸入端,OUT
定義了元件的輸出,PARTS
下面是具體的實現。
我們來具體看實現:
Nand(a=in, b=in, out=out);
的意思是Nand
(與非門,預設提供)的輸入端a
, b
作為Not
的輸入in
,Nand
的輸出out
作為Not
的輸出out
。
當我們構建完Not
的時候,我們就可以把他作為元件在後續的程式碼中使用了。
關於課程中project1的其他元件以及對應的功能描述,可以去參考網站的資料,我已經寫完並且上傳到github,可以供大家參考。
硬體模擬器
這裡的硬體模擬器是java寫的,所以我們首先需要安裝並配置jre,這裡不再贅述。配置完java之後,執行平臺的指令碼檔案即可。例如mac執行HardwareSimulator.sh
,windows執行HardwareSimulator.bat
即可。
開啟後介面如下所示:
這時候我們點選File -> Load Chip
或者下面的第一個圖示來載入一個元件。這時候我們可以改變Input pins
中輸入的值,然後點選Run -> Single Step
或者下面對應的圖示去單步執行,執行完之後我們可以在Output pins
中看到輸出。
為了驗證我們寫的程式是否正確,我們可以使用壓縮包中提供的測試檔案來測試我們的程式:測試檔案以.tst
結尾,例如Not.hdl
對應的測試檔案就是Not.tst
。然後我們可以點選File -> LoadScript
或者對應的圖示來載入測試測試指令碼檔案。
載入完成之後,可以在右側看到指令碼檔案的具體內容,同樣的,我們也可以點選Run -> Single Step
來單步執行測試指令碼中的測試程式碼,或者Run -> Run
來執行全部的測試程式碼。
如果執行成功,我們可以在最下方看到執行成功的提示,否則會給出對應的報錯。如下所示:
總結
到這裡為止,我們瞭解了一些基礎的邏輯電路,並且用HDL
描述了出來。使用硬體模擬器的好處是方便我們除錯,驗證邏輯是否正確,也不用手動去焊接電路。
課程中用到的硬體模擬器是以學習為目的的,是為了幫助我們瞭解計算機底層的電路結構。我這裡也沒有介紹的面面俱到,僅僅是介紹了最基本的用法。關於更詳細的使用方式我們可以去查閱網站中的資料。