FPGA基礎 -- Verilog 的值變轉儲文件(VCD:Value Change Dump)

Verilog 的“值變轉儲文件(VCD:Value Change Dump)”,這是一項在仿真調試中至關重要的技術,可以幫助你“看見”RTL中每個信號隨時間的變化過程。


一、什么是 Verilog 的值變轉儲文件(VCD)

VCD 文件是一種標準格式的文本文件,全稱為 Value Change Dump,用于記錄 Verilog 仿真過程中信號的取值變化。

它的作用類似于邏輯分析儀的抓取波形,但作用于 RTL 層,用于:

  • 波形觀察(使用 GTKWave 等工具)
  • 行為驗證
  • 時序調試
  • 測試激勵驗證

二、VCD 文件的生成流程

📌 步驟一:在 Testbench 中添加轉儲語句

在 Verilog 的仿真 testbench 中,加入以下系統函數:

initial begin$dumpfile("wave.vcd");       // 設置輸出的 VCD 文件名$dumpvars(0, tb_top);        // 設置要轉儲的模塊或層級
end

參數解釋:

語句含義說明
$dumpfile("file.vcd")設置輸出 VCD 文件的名稱。必須是 .vcd 后綴。
$dumpvars(level, scope)設置記錄的信號層級深度和作用域;level = 0 表示全記錄。
$dumpoff / $dumpon動態關閉/打開轉儲(常用于減小文件大小)。

三、VCD 文件格式結構簡要

VCD 文件是標準的純文本格式,其結構如下:

$timescale 1ns $end
$scope module tb_top $end
$var wire 1 a clk $end
$var wire 1 b rstn $end
...
$upscope $end
$enddefinitions $end
#0
0a
1b
#5
1a
#10
0b

每部分含義:

字段含義
$timescale指定時間單位(仿真單位)
$var定義變量名、寬度、標識符、別名
#<time>當前時間戳
0a / 1a標識符 a 的值變為 0 或 1

四、綜合示例

🧾 1. RTL 代碼

module counter(input clk, input rstn, output reg [3:0] count);always @(posedge clk or negedge rstn) beginif (!rstn)count <= 0;elsecount <= count + 1;end
endmodule

🧾 2. Testbench(包含 VCD)

module tb;reg clk = 0;reg rstn = 0;wire [3:0] count;counter uut(.clk(clk), .rstn(rstn), .count(count));always #5 clk = ~clk;initial begin$dumpfile("wave.vcd");$dumpvars(0, tb);#10 rstn = 1;#100 $finish;end
endmodule

五、VCD 文件查看工具

最常用的工具是開源波形查看器 GTKWave

gtkwave wave.vcd

支持搜索、跳轉、游標測量、導出截圖等功能,適用于跨平臺(Windows/Linux)使用。


六、進階技巧

1?? 有選擇性地轉儲信號

只記錄某一子模塊,減小文件體積:

$dumpvars(0, tb.uart_inst);

2?? 控制轉儲時間段

$dumpoff;
#200;
$dumpon;

常用于忽略初始化過程,縮小文件:

initial begin$dumpfile("wave.vcd");$dumpvars(0, tb);#50 $dumpoff;#100 $dumpon;
end

3?? 轉儲多位總線的顯示

多位信號如 reg [7:0] data 會以:

b00000000 x  // 二進制格式

顯示其值為 x 對應的名稱。


七、常見問題與注意事項

問題或注意點說明
文件太大控制 $dumpvars 的范圍或使用 $dumpoff
不支持非標準類型real 等類型不支持,使用 $fwrite 輸出
Vivado 不直接支持 $dumpfile使用 write_vcd 或使用第三方仿真器

八、小結

項目內容
文件格式.vcd,文本格式
用途波形查看、調試、驗證
生成方式$dumpfile, $dumpvars
查看工具GTKWave
最佳實踐控制范圍、分段轉儲

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/910045.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/910045.shtml
英文地址,請注明出處:http://en.pswp.cn/news/910045.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

流水燈芯片74HC138 → 74HC164 → 74HC595核心功能、引腳作用及芯片定位

