久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1525|回復: 0
打印 上一主題 下一主題
收起左側

FPGA 開發專題 | 手把手教你用 VScode 搭建輕量級 Verilog 仿真環境 | 真保姆級

[復制鏈接]
跳轉到指定樓層
樓主
本帖最后由 電子愛好者沒錯 于 2023-8-22 20:31 編輯

FPGA 開發專題 | 手把手教你用 VScode 搭建輕量級 Verilog 仿真環境 | 真保姆級

目錄:


  • 零、寫在前面
  • 一、來瞅瞅我的實現方案
  • 二、代碼高亮和語法檢查——環境準備
    • 2.1 VScode 及相關插件安裝
    • 2.2 iverilog/make 安裝
  • 三、一個腳本搞定一切!編譯、RTL 時序仿真全過程!
    • 3.1 腳本實現原理
    • 3.2 項目演示:帶你實現一個全加器


圖:雷元素客晴


全文共 3360 字,閱讀大約需要 5 分鐘

只要附著雷元素力,刻晴的發簪就能化為一柄銳利無比的小刀。

刻晴的三點養成日記:
  • 超載反應造成的是火元素傷害,超導反應造成冰元素傷害、且降低的是物理防御

  • 利用元素反應造成的傷害,雷、冰、火三種史萊姆都會對應免疫

  • 觸發元素反應造成的傷害,只吃元素精通加成,并不享受攻擊力的加成


刻晴這種如此可愛的角色,養成不易,也要搭配特殊的陣容,來發揮她的最佳效果。FPGA 的開發也是這樣,各種仿真軟件陣容過于繁復,往往我的需求是寫 verilog/VHDL 代碼并仿真時序,并不想安裝各個廠家(如 Quartus,Vivado)的軟件,有沒有一種輕量、高顏值、簡單好用、功能強大且免費的仿真環境呢?

本篇作為保姆級教程,將會手把手帶你配置 FPGA 輕量級開發環境和使用我的腳本!該方案支持 windows 和 linux 系統。

本文首發于在下石同學 未經授權 不得轉載

文 | 在下石同學




零、寫在前面


FPGA 開發離不開各種仿真,尤其是 RTL 級這種最基本的邏輯功能性仿真,對 FPGA 及開發流程還不了解的童鞋請看我的往期文章:

往期文章鏈接






盡管現在許多 FPGA 廠家的軟件功能都很齊全,但是代碼編輯界面還保留著上世紀的風格,特別是有些仿真工具入門門檻較高,安裝起來也比較麻煩,FPGA 開發中的大多數時間都花費在 verilog/VHDL 代碼編寫和 RTL 仿真上,往往我的需求是寫 verilog/VHDL 代碼并仿真時序,并不想安裝各個廠家(如 Quartus,Vivado)的軟件,有沒有一種輕量、高顏值、簡單好用、功能強大且免費的仿真環境呢?








答案是使用 iverilog !



為什么要用 iverilog ?實際上 VHDL/Verilog 仿真多使用 Modelsim 這種專業軟件,但是 iverilog 足夠輕量,并且用作科研和開發完全不用擔心版權的問題,然而 iverilog 開發需要用戶使用一些腳本和命令行,這一點就勸退了大部分初學者,所以我這里就對該部分進行封裝,確保大家只需要簡單的幾條指令就可以實現絕大多數的 FPGA 的 RTL 級仿真工作,同時配備 Vscode 的語法高亮和代碼檢查。

授人以魚不如授人以漁,同時也帶領大家了解我的方案細節和底層,幫助大家更好了解 iverilog 編譯和仿真過程都經歷了什么。





一、來瞅瞅我的實現方案

整個方案實現的過程并不復雜,可以類比我們在小學一年級就學過的 C/C++ 編譯過程,如下圖所示,VScode 作為工程組織和寫代碼的工具,通過安裝插件支持 Verilog/VHDL 的語法高亮、關鍵詞提示、語法檢查等, Verilog/VHDL  的文件都以 *.v 作為后綴。注意看圖中虛線包圍的部分,所有的 *.v 文件通過 iverilog 工具完成編譯生成 *.out 文件,再通過vvp 工具運行*.out 文件,就可生成*.vcd 波形文件,最后使用gtkwave工具查看波形文件,至此,整個編譯到波形查看的過程就完成了,如圖中虛線部分所示。

