首页 > 其他分享 >NES 系统架构

NES 系统架构

时间:2023-05-12 13:46:09浏览次数:35  
标签:架构 卡带 系统 NES PPU CPU 外设

主机

NES(FC、红白机、小霸王)的系统架构可用下图表示:

NES Arch

系统中最核心的组件是 CPU,其它组件都可以算作 CPU 的外设。CPU 的外设包括:PPU(图像处理器)、APU(音频处理器)、WRAM(内存)、IO 设备(手柄、键盘等)、CART(卡带)。这些外设分别占据 CPU 地址空间中的一部分,CPU 通过设置 CPU 地址总线选中相应的外设,然后通过 CPU 数据总线与外设交换数据。CPU 与外设的这种通信方式也叫“内存映射 IO”,外设占用的地址空间可以到 nesdev 上查阅。

系统中第二核心的组件是 PPU。PPU 也有外设,它的外设包括:VRAM(视频内存)和卡带。PPU 和它的外设之间也采用“内存映射 IO”方式通信,PPU 的地址空间分配可以查阅 nesdev

真实的 NES 上是看不到 APU 的,因为 APU 与 PPU 封装到了一起。在开发模拟器时,把它们当作独立的组件是没有关系的

卡带

上图中,卡带只是使用一个方框简单概括,实际上卡带也是一个复杂的设备。卡带即是 CPU 的外设,也是 PPU 的外设。它可以存储程序代码供 CPU 读取执行,可以存储图像资源供 PPU 使用,也可以为 CPU 提供额外的内存,甚至还可以提供额外的音频芯片、PPU。

根据卡带的电路板复杂性,可以粗略地把卡带分为简单卡带和复杂卡带。

简单卡带

简单卡带的内部结构如下图。

Cart Arch - simple

图中 PA 表示 PPU 地址线,PD 表示 PPU 数据总线,A 表示 CPU 地址线,D 表示 CPU 数据总线。可以看到简单卡带基本上直接从存储芯片中读写数据,其中存储芯片可以根据需求配置为不同大小。由于地址空间的限制,简单卡带上并不能存储太多内容。

复杂卡带

Cart Arch - complex

上图演示了一种复杂卡带的架构,可以看到最大的区别是多了一个叫 MMC 的组件。MMC 意为“内存管理芯片”,是一种可编程芯片,负责将 CPU、PPU 的地址映射到它管理的存储器中的某个区间。有了 MMC,CPU、PPU可以寻址更大的地址空间,卡带也可以存储更多内容。

参考资料

  1. nesdev
  2. NES 名词解释
  3. NES 架构介绍[Youtube], NES 架构介绍[B 站]
  4. NES 架构

标签:架构,卡带,系统,NES,PPU,CPU,外设
From: https://www.cnblogs.com/1bite/p/17393614.html

相关文章

  • 三次输错密码后,系统是怎么做到不让我继续尝试的?
    故事背景忘记密码这件事,相信绝大多数人都遇到过,输一次错一次,错到几次以上,就不允许你继续尝试了。但当你尝试重置密码,又发现新密码不能和原密码重复:相信此刻心情只能用一张图形容:虽然,但是,密码还是很重要的,顺便我有了一个问题:三次输错密码后,系统是怎么做到不让我继续尝试的?我......
  • FPGA 硬件电流环 基于FPGA的永磁同步伺服控制系统的设计,在FPGA实现了伺服电机的矢量
    FPGA硬件电流环基于FPGA的永磁同步伺服控制系统的设计,在FPGA实现了伺服电机的矢量控制。有坐标变换,电流环,速度环,位置环,电机反馈接口,SVPWM。VerilogID:33600666479161285......
  • CentOS7 中 semanage命令的安装(SELinux安全子系统)
    SELinux安全子系统SELinux(Security-EnhancedLinux)是美国国家安全局在Linux开源社区的帮助下开发的一个强制访问控制(MAC,MandatoryAccessControl)的安全子系统。RHEL7系统使用SELinux技术的目的是为了让各个服务进程都受到约束,使其仅获取到本应获取的资源。SELinux服务有三种配......
  • solon架构(spring-boot未来最有效的竞争力)
    一、现在基本WEB的开发都是用spring-boot来做开发了,但是springboot存在很多弊端。体量大,启动慢等。优点就是生态比较完整,文档说明也比较多。二、solon架构,是我学习其他框架兼容时了解的,说说其区别之处。1)solon目前已经有一定规模了,有自己的生态圈了吧2)sol......
  • STM32 BMS电池管理系统 主控STM32F103C8T6,具有以下功能:
    STM32BMS电池管理系统主控STM32F103C8T6,具有以下功能:1.具有单体电压、总体电压检测,过充、过放告警及保护功能。常温下静态电压采样精度可达小于20mV。2.具有充放电电流检测,充放电过流告警及保护功能。上位机可以显示充放电状态。3.具有均衡功能,均衡条件程序默认压差大于50mV......
  • bms电池管理系统 锂电池算法SOC代码 获取锂电池SOC采用
    bms电池管理系统锂电池算法SOC代码获取锂电池SOC采用的是电流积分法,电化学阻抗法电流积分法又称为安时积分法或库伦计数,通过将电池电流对时间进行积分来计算电池的荷电状态。这种方法对于计算电池放出的电量有一定的准确度,但缺乏参照点,不能计算电池的初始SOC,也无法预测电池因为......
  • Qt编写视频监控系统72-通过onvif增删改查OSD
    一、前言之前监控系统中原创的onvif协议解析机制,已经能够满足绝大部分用户的需要,比如搜索设备、获取视频流地址并播放、云台控制、预置位管理、图片亮度色彩饱和度等参数设置等,近期又多了一个需求,那就是通过onvif国际标准协议来对摄像头的OSD进行增删改查,可以通过协议添加OSD、删......
  • 前端目录-唯一客服系统文档中心
    客服项目前端简介唯一客服的前端部分,主要是使用的elementui框架,这个框架是基于vue.js框架的UI封装。为了符合后端开发的习惯,本项目是使用cdn引入的方式引入的elementui,而没有使用npm安装部署,不需要独立的nodejs环境编译。模板渲染仍然是采用Golang的Gin框架进行渲染输出,......
  • java基于springboot+html的学生就业管理系统的设计与实现,附源码+数据库+文档,包安装调
    1、项目介绍本系统是利用现代化的计算机网络技术将传统信息宣传方式整合,按照实践过程设计完成的。同时完善服务,初步设计一个学生就业管理系统平台以利于相关的事务操作。为了使系统在各项管理中发挥更大的作用,实现计算机信息化高效的管理,现将开发目标功能需求介绍如下:(1)管理员模......
  • Unity3D高级编程主程手记 学习笔记一:软件架构
    架构的重要性不言而喻,对于一个项目来说如果在开发初期就能确定好所使用的引擎,API以及各种系统之间的层次关系,那对于后续的开发一定会是事半功倍的,我想作者将软件架构放在第一章一定是想让Untiy程序员尤其是主程,一定要认真的对待架构这件事。优秀的架构师不仅需要对每个子系统的决......