目錄:
圖:雷元素客晴
全文共 3360 字,閱讀大約需要 5 分鐘
只要附著雷元素力,刻晴的發(fā)簪就能化為一柄銳利無比的小刀。
刻晴的三點(diǎn)養(yǎng)成日記:刻晴這種如此可愛的角色,養(yǎng)成不易,也要搭配特殊的陣容,來發(fā)揮她的最佳效果。FPGA 的開發(fā)也是這樣,各種仿真軟件陣容過于繁復(fù),往往我的需求是寫 verilog/VHDL 代碼并仿真時(shí)序,并不想安裝各個(gè)廠家(如 Quartus,Vivado)的軟件,有沒有一種輕量、高顏值、簡(jiǎn)單好用、功能強(qiáng)大且免費(fèi)的仿真環(huán)境呢?
超載反應(yīng)造成的是火元素傷害,超導(dǎo)反應(yīng)造成冰元素傷害、且降低的是物理防御
利用元素反應(yīng)造成的傷害,雷、冰、火三種史萊姆都會(huì)對(duì)應(yīng)免疫
觸發(fā)元素反應(yīng)造成的傷害,只吃元素精通加成,并不享受攻擊力的加成
本篇作為保姆級(jí)教程,將會(huì)手把手帶你配置 FPGA 輕量級(jí)開發(fā)環(huán)境和使用我的腳本!該方案支持 windows 和 linux 系統(tǒng)。
本文首發(fā)于在下石同學(xué) 未經(jīng)授權(quán) 不得轉(zhuǎn)載
文 | 在下石同學(xué)
零、寫在前面
FPGA 開發(fā)離不開各種仿真,尤其是 RTL 級(jí)這種最基本的邏輯功能性仿真,對(duì) FPGA 及開發(fā)流程還不了解的童鞋請(qǐng)看我的往期文章:
往期文章鏈接
盡管現(xiàn)在許多 FPGA 廠家的軟件功能都很齊全,但是代碼編輯界面還保留著上世紀(jì)的風(fēng)格,特別是有些仿真工具入門門檻較高,安裝起來也比較麻煩,F(xiàn)PGA 開發(fā)中的大多數(shù)時(shí)間都花費(fèi)在 verilog/VHDL 代碼編寫和 RTL 仿真上,往往我的需求是寫 verilog/VHDL 代碼并仿真時(shí)序,并不想安裝各個(gè)廠家(如 Quartus,Vivado)的軟件,有沒有一種輕量、高顏值、簡(jiǎn)單好用、功能強(qiáng)大且免費(fèi)的仿真環(huán)境呢?
答案是使用 iverilog !
為什么要用 iverilog ?實(shí)際上 VHDL/Verilog 仿真多使用 Modelsim 這種專業(yè)軟件,但是 iverilog 足夠輕量,并且用作科研和開發(fā)完全不用擔(dān)心版權(quán)的問題,然而 iverilog 開發(fā)需要用戶使用一些腳本和命令行,這一點(diǎn)就勸退了大部分初學(xué)者,所以我這里就對(duì)該部分進(jìn)行封裝,確保大家只需要簡(jiǎn)單的幾條指令就可以實(shí)現(xiàn)絕大多數(shù)的 FPGA 的 RTL 級(jí)仿真工作,同時(shí)配備 Vscode 的語法高亮和代碼檢查。
授人以魚不如授人以漁,同時(shí)也帶領(lǐng)大家了解我的方案細(xì)節(jié)和底層,幫助大家更好了解 iverilog 編譯和仿真過程都經(jīng)歷了什么。
整個(gè)方案實(shí)現(xiàn)的過程并不復(fù)雜,可以類比我們?cè)谛W(xué)一年級(jí)就學(xué)過的 C/C++ 編譯過程,如下圖所示,VScode 作為工程組織和寫代碼的工具,通過安裝插件支持 Verilog/VHDL 的語法高亮、關(guān)鍵詞提示、語法檢查等, Verilog/VHDL 的文件都以 *.v 作為后綴。注意看圖中虛線包圍的部分,所有的 *.v 文件通過 iverilog 工具完成編譯生成 *.out 文件,再通過vvp 工具運(yùn)行*.out 文件,就可生成*.vcd 波形文件,最后使用gtkwave工具查看波形文件,至此,整個(gè)編譯到波形查看的過程就完成了,如圖中虛線部分所示。
可以看到,編譯的過程稍微有些許繁瑣,為了簡(jiǎn)化這個(gè)過程,我使用了make工具,通過編寫makefile文件來控制整個(gè)編譯的過程,熟悉 linux 下 C/C++ 開發(fā)的同學(xué)對(duì)make 應(yīng)該非常熟悉,不熟悉的同學(xué)可以自行搜索,文末我也會(huì)放置相關(guān)的參考鏈接。通過make來實(shí)現(xiàn)虛線框的過程,這樣用戶再也不用考慮編譯過程的細(xì)節(jié)了,一條指令搞定所有!
D:\Xzhao\Documents\OfficialAccounts\Article\2023.07.01\photos\Snipaste_2023-07-02_14-24-23.png圖:FPGA 開發(fā)輕量級(jí)環(huán)境搭建
二、代碼高亮和語法檢查——環(huán)境準(zhǔn)備 2.1 VScode 及相關(guān)插件安裝首先安裝 VScode (Visual Studio Code) ,安裝具體可參考官網(wǎng)Visual Studio Code - Code Editing. Redefined
點(diǎn)擊插件擴(kuò)展,快捷鍵Ctrl+Shift+X,在目錄欄里搜索,即可找到對(duì)應(yīng)的插件,點(diǎn)擊插件上的install即可完成安裝,如下圖所示:
VScode 下幾款插件推薦安裝:
我們點(diǎn)擊每一個(gè)插件,可以在頁面下看到關(guān)于使用及詳細(xì)介紹,如下圖:
這里我們需要安裝三個(gè)軟件(所有的安裝鏈接附在文末):
linux 操作系統(tǒng)下安裝 iverilog/make:
# 安裝 iverilog/make# 驗(yàn)證安裝:打印版本信息
$iverilog -v
$make -v
windows 系統(tǒng)安裝 iverilog/make:
到 iverilog 官網(wǎng)下載安裝包,http://bleyer.org/icarus/,根據(jù)自己電腦系統(tǒng),我這里選 x64:
安裝的時(shí)候記住自己的安裝路徑,安裝完畢,我們將安裝路徑里的bin和gtkwave\bin添加到環(huán)境變量 path 中:
需要測(cè)試一下 iverilog 環(huán)境變量有沒有添加成功,我們按下 WIN+R按鍵,調(diào)出運(yùn)行窗口,輸入cmd,打開命令行:
在命令行里,我們輸入 iverilog -v,輸出如下:
可以看到 iverilog 打印的版本信息,表明安裝成功了!
windows 安裝 make 工具稍微麻煩一點(diǎn),需要先安裝 mingw。
下載 mingw 并安裝:https://sourceforge.net/projects ... wnload?source=files
添加MinGW\bin到系統(tǒng)的環(huán)境變量 path 中:
打開MinGW\bin路徑,找到mingw32-make.exe,將該文件復(fù)制一份,同時(shí)改名為make.exe:
同樣的,我們?cè)诿钚休斎?make -v,看到打印的版本信息,也說明安裝成功。
至此,軟件安裝及環(huán)境配置完畢,接下來是如何建立功能并完成編譯和時(shí)序仿真,讓我們?cè)倩氐降谝还?jié),復(fù)習(xí)一下下面這張圖:
這個(gè)過程雖然比較麻煩,但是別擔(dān)心,我們用一個(gè)makefile腳本搞定全過程,只需要三條指令哦!
三、一個(gè)腳本搞定一切!編譯、RTL 時(shí)序仿真全過程! 3.1 腳本實(shí)現(xiàn)原理用戶只需要編寫makefile文件來組織工程文件的相互依賴關(guān)系和編譯過程,最后使用make工具即可實(shí)現(xiàn)編譯和運(yùn)行,下面貼出我的makefile:
# ------------------------------------------------######################################
# target
######################################
TARGET = vout
#######################################
# paths
#######################################
# Build path
BUILD_DIR = build
######################################
# source
######################################
# V sources
V_SOURCES = \
./full_adder_tb.v \
./full_adder.v \
./half_adder.v
# # V includes
# V_INCLUDES = \
# -Itest/full_adder
#######################################
# binaries
#######################################
PREFIX =
# The iverilog compiler bin path can be either defined in make command via VCC_PATH variable (> make VCC_PATH=xxx)
# either it can be added to the PATH environment variable.
ifdef VCC_PATH
CC = $(VCC)/$(PREFIX)iverilog
VP = $(VCC)/$(PREFIX)vvp
else
CC = $(PREFIX)iverilog
VP = $(PREFIX)vvp
endif
# default action: build all
all:wave.vcd
wave.vcd:$(BUILD_DIR)/$(TARGET).out | $(BUILD_DIR)
@$(VP) -n $^
@echo ---------------------------------------
@echo build finished...
@echo "use <make plot> for plot the waveform"
@echo "use <make clean> for clean"
@echo "use <make> for build again"
$(BUILD_DIR)/$(TARGET).out:$(V_SOURCES) | $(BUILD_DIR)
@$(CC) -o $@ $(V_SOURCES)
$(BUILD_DIR):
@mkdir $@
.PHONY:plot
.PHONY:clean
# windows
clean:
@del wave.vcd
@rmdir /Q /S $(BUILD_DIR)
# linux & mac
#clean:
# rm Rf wave.vcd $(BUILD_DIR)/*.out
plot:
@gtkwave wave.vcd
用戶指令只有三條:
整個(gè)makefile的內(nèi)容大家可以根據(jù)自己的興趣研究,不懂也完全沒有關(guān)系,以后寫代碼的時(shí)候,只需要把我這個(gè)文件放在工程目錄的頂層,只需要記住這三條指令,我們就可以愉快的玩耍了!
這里通過實(shí)現(xiàn)一個(gè)簡(jiǎn)單的全加器,來演示整個(gè)環(huán)境如何使用。
首先新建一個(gè)文件夾full_adder,使用 VScode 打開,在該文件夾中新建三個(gè)文件half_adder.v、full_adder.v、full_adder_tb.v:
half_adder.v文件內(nèi)容:
編寫test_bench tb_full_adder.v文件內(nèi)容:
全加器是一個(gè)比較簡(jiǎn)單的例子,但是我依舊按照一般工程采用自頂向下的設(shè)計(jì)方法,將一個(gè)全加器的實(shí)現(xiàn)分成兩個(gè) module,full_adder作為頂層模塊調(diào)用half_adder,畢竟這樣更具有普適性。
在tb_full_adder.v中,使用 $dumpfile("wave.vcd")指定仿真波形文件類型,同時(shí)向控制臺(tái)打印hello, 在下石同學(xué)!字符串。
我們編寫*.v代碼文件后,把makefile文件放在目錄頂層,然后打開該文件,找到文中V_SOURCES,在后面添加你編寫的所有*.v文件的相對(duì)路徑,本示例編寫了三個(gè)文件:full_adder_tb.v、full_adder.v、half_adder.v,將這三個(gè)文件路徑添加進(jìn)去,\符號(hào)代表換行符,最后一行不需要添加,如下所示:
每次編寫完自己的 verilog/HDL 代碼后,只需要在makefile中添加V_SOURCES就可以了,其他地方不用動(dòng),然后在makefile所在的路徑打開命令行,輸入指令make:
我們可以看到,代碼編譯成功,并且成功運(yùn)行 full_adder_tb.v文件中的 $display("hello, 在下石同學(xué)!");語句,向控制臺(tái)打印hello, 在下石同學(xué)!這一串字符。
同時(shí),我們查看發(fā)現(xiàn)項(xiàng)目多了一個(gè)build文件夾和名為wave.vcd的波形文件,這都是編譯過程生成的文件。
項(xiàng)目編譯就完成了,要查看 RTL仿真波形圖,我們只需要接著在命令行輸入指令make plot:
屏幕中立刻彈出 RTL 仿真波形圖,我們可以點(diǎn)擊查看:
我們?cè)诿钚休斎胫噶頼ake clean,可將編譯生成的文件全部刪除掉,方便下一次重新編譯。
我們記住用戶的三條指令:
**到此為止,我們就可以愉快的進(jìn)行 verilog/VHDL 代碼仿真啦! **
該項(xiàng)目源碼我已經(jīng)上傳到我的 github 倉庫上面啦,大家可以直接下載:
github URL:https://github.com/nezhajun/full_adder
安裝了git的小伙伴也可以使用git clone下載:
$git clone https://github.com/nezhajun/full_adder.git文中涉及相關(guān)軟件工具下載鏈接和參考:
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |