chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA中測(cè)試文件編寫(xiě)中的激勵(lì)仿真

電子工程師 ? 來(lái)源:CSDN ? 作者:長(zhǎng)弓的堅(jiān)持 ? 2021-04-02 18:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

大家好,又到了每日學(xué)習(xí)的時(shí)間了,今天我們來(lái)聊一聊FPGA中測(cè)試文件編寫(xiě)的相關(guān)知識(shí),聊一聊激勵(lì)仿真。

? 1. 激勵(lì)的產(chǎn)生

對(duì)于testbench而言,端口應(yīng)當(dāng)和被測(cè)試的module一一對(duì)應(yīng)。端口分為input,output和inout類型產(chǎn)生激勵(lì)信號(hào)的時(shí)候,input對(duì)應(yīng)的端口應(yīng)當(dāng)申明為reg, output對(duì)應(yīng)的端口申明為wire,inout端口比較特殊,下面專門講解。

1)直接賦值。

一般用initial塊給信號(hào)賦初值,initial塊執(zhí)行一次,always或者forever表示由事件激發(fā)反復(fù)執(zhí)行。

舉例,一個(gè)module

module exam();

reg rst_n;

reg clk;

reg data;

initial

begin

clk=1‘b0;

rst=1’b1;

#10

rst=1‘b0;

#500

rst=1’b1;

end

always

begin

#10

clk=~clk;

end

大家應(yīng)該注意到有個(gè)#符號(hào),該符號(hào)的意思是指延遲相應(yīng)的時(shí)間單位。該時(shí)間單位由timscale決定。一般在testbench的開(kāi)頭定義時(shí)間單位和仿真 精度,比如`timescale 1ns/1ps,前面一個(gè)是代表時(shí)間單位,后面一個(gè)代表仿真時(shí)間精度。以上面的例子而言,一個(gè)時(shí)鐘周期是20個(gè)單位,也就是20ns。而仿真時(shí)間精度的概 念就是,你能看到1.001ns時(shí)對(duì)應(yīng)的信號(hào)值,而假如timescale 1ns/1ns,1.001ns時(shí)候的值就無(wú)法看到。對(duì)于一個(gè)設(shè)計(jì)而言,時(shí)間刻度應(yīng)該統(tǒng)一,如果設(shè)計(jì)文件和testbench里面的時(shí)間刻度不一致,仿真 器默認(rèn)以testbench為準(zhǔn)。一個(gè)較好的辦法是寫(xiě)一個(gè)global.v文件,然后用include的辦法,可以防止這個(gè)問(wèn)題。

對(duì)于反復(fù)執(zhí)行的操作,可寫(xiě)成task,然后調(diào)用,比如

task load_count;

input [3:0] load_value;

begin

@(negedge clk_50);

$display($time, “ 《《 Loading the counter with %h 》》”, load_value);

load_l = 1’b0;

count_in = load_value;

@(negedge clk_50);

load_l = 1’b1;

end

endtask //of load_count

initial

begin

load_count(4’hA); // 調(diào)用task

end

其他像forever,for,function等等語(yǔ)句用法類似,雖然不一定都能綜合,但是用在testbench里面很方便,大家可以自行查閱參考文檔

2) 文件輸入

有時(shí)候,需要大量的數(shù)據(jù)輸入,直接賦值的話比較繁瑣,可以先生成數(shù)據(jù),再將數(shù)據(jù)讀入到寄存器中,需要時(shí)取出即可。用 $readmemb系統(tǒng)任務(wù)從文本文件中讀取二進(jìn)制向量(可以包含輸入激勵(lì)和輸出期望值)。$readmemh 用于讀取十六進(jìn)制文件。例如:

reg [7:0] mem[1:256] // a 8-bit, 256-word 定義存儲(chǔ)器mem

initial $readmemh ( “E:/readhex/mem.dat”, mem ) // 將.dat文件讀入寄存器mem中

initial $readmemh ( “E:/readhex/mem.dat”, mem, 128, 1 ) // 參數(shù)為寄存器加載數(shù)據(jù)的地址始終

2. 查看仿真結(jié)果

對(duì)于簡(jiǎn)單的module來(lái)說(shuō),要在modelsim的仿真窗口里面看波形,就用add wave 。.命令

比如,testbench的頂層module名叫tb,要看時(shí)鐘信號(hào),就用add wave tb.clk

要查看所有信號(hào)的時(shí)候,就用 add wave /*

當(dāng)然,也可以在workspace下的sim窗口里面右鍵單擊instance來(lái)添加波形

對(duì)于復(fù)雜的仿真,免不了要記錄波形和數(shù)據(jù)到文件里面去。

1)波形文件記錄

常見(jiàn)的波形文件一般有兩種,vcd和fsdb,debussy是個(gè)很好的工具,支持fsdb,所以最好是modelsim+debussy的組合

默認(rèn)情況下,modelsim不認(rèn)識(shí)fsdb,所以需要先裝debussy,再生成fsdb文件。

$dumpfile和$dumpvar是verilog語(yǔ)言中的兩個(gè)系統(tǒng)任務(wù),可以調(diào)用這兩個(gè)系統(tǒng)任務(wù)來(lái)創(chuàng)建和將指定信息導(dǎo)入VCD文件。

對(duì)于fsdb文件來(lái)說(shuō),對(duì)應(yīng)的命令是fsdbDumpfile,dumpfsdbvars

(什么是VCD文件? 答:VCD文件是在對(duì)設(shè)計(jì)進(jìn)行的仿真過(guò)程中,記錄各種信號(hào)取值變化情況的信息記錄文件。EDA工具通過(guò)讀取VCD格式的文件,顯示圖形化的仿真波形,所以,可以把VCD文件簡(jiǎn)單地視為波形記錄文件。)下面分別描述它們的用法并舉例說(shuō)明之。

$dumpfile系統(tǒng)任務(wù):為所要?jiǎng)?chuàng)建的VCD文件指定文件名。

舉例(“//”符號(hào)后的內(nèi)容為注釋文字):

initial

$dumpfile (“myfile.dump”); //指定VCD文件的名字為myfile.dump,仿真信息將記錄到此文件

$dumpvar系統(tǒng)任務(wù):指定需要記錄到VCD文件中的信號(hào),可以指定某一模塊層次上的所有信號(hào),也可以單獨(dú)指定某一個(gè)信號(hào)。

典型語(yǔ)法為$dumpvar(level, module_name); 參數(shù)level為一個(gè)整數(shù),用于指定層次數(shù),參數(shù)module則指定要記錄的模塊。整句的意思就是,對(duì)于指定的模塊,包括其下各個(gè)層次(層次數(shù)由 level指定)的信號(hào),都需要記錄到VCD文件中去。

舉例:

initial

$dumpvar (0, top); //指定層次數(shù)為0,則top模塊及其下面各層次的所有信號(hào)將被記錄

initial

$dumpvar (1, top); //記錄模塊實(shí)例top以下一層的信號(hào)

//層次數(shù)為1,即記錄top模塊這一層次的信號(hào)

//對(duì)于top模塊中調(diào)用的更深層次的模塊實(shí)例,則不記錄其信號(hào)變化

initial

$dumpvar (2, top); //記錄模塊實(shí)例top以下兩層的信號(hào)

//即top模塊及其下一層的信號(hào)將被記錄

假設(shè)模塊top中包含有子模塊module1,而我們希望記錄top.module1模塊以下兩層的信號(hào),則語(yǔ)法舉例如下:

initial

$dumpvar (2, top.module1); //模塊實(shí)例top.module1及其下一層的信號(hào)將被記錄

假設(shè)模塊top包含信號(hào)signal1和signal2(注意是變量而不是子模塊), 如我們希望只記錄這兩個(gè)信號(hào),則語(yǔ)法舉例如下:

initial

$dumpvar (0, top.signal1, top.signal2); //雖然指定了層次數(shù),但層次數(shù)是不影響單獨(dú)指定的信號(hào)的

//即指定層次數(shù)和單獨(dú)指定的信號(hào)無(wú)關(guān)

我們甚至可以在同一個(gè)$dumpvar的調(diào)用中,同時(shí)指定某些層次上的所有信號(hào)和某個(gè)單獨(dú)的信號(hào),假設(shè)模塊top包含信號(hào)signal1,同時(shí)包含有子模 塊module1,如果我們不但希望記錄signal1這個(gè)獨(dú)立的信號(hào),而且還希望記錄子模塊module1以下三層的所有信號(hào),則語(yǔ)法舉例如下:

initial

$dumpvar (3, top.signal1, top.module1); //指定層次數(shù)和單獨(dú)指定的信號(hào)無(wú)關(guān)

//所以層次數(shù)3只作用于模塊top.module1, 而與信號(hào)

top.signal1無(wú)關(guān)

上面這個(gè)例子和下面的語(yǔ)句是等效的:

initial

begin

$dumpvar (0, top.signal1);

$dumpvar (3, top.module1);

end

$dumpvar的特別用法(不帶任何參數(shù)):

initial

$dumpvar; //無(wú)參數(shù),表示設(shè)計(jì)中的所有信號(hào)都將被記錄

最后,我們將$dumpfile和$dumpvar這兩個(gè)系統(tǒng)任務(wù)的使用方法在下面的例子中綜合說(shuō)明,假設(shè)我們有一個(gè)設(shè)計(jì)實(shí)例,名為 i_design,此設(shè)計(jì)中包含模塊module1,模塊module1下面還有很多層次,我們希望對(duì)這個(gè)設(shè)計(jì)進(jìn)行仿真,并將仿真過(guò)程中模塊 module1及其以下所有層次中所有信號(hào)的變化情況,記錄存儲(chǔ)到名為mydesign.dump的VCD文件中去,則例示如下:

initial

begin

$dumpfile (“mydesign.dump”); //指定VCD文件名為mydesign.dump

$dumpvar (0, i_design.module1); //記錄i_design.module1模塊及其下面層次中所有模塊的所有信號(hào)

end

對(duì)于生成fsdb文件而言,也是類似的

initial

begin

$fsdbDumpfile(“tb_xxx.fsdb”);

$fsdbDumpvars(0,tb_xxx);

end

2)文件輸出結(jié)果

integer out_file; // out_file 是一個(gè)文件描述,需要定義為 integer類型

out_file = $fopen ( “ cpu.data ” ); // cpu.data 是需要打開(kāi)的文件,也就是最終的輸出文本

設(shè)計(jì)中的信號(hào)值可以通過(guò)$fmonitor, $fdisplay,$fwrite

其中$fmonitor只要有變化就一直記錄,$fdisplay和$fwrite需要觸發(fā)條件才記錄

例子:

initial begin

$fmonitor(file_id, “%m: %t in1=%d o1=%h”, $time, in1, o1);

end

always@(a or b)

begin

$fwrite(file_id,“At time%t a=%b b=%b”,$realtime,a,b);

end

3 testbench的技巧

1)。如果激勵(lì)中有一些重復(fù)的項(xiàng)目,可以考慮將這些語(yǔ)句編寫(xiě)成一個(gè)task,這樣會(huì)給書(shū)寫(xiě)和仿真帶來(lái)很大方便。例如,一個(gè)存儲(chǔ)器的testbench的激勵(lì)可以包含write,read等task。

2)。如果DUT中包含雙向信號(hào)(inout),在編寫(xiě)testbench時(shí)要注意。需要一個(gè)reg變量來(lái)表示其輸入,還需要一個(gè)wire變量表示其輸出。

3)。如果initial塊語(yǔ)句過(guò)于復(fù)雜,可以考慮將其分為互補(bǔ)相干的幾個(gè)部分,用數(shù)個(gè)initial塊來(lái)描述。在仿真時(shí),這些initial塊會(huì)并發(fā)運(yùn)行。這樣方便閱讀和修改。

4)。每個(gè)testbench都最好包含$stop語(yǔ)句,用以指明仿真何時(shí)結(jié)束。

5)。加載測(cè)試向量時(shí),避免在時(shí)鐘的上下沿變化,比如數(shù)據(jù)最好在時(shí)鐘上升沿之前變化,這也符合建立時(shí)間的要求。

4.一個(gè)簡(jiǎn)單的例子

module counter (clk, reset, enable, count);

input clk, reset, enable;

output [3:0] count;

reg [3:0] count;

always @ (posedge clk)

if (reset == 1‘b1) begin

count 《= 0;

end else if ( enable == 1’b1) begin

count 《= count + 1;

end

endmodule

testbench

module counter_tb;

reg clk, reset, enable;

wire [3:0] count;

counter U0 (

.clk (clk),

.reset (reset),

.enable (enable),

.count (count)

);

initial begin

clk = 0;

reset = 0;

enable = 0;

end

always

#5 clk = ! clk;

initial begin

$dumpfile (“counter.vcd”);

$dumpvars;

end

initial begin

$display(“ time, clk, reset, enable, count”);

$monitor(“‰d, ‰b, ‰b, ‰b, ‰d”,$time, clk,reset,enable,count);

end

initial

#100 $finish;

//Rest of testbench code after this line

endmodule

5 雙向端口

芯片外部引腳很多都使用inout類型的,為的是節(jié)省管腿。一般信號(hào)線用做總線等雙向數(shù)據(jù)傳輸?shù)臅r(shí)候就要用到INOUT類型了。就是一個(gè)端口同時(shí)做輸入和 輸出。inout在具體實(shí)現(xiàn)上一般用三態(tài)門來(lái)實(shí)現(xiàn)。三態(tài)門的第三個(gè)狀態(tài)就是高阻‘Z’。當(dāng)inout端口不輸出時(shí),將三態(tài)門置高阻。這樣信號(hào)就不會(huì)因?yàn)閮啥送瑫r(shí) 輸出而出錯(cuò)了,更詳細(xì)的內(nèi)容可以搜索一下三態(tài)門tri-state的資料。

1 使用inout類型數(shù)據(jù),可以用如下寫(xiě)法:

inout data_inout;

input data_in;

reg data_reg;//data_inout的映象寄存器

reg link_data;

assign data_inout=link_data?data_reg:1’bz;//link_data控制三態(tài)門

//對(duì)于data_reg,可以通過(guò)組合邏輯或者時(shí)序邏輯根據(jù)data_in對(duì)其賦值。通過(guò)控制link_data的高低電平,從而設(shè)置data_inout是輸出數(shù)據(jù)還是處于高阻態(tài),如果處于高阻態(tài),則此時(shí)當(dāng)作輸入端口使用.link_data可以通過(guò)相關(guān)電路來(lái)控制。

2 編寫(xiě)測(cè)試模塊時(shí),對(duì)于inout類型的端口,需要定義成wire類型變量,而其它輸入端口都定義成reg類型,這兩者是有區(qū)別的。

當(dāng)上面例子中的data_inout用作輸入時(shí),需要賦值給data_inout,其余情況可以斷開(kāi)。此時(shí)可以用assign語(yǔ)句實(shí)現(xiàn):assign data_inout=link?data_in_t:1’bz;其中的link ,data_in_t是reg類型變量,在測(cè)試模塊中賦值。

另外,可以設(shè)置一個(gè)輸出端口觀察data_inout用作輸出的情況:

Wire data_out;

Assign data_out_t=(!link)?data_inout:1’bz;

else,in RTL

inout use in top module(PAD)

dont use inout(tri) in sub module

也就是說(shuō),在內(nèi)部模塊最好不要出現(xiàn)inout,如果確實(shí)需要,那么用兩個(gè)port實(shí)現(xiàn),到頂層的時(shí)候再用三態(tài)實(shí)現(xiàn)。理由是:在非頂層模塊用雙向口的話,該 雙向口必然有它的上層跟它相連。既然是雙向口,則上層至少有一個(gè)輸入口和一個(gè)輸出口聯(lián)到該雙向口上,則發(fā)生兩個(gè)內(nèi)部輸出單元連接到一起的情況出現(xiàn),這樣在 綜合時(shí)往往會(huì)出錯(cuò)。

對(duì)雙向口,我們可以將其理解為2個(gè)分量:一個(gè)輸入分量,一個(gè)輸出分量。另外還需要一個(gè)控制信號(hào)控制輸出分量何時(shí)輸出。此時(shí),我們就可以很容易地對(duì)雙向端口建模。

例子:

CODE:

module dual_port (

。

inout_pin,

。

);

inout inout_pin;

wire inout_pin;

wire input_of_inout;

wire output_of_inout;

wire out_en;

assign input_of_inout = inout_pin;

assign inout_pin = out_en ? output_of_inout : 高阻;

endmodule

可見(jiàn),此時(shí)input_of_inout和output_of_inout就可以當(dāng)作普通信號(hào)使用了。

在仿真的時(shí)候,需要注意雙向口的處理。如果是直接與另外一個(gè)模塊的雙向口連接,那么只要保證一個(gè)模塊在輸出的時(shí)候,另外一個(gè)模塊沒(méi)有輸出(處于高阻態(tài))就可以了。

如果是在ModelSim中作為單獨(dú)的模塊仿真,那么在模塊輸出的時(shí)候,不能使用force命令將其設(shè)為高阻態(tài),而是使用release命令將總線釋放掉

很多初學(xué)者在寫(xiě)testbench進(jìn)行仿真和驗(yàn)證的時(shí)候,被inout雙向口難住了。仿真器老是提示錯(cuò)誤不能進(jìn)行。下面是我個(gè)人對(duì)inout端口寫(xiě) testbench仿真的一些總結(jié),并舉例進(jìn)行說(shuō)明。在這里先要說(shuō)明一下inout口在testbench中要定義為wire型變量。

先假設(shè)有一源代碼為:

module xx(data_inout , 。.);

inout data_inout;

assign data_inout=(! link)?datareg:1‘bz;

endmodule

方法一:使用相反控制信號(hào)inout口,等于兩個(gè)模塊之間用inout雙向口互連。這種方法要注意assign 語(yǔ)句只能放在initial和always塊內(nèi)。

module test();

wire data_inout;

reg data_reg;

reg link;

initial begin

。

end

assign data_inout=link?data_reg:1’bz;

endmodule

方法二:使用force和release語(yǔ)句,但這種方法不能準(zhǔn)確反映雙向端口的信號(hào)變化,但這種方法可以反在塊內(nèi)。

module test();

wire data_inout;

reg data_reg;

reg link;

#xx; //延時(shí)

force data_inout=1‘bx; //強(qiáng)制作為輸入端口

。..

#xx;

release data_inout; //釋放輸入端口

endmodule

很多讀者反映仿真雙向端口的時(shí)候遇到困難,這里介紹一下雙向端口的仿真方法。一個(gè)典型的雙向端口如圖1所示。

其中inner_port與芯片內(nèi)部其他邏輯相連,outer_port為芯片外部管腳,out_en用于控制雙向端口的方向,out_en為1時(shí),端口為輸出方向,out_en為0時(shí),端口為輸入方向。

用Verilog語(yǔ)言描述如下:

module bidirection_io(inner_port,out_en,outer_port);

input out_en;

inout[7:0] inner_port;

inout[7:0] outer_port;

assign outer_port=(out_en==1)?inner_port:8’hzz;

assign inner_port=(out_en==0)?outer_port:8‘hzz;

endmodule

用VHDL語(yǔ)言描述雙向端口如下:

library ieee;

use IEEE.STD_LOGIC_1164.ALL;

entity bidirection_io is

port ( inner_port : inout std_logic_vector(7 downto 0);

out_en : in std_logic;

outer_port : inout std_logic_vector(7 downto 0) );

end bidirection_io;

architecture behavioral of bidirection_io is

begin

outer_port《=inner_port when out_en=’1‘ else (OTHERS=》’Z‘);

inner_port《=outer_port when out_en=’0‘ else (OTHERS=》’Z‘);

end behavioral;

仿真時(shí)需要驗(yàn)證雙向端口能正確輸出數(shù)據(jù),以及正確讀入數(shù)據(jù),因此需要驅(qū)動(dòng)out_en端口,當(dāng)out_en端口為1時(shí),testbench驅(qū)動(dòng) inner_port端口,然后檢查outer_port端口輸出的數(shù)據(jù)是否正確;當(dāng)out_en端口為0時(shí),testbench驅(qū)動(dòng) outer_port端口,然后檢查inner_port端口讀入的數(shù)據(jù)是否正確。由于inner_port和outer_port端口都是雙向端口(在 VHDL和Verilog語(yǔ)言中都用inout定義),因此驅(qū)動(dòng)方法與單向端口有所不同。

驗(yàn)證該雙向端口的testbench結(jié)構(gòu)如圖2所示。

這是一個(gè)self-checking testbench,可以自動(dòng)檢查仿真結(jié)果是否正確,并在Modelsim控制臺(tái)上打印出提示信息。圖中Monitor完成信號(hào)采樣、結(jié)果自動(dòng)比較的功能。

testbench的工作過(guò)程為

1)out_en=1時(shí),雙向端口處于輸出狀態(tài),testbench給inner_port_tb_reg信號(hào)賦值,然后讀取outer_port_tb_wire的值,如果兩者一致,雙向端口工作正常。

2)out_en=0時(shí),雙向端口處于輸如狀態(tài),testbench給outer_port_tb_reg信號(hào)賦值,然后讀取inner_port_tb_wire的值,如果兩者一致,雙向端口工作正常。

用Verilog代碼編寫(xiě)的testbench如下,其中使用了自動(dòng)結(jié)果比較,隨機(jī)化激勵(lì)產(chǎn)生等技術(shù)。

`timescale 1ns/10ps

module tb();

reg[7:0] inner_port_tb_reg;

wire[7:0] inner_port_tb_wire;

reg[7:0] outer_port_tb_reg;

wire[7:0] outer_port_tb_wire;

reg out_en_tb;

integer i;

initial

begin

out_en_tb=0;

inner_port_tb_reg=0;

outer_port_tb_reg=0;

i=0;

repeat(20)

begin

#50

i=$random;

out_en_tb=i[0]; //randomize out_en_tb

inner_port_tb_reg=$random; //randomize data

outer_port_tb_reg=$random;

end

end

//**** drive the ports connecting to bidirction_io

assign inner_port_tb_wire=(out_en_tb==1)?inner_port_tb_reg:8’hzz;

assign outer_port_tb_wire=(out_en_tb==0)?outer_port_tb_reg:8‘hzz;

//instatiate the bidirction_io module

bidirection_io bidirection_io_inst(.inner_port(inner_port_tb_wire),

.out_en(out_en_tb),

.outer_port(outer_port_tb_wire));

//***** monitor ******

always@(out_en_tb,inner_port_tb_wire,outer_port_tb_wire)

begin

#1;

if(outer_port_tb_wire===inner_port_tb_wire)

begin

$display(“ **** time=%t ****”,$time);

$display(“OK! out_en=%d”,out_en_tb);

$display(“OK! outer_port_tb_wire=%d,inner_port_tb_wire=%d”,

outer_port_tb_wire,inner_port_tb_wire);

end

else

begin

$display(“ **** time=%t ****”,$time);

$display(“ERROR! out_en=%d”,out_en_tb);

$display(“ERROR! outer_port_tb_wire != inner_port_tb_wire” );

$display(“ERROR! outer_port_tb_wire=%d, inner_port_tb_wire=%d”,

outer_port_tb_wire,inner_port_tb_wire);

end

end

endmodule

原文標(biāo)題:簡(jiǎn)談FPGA Verilog testbench

文章出處:【微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1656

    文章

    22292

    瀏覽量

    630404
  • 文件
    +關(guān)注

    關(guān)注

    1

    文章

    587

    瀏覽量

    25920

原文標(biāo)題:簡(jiǎn)談FPGA Verilog testbench

文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    蜂鳥(niǎo)E203在黑金XC7A200T型FPGA上的移植工作

    。 3、生成.bit文件并下板 根據(jù)自己手上的板子重新編寫(xiě)頂層模塊與約束文件,并生成.bit文件并燒錄進(jìn)FPGA開(kāi)發(fā)板
    發(fā)表于 10-31 07:54

    在Ubuntu 虛擬機(jī)中使用verilator對(duì)蜂鳥(niǎo)E203內(nèi)核進(jìn)行仿真

    =riscv32-unknown-elf- 4.編寫(xiě)第三方仿真模塊代碼,并將其集成到測(cè)試文件。 在riscv-tests的工程目錄下,創(chuàng)建
    發(fā)表于 10-27 08:22

    無(wú)開(kāi)發(fā)板在Linux系統(tǒng)下進(jìn)行E203內(nèi)核指令集測(cè)試以及跑分程序的測(cè)試

    /rv32ui-p-add.verilog. 3.指令集測(cè)試 進(jìn)入vsim文件夾,該點(diǎn)所有步驟都需要在vsim文件完成。 打開(kāi)README.md
    發(fā)表于 10-24 11:43

    利用蜂鳥(niǎo)內(nèi)核來(lái)實(shí)現(xiàn)指令的仿真模擬

    80 00。 仿真驗(yàn)證 寫(xiě)好測(cè)試文件的指令后,我們便可以運(yùn)行仿真,首先可以看到TCL輸出
    發(fā)表于 10-24 08:17

    如何利用Verilog HDL在FPGA上實(shí)現(xiàn)SRAM的讀寫(xiě)測(cè)試

    、建立讀寫(xiě)操作、配置地址計(jì)數(shù)器、模擬數(shù)據(jù)流、綜合與仿真以及下載到FPGA進(jìn)行硬件測(cè)試。通過(guò)實(shí)踐,掌握SRAM在FPGA的使用和基本讀寫(xiě)方法
    的頭像 發(fā)表于 10-22 17:21 ?3972次閱讀
    如何利用Verilog HDL在<b class='flag-5'>FPGA</b>上實(shí)現(xiàn)SRAM的讀寫(xiě)<b class='flag-5'>測(cè)試</b>

    E203軟件仿真下改變DTCM和ICTM容量的方法

    發(fā)生了變化,在運(yùn)行仿真測(cè)試時(shí),需要修改hbird-sdk生成測(cè)試代碼的配置文件,具體為修改hbird-sdkSoChbirdv2Boardddr200tSourceGCC下
    發(fā)表于 10-20 12:22

    聊聊FPGA的TDC原理

    今天我們不談高大上的物理學(xué),只聊聊如何在 FPGA ,用一串加法器和 D 觸發(fā)器,“數(shù)清楚時(shí)間”——這就是時(shí)間數(shù)字轉(zhuǎn)換器(TDC)的魅力。
    的頭像 發(fā)表于 09-02 15:15 ?966次閱讀
    聊聊<b class='flag-5'>FPGA</b><b class='flag-5'>中</b>的TDC原理

    電源控制器MCU硬件在環(huán)(HIL)測(cè)試方案

    統(tǒng)高速并行仿真需求。 ? 單模型分割運(yùn)行: 允許單模型分割 CPU 和 FPGA 獨(dú)立運(yùn)行,實(shí)現(xiàn)電力電子主電路、控制算法和PWM生成模塊的分布式仿真,提升大規(guī)模系統(tǒng)
    發(fā)表于 08-20 18:31

    【老法師】多核異構(gòu)處理器M核程序的啟動(dòng)、編寫(xiě)仿真

    有很多研究單片機(jī)的小伙伴在面對(duì)多核異構(gòu)處理器時(shí),可能會(huì)對(duì)多核的啟動(dòng)流程感到困惑——因?yàn)椴皇煜CC編程和GDB調(diào)試,所以也無(wú)法確定多核異構(gòu)處理器的程序是否能像單片機(jī)那樣方便地編寫(xiě)仿真。本篇
    的頭像 發(fā)表于 08-13 09:05 ?3654次閱讀
    【老法師】多核異構(gòu)處理器<b class='flag-5'>中</b>M核程序的啟動(dòng)、<b class='flag-5'>編寫(xiě)</b>和<b class='flag-5'>仿真</b>

    PCB的Gerber文件是什么

    Gerber 文件是用于電子設(shè)計(jì)自動(dòng)化(EDA),尤其是在印刷電路板(PCB)設(shè)計(jì)和制造過(guò)程,傳遞電路圖層、焊盤(pán)、走線、元件布局等信息的標(biāo)準(zhǔn)格式。它在PCB制造的各個(gè)環(huán)節(jié)扮演著至
    的頭像 發(fā)表于 08-01 09:20 ?3807次閱讀

    安泰:功率放大器在電場(chǎng)測(cè)試激勵(lì)的關(guān)鍵角色與前沿應(yīng)用

    一、引言 電場(chǎng)測(cè)試是指通過(guò)可控電場(chǎng)激勵(lì)被測(cè)物,并測(cè)量其響應(yīng),從而提取介電常數(shù)、擊穿強(qiáng)度、極化特性等關(guān)鍵參數(shù)的過(guò)程。無(wú)論是電磁兼容(EMC)試驗(yàn)、鐵電材料研究,還是高壓絕緣評(píng)估,都離不開(kāi)“高幅值、低
    的頭像 發(fā)表于 07-17 15:18 ?367次閱讀
    安泰:功率放大器在電場(chǎng)<b class='flag-5'>測(cè)試</b><b class='flag-5'>激勵(lì)</b><b class='flag-5'>中</b>的關(guān)鍵角色與前沿應(yīng)用

    利用EasyGo DeskSim創(chuàng)建實(shí)時(shí)仿真項(xiàng)目教程

    EasyGo DeskSim是一款配置型的實(shí)時(shí)仿真軟件,它允許用戶將 Simulink 算法程序快速部署到 EasyGo 實(shí)時(shí)仿真機(jī)上。實(shí)時(shí)仿真機(jī)支持選配不同的 FPGA 芯片和 IO
    的頭像 發(fā)表于 06-19 09:15 ?1036次閱讀
    利用EasyGo DeskSim創(chuàng)建實(shí)時(shí)<b class='flag-5'>仿真</b>項(xiàng)目教程

    安泰功率放大器在合成射流激勵(lì)的應(yīng)用

    實(shí)驗(yàn)名稱:功率放大器ATA-2082在合成射流激勵(lì)的應(yīng)用 實(shí)驗(yàn)內(nèi)容:合成射流激勵(lì)器利用壓電陶瓷膜片的振動(dòng)變形,往復(fù)壓縮扁圓柱形腔體的流體,在出口處形成合成射流。以信號(hào)發(fā)生器產(chǎn)生的
    的頭像 發(fā)表于 04-09 11:49 ?497次閱讀
    安泰功率放大器在合成射流<b class='flag-5'>激勵(lì)</b>器<b class='flag-5'>中</b>的應(yīng)用

    Verilog 測(cè)試平臺(tái)設(shè)計(jì)方法 Verilog FPGA開(kāi)發(fā)指南

    Verilog設(shè)計(jì)的仿真需求。 編寫(xiě)測(cè)試文件編寫(xiě)Verilog測(cè)試
    的頭像 發(fā)表于 12-17 09:50 ?1563次閱讀

    EasyGo 實(shí)時(shí)仿真丨DC-AC-MMC 實(shí)時(shí)仿真應(yīng)用

    通過(guò)IO模塊輸出真實(shí)的仿真結(jié)果,可滿足用戶在科研、教學(xué)或工業(yè)測(cè)試的多樣化需求。 本篇視頻主要介紹基于EasyGo DeskSim進(jìn)行的DC-AC-MMC五電平的實(shí)時(shí)
    發(fā)表于 12-11 09:50