Testbench編寫指南(2)文件的讀寫操作
讀取txt文件數(shù)據(jù)
將數(shù)據(jù)寫入txt文件
第2篇的題材是文件的讀寫控制,仿真時(shí)經(jīng)常需要從文件中讀取測(cè)試激勵(lì),還要將仿真結(jié)果存取在文件中供其它程序讀取調(diào)用。
讀取txt文件數(shù)據(jù)
示例代碼如下:
integer i; //數(shù)組坐標(biāo) reg [9:0] stimulus[1:data_num]; //數(shù)組形式存儲(chǔ)讀出的數(shù)據(jù) initial begin $readmemb("SinIn.txt", stimulus); //將txt文件中的數(shù)據(jù)存儲(chǔ)在數(shù)組中 i = 0; repeat(data_num) begin //重復(fù)讀取數(shù)組中的數(shù)據(jù) i = i + 1; din = stimulus[i]; #clk_period; //每個(gè)時(shí)鐘讀取一次 end end
用“數(shù)組”來(lái)表述Verilog HDL中的定義并不準(zhǔn)確,但對(duì)大多數(shù)人來(lái)說(shuō)應(yīng)該更好理解??梢詫timulus視作一個(gè)存儲(chǔ)器,[9:0]定義了數(shù)據(jù)的位寬,[1:data_num]定義了存儲(chǔ)器的深度。stimulus的定義應(yīng)該與txt文件中的數(shù)據(jù)相匹配。txt文件中每行存儲(chǔ)一個(gè)數(shù)據(jù),則上述定義對(duì)應(yīng)的是txt中存儲(chǔ)了data_num個(gè)數(shù)據(jù),每個(gè)數(shù)據(jù)的最大位寬為10bit。
??讀取二進(jìn)制格式的文件是用系統(tǒng)任務(wù)readmemb;讀取十六進(jìn)制格式文件使用readmemb;讀取十六進(jìn)制格式文件使用readmemh。其命令為$readmemb(“filename”, mem_name),將filename中的內(nèi)容讀取到mem_name中。
??注意filename文件路徑中應(yīng)該用反斜杠“/”,與windows系統(tǒng)中的文件路徑使用的“”不同。如果不指定路徑,向上面程序一樣直接寫文件名字,那么該文件必須和testbench文件在同一路徑下。
??repeat(n) begin … end中的內(nèi)容應(yīng)該根據(jù)設(shè)計(jì)的需要編寫。
將數(shù)據(jù)寫入txt文件
示例代碼如下:
integer file_out; initial begin file_out = $fopen("mixer_out.txt"); if (!file_out) begin $display("can't open file"); $finish; end end wire signed [19:0] dout_s = dout; wire rst_write = clk & rst_n; //復(fù)位期間不應(yīng)寫入數(shù)據(jù) always @ (posedge rst_write) $fdisplay(file_out, "%d", dout_s);
寫入文件需要先用$fopen系統(tǒng)任務(wù)打開文件,這個(gè)系統(tǒng)任務(wù)在打開文件的同時(shí)會(huì)清空文件,并返回一個(gè)句柄,如果句柄為0則表示打開文件失敗。
??如果原來(lái)不存在該文件,則會(huì)自動(dòng)創(chuàng)建該文件。
??打開文件之后便可以用得到的句柄和KaTeX parse error: Expected 'EOF', got '&' at position 55: …printf函數(shù)的用法很像。
上面的程…fdisplay`,都會(huì)在數(shù)據(jù)后插入一個(gè)換行符。
責(zé)任編輯:lq
-
存儲(chǔ)器
+關(guān)注
關(guān)注
39文章
7698瀏覽量
170377 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4401瀏覽量
66537 -
數(shù)組
+關(guān)注
關(guān)注
1文章
420瀏覽量
27056
原文標(biāo)題:Testbench編寫指南(2)文件的讀寫操作
文章出處:【微信號(hào):Open_FPGA,微信公眾號(hào):OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
如何利用Verilog HDL在FPGA上實(shí)現(xiàn)SRAM的讀寫測(cè)試
飛凌嵌入式ElfBoard-Linux系統(tǒng)基礎(chǔ)入門-文件操作相關(guān)shell命令
雙UFS4.1 4Lane,速度可達(dá)8.6GB/s,大型文件讀寫速率提升達(dá)70%+
SFUD操作w25q256,無(wú)法正常讀寫是什么原因?qū)е碌模?/a>
ESP32驅(qū)動(dòng)SPIFFS進(jìn)行文件操作
SI522/RC522讀卡器如何讀寫操作ST25TA64K NFC卡?
第二十五章 SDIO——SD卡讀寫測(cè)試
基于RK3576開發(fā)板的INI文件操作
在testbench中如何使用阻塞賦值和非阻塞賦值
【紫光同創(chuàng)盤古100Pro+開發(fā)板,MES2L676-100HP教程】盤古676系列——Modelsim的使用和do文件編寫
hyper-v 文件,Hyper-V文件管理:高效操作指南
ADS131A02開啟Hamming code下,該如何編寫讀寫命令函數(shù)代碼?
EEPROM輕量級(jí)的簡(jiǎn)易類文件的數(shù)據(jù)讀寫庫(kù):EEPROMFS
Windows連接P2Link的FTP服務(wù)——遠(yuǎn)程操作文件
編寫高效Testbench的指南和示例

Testbench編寫文件的讀寫操作
評(píng)論