一、74HC138&#xff1a;精準的“8選1開關” 核心作用 用3根控制線&#xff08;A0-A2&#xff09;實現8路嚴格單選&#xff0c;同一時刻僅1路輸出低電平&#xff08;其他7路高電平&#xff09;。 &#x1f4cc; 本質&#xff1a;二進制地址譯碼器&#xff0c;不是數據寄存器。…

鴻蒙Next倉頡語言開發實戰教程:懶加載

今天要分享的是倉頡開發語言中的懶加載。 先和初學者朋友們解釋一下什么是懶加載。懶加載在代碼中叫做LazyForEach&#xff0c;看到名字你一定能猜到它和ForEach的功能類似。只不過和ForEach的一次性加載所有數據不同&#xff0c;懶加載會根據屏幕可使區域按需加載數據&#x…

Linux 內核同步管理全解:原理 + 實戰 + 考點

&#x1f525; 推薦&#xff1a;《Yocto項目實戰教程&#xff1a;高效定制嵌入式Linux系統》 京東正版促銷&#xff0c;歡迎支持原創&#xff01; 鏈接&#xff1a;https://item.jd.com/15020438.html 一、為什么需要同步機制&#xff1f; Linux 是一個支持 多核并發 搶占式調…

效果成本雙突破!快手提出端到端生成式推薦系統OneRec!

近日&#xff0c;快手推薦模型團隊提出了一個端到端生成式推薦系統OneRec&#xff0c;該系統采用Encoder-Decoder架構&#xff0c;引入了基于獎勵機制的偏好對齊方法&#xff0c;借助強化學習增強模型效果&#xff0c;可在獎勵模型引導下直接生成契合用戶偏好的視頻內容。通過極…

flex布局 項目屬性

<!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>flex布局 項目屬性</title> <link href"css/k.css" rel"stylesheet" /> </head> <bod…

SpringBoot擴展——應用Web Service!

應用Web Service Web Service是一個SOA&#xff08;面向服務的編程&#xff09;架構&#xff0c;這種架構不依賴于語言&#xff0c;不依賴于平臺&#xff0c;可以在不同的語言之間相互調用&#xff0c;通過Internet實現基于HTTP的網絡應用間的交互調用。Web Service是一個可以…

EasyExcel學習筆記

EasyExcel學習 一、EasyExcel簡介 一、EasyExcel是什么 EasyExcel是一個基于Java的簡單、省內存的讀寫Excel的阿里開源項目。在盡可能節約內存的情況下支持讀寫百M的Excel。 官網&#xff1a;https://easyexcel.opensource.alibaba.com/ 學習Easyexcel前需要了解導入和導出…

day4課程

1整體認識和路由配置 2二級分類面包屑導航實現 3基礎商品列表渲染 4列表篩選功能實現 5列表無限加載功能實現 6定制路由滾動行為 7詳情頁整體認識和路由配置 8詳情頁基礎數據渲染 9詳情頁基礎組件封裝和數據渲染 10適配不同title和數據列表 11小圖切換大圖 12滑塊跟隨鼠標移動 …

kubeadm worker節點加入master失敗

文章目錄 1、操作2、問題現象3、問題原因4、問題解決4.1、重新生成token4.2、重新生成hash值 5、驗證 1、操作 執行以下命令&#xff0c;讓worker節點加入到master節點 kubeadm join 103.123.222.241:6443 --token vxe3v1.wzpnks8v1vbbtsu0 --discovery-token-ca-cert-hash s…

二十二、【用戶管理與權限 - 篇四】后端權限定義:模型與 API 實現

【用戶管理與權限 - 篇四】后端權限定義:模型與 API 實現 前言準備工作第一部分:設計并創建 `Permission` 模型第二部分:更新 `Role` 模型以關聯 `Permission`第三部分:生成并應用數據庫遷移第四部分:創建 Serializers第五部分:創建 ViewSets第六部分:注冊 API 路由第七…

猜數字小游戲微信流量主小程序開源

這個智力小游戲采用了數字華容道的玩法&#xff0c;玩家需要通過移動數字方塊&#xff0c;將數字按順序排列完成游戲。代碼嚴格遵循微信小程序的目錄結構&#xff0c;包含以下部分&#xff1a; 完整的小程序配置文件&#xff08;app.js、app.json、app.wxss&#xff09; 游戲頁…

探秘阿里云EBS存儲:云計算的存儲基石

一、引言 在云計算時代&#xff0c;數據如同企業的生命線&#xff0c;數據存儲的重要性不言而喻。隨著企業數字化轉型的加速&#xff0c;海量數據的存儲與高效管理成為亟待解決的問題。云存儲以其卓越的靈活性、可擴展性和成本效益&#xff0c;逐漸成為眾多企業的首選方案。在…

音視頻之H.264的可伸縮編碼SVC

系列文章&#xff1a; 1、音視頻之視頻壓縮技術及數字視頻綜述 2、音視頻之視頻壓縮編碼的基本原理 3、音視頻之H.264/AVC編碼器原理 4、音視頻之H.264的句法和語義 5、音視頻之H.264/AVC解碼器的原理和實現 6、音視頻之H.264視頻編碼傳輸及其在移動通信中的應用 7、音視…

Anaconda安裝env,yml一直卡在Solving environment:不動

如果在使用conda env creat -f env.yml時候&#xff0c;anaconda一直卡住&#xff0c;如下 可以嘗試下面操作。 conda config --set solver libmamba # 使用libmamba引擎&#xff08;Conda≥22.11&#xff09; conda env create -f env.yaml # 重新嘗試

榕壹云婚戀相親系統:ThinkPHP+UniApp打造高效婚配平臺

引言 在數字化浪潮下,婚戀相親行業正加速向線上遷移。榕壹云公司基于市場需求與技術積累,開發一款功能完備、技術開源的婚戀相親小程序系統,為單身人士提供高效、安全的婚戀平臺。本文將圍繞系統背景、客戶定位、核心技術、功能模塊及優勢場景展開詳細解析,助力開發者與技…

查詢docker-compose 部署的milvus 請求日志

在 Docker Compose 部署的 Milvus 中,日志默認存儲在各個服務的容器內。以下是定位和查詢日志的方法: 1. 查看實時日志 使用 docker-compose logs 命令查看實時日志: bash # 查看所有服務的日志 docker-compose logs -f# 僅查看 Milvus 服務日志(服務名以 docker-compos…

Rsync實操

Rsync實操 一.rsync命令 #類似于cp[rootuser2 ~]# rsync info.sh root192.168.168.130:/rootroot192.168.168.130s password: [rootuser1 ~]# lsanaconda-ks.cfg ceph-release-1-1.el7.noarch.rpm info.sh 二、使用rsync備份push方式 服務器&#xff1a;server 192.168.168…

Java常見八股-(6.算法+實施篇)

Java常見八股-&#xff08;1.Java基礎篇&#xff09; Java常見八股-&#xff08;2.Java高級篇&#xff09; Java常見八股-&#xff08;3.MySQL篇&#xff09; Java常見八股-&#xff08;4.前端篇&#xff09; Java常見八股-&#xff08;5.框架篇&#xff09; 目錄 一、算…

阿里云部署的SMTP服務器安全攻防實錄:深度解析攻擊、防護與加固

阿里云部署的SMTP服務器安全攻防實錄&#xff1a;深度解析攻擊、防護與加固 一次針對云上SMTP服務的持續攻擊事件&#xff0c;揭示了郵件中繼服務面臨的多重安全挑戰。本文將深入剖析攻擊手法、防護策略與系統性加固方案。 某企業在阿里云上部署的Postfix SMTP服務器近期遭遇…

HTTP與HTTPS深度解析:從明文傳輸到安全通信的演進之路

引言 在互聯網的早期&#xff0c;HTTP&#xff08;超文本傳輸協議&#xff09;作為Web通信的基石&#xff0c;憑借簡單高效的特性推動了萬維網的爆發式增長。但隨著互聯網從“信息共享”向“價值交互”演進&#xff0c;HTTP的明文傳輸特性逐漸暴露致命缺陷——用戶的每一次點擊…