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

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

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

verilog系統(tǒng)函數(shù)

XL FPGA技術(shù)交流 ? 來源:XL FPGA技術(shù)交流 ? 作者:XL FPGA技術(shù)交流 ? 2024-07-05 11:48 ? 次閱讀

1、$fwrite 向文件寫入數(shù)據(jù)

$fdisplay


格式:$fwrite(fid,"%h%hn",dout_r1,dout_r2);

(1)fwrite是需要觸發(fā)條件的,需要手動添加換行。

(2)如果寫放文件的格式為%d,則認為是無符號數(shù),如下例: wire [27:0] data; fp_re = $fopen("dout.txt","w"); always @(posedge clk) begin if(dout_rdy == 1'b1) $fwrite(fileid,"%d",data); end

如果要輸出有符號數(shù)據(jù),需要將信號定義為有符號數(shù)。

eg:wire signed [27:0] data;

(3)輸出頂層文件中例化的信號(或下一級例化的文件的信號)

eg:$fwrite(file_id,"%d%12dn",u_coef_update.ekxdn_i,

u_coef_update.u_mult.mult_out);

在文件coef_update中定義的信號或REG ekxdn_i,如果要輸出有符號數(shù),

要在coef_update中把ekxdn_i定義為signed;

在文件coef_update文件中例化文件u_mult,輸出相應(yīng)的信號mult_out. 2、$fscanf 從文件中讀取數(shù)據(jù) (1)讀取格式為按行讀取,一行讀完之后再轉(zhuǎn)向下一行; (2)讀取也是需要觸發(fā)條件的; always @ ( posedge clk ) begin if(cnt_test == 3'd7) begin $fscanf(coef_file,"%d%d%d%d",coef01_i,coef01_q,coef02_i,coef02_q); $fscanf(ref_file,"%d%d%d%d",ref01_i,ref01_q,ref02_i,ref02_q); end end 3、$fopen 打開文件 (1) 在讀寫文件之前,一定要用fopen打開文件 (2)讀寫路徑的設(shè)置 file_id = $fopen("F:/modelsim/coef.txt"),注意這里的斜杠方向。

4、$random

random_function ::= $random [ ( seed ) ]

$random產(chǎn)生一個32位的有符號數(shù),seed可以是reg,integer,time類型

Example 1—Where b is greater than 0, the expression ($random % b) gives a number in the following range: [(-b+1): (b-1)].

產(chǎn)生–59 到59的數(shù): reg [23:0] rand; rand = $random % 60; Example 2—用連接符產(chǎn)生0 to 59: reg [23:0] rand; rand = {$random} % 60;

=====================================

操作實例:

=====================================

integer step_file; //文件要定義成integer

         //open the fileInitialBeginstep_file = $fopen("F:/Company/Src/txt/step.v","r");      file_ekxdn =$fopen("F:/Company/Src/txt/ekxdn.v","w");end always #5 clk = !clk;    //read data from file

   always @ ( posedge clk )//read from the file   begin      if( cnt_test[2:0] == 0 )               $fscanf(step_file,"%d%d",ref01_i,ref01_q);
    end

    //write data to file    wire signed[24:0]  ekxdn_i,ekxdn_q;    always @( posedge clk )    begin      if( cnt_test[2:0] == 3'b111 )   $fwrite(nx_coef_file,"%d%12dn",nx01_coef_i,nx01_coef_q);end

讀寫文件的數(shù)據(jù)格式如下:

75c7c9ca-3a67-11ef-82a0-92fbcf53809c.jpg? ? ? ? ? ? ? ? ? ? ?

以下點要注意:

1、可能由于加密的原因,讀不了txt文件,只能讀。V的了

2、打開文件的$fopen語句必須放在initial 中才可以

3、必須注意路徑中斜杠的方向“/”

4、相對路徑的設(shè)置(請參考積累中的“相對路徑與絕對路徑”)

5、如果讀入的是有符號數(shù),那么要把數(shù)據(jù)的類型定義為signed

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

    關(guān)注

    28

    文章

    1351

    瀏覽量

    110100
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4331

    瀏覽量

    62618
收藏 人收藏

    評論

    相關(guān)推薦

    22 15C 基于Verilog系統(tǒng)函數(shù)語法的按鍵抖動模擬與仿真 - 第1節(jié) #硬聲創(chuàng)作季

    fpga編程定時器函數(shù)代碼HT6221
    充八萬
    發(fā)布于 :2023年08月18日 23:44:37

    22 15C 基于Verilog系統(tǒng)函數(shù)語法的按鍵抖動模擬與仿真 - 第2節(jié)

    fpga編程定時器函數(shù)代碼HT6221
    充八萬
    發(fā)布于 :2023年08月18日 23:45:27

    22 15C 基于Verilog系統(tǒng)函數(shù)語法的按鍵抖動模擬與仿真 - 第3節(jié) #硬聲創(chuàng)作季

    fpga編程定時器函數(shù)代碼HT6221
    充八萬
    發(fā)布于 :2023年08月18日 23:46:17

    22 15C 基于Verilog系統(tǒng)函數(shù)語法的按鍵抖動模擬與仿真 - 第4節(jié) #硬聲創(chuàng)作季

    fpga編程定時器函數(shù)代碼HT6221
    充八萬
    發(fā)布于 :2023年08月18日 23:47:07

    22 15C 基于Verilog系統(tǒng)函數(shù)語法的按鍵抖動模擬與仿真 - 第5節(jié) #硬聲創(chuàng)作季

    fpga編程定時器函數(shù)代碼HT6221
    充八萬
    發(fā)布于 :2023年08月18日 23:47:57

    verilog常用系統(tǒng)函數(shù)以及例子

    verilog常用系統(tǒng)函數(shù)以及例子
    發(fā)表于 08-15 15:49

    Verilog的打印系統(tǒng)函數(shù)有哪幾類? 在使用Verilog時有哪些注意事項?

    Verilog的打印系統(tǒng)函數(shù)有哪幾類?在使用Verilog時有哪些注意事項?
    發(fā)表于 04-30 06:30

    Verilog HDL語言中任務(wù)與函數(shù)的比較

    其中,返回值的類型和位寬是可選項,如果缺省會返回一位寄存器類型數(shù)據(jù)。Verilog HDL認為函數(shù)的定義隱式地聲明了與函數(shù)同名的寄存器。函數(shù)的定義把
    的頭像 發(fā)表于 07-02 10:24 ?2340次閱讀

    剖析verilog2005的騷操作之對數(shù)函數(shù)

    小技巧分享: verilog下取對數(shù)其實可用$clog2這個系統(tǒng)函數(shù),和自己找代碼里面寫入function是同樣的效果,但是方便的多。這是verilog 2005就開始支持的標準,所以
    的頭像 發(fā)表于 10-09 15:29 ?4426次閱讀
    剖析<b class='flag-5'>verilog</b>2005的騷操作之對數(shù)<b class='flag-5'>函數(shù)</b>

    Verilog數(shù)字系統(tǒng)設(shè)計——任務(wù)和函數(shù)二(系統(tǒng)任務(wù)readmemb或readmemh)

    Verilog數(shù)字系統(tǒng)設(shè)計十任務(wù)和函數(shù)實驗2文章目錄Verilog數(shù)字系統(tǒng)設(shè)計十前言一、Verilog
    發(fā)表于 12-05 19:06 ?7次下載
    <b class='flag-5'>Verilog</b>數(shù)字<b class='flag-5'>系統(tǒng)</b>設(shè)計——任務(wù)和<b class='flag-5'>函數(shù)</b>二(<b class='flag-5'>系統(tǒng)</b>任務(wù)readmemb或readmemh)

    Verilog系統(tǒng)函數(shù)和邊沿檢測

    “ 本文主要分享了在Verilog設(shè)計過程中一些經(jīng)驗與知識點,主要包括Verilog仿真時常用的系統(tǒng)任務(wù)、雙向端口的使用(inout)、邊沿檢測”
    的頭像 發(fā)表于 03-15 13:34 ?2346次閱讀

    verilog函數(shù)和任務(wù)對比

    verilog中,函數(shù)和任務(wù)均用來描述共同的代碼段,并且在模式內(nèi)任意位置被調(diào)用,提高代碼效率,讓代碼更加的直觀,提高代碼可讀性。但是在實際使用的過程中,函數(shù)和任務(wù)也存在諸多的不同,下面將對而這進行
    的頭像 發(fā)表于 02-12 18:43 ?889次閱讀

    verilog function函數(shù)的用法

    Verilog 是一種硬件描述語言 (HDL),主要用于描述數(shù)字電子電路的行為和結(jié)構(gòu)。在 Verilog 中,函數(shù) (Function) 是一種用于執(zhí)行特定任務(wù)并返回一個值的可重用代碼塊。函數(shù)
    的頭像 發(fā)表于 02-22 15:49 ?5702次閱讀