超級(jí)任天堂1990年11月21日在日本開始發(fā)售,北美于1991年8月13日發(fā)售,歐洲于1992年4月11日發(fā)售。
超級(jí)任天堂,簡(jiǎn)稱超任,是任天堂公司開發(fā)的家用游戲機(jī)。英文名稱Super Famicom,簡(jiǎn)寫SFC;在歐美洲銷售的產(chǎn)品名為Super Nintendo Entertainment System,簡(jiǎn)寫SNES。超級(jí)任天堂是任天堂紅白機(jī)的后繼機(jī)種。由于芯片組的復(fù)雜,中國(guó)鮮有“復(fù)制品”出現(xiàn)。
所以今天就來聊一聊SNES的芯片組及其特殊性,同時(shí)帶來FPGA實(shí)現(xiàn)SNES的開源方案。
SNES和現(xiàn)今的PC芯片組很相似-CPU+顯卡+聲卡組成,同時(shí)SNES為了處理復(fù)雜的運(yùn)算增加了一顆DSP芯片,下面就按照組成一個(gè)一個(gè)介紹。
下圖是整機(jī)的框圖:
整機(jī)的總線互聯(lián)如下:
CPU總線使用的是從6502繼承過來的類ISA總線。
CPU
SNES 的 CPU (中央處理單元)是基于 65c816 的處理器-5A22《一塊帶給無數(shù)人年少歡樂的CPU,別說你沒用過它》。雖然它的時(shí)鐘速度大約為 21 MHz,但它的有效速度要低得多:3.58 MHz 用于快速訪問(即 2100-00-4000-00 到 $3F 中的硬件寄存器 )。這種變速模式來源于6502有一個(gè)叫做“ZERO-PAGE”的尋址模式,但是進(jìn)行了進(jìn)一步擴(kuò)展。
它是一個(gè)帶有 24 位總線的 16 位處理器(16 位數(shù)據(jù)指針和 8 位組指針)。支持16MB的尋址空間。它有一個(gè)計(jì)算器和兩個(gè)寄存器,可以在8位或16位模式之間切換。
然而,它具有許多尋址模式。它使用可變寬度指令。單個(gè)指令的寬度可以根據(jù)某些寄存器的長(zhǎng)度而變化。
PPU
SNES有兩個(gè)特制的圖像處理器,主要運(yùn)行于256×224的分辨率,最高支持512x448的分辨率,最大發(fā)色數(shù)32768色,最大同屏幕顯示256色,最大活動(dòng)塊數(shù)為128個(gè),并支持縮放、回旋、馬賽克、半透明、窗口、光柵等特效。
聲優(yōu)芯片
輔助CPU采用一顆SPC700(索尼推出),是一個(gè)8位的CPU核心,很接近6502,但有一些不同的尋址模式和復(fù)數(shù)/分割指令,與一個(gè)定制的數(shù)字聲音信號(hào)處理器共同集成在一個(gè)模塊中。
SPC700和65c816通過一個(gè)4路雙向通道(8位I/O端口)通訊。SPC700有自己獨(dú)立的64K內(nèi)存,可以用來存儲(chǔ)聲音采樣或者從65c816下載的程序。CPU有一個(gè)內(nèi)建的64K ROM開機(jī)碼,用來通過65c816從游戲ROM里加載更多的復(fù)雜程序或者采樣數(shù)據(jù)。這個(gè)ROM可以被關(guān)閉,以存儲(chǔ)開機(jī)碼的64K RAM來代替它的工作。
聲音數(shù)字信號(hào)處理器(Sound DSP)只能播放壓縮的聲音采樣。這種使用一固定比率的壓縮算法,可以將16個(gè)16位聲音采樣壓縮成8字節(jié)加一字節(jié)標(biāo)題的形式。一個(gè)采樣的最小單位是一個(gè)區(qū)塊,區(qū)塊的標(biāo)題字節(jié)包含一個(gè)移位和一個(gè)過濾值(算法解壓信息),再加上一個(gè)最后區(qū)塊標(biāo)記和一個(gè)循環(huán)標(biāo)記。循環(huán)標(biāo)記僅僅在最后區(qū)塊標(biāo)記存在時(shí)才使用。
在同一時(shí)間內(nèi),最多允許有8個(gè)聲音通道同時(shí)播放聲音采樣,每個(gè)聲音通道都有單獨(dú)的左右聲道音量和頻率的調(diào)節(jié)。每個(gè)通道都可以定義一個(gè)硬件音量調(diào)節(jié),并各自設(shè)置其回聲效果,不過復(fù)合的回聲效果必須受制于一個(gè)8路的FIR聲音分流器。
一個(gè)通道的聲音輸出可以用來調(diào)整在數(shù)字序列上的下一個(gè)聲音通道的頻率。DSP也有一個(gè)白噪音源,可以播放一個(gè)替代采樣數(shù)據(jù)的聲音通道。所有的8個(gè)音源連同回聲數(shù)據(jù)最后都混合到一個(gè)雙通道的主音量控制下。DSP有3個(gè)間隔定事器,頭兩個(gè)運(yùn)行在8KHz下,最后一個(gè)是64KHz。游戲通常只使用三個(gè)中的一個(gè)來輸出一個(gè)恒定的音樂回放頻率。
順便一提SNES的聲音處理芯片SPC700是PS之父久多良木負(fù)責(zé)設(shè)計(jì)的,所以說索尼大法好可不是白叫的。
聲優(yōu)芯片和整機(jī)總線如下圖所示:
擴(kuò)展芯片
數(shù)字信號(hào)處理器
SNES 的 S-DSP (數(shù)字信號(hào)處理器)用于向揚(yáng)聲器輸出數(shù)據(jù)。產(chǎn)生的聲音以 32 KHz 運(yùn)行。S-DSP 使用比特率降低將所需的大小減少到原始大小的 9/16。S-DSP 是「自帶鬼畜」,你輸入一個(gè)PCM格式的音源進(jìn)去,比如把FA樂器輸入進(jìn)去,然后往sound chip的寄存器里寫入你要的包絡(luò),音調(diào)之類的,sound chip上的協(xié)處理器就會(huì)幫你處理輸出,其實(shí)就和做音樂用的合成器播放軟音源差不多。
DSP-1
DSP-1是一種主要用于數(shù)學(xué)和偽 3D 投影的芯片。這通常使用model 7。這是其中最常用的芯片。它也適用于 2D 旋轉(zhuǎn)等。
SA-1
SA-1是 CPU 的更快版本,但在訪問方面存在一些差異。它帶有“I-RAM”和“BW-RAM”。它通常以大約 11 MHz 的速度運(yùn)行,當(dāng)訪問與 CPU 相同的東西時(shí),它的速度為 5 MHz。
GSU
GSU是著名的 SuperFX 芯片的技術(shù)名稱。GSU 可用于繪制顏色。它在很多方面都比 SNES 的 CPU 更強(qiáng)大。它是一個(gè)偽RISC。它可用于繪制許多事物,例如精靈和對(duì)象的旋轉(zhuǎn)或制作偽 3D 效果。
CX4是 Capcom 使用的芯片,它在三角和圖形方面非常強(qiáng)大。它可以繪制線條、波浪和 3D 線框,旋轉(zhuǎn)精靈并進(jìn)行三角計(jì)算等。應(yīng)用到的游戲包括:洛克人X2,洛克人X3 等卡普空街機(jī)移植作品。
SDD-1
數(shù)據(jù)解壓芯片,解壓使用 ASIC 無算壓縮算法壓制的數(shù)據(jù),它活躍在 SFC 主 CPU 和 ROM之間,負(fù)責(zé)透明實(shí)時(shí)數(shù)據(jù)解壓工作,針對(duì)一些資源太大的游戲,為了節(jié)省卡帶空間成本而引入了該芯片,使用游戲包括:星之海洋,街霸 Alpha 2 等。
SNES FPGA實(shí)現(xiàn)
硬件
還是GameGirl硬件
開源地址:
https://github.com/suisuisi/gamegirl/tree/master/Hardware
編輯:jq
-
FPGA
+關(guān)注
關(guān)注
1629文章
21748瀏覽量
603906 -
芯片
+關(guān)注
關(guān)注
456文章
50889瀏覽量
424231 -
asic
+關(guān)注
關(guān)注
34文章
1202瀏覽量
120528 -
任天堂
+關(guān)注
關(guān)注
0文章
226瀏覽量
19044
原文標(biāo)題:SNES FPGA實(shí)現(xiàn)
文章出處:【微信號(hào):Open_FPGA,微信公眾號(hào):OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論