Xilinx ZU5EV 上移植 MiSTer Genesis(Mega Drive)核心
上一篇把紅白機(NES/FC)搬進了公司的工業檢測系統板(Rockcoretek RC-FMC-5 嵌入式 FPGA 開發套件 Xilinx XCZU5EV),這次換成 SEGA 在 1988 年推出的 16 位元主機 Mega Drive (北美 Genesis )。 實機畫面:ZU5EV 的 PL 裡跑著 Sonic the Hedgehog 跟紅白機比起來,Mega Drive 性能強很多: Motorola 68000 (7.67 MHz)當主 CPU Zilog Z80 (3.58 MHz)當音效 CPU VDP (Video Display Processor):兩層捲軸背景加 sprite,H40 模式 320×224 Yamaha YM2612 :6 聲道 FM 合成,第 6 聲道可以切成 8-bit DAC 播 PCM 取樣 TI SN76489 (PSG):3 個方波加 1 個雜訊 兩顆 CPU、兩顆音源晶片,還有一顆很會 DMA 的 VDP。這次一樣挑 MiSTer 社群打磨多年的 Genesis_MiSTer 核心(GPL-3.0)。 有了上一篇的經驗,這次輕鬆很多。Zynq UltraScale+ 的 PS / PL 分工、AXI 暫存器介面、中斷、PL 把畫面和聲音寫進 DDR、xsim 先模擬再上板、PetaLinux 建置這些基礎,跟紅白機幾乎一模一樣,有興趣的可以參考上一篇〈 Xilinx ZU5EV 上移植 MiSTer NES 核心 〉。跟 AI 協作時,讓它參考 NES 的架構、把核心換成 Genesis_MiSTer,暫存器、AXI 寫入引擎、中斷、 mdctl 的主迴圈、模擬的 testbench 這些外殼都能直接沿用,要花心思的只剩 Mega Drive 自己特有的部分。實際的進度是:晚上八點多開始,一個半小時 Vivado 就建置通過,但 AI 一個 frame 一個 frame 地跑模擬,一路跑到隔天早上。 整體架構 分工的原則跟紅白機一樣: PL 捏成一台 Mega Drive 的電路,PS 負責餵 ROM、讀手把、把聲音送出去 。PS 端的程式叫 mdctl 。 PL 架構圖 卡匣 ROM 放在 DDR,前面擋一層快取 紅白機的卡匣很小,上一篇直接把 PRG / CHR 全部...