可以看到,編譯的過程稍微有些許繁瑣,為了簡化這個過程,我使用了make工具,通過編寫makefile文件來控制整個編譯的過程,熟悉 linux 下 C/C++ 開發的同學對make 應該非常熟悉,不熟悉的同學可以自行搜索,文末我也會放置相關的參考鏈接。通過make來實現虛線框的過程,這樣用戶再也不用考慮編譯過程的細節了,一條指令搞定所有!

D:\Xzhao\Documents\OfficialAccounts\Article\2023.07.01\photos\Snipaste_2023-07-02_14-24-23.png

圖:FPGA 開發輕量級環境搭建

二、代碼高亮和語法檢查——環境準備 2.1 VScode 及相關插件安裝

首先安裝 VScode (Visual Studio Code) ,安裝具體可參考官網Visual Studio Code - Code Editing. Redefined

點擊插件擴展,快捷鍵Ctrl+Shift+X,在目錄欄里搜索,即可找到對應的插件,點擊插件上的install即可完成安裝,如下圖所示:

VScode 下幾款插件推薦安裝:

  • Chinese (Simplified):更改系統語言為中文
  • Verilog HDL:提供語法高亮
  • Verilog_Testbench:testbench使用自動實例化
  • Verilog-HDL/SystemVerilog/Bluespec SystemVerilog:提供語法高亮和檢查

我們點擊每一個插件,可以在頁面下看到關于使用及詳細介紹,如下圖:

2.2 iverilog/make 安裝

這里我們需要安裝三個軟件(所有的安裝鏈接附在文末)

  • iverilog:VHDL/Verilog 的編譯器,提供整個編譯、鏈接、生成波形文件,是我們的主角
  • make:管理代碼工程及解決相關依賴的自動化腳本工具,搞C/C++開發的同學應該非常熟悉了

linux 操作系統下安裝 iverilog/make:

# 安裝 iverilog/make
$sudo apt-get install iverilog
$sudo apt-get install gtkwave
$sudo apt-get install make

# 驗證安裝:打印版本信息
$iverilog -v
$make -v

windows 系統安裝  iverilog/make:

到 iverilog 官網下載安裝包,http://bleyer.org/icarus/,根據自己電腦系統,我這里選 x64:

安裝的時候記住自己的安裝路徑,安裝完畢,我們將安裝路徑里的bin和gtkwave\bin添加到環境變量 path 中:

需要測試一下 iverilog 環境變量有沒有添加成功,我們按下 WIN+R按鍵,調出運行窗口,輸入cmd,打開命令行:

在命令行里,我們輸入 iverilog -v,輸出如下:

可以看到 iverilog 打印的版本信息,表明安裝成功了!

windows 安裝 make 工具稍微麻煩一點,需要先安裝 mingw。

下載 mingw 并安裝:https://sourceforge.net/projects ... wnload?source=files

添加MinGW\bin到系統的環境變量 path 中:

打開MinGW\bin路徑,找到mingw32-make.exe,將該文件復制一份,同時改名為make.exe:

同樣的,我們在命令行輸入 make -v,看到打印的版本信息,也說明安裝成功。

至此,軟件安裝及環境配置完畢,接下來是如何建立功能并完成編譯和時序仿真,讓我們再回到第一節,復習一下下面這張圖:

這個過程雖然比較麻煩,但是別擔心,我們用一個makefile腳本搞定全過程,只需要三條指令哦!

三、一個腳本搞定一切!編譯、RTL 時序仿真全過程! 3.1 腳本實現原理

用戶只需要編寫makefile文件來組織工程文件的相互依賴關系和編譯過程,最后使用make工具即可實現編譯和運行,下面貼出我的makefile:

# ------------------------------------------------
# Generic Makefile (based on iverilog)
# @Author : sudo
# ChangeLog :
# 2023-03-22 - creat this project
#   2023-03-22 - first version
# ------------------------------------------------

######################################
# 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


用戶指令只有三條:

  • make:完成整個編譯過程并生成波形圖文件
  • make clean:清理所有的編譯生成文件
  • make plot:繪制波形圖

整個makefile的內容大家可以根據自己的興趣研究,不懂也完全沒有關系,以后寫代碼的時候,只需要把我這個文件放在工程目錄的頂層,只需要記住這三條指令,我們就可以愉快的玩耍了!


3.2 項目演示:帶你實現一個全加器

這里通過實現一個簡單的全加器,來演示整個環境如何使用。

首先新建一個文件夾full_adder,使用 VScode 打開,在該文件夾中新建三個文件half_adder.v、full_adder.v、full_adder_tb.v:

