經(jīng)常使用RTL例如verilog進(jìn)行數(shù)字邏輯設(shè)計(jì)的朋友,仿真一定是一個(gè)繞不開的話題。在一些標(biāo)準(zhǔn)的數(shù)字接口和協(xié)議上,使用仿真軟件例如modelsim或者vcs進(jìn)行仿真后,得到的都是波形文件,使用相應(yīng)的波形查看器查看數(shù)字信號(hào)的變化以確認(rèn)協(xié)議邏輯設(shè)計(jì)的正確性,這點(diǎn)一般需要憑借個(gè)人豐富的經(jīng)驗(yàn)和對(duì)協(xié)議的充分理解才能保證??芍^是“人腦解碼器”,效率低下且很容易出錯(cuò)。例如下圖中的串行發(fā)送數(shù)據(jù)不經(jīng)解碼很難確認(rèn)正確性。

市面上一些邏輯分析儀配套軟件例如DSview或是pulseview擁有龐大的數(shù)字協(xié)議解碼器庫,配合邏輯分析儀使用時(shí)能夠快速分析設(shè)計(jì)正確性,但這樣一般又都需要邏輯分析儀硬件設(shè)備以及數(shù)字邏輯設(shè)計(jì)的實(shí)現(xiàn)載體例如FPGA等,也很不方便。
經(jīng)過研究,邏輯分析儀軟件例如pulseview能夠通過導(dǎo)入其他格式波形(例如vcd)文件,再對(duì)相應(yīng)通道添加解碼器,即可實(shí)現(xiàn)仿真+解碼驗(yàn)證的全套軟件實(shí)現(xiàn)流程,不需要借助硬件進(jìn)行分析,并且也不需要靠人工去分析協(xié)議的正確性,十分方便。
例如上圖中的波形導(dǎo)出vcd文件后由pulseview軟件導(dǎo)入并添加串口解碼器后得到如下圖所示的結(jié)果,可以看到串口協(xié)議設(shè)計(jì)正確且發(fā)送的數(shù)據(jù)十分清晰被解碼出來。

軟件和波形文件格式
Pulseview是一款開源的邏輯分析儀軟件,具有十分漂亮的界面和強(qiáng)大的解碼庫,支持Windows,Linus,MacOS等多個(gè)平臺(tái),可以通過導(dǎo)入波形文件進(jìn)行解碼和分析,具體介紹可以查看官方Wiki。
VCD (Value Change Dump)是一個(gè)通用的格式。 VCD文件是IEEE1364標(biāo)準(zhǔn)(Verilog HDL語言標(biāo)準(zhǔn))中定義的一種ASCII文件。它主要包含了頭信息,變量的預(yù)定義和變量值的變化信息。正是因?yàn)樗?a target="_blank">信號(hào)的變化信息,就相當(dāng)于記錄了整個(gè)仿真的信息,我們可以用這個(gè)文件來再現(xiàn)仿真,也就能夠顯示波形。
本次的教程即通過邏輯分析儀配套軟件pulseview讀取vcd文件進(jìn)行解碼。
使用過程
參考Verilog和Testbench設(shè)計(jì)源碼在github:
https://github.com/ITANGTANGI/verilog_decoder_pulseview
本次教程分為Windows端和Linux端兩個(gè)部分。
Windows平臺(tái)
軟件安裝
首先到官網(wǎng)
https://sigrok.org/wiki/Downloads
如下圖所示,根據(jù)電腦的配置下載Windows安裝包,已經(jīng)使用過sigrok兼容的邏輯分析儀的話應(yīng)該電腦中都有pulseview軟件了。

下載完成后雙擊安裝包,按照正常軟件安裝步驟正常安裝即可,沒有啥需要注意的。如下圖所示就是安裝按成了。

安裝完成后不會(huì)生成快捷方式,在“開始”菜單欄中找到如下圖所示的sigrok文件夾中pulseview打開或自行添加快捷方式即可。

至此軟件安裝完成。
vcd波形文件生成
因?yàn)閂CD是 Verilog HDL語言標(biāo)準(zhǔn)的一部分,因此所有的verilog的仿真器都要能夠?qū)崿F(xiàn)這個(gè)功能,也要允許用戶在verilog代碼中通過系統(tǒng)函數(shù)來dump VCD文件。我們可以通過Verilog HDL的系統(tǒng)函數(shù)dumpfile來生成波形,通過dumpvars的參數(shù)來規(guī)定我們抽取仿真中某些特定模塊和信號(hào)的數(shù)據(jù)。
基礎(chǔ)波形生成和導(dǎo)入顯示操作如下例代碼中添加的一個(gè)initial塊,里面使用dumpfile生成了waveform.vcd文件,并把clk_i和data_i信號(hào)添加進(jìn)波形文件的變量中。
樣例代碼:
`timescale1ns/1ps
modulevitual_logic_decoder_tb;
//vitual_logic_analyzerParameters
parameterPERIOD=10;
parameterSAMP_CLK_FREQ=100_000_000;
parameterSAMP_CHANNELS=8;
//vitual_logic_analyzerInputs
regclk_i=0;
reg[SAMP_CHANNELS-1:0]data_i=0;
//vitual_logic_analyzerOutputs
initialbegin
$dumpfile("waveform.vcd");
$dumpvars(0,vitual_logic_decoder_tb.clk_i,vitual_logic_decoder_tb.data_i);
end
//dumpfsbl
initialbegin
$fsdbDumpfile("waveform.fsdb");
$fsdbDumpvars(0);
end
//Clockgenerate
initial
begin
forever#(PERIOD/2)clk_i=~clk_i;
end
always@(posedgeclk_i)begin
data_i<=?data_i?+?8'd1;
end
//operations
initial
begin
#6000
$finish;
end
endmodule
使用Windows下的Verilog仿真軟件,我這里使用的是Modelsim,也可以使用vivado自帶的仿真器或者iverilog等對(duì)上述代碼進(jìn)行仿真。仿真后會(huì)在仿真文件夾下生成waveform.vcd文件。Verilog仿真的流程不介紹。
打開pulseview軟件,點(diǎn)擊菜單欄open圖標(biāo)右側(cè)小三角,選擇Import Value Change Dump data選項(xiàng),界面如下圖所示:

打開生成的vcd文件

參數(shù)設(shè)置,可以不用管

點(diǎn)擊OK后,即可成功加載波形

波形解碼
編寫一個(gè)串口發(fā)送Hello world!字符串的Verilog程序,按照上述方法進(jìn)行仿真生成vcd文件,使用pulseview加載后如下圖所示。

點(diǎn)擊箭頭所指,打開解碼器庫界面,搜索UART,并雙擊UART解碼器添加到波形圖中。

點(diǎn)擊波形圖中的UART解碼器,根據(jù)自己的設(shè)計(jì)選擇需要解碼的通道,設(shè)置波特率等參數(shù),選擇數(shù)據(jù)顯示格式為ASCII,選擇完成后會(huì)自動(dòng)重新解碼。

解碼完成后顯示正確的解碼結(jié)果。

其它功能
解碼器按鈕右邊的“Math”按鈕可以支持對(duì)通道使用數(shù)學(xué)表達(dá)式進(jìn)行多種算術(shù)邏輯運(yùn)算,可以實(shí)現(xiàn)很多一般數(shù)字邏輯設(shè)計(jì)波形查看器不能實(shí)現(xiàn)的功能。

提升解碼性能技巧
在解碼或加載仿真時(shí)間單位小或是仿真時(shí)間長(zhǎng)的vcd波形時(shí),pulseview軟件需要執(zhí)行比較長(zhǎng)的時(shí)間,執(zhí)行時(shí)間和CPU性能有關(guān)。
可以通過在Testbench設(shè)計(jì)中的timescale降低仿真精度,或者是減少仿真時(shí)間,避免過多的無用波形產(chǎn)生。這方面讀者可以自行發(fā)揮。
備注
Windows下Modelsim仿真過程中,仿真器會(huì)占用vcd文件導(dǎo)致pulseview無法加載(打開VCD文件時(shí)卡死),暫未找到解決辦法。關(guān)閉Modelsim軟件再加載vcd波形就行。不知有沒更好解決辦法。
重新仿真后,不需要點(diǎn)擊open按鈕重新打開vcd文件,點(diǎn)擊軟件左上角的reload按鈕即可自動(dòng)重新加載波形并解碼,無需重新設(shè)置。

Linux平臺(tái)
軟件安裝
Linux下pulseview軟件無需安裝,到官網(wǎng)
https://sigrok.org/wiki/Downloads
下載Linux的執(zhí)行文件,用chmod 777 賦予可執(zhí)行權(quán)限后直接運(yùn)行即可。

仿真,波形顯示和解碼
剩下的操作和Windows平臺(tái)相同,只不過是使用的仿真軟件不同而已,參考源碼中給了VCS工程例程。
審核編輯 :李倩
-
解碼器
+關(guān)注
關(guān)注
9文章
1178瀏覽量
42018 -
仿真
+關(guān)注
關(guān)注
52文章
4290瀏覽量
135918 -
源碼
+關(guān)注
關(guān)注
8文章
671瀏覽量
30354
原文標(biāo)題:使用Pulseview軟件輔助verilog數(shù)字設(shè)計(jì)仿真協(xié)議解碼
文章出處:【微信號(hào):Open_FPGA,微信公眾號(hào):OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Transformer架構(gòu)中解碼器的工作流程

DM5885視頻解碼器英文手冊(cè)
無線網(wǎng)解碼器怎么連接
無線網(wǎng)解碼器怎么用
無線解碼器的質(zhì)量標(biāo)準(zhǔn)是什么
解碼器和控制器區(qū)別是什么
控制器解碼器的使用方法
遙控器解碼器怎么使用
全景聲解碼器

為什么好的播放器還要配解碼器
9740解碼器配什么光柵
光柵解碼器損壞的表現(xiàn)有哪些
光纖光柵解碼器的通道怎么設(shè)置
數(shù)字播放器和解碼器

評(píng)論