為什麼這篇Verilog readmemh鄉民發文收入到精華區:因為在Verilog readmemh這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者piliGTcat (貍貓)看板Electronics標題[問題] Verilog $readm...
各位前輩好,自學Verilog大約2個月
現在遇到的專案問題,是想要用$readmemh載入memory數值,但發現載入的數值是錯誤的
我寫了一支簡單的.v如下:
`timescale 1ns/100ps
`define DELAY #1
module mem_rd(rst_n, clk, data, data2);
input rst_n;
input clk;
output [15:0] data;
output [15:0] data2;
reg [15:0] data;
reg [15:0] data2;
reg [15:0] data_mem[0:1];
initial begin
$readmemh("test_data.mem", data_mem);
end
always @(posedge clk or negedge rst_n)
if (!rst_n)
data <= `DELAY 16'h1000;
else begin
data <= `DELAY data_mem[0][15:0];
end
always @(posedge clk or negedge rst_n)
if (!rst_n)
data2 <= `DELAY 16'h2000;
else begin
data2 <= `DELAY data_mem[1][15:0];
end
endmodule
在test_data.mem中的資料為:
f0f0,0f0f
預期執行結果為
initial 經過clk正緣觸發後
data 16'h1000 16'hf0f0
data2 16'h2000 16'h0f0f
經過測試,data & data2在clk正緣觸發後,數值皆為16'hffff
我的模擬環境比較特殊,是在SIMetrix/SIMPLIS v8.20a下跑的,
但SIMetrix應該是用VVP來處理verilog的部分
我覺得很有可能是我的verilog code犯了很蠢的錯誤,但找了很久還是沒有發現...
希望有前輩們可以提供一些建議,我再去試試看
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.249.65.183 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Electronics/M.1567290945.A.3FB.html
※ 編輯: piliGTcat (111.249.65.183 臺灣), 09/01/2019 06:36:38