NOTICE

 任何跟文章無關的閒聊,請愛用 留言板(Guestbook)。

 想要快速瀏覽主題,請點選單 目錄 標籤。

 停止更新ing,請見諒。 <(_ _)>


顯示具有 Verilog 標籤的文章。 顯示所有文章
顯示具有 Verilog 標籤的文章。 顯示所有文章

3月 13, 2010

【目錄】Verilog

@
Verilog 相關一覽


筆記

‧Introduction to Verilog
‧Quartus II Installation
‧Verilog Module
‧Create a Verilog Project

【筆記】Create a Verilog Project

@
  安裝好 Verilog 的撰寫環境--Quartus II 之後,我們還需要建置好一個專案(project)才能正式開始。所以,這裡簡單的描述一下建立專案,以及編譯 Verilog 原始碼的流程。



  首先,點選選單的 File/New Project Wizard。就會跳出一個專案的建置精靈:



  在「What is the working directory for this project?」中輸入你專案的擺放路徑,並在「What is the name of this project?」中輸入專案的名稱(註1)。

  若是專案路徑的資料夾不存在,會跳出訊息問你是否要建立它:



  確定要建立,就選擇「是」。



  按下 Next 之後,我們可以加入一些現有的檔案到專案裡頭:



  你可以利用 File name 後方的「...」按鈕開啟檔案對話方塊,選擇要加入的檔案,再按下 Add 按鈕加入專案。也可以直接按下 Add All 將目錄下的檔案都加到專案中。

  不過,這裡我們還沒有任何現存的檔案可以加入,所以直接按下 Finish 完成專案建置(註2)。



  建立好專案之後,我們還需要建立一個 Verilog 的原始碼檔案。按下選單的 File/New,就會出現對話框詢問你新增的檔案類型:



  由於我們要是 Verilog 的原始碼檔案,所以選擇「Verilog HDL File」。

  新增完成之後,就可以直接開始撰寫程式碼(下圖中的程式碼為先前 Verilog Module 解釋的 AndGate Module):



  接下來將檔案存檔:



  請記得,Quartus II 的主要模組一定要跟檔案名稱相同。



  接下來,就可以按下選單的 Precessing/Start Compilation 開始編譯的動作。假如跳出「Full Compilation was successful」的對話框,就代表編譯成功了(註3):




註1. 建議將專案放在獨立的地方,並為專案取個有意義的名稱,方便以後重複使用專案。
註2. 實際上後面還有一些設定燒錄晶片跟相關工具的部份,不過這裡我們目前都用不到。
註3. 這裡會看到其實編譯過程中會有些警告訊息。雖然這裡我們並不在意它,不過你也可以去看看這些警告訊息,查查到底為什麼。

【筆記】Verilog Module

@
  在之前的簡介中提到,Verilog 以模組(module)作為描述的基本單位。模組如同程式語言中的函式(function),可以將一部份的程式碼封裝起來,並提供對外溝通的介面(interface)。如此一來,我們便可以重複利用這些定義好的模組,以構成較大、較複雜的系統。



  我們可以將模組看成兩個部份:連接埠(port)的宣告,以及模組的主體(body)。

  其中,連接埠類似於程式語言中函式的參數(parameter),提供了對外溝通的介面。包含了輸入埠(input)、輸出埠(output)、或是兼具輸出入的雙向埠(inout)。簡單來說的話,其實可以把連接埠想成一顆 IC 上面的接腳(pin)。

  而模組主體則類似於程式語言中的函式主體,表達了模組的結構,或是模組的功能與行為。



  以下是一個 Verilog 的模組,代表一個 and 邏輯閘:

module AndGate(out, a, b);
    input   a, b;
    output  out;

    and(out, a, b);
endmodule

  接著,讓我們一步一步理解這個簡易的模組。



module AndGate(out, a, b);

  這裡的「module」為 Verilog 語法的關鍵字,代表一個模組宣告的開頭;「AndGate」為這個模組的名稱(註1);而括號中的 out、a、跟 b,則是這個模組的連接埠(註2)。

  不過,在這裡並沒有指明連接埠的類型(input、output、或是 inout)。所以我們將在下面兩行宣告它們:

    input   a, b;
    output  out;

  我們宣告 a 跟 b 為 AndGate 的輸入埠,且 out 為 AndGate 的輸出埠。



  而模組主體的部份,我們只做了一個簡單的動作:

    and(out, a, b);

  「and」為 Verilog 提供的內建邏輯閘。這裡的動作是將輸入埠 a 跟 b 進行 and 運算,並以輸出埠 out 作為運算後的結果(註3)。



  最後,我們以「endmodule」關鍵字結束模組的宣告:

endmodule



  這個模組的示意圖大致如下:




註1. 你可以根據模組的功能,自行取一個有意義的名稱。
註2. 一般來說,我們習慣將 output 寫在前面、將 input 寫在後面。
註3. 或許想成「將 a 跟 b 接到 and gate 的 input 接腳,並將 out 接到 and gate 的 output 接腳」會比較好理解。

3月 12, 2010

【筆記】Quartus II Installation

@
  在實際開始撰寫 Verilog 之前,我們需要先安裝好撰寫執行 Verilog 程式的環境工具。而這裡我們採用的工具,是 Altera 公司的 Quartus II 這套軟體。

  Quartus II 是一套用以撰寫 Verilog、VHDL、AHDL 等 HDL 的開發工具,除了可以進行程式的編輯與編譯之外,也可以用以產生邏輯圖、狀態圖、波形圖等等,在功能上算是相當齊全。



  現行的 Quartus II 有兩個不同的版本:Web Edition 與 Subscription Edition。

  其中 Subscription Edition 有提供 30 天的試用期。超過試用期之後,是需要經過授權才可以繼續使用的。而 Web Edition 則是免費的版本,可以直接下載來使用。

  這裡我們要使用的是 Web Edition。



  要取得 Quartus II Web Edition,需要先連到其下載頁面:



  然後,選擇下載「Quartus® II Web Edition Software v9.1 Service Pack 1」(請依照當前最新版本自行尋找)。



  接著會進到 Account Sign-In 的畫面。假設各位都沒有 Altera 的帳號,可以選擇「Get One-Time Access」並在下面的文字框輸入你的 E-mail,就能夠不經由註冊的步驟繼續下載。

  當然,若是你真的想註冊一個帳號,選擇「Create Your myAltera Account」並完成註冊步驟也是可以的。



  最後,拉到頁面下方,點選「Click to Download Your File Now」,就可以進行下載,並開始安裝(因為安裝過程只需要選擇安裝路徑,這裡就不花版面贅述了)。

  由於檔案大小高達 1.5GB,下載跟安裝的動作比較耗時,所以可能需要耐心等待一下子。



  安裝完成之後,就可以開始使用 Quartus II 這套功能強大的工具囉:

【筆記】Introduction to Verilog

@
  因為系上這學期有一門要寫 Verilog 的必修課,所以想說乾脆直接在 blog 上做個筆記整理內容,並供一起上課的同學們作為參考。不過,其中的許多內容都不是我非常瞭解的,假如有任何錯誤或問題,都歡迎各位提出來。



  說到 Verilog 就不能不先提到 HDL(Hardware Description Language,硬體描述語言)。

  所謂 HDL,即是利用一般高階語言的程式撰寫法,以達成數位電路功能或結構的設計、驗證與模擬。利用 HDL,我們便可以不必透過傳統的手繪方式設計電路,再在麵包板上接出電路來進行驗證與模擬。而 Verilog 則是主流的兩種 HDL 之一(註1)。

  Verilog 在設計時採用了近似於 C 語言的語法,以類似於函式(function)的模組(module)作為描述的基本單位。對於熟悉 C 語言的程式設計師來說,Verilog 還算是相當容易學習。



  在實際的設計上,Verilog 則提供了四種層級的描述方式,供設計者在不同層次的觀點上設計電路。分別為:開關層級(Switch Level)、邏輯閘層級(Gate Level)、資料流層級(Dataflow Level)與行為層級(Behavioral Level)。

  開關層級是 Verilog 所提供的最低層級。在這個層級上,設計者需要瞭解電路的開關--電晶體(transistor)的元件特性,並以此進行電路的設計。

  在邏輯閘層級中,設計者的觀點從一個個的電晶體,轉到較高層的邏輯閘(logic gate)。以此觀點,設計者可以直接利用如 and、or、not、xor 等邏輯閘,與將之連接的線路來進行設計。

  在資料流層級中,我們關注的則是資料如何經由硬體元件進行處理、儲存、與流向;而在最高層級的行為層級上,設計者只需要知道模組與函式間的功能,而不去考慮硬體實作的細節。




註1. 另一種常用的硬體描述語言是 VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)。