0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

童年修复系列-SNES芯片组介绍及FPGA实现

OpenFPGA 来源:OpenFPGA 作者: 碎碎思 2021-10-12 14:43 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

超级任天堂1990年11月21日在日本开始发售,北美于1991年8月13日发售,欧洲于1992年4月11日发售。

超级任天堂,简称超任,是任天堂公司开发的家用游戏机。英文名称Super Famicom,简写SFC;在欧美洲销售的产品名为Super Nintendo Entertainment System,简写SNES。超级任天堂是任天堂红白机的后继机种。由于芯片组的复杂,中国鲜有“复制品”出现。

所以今天就来聊一聊SNES的芯片组及其特殊性,同时带来FPGA实现SNES的开源方案。

SNES和现今的PC芯片组很相似-CPU+显卡+声卡组成,同时SNES为了处理复杂的运算增加了一颗DSP芯片,下面就按照组成一个一个介绍。

下图是整机的框图:

c547de7e-2b09-11ec-82a8-dac502259ad0.png

整机的总线互联如下:

c5aa3bdc-2b09-11ec-82a8-dac502259ad0.png

CPU总线使用的是从6502继承过来的类ISA总线。

CPU

SNES 的 CPU (中央处理单元)是基于 65c816 的处理器-5A22《一块带给无数人年少欢乐的CPU,别说你没用过它》。虽然它的时钟速度大约为 21 MHz,但它的有效速度要低得多:3.58 MHz 用于快速访问(即 2100-00-4000-00 到 $3F 中的硬件寄存器 )。这种变速模式来源于6502有一个叫做“ZERO-PAGE”的寻址模式,但是进行了进一步扩展。

它是一个带有 24 位总线的 16 位处理器(16 位数据指针和 8 位组指针)。支持16MB的寻址空间。它有一个计算器和两个寄存器,可以在8位或16位模式之间切换。

然而,它具有许多寻址模式。它使用可变宽度指令。单个指令的宽度可以根据某些寄存器的长度而变化。

PPU

SNES有两个特制的图像处理器,主要运行于256×224的分辨率,最高支持512x448的分辨率,最大发色数32768色,最大同屏幕显示256色,最大活动块数为128个,并支持缩放、回旋、马赛克、半透明、窗口、光栅等特效。

声优芯片

辅助CPU采用一颗SPC700(索尼推出),是一个8位的CPU核心,很接近6502,但有一些不同的寻址模式和复数/分割指令,与一个定制的数字声音信号处理器共同集成在一个模块中。

SPC700和65c816通过一个4路双向通道(8位I/O端口)通讯。SPC700有自己独立的64K内存,可以用来存储声音采样或者从65c816下载的程序。CPU有一个内建的64K ROM开机码,用来通过65c816从游戏ROM里加载更多的复杂程序或者采样数据。这个ROM可以被关闭,以存储开机码的64K RAM来代替它的工作。

声音数字信号处理器(Sound DSP)只能播放压缩的声音采样。这种使用一固定比率的压缩算法,可以将16个16位声音采样压缩成8字节加一字节标题的形式。一个采样的最小单位是一个区块,区块的标题字节包含一个移位和一个过滤值(算法解压信息),再加上一个最后区块标记和一个循环标记。循环标记仅仅在最后区块标记存在时才使用。

在同一时间内,最多允许有8个声音通道同时播放声音采样,每个声音通道都有单独的左右声道音量和频率的调节。每个通道都可以定义一个硬件音量调节,并各自设置其回声效果,不过复合的回声效果必须受制于一个8路的FIR声音分流器。

一个通道的声音输出可以用来调整在数字序列上的下一个声音通道的频率。DSP也有一个白噪音源,可以播放一个替代采样数据的声音通道。所有的8个音源连同回声数据最后都混合到一个双通道的主音量控制下。DSP有3个间隔定事器,头两个运行在8KHz下,最后一个是64KHz。游戏通常只使用三个中的一个来输出一个恒定的音乐回放频率。

顺便一提SNES的声音处理芯片SPC700是PS之父久多良木负责设计的,所以说索尼大法好可不是白叫的。

声优芯片和整机总线如下图所示:

