前面的篇幅大致說明了基本的 Verilog 語法,如果想要認識更多內容可以參考筆者寫的 數位IC起手式 ,裡面記載我在學習 Verilog 的學習過程和思路,相...
大家可會好奇,同樣是賦值,為什麼會有 <=, = 的區別呢?這就要提到 blocking 和 nonblocking 的概念。 先給一個 Pseudoco...
數位電路大致上分成 2 種,組合電路 (Combinational Circuit) 和循序電路 (Sequential Circuit)。 當一個電路通電,組...
Verilog 是 IC 設計中必備的工具或說是語言。認識 Verilog 之前,我們要先知道並非所有的語法都可以用來設計電路,部分的語法是用來「模擬」電路的。...
我們認識了數位電路設計的組合電路、循序電路,也學習了 Verilog 的語法和實際練習撰寫 Verilog 的程式碼。學習他們的最終目標到底是什麼?就是設計出...
之前提到的議題都是在更加彈性設計電路,今天我們要介紹的是讓設計者方便撰寫 Verilog 程式碼。在 C 語言中,我們常常看見 #define, #includ...
關鍵字 parameter 我們已經在上一篇看過了!但是它的功用到底是什麼? 我們先思考一個問題:下方是一個 4 bits Johnson Counter 的程...
Generate 是個很強大的語法。 在寫 Verilog 時,我最討厭的狀況是:(以 Pseudocode 表示) if (cond == True)...
不知道大家會不會好奇 begin, end 是做什麼的?只是單純要去區分各個區塊,就像是 C 語言的 { } 嗎? 其實沒有那麼簡單!過去我們都是使用 Sequ...
迴圈是程式設計中最為重要的一環,因為他可以根據我們的設定重複執行某一項事情。 Verilog 也不例外,他包含 while, for, repeat, fore...
Race Condition 中文翻譯為「競爭條件」。 這個問題非常常見,不只是在設計電路時出現,軟體設計時也會見到這個問題。稍微概述一下這個問題:當有兩個以上...
自從循序電路的出現,我們大量接觸時間的觀念,順序變得相當重要! 最開始我們只使用到 = 來執行賦值的行為,而之後增加了 <= 來建構不同的電路。我們也說到...
大致認識了有限狀態機後,我們來試試透過 Verilog 實作出來吧! 我們先介紹一個 Verilog 的線上練習平台:HDLBits這個平台包含了各式各樣的...
有限狀態機 維基百科中有一段有限狀態機的定義 有限狀態機(英語:finite-state machine,縮寫:FSM)又稱有限狀態自動機(英語:finite...
了解了計數器的規則,這一篇我們要來實作 Johnson Counter 和 Ring Counter ,其實兩者的實作差異不大,希望大家在學會 Johnson...
學會正反器之後,我們該應用一下了吧!之前提到正反器是一種有記憶的電路,透過這種電路,我們可以有不同的初始狀態。而我們要介紹的計數器就是其中一種應用。 以 0 ~...
同樣是賦值,Verilog 共提供了兩種形式:blocking 、 nonblocking 。 Blocking 就是我們想像中的賦值,程式碼由上而下進行。但是...
這篇文章的目標就是實作正反器,但是在開始之前我們要先學習新的 Verilog 語法,這可以有效幫助我們簡化程式碼。 條件判斷 條件判斷在軟體撰寫共分成兩種:if...
邏輯電路可以分成兩種,一種是我們之前在接觸的組合電路 (Combinational Circuit) ,另一種是比較難理解的循序電路 (Sequential C...
我們來介紹另一種測試方式! Verilog 提供了一系列的指令,讓我們能與系統溝通 (System Task) ,如上一篇使用過的 $dumpfile(), $...
完成了一個模組後,要怎麼知道他的正確性? 第一步就是編譯檔案,編譯器會告訴你這份檔案是否有語法錯誤,或是其他能檢查出的錯誤。但是編譯成功代表這個模組 100%...
簡單的模組觀念就先暫時說到這邊,我們先用之前所學的觀念來實作 BCD 加法器! BCD 是什麼? 數字的編碼方式其實有很多種,舉例來說,十進位是生活中常用的數字...
宣告模組後,我們就可以開始使用它了!但是在那之前我們先來回顧之前提到的內建模組吧! 內建邏輯閘模組 我們曾經說過 Verilog 提供了邏輯閘的模組,例如:an...
介紹完了線路和線路的應用後,我們要開始組裝成模組囉! 但是在開始之前,我們要先認識模組的基本元件。 Port Port 的中文是端口,意思是說如果外部想要與模組...
Vector 其實比我們想像的靈活,上一篇我們提到的 vector 在一開始就將線路綑綁完成了,那如果我們想要把線路拆解或是組合成更龐大的 vector 又該怎...
上一篇提到一條 wire 最多表示兩種數值,那麼如果要表示更多數值,我們需要使用 vector 。 Vector 是什麼呢?中文翻譯叫向量,但是向量可能沒那麼好...
既然 Verilog 是硬體描述語言,那麼其中的組成肯定不是單純的變數,如:整數、浮點數、字串等。Verilog 中最重要的變數是 wire ,翻成中文就是線路...
不同的軟體支援不同的作業系統,因為我所使用的軟體都是免付費的,所以限制會稍多一點。但是找到可以被我們使用的環境才是我們的目的! Windows 寫完了 Veri...
Verilog 是由一個一個模組 (module) 堆疊起來的,而最上層的模組 (top module) 與 C 語言的主函式 (main function),...
Verilog 是一個硬體描述語言,除了設計硬體之外,他也涵蓋了 C 語言等軟體設計特色。 因此 Verilog 的設計思維其實非常廣泛的,同一個電路,程式碼的...