FPGA 設計中 ROM/IP 核初始化文件格式因工具鏈異而異:Quartus II 使用 .mif/.hex,Vivado/ISE 使用 .coe。本文對比兩大主流工具鏈的 ROM 創建、初始化文件編寫、仿真模型生成、ModelSim 仿真全流程,特別說明 ISE 下 .coe → Core Generator → .mif 的雙重轉換機制。
.qip、.v/.vhd、.mif 模板。WIDTH=8;
DEPTH=256;
ADDRESS_RADIX=HEX;
DATA_RADIX=HEX;
CONTENT BEGIN
00 : 1A;
01 : 2B;
...
FF : 00;
END;
vsim -L altera_mf_ver),波形直接顯示 ROM 數據輸出。MEMORY_INITIALIZATION_RADIX=16; // 16 進制
MEMORY_INITIALIZATION_VECTOR=
0A,
0B,
0C,
... ; // 最後一個數據以分號結束,中間逗號/換行/空格皆可
.ngc 網表、**自動生成 .mif 文件**(供 ModelSim 仿真用)、.v/.vhd 例化模板。unisims_ver 庫,運行仿真。| 項目 | Quartus II | ISE / Vivado |
|---|---|---|
| 初始化文件格式 | .mif / .hex | .coe (Core Gen 內部再產 .mif) |
| 文件語法 | 關鍵字聲明 + BEGIN/END 區塊 | 兩行頭 + 向量列表 + 分號結尾 |
| 仿真模型 | 直接讀 .mif | Core Gen 產 .mif 再讀 |
| 工具鏈特點 | 一步到位,.mif 直饋綜合與仿真 | 分兩階段:.coe→Core Gen→.mif |
RADIX=16 時數據必須為十六進制(0-9,A-F)。-L 指定庫路徑),否則 ROM 輸出全 X/0。現代仿真(VCS、Questa、Xcelium)支援 $readmemh("file.hex", mem); 直接讀取十六進制文本文件,無需工具專用格式,推薦用於純仿真驗證環境,綜合階段仍需工具專用格式。
Quartus II 以 .mif 直通綜合與仿真,流程短平快;ISE/Vivado 經 .coe → Core Generator → .mif 雙重轉換,理解此鏈路是解決「仿真 ROM 全 0、綜合報錯」的關鍵。掌握兩種格式語法與轉換鏈路,可在異構工具鏈間無縫移植 ROM/IP 核。