Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

FPGA 開發:Quartus II 與 ISE 下 ROM 初始化文件(.mif/.hex/.coe)生成與仿真流程對比

編輯:Linux 教學

前言

FPGA 設計中 ROM/IP 核初始化文件格式因工具鏈異而異:Quartus II 使用 .mif/.hex,Vivado/ISE 使用 .coe。本文對比兩大主流工具鏈的 ROM 創建、初始化文件編寫、仿真模型生成、ModelSim 仿真全流程,特別說明 ISE 下 .coe → Core Generator → .mif 的雙重轉換機制。

一、Quartus II 流程(.mif/.hex 直驅)

  1. IP 目錄創建 ROM:Tools → IP Catalog → Memory Blocks → ROM:1-PORT/2-PORT,設定深度/寬度,勾選「Initialization file」,生成 .qip、.v/.vhd、.mif 模板。
  2. 編寫 .mif 文件:
    WIDTH=8;
    DEPTH=256;
    ADDRESS_RADIX=HEX;
    DATA_RADIX=HEX;
    CONTENT BEGIN
        00 : 1A;
        01 : 2B;
        ...
        FF : 00;
    END;
  3. 編譯綜合:Quartus 自動讀取 .mif 初始化 ROM 內容。
  4. ModelSim 仿真:將 .mif 複製到仿真工作目錄,編譯仿真模型(vsim -L altera_mf_ver),波形直接顯示 ROM 數據輸出。

二、ISE/Vivado 流程(.coe → Core Generator → .mif)

  1. Core Generator 創建 ROM:Tools → Core Generator → Block Memory Generator → Single Port ROM,設定參數,Coe File 欄位指定 .coe 文件。
  2. 編寫 .coe 文件(語法極簡):
    MEMORY_INITIALIZATION_RADIX=16;  // 16 進制
    MEMORY_INITIALIZATION_VECTOR=
    0A,
    0B,
    0C,
    ... ;  // 最後一個數據以分號結束,中間逗號/換行/空格皆可
  3. 生成結果:Core Generator 讀取 .coe,輸出 .ngc 網表、**自動生成 .mif 文件**(供 ModelSim 仿真用)、.v/.vhd 例化模板。
  4. ModelSim 仿真:將生成的 .mif 複製到仿真目錄,編譯 unisims_ver 庫,運行仿真。

三、關鍵差異總結表

項目Quartus IIISE / Vivado
初始化文件格式.mif / .hex.coe (Core Gen 內部再產 .mif)
文件語法關鍵字聲明 + BEGIN/END 區塊兩行頭 + 向量列表 + 分號結尾
仿真模型直接讀 .mifCore Gen 產 .mif 再讀
工具鏈特點一步到位,.mif 直饋綜合與仿真分兩階段:.coe→Core Gen→.mif

四、常見坑點與避雷

  1. .coe 向量行數必須等於 ROM 深度,否則 Core Generator 報錯或補零/截斷。
  2. 基數聲明必須匹配數據格式:RADIX=16 時數據必須為十六進制(0-9,A-F)。
  3. ModelSim 仿真必須將 .mif 放在工作目錄(或用 -L 指定庫路徑),否則 ROM 輸出全 X/0。
  4. Vivado 7 系+ 已支援直接在 Block Memory Generator GUI 中編輯初始化內容,可省去 .coe 手寫步驟。
  5. 跨工具鏈移植:.mif 格式相對通用,可手工轉換 .coe ↔ .mif,注意基數與地址對齊。

五、進階:SystemVerilog $readmemh 替代方案

現代仿真(VCS、Questa、Xcelium)支援 $readmemh("file.hex", mem); 直接讀取十六進制文本文件,無需工具專用格式,推薦用於純仿真驗證環境,綜合階段仍需工具專用格式。

總結

Quartus II 以 .mif 直通綜合與仿真,流程短平快;ISE/Vivado 經 .coe → Core Generator → .mif 雙重轉換,理解此鏈路是解決「仿真 ROM 全 0、綜合報錯」的關鍵。掌握兩種格式語法與轉換鏈路,可在異構工具鏈間無縫移植 ROM/IP 核。

Copyright © Windows教程網 All Rights Reserved