勇敢的芯伴你玩轉(zhuǎn)Altera FPGA連載82:FPGA片內(nèi)ROM實(shí)例之功能仿真與在線調(diào)試 特權(quán)同學(xué),版權(quán)所有 配套例程和更多資料下載鏈接: http://pan.baidu.com/s/1i5LMUUD ![]() Quartus II工程中,點(diǎn)擊菜單“Tools à Run Simulation Tool à RTL Simulation”進(jìn)行仿真。當(dāng)然了,在這之前,這個工程的仿真測試腳本以及在Quartus II中的設(shè)置都已經(jīng)就緒了。 接著,如圖9.31、圖9.32和圖9.31所示,Modelsim中我們可以查看讀ROM的波形。 ![]() 圖9.31 ROM仿真波形1 ![]() 圖9.32 ROM仿真波形2 ![]() 圖9.33 ROM仿真波形3 這里需要注意,rom_addr出現(xiàn)新地址時,rom_data對應(yīng)的數(shù)據(jù)要延時一個時鐘周期才會出現(xiàn)。以最后一個圖為例,當(dāng)rom_addr = 0x01時,rom_data對應(yīng)的數(shù)據(jù)時0x22,比地址出現(xiàn)晚一個時鐘周期。 連接好下載線,給CY4開發(fā)板供電。 點(diǎn)擊菜單“Tools à SignalTap II Logic Analyzer”,進(jìn)入邏輯分析儀主頁面。 在右側(cè)的“JTAG China Configuration”窗口中,建立好USB Blaster的連接后,點(diǎn)擊“SOF Manager”后面的Programmer按鈕進(jìn)行下載。 如圖9.34所示,在“trigger”下面羅列了我們已經(jīng)添加好的需要觀察的信號,尤其是在rom_addr信號的TriggerConditions一列,我們設(shè)置了值00h,表示rom_addr的值為0時我們將觸發(fā)采集。另外,我們用鼠標(biāo)點(diǎn)擊選中Instance下面的唯一一個選項(xiàng),然后單擊InstanceManager后面的運(yùn)行按鈕,執(zhí)行一次觸發(fā)采集。 ![]() 圖9.34 觸發(fā)信號 波形如圖9.35、圖9.36所示。大家可以對照我們的ROM初始化文件rom_init.mif中對應(yīng)每個地址的數(shù)據(jù)與我們這里采集的是否一致。當(dāng)然了,大家必須注意,地址rom_addr所對應(yīng)的數(shù)據(jù)會相應(yīng)滯后2個時鐘周期后出現(xiàn)。例如,地址01h的數(shù)據(jù)不是11h,而是22h,以此類推。 ![]() 圖9.35 ROM實(shí)例在線邏輯分析儀采集波形1 ![]() 圖9.36 ROM實(shí)例在線邏輯分析儀采集波形2 |