童年修复系列-SNES芯片组介绍及FPGA实现-程序员宅基地

技术标签: python  java  编程语言  人工智能  大数据  

14a15daa4fbf6b5ddf55ce4a58f11b62.png

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

95a0aeaee7a1a049404d460028ad5efe.png

超级任天堂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芯片,下面就按照组成一个一个介绍。

下图是整机的框图:

bcfdef65f0d0a205751a66f78b96e824.png

整机的总线互联如下:

2786d6850cdc5dec9fd72dfc25cc18a1.png

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

CPU

SNES 的 CPU (中央处理单元)是基于 65c816 的处理器-5A22《一块带给无数人年少欢乐的CPU,别说你没用过它在00-中的硬件寄存器);用于慢速访问(即和)和用于非常慢的访问(即4000-在00 到 $3F 中的硬件寄存器 )。这种变速模式来源于6502有一个叫做“ZERO-PAGE”的寻址模式,但是进行了进一步扩展。

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

f0a48d3f296b2d58ff62e63c579ad10b.png

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

PPU

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

1275cf72e4fffc18f1b778d14cfe35f3.png

声优芯片

辅助CPU采用一颗SPC700(索尼推出),是一个8位的CPU核心,很接近6502,但有一些不同的寻址模式和复数/分割指令,与一个定制的数字声音信号处理器共同集成在一个模块中。SPC700和65c816通过一个4路双向通道(8位I/O端口)通讯。SPC700有自己独立的64K内存,可以用来存储声音采样或者从65c816下载的程序。CPU有一个内建的64K ROM开机码,用来通过65c816从游戏ROM里加载更多的复杂程序或者采样数据。这个ROM可以被关闭,以存储开机码的64K RAM来代替它的工作。

d072f3e1dafce4e0e8486e75737f9527.png

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

在同一时间内,最多允许有8个声音通道同时播放声音采样,每个声音通道都有单独的左右声道音量和频率的调节。每个通道都可以定义一个硬件音量调节,并各自设置其回声效果,不过复合的回声效果必须受制于一个8路的FIR声音分流器。一个通道的声音输出可以用来调整在数字序列上的下一个声音通道的频率。DSP也有一个白噪音源,可以播放一个替代采样数据的声音通道。所有的8个音源连同回声数据最后都混合到一个双通道的主音量控制下。DSP有3个间隔定事器,头两个运行在8KHz下,最后一个是64KHz。游戏通常只使用三个中的一个来输出一个恒定的音乐回放频率。

27d0096e4cd64ad6bb422b4c15f42693.png

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

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

3c955133fe7e0392114734480acc4fca.png

扩展芯片

数字信号处理器

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

DSP-1

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

f0eff41988409eb1b81b46e44a864578.png 5a1f52536e3f936f8f80ba66e50723f8.png ab32af20ddb7235fc8c7c1d1cc22db7a.png

SA-1

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

GSU

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

f1a4c5823ae3a20a73fbd93089b7ad30.png 05d64d5dcff200fa87937504fd6ff0c4.png

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

bfe10d1d79ba592f47f8323da329c678.png

SDD-1

85d46e6bf3e0a457e4a39a55a15369c4.png

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

SNES FPGA实现

硬件

还是GameGirl硬件

d046bf682f03c1490ca8623b503cb9bd.png 2cfb69f40898b06c123dabab1094975f.png

开源地址:

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

FPGA程序

6c33d2c8cca1394e1ee38f3e9116870e.png

上面的CPU和SPC700都已经介绍过了。

chip文件夹下还有上面介绍的芯片,组成芯片组:

16b4d9354d5a1763fd5d4dcc73527089.png

开源地址:

https://github.com/suisuisi/gamegirl/tree/master/CoreCPU/SNES

使用方法:

将编译产生的.rbf文件拷贝到SD卡的根目录:

9c1b61314096c76d8f38eb1b90a46d73.png

产生的二进制文件在下面路径:

https://github.com/suisuisi/gamegirl/tree/master/Binaries/cores/snes

然后将游戏同步放到SD卡里,通过OSD就可以选择游戏,注意游戏启动及中间过渡阶段会有黑屏,所以需要等待。。。

视频

时间仓促还没来得及拍视频,后续补上。

c5c22231cd3d63bc716bba5b803a2c87.gif

NOW

f682f0c1e6b8a59ba804de2126c88b3f.png

学习Xilinx FPGA最好的资料其实就是官方手册,下表总结了部分手册的主要介绍内容,关注我,持续更新中......


文件名 主标题 内容简单介绍 是否有中文版