c6e89034-2b09-11ec-82a8-dac502259ad0.png

扩展芯片

数字信号处理器

SNES 的 S-DSP (数字信号处理器)用于向扬声器输出数据。产生的声音以 32 KHz 运行。S-DSP 使用比特率降低将所需的大小减少到原始大小的 9/16。S-DSP 是「自带鬼畜」,你输入一个PCM格式的音源进去,比如把FA乐器输入进去,然后往sound chip的寄存器里写入你要的包络,音调之类的,sound chip上的协处理器就会帮你处理输出,其实就和做音乐用的合成器播放软音源差不多。

DSP-1

DSP-1是一种主要用于数学和伪 3D 投影的芯片。这通常使用model 7。这是其中最常用的芯片。它也适用于 2D 旋转等。

SA-1

SA-1是 CPU 的更快版本,但在访问方面存在一些差异。它带有“I-RAM”和“BW-RAM”。它通常以大约 11 MHz 的速度运行,当访问与 CPU 相同的东西时,它的速度为 5 MHz。

GSU

GSU是著名的 SuperFX 芯片的技术名称。GSU 可用于绘制颜色。它在很多方面都比 SNES 的 CPU 更强大。它是一个伪RISC。它可用于绘制许多事物,例如精灵和对象的旋转或制作伪 3D 效果。

CX4是 Capcom 使用的芯片,它在三角和图形方面非常强大。它可以绘制线条、波浪和 3D 线框,旋转精灵并进行三角计算等。应用到的游戏包括:洛克人X2,洛克人X3 等卡普空街机移植作品。

SDD-1

数据解压芯片,解压使用 ASIC 无算压缩算法压制的数据,它活跃在 SFC 主 CPU 和 ROM之间,负责透明实时数据解压工作,针对一些资源太大的游戏,为了节省卡带空间成本而引入了该芯片,使用游戏包括:星之海洋,街霸 Alpha 2 等。

SNES FPGA实现

硬件

还是GameGirl硬件

开源地址:

https://github.com/suisuisi/gamegirl/tree/master/Hardware

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1655

    文章

    22283

    浏览量

    630183
  • 芯片
    +关注

    关注

    462

    文章

    53534

    浏览量

    458996
  • asic
    +关注

    关注

    34

    文章

    1269

    浏览量

    124047
  • 任天堂
    +关注

    关注

    0

    文章

    227

    浏览量

    19740

原文标题:SNES FPGA实现

