verilog學習記(學習設計cpu)

2021-09-24 16:00:32 字數 1589 閱讀 4293

很早之前,自己就對cpu的設計非常感興趣。和十幾年前比較,現在網上開源的cpu**還是很多的,比如說risc-v、openrisc、openmips等等。當然,如果是從學習的角度來說,openrisc和openmips還是非常不錯的。那麼,如果是希望能夠深入了解cpu是怎麼設計的,應該需要做哪些準備呢?

1、深入了解指令集

了解指令集是掌握cpu很重要的乙個環節。立即數指令、暫存器指令、數**算指令、邏輯運算指令、比較指令、跳轉指令、載入儲存指令、異常指令以及特殊狀態暫存器指令,這些指令都非常重要。

2、了解gcc、makefile、link、objcopy

測試cpu的時候很多情況下需要自己編寫組合語言,這個時候就需要編寫簡單的makefile,因此有必要掌握基本的makefile編寫規則。除此之外,編譯器gcc、鏈結器link、二進位制工具binutils也是需要掌握的。

3、熟悉和安裝linux

為了編譯**,我們的pc需要安裝linux作業系統。不過有virtualbox和vmware這些虛擬機器軟體,安裝linux其實是一件很輕鬆的事情。

4、掌握基本的verilog語法

目前數位電路設計主要有verilog和vhdl兩種語言,其中verilog在公司裡面用的比較多,而vhdl在學校裡面使用比較多。事實上最好兩種語言都要掌握,實在不行必須掌握verilog,另外一種看懂就可以了。

5、了解一種**工具

如果不需要在實際開發板上面執行,那麼至少需要掌握modelsim或者iverilog其中的一種。modelsim在windows平台上面使用較多,而iverilog是linux上的開源軟體,也可以拿來作為使用。

6、掌握一種ide工具和開發板

7、了解一種匯流排和幾種常用的硬體協議

單獨的cpu雖然也能使用,但是目前使用比較多的還是soc形式的晶元,因此可以選擇一種開源bus進行學習,比如說wishbone。關於硬體協議,按照最小系統來說,應該還需要sdram、norflash or nandflash、gpio、uart、晶振電路、復位電路就可以了。除了sdram之外,spi、nand、gpio、uart都不算太複雜,大家可以稍微了解一下就可以學會了。如果學有餘力,多多了解sd、jtag、lcd、i2c、can、i2s也不錯。

8、深入了解組合邏輯和時序邏輯

數位電路設計其實是一門暫存器為主的設計方法學。暫存器與暫存器之間用組合邏輯進行連線。電路以時鐘作為驅動方法,按照組合邏輯-時序邏輯-組合邏輯-時序邏輯的方法不停地進行運算和控制。組合邏輯主要是進行各種編碼、解碼、選擇、優先順序判斷等操作,而時序邏輯主要是處理復位、freeze、異常、長時間操作等各種複雜情況。這方面建議大家多看看openmips的**,應該會有不錯的收穫。

9、繼續了解複雜的cpu設計

現在的cpu設計不僅僅是簡單的流水線操作,除了常用的五級流水線之外,還有mmu、cache、多發射流水線、分支**、lsu亂序、多核cache同步、score board演算法、暫存器重新命名等等,建議大家可以深入下去繼續學習,對自己的軟體開發也會大有裨益。

ps:a、學習cpu不可避免和硬體打交道,因此萬用表、示波器、邏輯分析儀這些裝置最好也掌握一下。現在這些裝置其實很便宜了,不應該成為學習的障礙。

b、目前有乙個蜂鳥的riscv比較火,建議大家可以好好關注一下。

相關位址為

verilog學習記(verilog翻譯成c)

有的時候,寫verilog 時,不太確定是否正確,會寫一段偽c 來進行驗證,比如 module sum input clk,input rst,output 15 0 cnt reg 15 0 data always posedge clk or negedge rst if rst data 16...

verilog 學習記(如何編寫assert)

我們在編寫c 的時候,一般測試的時候都要用assert進行判斷。那麼怎麼在verilog中進行assert判斷呢?大家知道,system verilog是包含有assert語句的,但是raw verilog沒有。既然verilog 沒有,那麼我們可以自己定義乙個module,一樣可以實現assert...

verilog學習記(加法器)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!程式語言,光看書其實作用不大的,關鍵還需要自己進行實踐。看書的時候,你覺得自己明白了 弄懂了,等到用modelsim實踐的時候還是會出現這樣那樣的問題。因此,還是希望自己能夠不斷地訓練和練習,這樣可以達到熟能生巧的程度。就今天的加法器來說,其實內容...