簡體   English   中英

與 Verilog 仿真實時通信

[英]realtime communicate with Verilog simulation

我希望與verilog模擬實時通信,就像我在某個地方輸入一個數字,verilog模擬可以讀取並顯示它。 所以我找到了一種使用讀/寫文件進行通信的方法。 首先,我編寫 ac 程序來掃描我在終端中輸入的內容,並實時更改特定文件中的數字。 然后我想如果verilog保留f​​scanf文件,它可以通信。 我寫了下面的 verilog 代碼,它可以工作但不是很好。 如果我分別輸入 1 ~ 9 一秒鍾,它會丟失大約六個數字。 我希望我輸入的所有數字都可以被 verilog 讀取。 我使用 ncverilog 進行編譯。 誰能告訴我如何修復我的 verilog 或者有另一種與 verilog 通信的方式。 非常感謝。

module testbench;
reg [100:0] t1;
reg [100:0] t2;
integer in;
initial begin
   t1=0;t2=0;
end
always begin
   in = $fopen("in.txt","r");
   $fscanf(in,"%d",t1);
   if(t1!=t2) begin
      $display("%d",t1);
      t2=t1;
   end
   $fclose(in);
end
endmodule

這當然是可能的,但我認為嘗試使用文件進行通信是錯誤的方法。 您肯定會遇到競爭條件和文件/IO 緩沖區的其他問題。

或者,您可以使用 Verilog PLI 讓您的 C 程序在某個事件(例如按下Enter鍵時)向仿真發送數據。

老問題,相關答案。 您可以在我的 uart sim 中看到雙向文件 io。

https://github.com/Johnlon/spam-1/blob/master/verilog/uart/um245r.v

在 unix 上,您可以使用 unix 域套接字並像終端一樣處理一些工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM