系列文章 : 使用 Verilog 實作 in-order CPU mem-stage mem-stage 負責 決定是否該進行 branch,並且將這個結果...
系列文章 : 使用 Verilog 實作 in-order CPU execute-stage execute stage 負責 計算出 branch 發生的...
系列文章 : 使用 Verilog 實作 in-order CPU decode-stage decode-stage 負責 : 將 instruction...
系列文章 : 使用 Verilog 實作 in-order CPU fetch-stage fetch-stage 會利用 pc 值,去跟 Inst_Mem 去...
非常感謝 Sean 把陽明交通大學的計算機組織的課堂作業分享出來,讓我這個已經畢業的大叔可以跟著課堂作業一起練習。 開始練習的時候,難免會想著,別人大一大二,甚...
系列文章 : 使用 Verilog 實作 in-order CPU 這邊的練習是來自陽明交通大學的計算機組織作業。雖然我沒有上過陽明交通大學的計算機組織,但網路...
系列文章 : 使用 Verilog 實作 in-order CPU 在實作一個簡單的 CPU 之前,會需要一個可以模擬電路運行的工具!這邊會使用一個厲害的開源工...
前面的篇幅大致說明了基本的 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...