文章出处:【微信号:Open_FPGA,微信公众号:OpenFPGA】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    98%效率+1650W输出!PI HiperLCS-2芯片组重塑两轮车充电器架构

    Integrations(PI)正式推出其新一代半桥LLC谐振控制器芯片组——HiperLCS-2系列,并于近日推出基于HiperLCS-2 LLC芯片组的电动两轮及三轮车充电器参考设计,为中高功率AC/DC转换应用树立了全新
    的头像 发表于 11-17 07:45 4552次阅读

    恩智浦发布集成EIS技术的电池管理芯片组,提升电池健康监测能力

    Ÿ 恩智浦推出业界首款基于硬件级同步机制的电化学阻抗谱(EIS)技术电池管理系统芯片组实现对高压电池内所有电芯的精准监测 Ÿ 将实验室级诊断能力引入汽车应用,提升电池健康监测水平,以先进监测功能
    发表于 10-30 17:24 1754次阅读
    恩智浦发布集成EIS技术的电池管理<b class='flag-5'>芯片组</b>,提升电池健康监测能力

    飞腾主板上的芯片组X100能起到什么作用?

    飞腾主板上的芯片组X100作为飞腾处理器的重要配套芯片,在计算机系统中承担着多元且关键的作用,主要体现在图形图像处理与接口扩展两大核心功能领域。
    的头像 发表于 07-28 09:25 470次阅读

    如何从 Microsoft Visual C++ 应用程序 (CyAPI.h) 访问 CYUSB3014 芯片组的 i2c 接口?

    1. 如何从 Microsoft Visual C++ 应用程序 (CyAPI.h) 访问 CYUSB3014 芯片组的 i2c 接口? 我在定制相机中使用 CYUSB3014。 当我开发我的相机
    发表于 05-19 07:21

    使用CY3014USB芯片组制作了一台相机,视频显示延迟怎么解决?

    我使用 CY3014USB 芯片组制作了一台相机,视频从相机流向计算机,显示屏上显示出精美的图像。 我注意到摄像机前发生的事情和信息在屏幕上更新/流动之间存在延迟。 延迟时间几乎持续 1 秒。 这
    发表于 05-06 09:11

    AD6600分集接收机芯片组技术手册

    ADI公司创新的分集接收机芯片组是一款紧凑的综合解决方案,提供两个中频至基带分集通道,片内集成自动增益控制、接收信号强度指示器、高分辨率数字控制振荡器(NCO)和数字滤波。 该芯片组内置ADI公司
    的头像 发表于 04-28 17:22 703次阅读
    AD6600分集接收机<b class='flag-5'>芯片组</b>技术手册

    FPGA新品】正点原子L22开发板来了!采用紫光的Logos系列FPGA,适合工业控制、图像处理、高速通信等领域!

    FPGA新品】正点原子L22开发板来了!采用紫光的Logos系列FPGA,适合工业控制、图像处理、高速通信等领域! ATK-L22开发板采用紫光的Logos系列
    发表于 04-21 17:28

    使用NXP 88W8801芯片组进行iPerf3测试期间TCP中的周期性丢包现象,怎么解决?

    硬件详细信息: 芯片组: 恩智浦 88W8801 (802.11b/g/n) 设计名称: 类型 2DS 零件编号: LBWA0ZZ2DS-688 平台: 基于 Vatics,采用 ARM7 架构
    发表于 04-02 06:53

    DLP4100芯片组发热的原因?怎么解决?

    技术支持您好!我用的DMD开发板如上图,采用是DLP4100系列芯片组,现在所遇到的问题:第一个是通过微镜加载二值图片,接收光强信息的探测器收集到电压数据整体会有偏上或者偏下的现象,导致实验
    发表于 02-24 08:35

    DLP300S,DLPC1438芯片组的配套固件从哪里下载?

    我们新设计采用DLP300S,DLPC1438,网站上找不到固件下载, 请问从哪里可以获取到此芯片组的固件?
    发表于 02-21 06:22

    锂电池不存电了怎么修复 磷酸铁锂电池修复方法全解析

    磷酸铁锂电池修复可以在一定程度上恢复其性能,延长使用寿命。均衡充电法、深度充放电法和脉冲修复法各有特点和适用场景。在实际操作中,要根据电池的具体情况选择合适的
    的头像 发表于 01-20 11:47 4760次阅读
    锂电池不存电了怎么<b class='flag-5'>修复</b> 磷酸铁锂电池<b class='flag-5'>组</b><b class='flag-5'>修复</b>方法全解析

    Ceva助力欧冶半导体升级ADAS芯片组

    的SensPro™ Vision AI DSP授权许可。此次合作,Ceva将为欧冶半导体的龙泉560系列高级驾驶辅助系统(ADAS)芯片组注入更强大的智能与安全性能。 Ceva的SensPro™ Vision
    的头像 发表于 01-15 14:31 912次阅读

    bq20z80-V110 bq29312A芯片组技术参考手册

    电子发烧友网站提供《bq20z80-V110 bq29312A芯片组技术参考手册.pdf》资料免费下载
    发表于 12-20 15:41 2次下载
    bq20z80-V110 bq29312A<b class='flag-5'>芯片组</b>技术参考手册

    FPGA驱动AD芯片实现芯片通信

    : FPGA芯片采用了altera的Cyclon IV E系列的“EP4CE10F17C8”,软件环境-Quartus-Ⅱ,采用的AD芯片为—AD-TLC549。 通过
    的头像 发表于 12-17 15:27 1517次阅读
    <b class='flag-5'>FPGA</b>驱动AD<b class='flag-5'>芯片</b>之<b class='flag-5'>实现</b>与<b class='flag-5'>芯片</b>通信

    主动芯片组参考设计指南

    电子发烧友网站提供《主动芯片组参考设计指南.pdf》资料免费下载
    发表于 12-09 15:27 0次下载
    主动<b class='flag-5'>芯片组</b>参考设计指南