half_adder.v文件內容:


編寫test_bench tb_full_adder.v文件內容:


`timescale 1ns/1nsmodule full_adder_tb();reg in1,in2,cin;wire cout,sum;initial begin    in1=1'b0;    in2=1'b0;    cin=1'b0;endalways #10 in1={$random}%2;always #10 in2={$random}%2;always #10 cin={$random}%2;initial begin    forever begin        #10;        if($time>1000)$finish;    endendinitial begin    $display("hello, 在下石同學!");    $display("hello, 在下石同學!");    $display("hello, 在下石同學!");    // $dumpfile("wave.lxt"); // 指定用作dumpfile的文件    $dumpfile("wave.vcd"); // 指定用作dumpfile的文件    $dumpvars; // dump all varsendfull_adder u_full_adder(    .in1 ( in1 ),    .in2 ( in2 ),    .cin ( cin ),    .sum ( sum ),    .cout  ( cout  ));endmodule

全加器是一個比較簡單的例子,但是我依舊按照一般工程采用自頂向下的設計方法,將一個全加器的實現分成兩個 module,full_adder作為頂層模塊調用half_adder,畢竟這樣更具有普適性。


在tb_full_adder.v中,使用 $dumpfile("wave.vcd")指定仿真波形文件類型,同時向控制臺打印hello, 在下石同學!字符串。

我們編寫*.v代碼文件后,把makefile文件放在目錄頂層,然后打開該文件,找到文中V_SOURCES,在后面添加你編寫的所有*.v文件的相對路徑,本示例編寫了三個文件:full_adder_tb.v、full_adder.v、half_adder.v,將這三個文件路徑添加進去,\符號代表換行符,最后一行不需要添加,如下所示:


# V sources
V_SOURCES =  \
./full_adder_tb.v \
./full_adder.v \
./half_adder.v


每次編寫完自己的 verilog/HDL 代碼后,只需要在makefile中添加V_SOURCES就可以了,其他地方不用動,然后在makefile所在的路徑打開命令行,輸入指令make:

我們可以看到,代碼編譯成功,并且成功運行 full_adder_tb.v文件中的 $display("hello, 在下石同學!");語句,向控制臺打印hello, 在下石同學!這一串字符。

同時,我們查看發現項目多了一個build文件夾和名為wave.vcd的波形文件,這都是編譯過程生成的文件。

項目編譯就完成了,要查看 RTL仿真波形圖,我們只需要接著在命令行輸入指令make plot:

屏幕中立刻彈出 RTL 仿真波形圖,我們可以點擊查看:

我們在命令行輸入指令make clean,可將編譯生成的文件全部刪除掉,方便下一次重新編譯。

我們記住用戶的三條指令:

  • make:完成整個編譯過程并生成波形圖文件
  • make clean:清理所有的編譯生成文件
  • make plot:繪制波形圖

**到此為止,我們就可以愉快的進行 verilog/VHDL 代碼仿真啦! **

該項目源碼我已經上傳到我的 github 倉庫上面啦,大家可以直接下載:

github URL:https://github.com/nezhajun/full_adder

安裝了git的小伙伴也可以使用git clone下載:

$git clone https://github.com/nezhajun/full_adder.git

文中涉及相關軟件工具下載鏈接和參考:




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲小说图片 | 日韩成人免费视频 | 毛片在线看片 | 91精品欧美久久久久久久 | 国产在线中文字幕 | 亚洲一区二区三区在线免费 | 91免费电影| av网站在线播放 | 一区二区三区欧美在线 | 国产a爽一区二区久久久 | 99久久久久国产精品免费 | 福利网址| 久久成人精品视频 | 亚洲在线 | 日本在线中文 | 免费中文字幕 | 欧美日韩视频在线 | 一区二区三区网站 | 在线观看视频91 | 中文字幕一区二区三区在线视频 | 国产精品视频二区三区 | www.久久久.com | 成人免费看 | 国产在线精品一区二区三区 | 精品国产伦一区二区三区观看说明 | 日韩欧美国产一区二区三区 | 久久男人 | 国产亚洲黄色片 | 羞羞视频在线观看网站 | 成人av电影天堂 | 欧美中文在线 | 欧美一区二区三区四区视频 | 日韩欧美在线观看 | 欧美一区视频 | 日韩精品一区二区三区久久 | 欧美日韩久久精品 | 国产综合第一页 | 久久精品久久久久久 | a中文在线视频 | 91精品国产色综合久久 | 国产一级电影在线观看 |