淄博網(wǎng)站設計丨致信網(wǎng)絡網(wǎng)絡銷售 市場推廣
前言
Verilog HDL中提供了豐富的系統(tǒng)任務和系統(tǒng)函數(shù),用于對仿真環(huán)境、文件操作、時間控制等進行操作。(后續(xù)會進行補充)
正文
一、verilogHDL仿真詳解
`timescale 1ns/1ps
//時間單位為1ns,精度為1ps,
//編譯指令將時間單位與實際時間相關(guān)聯(lián)。
//該指令用于定義時延、仿真的單位和精度module tb_test_all_tb(); //仿真模塊名(不可至工程頂層) wire data_in; //仿真模塊輸入reg data_out; //仿真模塊輸出tb_test_all tb_test_all_inst( //被測試模塊名 #(.被測試模塊全局變量(目標值)) 被測試模塊名例化名.bin( data_in ), //被測試模塊輸入.bcd( data_out ) //被測試模塊輸出
); reg data_1; //測試中間變量(這里用于接收數(shù)據(jù))integer data_m; integer i = 0;initial begin //執(zhí)行一次(仿真初始化賦值)data_m = $fopen("data.txt"); //創(chuàng)建并打開文本文件(絕對路徑或相對路徑)#20000 //延時20000 * 1nsdata_1 = {$random}%256; //隨機產(chǎn)生0~256之間的數(shù)字,沒有{}時產(chǎn)生-256~256之間的數(shù)字$fclose(data_m); //關(guān)閉文件。forever #5 clk = ~clk; //每5個時間單位翻轉(zhuǎn)一次時鐘信號,生成時鐘信號$stop; //暫停仿真$finish; //仿真結(jié)束endalways@(*) begin //多次執(zhí)行(循環(huán)結(jié)構(gòu)等)$display("this is verilog"); //打印輸出字符$display("%t,%b",$time,data_in); //打印輸出data_in已%b的形式,并且輸出打印時間$monitor("%t,%b",$time,data_in); //持續(xù)監(jiān)控指定變量的值,并在變量值發(fā)生變化時顯示$fwrite(data_m, "%c", data_in); //向文件寫入數(shù)據(jù),將data_in已%c的格式寫入到data.txt$fdisplay(data_m, "%c", data_in);//向文件寫入數(shù)據(jù),將data_in已%c的格式寫入到data.txt$readmemb("data.txt",data_1); //從文件讀入數(shù)據(jù)讀入到data_1,readmemb二進制方式,readmemh十六進制$fscanf(data_m, "%h", data_in); // 使用fscanf讀取一個1位無符號整數(shù)從文件data.txt讀入到data_1endendmodule
參考資料
Verilog中的系統(tǒng)函數(shù)和系統(tǒng)任務