發表文章

目前顯示的是有「nes」標籤的文章

Xilinx ZU5EV 上移植 MiSTer NES 核心

圖片
  長久以來復古遊戲除了實機外,最常看到的就是使用PC或是各種SoC搭配軟體模擬器,以現代的電子工程技術來說,模擬上個世紀的老主機、老電腦來說,可以說是游刃有餘。不過最近幾年以FPGA為核心的復古遊戲平台開始逐漸受到矚目。 與傳統軟體模擬器不同,FPGA 可以透過可程式化邏輯電路,重現早期遊戲主機的硬體架構,提供另一種實現復古遊戲系統的方式。 剛好,公司的工業檢測系統,同樣採用了 FPGA 作為核心,使用的是 Xilinx XCZU5EV(Zynq UltraScale+ MPSoC)。既然手邊就有這樣的硬體平台,外加現在有很多AI工具也可以協助 ,所以就來嘗試將經典的遊戲主機復刻在這些工業檢測系統中 。而眾多老遊戲主機中 , 不管 是情懷或網路上參考資料來說 ,俗稱紅白機的FC/NES是很好的選擇 。   Zynq UltraScale+ Zynq UltraScale+ 系列最有趣的地方,是一顆晶片裡包含了兩個完全不同的世界: PS(Processing System) :就是一般的 ARM  SoC,可以跑 Linux、開 USB、網路、DisplayPort 、檔案系統。 PL(Programmable Logic) :FPGA。並不是跑軟體程式,而是 描述什麼電路,就變成什麼電路 。 可以把它想成一塊「可以捏成任何晶片的黏土」。(當然還是有很多限制啦~ ) 兩部份靠晶片內部的 AXI 匯流排 溝通:PS 可以讀寫 PL 的暫存器,PL 也可以直接存取 DDR 記憶體, 還能發中斷給 PS。   由於這片工業檢測系統的電路板上並未有任何映像、USB相關的電路及端子接續到FPGA PL部份,所以分工很自然: PL 捏成一台紅白機,PS 負責餵 ROM、讀手把、把畫面和聲音送出去。 圖上三條彩色的線就是 PS 和 PL 之間的三種溝通方式: 藍線(M_AXI_HPM0) :PS 讀寫 PL 裡的控制暫存器(位址 0xA000_0000 )。 綠線(S_AXI_HP0) :PL 直接把畫好的畫面和聲音樣本寫進。 紅線(IRQ) :PL 畫完一幀就中斷通知 PS:「畫面好了,來拿!」 MiSTer MiSTer 是一個很有名的開源 FPGA 復古主機計畫。 跟一般的軟體模擬器不同,它是用硬體描述語言把當年的晶...