UG476 7 Series FPGAs GTX/GTH  Transceivers GTX和GTH介绍,PCIe、serdes等学习必备

UG471 7 Series FPGAs SelectIO Resources 描述 7 系列 FPGA 中可用的 SelectIO资源。

UG1114 PetaLinux Tools Documentaton PetaLinux 工具文档 参考指南 是,V2019.2

UG949 UltraFAST 设计方法指南(适用于 Vivado  Design Suite) 赛灵思 UltraFast  设计方法是用于为当今器件优化设计进程的一套最佳实践。这些设计的规模与复杂性需要执行特定的步骤与设计任务,从而确保设计每一个阶段的成功开展。依照这些步骤,并遵循最佳实践,将帮助您以最快的速度和最高的效率实现期望的设计目标 是,V2018.1
IP手册 pg057 FIFO Generator FIFO生成器IP使用手册
pg104 Complex Multiplier 复数乘法器IP使用手册
pg122 RAM-Based Shift Register  移位寄存器IP使用手册

ecea8c638f3ab0429ff3b56227411318.png

推荐阅读

【Vivado那些事】如何查找官网例程及如何使用官网例程

【Vivado使用误区与进阶】总结篇

【Vivado那些事】Vivado中常用的快捷键(二)其他常用快捷键

SystemVerilog数字系统设计_夏宇闻 PDF

图书推荐|ARM Cortex-M0 全可编程SoC原理及实现

简谈:如何学习FPGA

Github 上有哪些优秀的 VHDL/Verilog/FPGA 项目

AD936x+ZYNQ搭建收音机(一)

AD936x+ZYNQ搭建OpenWIFI

无招胜有招-Vivado非工程模式下的详细设计

面试中经常会遇到的FPGA基本概念,你会几个?

推荐一些可以获取免费的国外的原版书籍(电子版)网站

FPGA 的重构

浅析FPGA局部动态可重构技术

ISP(图像信号处理)算法概述、工作原理、架构、处理流程

国产CPU概括

从电子游戏历史看IC发展的助推剂

80年代电子游戏及电脑游戏的发展历史

PCIe总线的基础知识

万字长文带你回顾电子游戏的七十多年历史(完整版)

FPGA中异步复位,同步释放的理解

OpenFPGA系列文章总结

用Verilog设计一个16 位 RISC 处理器

介绍一些新手入门FPGA的优秀网站(新增)

Verilog数字系统基础设计-CR

Verilog数字系统基础设计-奇偶校验

建立和保持时间及时序简单理解

(Xilinx)FPGA中LVDS差分高速传输的实现

Xilinx Multiboot实例演示

高速串行通信常用的编码方式-8b/10b编码/解码
Verilog计时(微秒、毫秒和秒)脉冲的产生及同步整形电路

再说System Verilog 与 Verilog 的关系

图书推荐|一本图像/视频处理的强大工具书

Verilog HDL-同步技术

再说System Verilog 与 Verilog 的关系

数模混合信号建模语言Verilog-AMS

Intel/Altera 系列FPGA简介

一块带给无数人年少欢乐的CPU,别说你没用过它

Verilog在编写第一行代码之前

【例说】Verilog HDL 编译器指令,你见过几个?

穿越时空的爱恋-Z80 CPU的前世今生

【Vivado】那些事儿-汇总篇

古老CPU启示录-晶体管之路

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Pieces_thinking/article/details/120715260

智能推荐

java如何得到浏览器的Ip_java获取浏览器ip-程序员宅基地

文章浏览阅读1.7k次。java得到浏览器ip//获取请求IPString ip = request.getHeader ("x-forwarded-for");if (ip ==null || ip.length() ==0 || "unknown".equalsIgnoreCase (ip)) { ip = request.getHeader ("Proxy-Client-IP");}if (ip ==..._java获取浏览器ip

实景三维可视化管理平台助力提升景区运营管理水平_三维景区平台年度绩效目标-程序员宅基地

文章浏览阅读195次。利用数字孪生技术打造的实景三维可视化管理平台,对各个智能化系统进行集成及历史数据技术的挖掘和分析,提高了数据信息的应用能力和反馈能力,同时也提升了景区的运营管理水平和决策能力。_三维景区平台年度绩效目标

IBM服务器引导盘serverguide 下载_serverguide下载-程序员宅基地

文章浏览阅读2.4w次,点赞4次,收藏25次。ServerGuide 下载 1、ibm_utl_sguide_8.42_anyos_x86-64 http://pan.baidu.com/s/1hq43QSk 2、ibm_utl_sguide_9.22_x86-64 http://pan.baidu.com/s/1mgp2O_serverguide下载

信息学奥赛一本通 1100:金币(信奥1100)_清清将巧克力作为工资,发放给忠诚的奥赛选手。第一天,奥赛选手收到一枚巧克力;之-程序员宅基地

文章浏览阅读801次。信息学奥赛一本通 1100:金币国王将金币作为工资,发放给忠诚的骑士。第1天,骑士收到一枚金币;之后两天(第2天和第3天)里,每天收到两枚金币;之后三天(第4、5、6天)里,每天收到三枚金币;之后四天(第7、8、9、10天)里,每天收到四枚金币……这种工资发放模式会一直这样延续下去:当连续n天每天收到n枚金币后,骑士会在之后的连续n+1天里,每天收到n+1枚金币(n为任意正整数)。_清清将巧克力作为工资,发放给忠诚的奥赛选手。第一天,奥赛选手收到一枚巧克力;之

Kubeflow 快速入门-程序员宅基地

文章浏览阅读480次。2019独角兽企业重金招聘Python工程师标准>>> ..._kubeflow 入门到精通

2021-09-27-程序员宅基地

文章浏览阅读37次。一些名词解释1.JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。它是一种用于构建在 Java 平台上发布的应用程序、applet 和组件的开发环境。2.环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数,如:临时文件夹位置和系统文件夹位置等。环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或

随便推点

oracle取字段部分内容,Oracle数据库取出部分字段的方法-程序员宅基地

文章浏览阅读1.8k次。Oracle数据库取出部分字段的方法发布时间:2020-06-16 13:39:51来源:亿速云阅读:102作者:鸽子如:表所有字段:背景色为要取出的字段unit表:num, bm, dw_name, dw_name_pre, dw_codework表: name, do, check, isdel, writetime, qy_code其中,unit表dw_code == work表qy_cod..._oracle中如果数据量太大如何取别的表的字段

java计算机毕业设计HTML5历史车轮—汴京网站源码+mysql数据库+系统+lw文档+部署-程序员宅基地

文章浏览阅读74次。java计算机毕业设计HTML5历史车轮—汴京网站源码+mysql数据库+系统+lw文档+部署。springcloud基于微服务架构的乐居租房网的设计与实现。ssm+sqlserver中小型连锁超市配送中心库存管理系统。springboot物流车辆规费管理系统的设计与实现。springboot在线问诊系统的设计与实现。ssm基于移动端的校园请假系统的设计与实现。ssm基于java的钢材出入库管理系统。

MySQL约束_怎么让数据库 不是null-程序员宅基地

文章浏览阅读927次,点赞2次,收藏3次。MySQL为了让我们的表结构里面的数据完整性一致性非常强,mysql是给我们提供强约束的,在建表的时候就要把约束建立好。_怎么让数据库 不是null

QT调用C#的Dll_qt调用c#dll-程序员宅基地

文章浏览阅读4.7k次,点赞12次,收藏41次。1:环境:VS2017 QT 5.12.4(1)说明:Qt是不能直接调用C#生成的dll,需要将C#的编写的dll通过CLR编译成lib(2)检查VS环境是否装好:看下图勾选部分是否安装,没有安装需及时安装_qt调用c#dll

java计算机毕业设计口红专卖网站源码+mysql数据库+系统+lw文档+部署-程序员宅基地

文章浏览阅读88次。java计算机毕业设计口红专卖网站源码+mysql数据库+系统+lw文档+部署。ssm基于SSM+VUE技术的小区车辆档案车位管理系统设计与实现。jsp网上花卉销售系统的设计与实现sqlserver。springboot烟草经销平台的设计与实现。jsp基于web的面向公众的食品安全知识系统。springboot智能推荐的卫生健康系统。ssn基于SSM宠物店管理系统的设计与实现。

超详细的Java入门到精通完整学习教程,学Java一定得收藏!_java教程-程序员宅基地

文章浏览阅读1.9k次。从 1995 年第一个版本发布到现在,Java 语言已经在跌宕起伏中走过了 26 年,最新的 Java 版本也已经迭代到 Java 16。java是有一个庞大的生态系统,它的覆盖范围非常广,而且已经连续十几年位居开发语言的榜首,所以java是相对于其他语言来说,非常稳定的。JAVA市场java有非常广泛的应用市场,它的生态系统几乎涵盖了目前市面上所有的软硬件,java几乎是万能的,你能想到的,java基本都能实现(虽然吹的有点大,但不可否认)。web开发:能做大型的互联网网站如,京东,.._java教程

推荐文章

热门文章

相关标签