A9VG电玩部落论坛

 找回密码
 注册
搜索
楼主: thecrazyboy

我的FPGA 版本 FC

[复制链接]

精华
0
帖子
2983
威望
0 点
积分
2954 点
种子
0 点
注册时间
2016-3-17
最后登录
2020-1-6
发表于 2016-4-7 13:37  ·  江苏 | 显示全部楼层
fpga应该不存在效率问题吧,用来模拟更高级别的主机难度大不大

精华
0
帖子
17
威望
0 点
积分
17 点
种子
10 点
注册时间
2016-4-6
最后登录
2023-2-5
 楼主| 发表于 2016-4-7 13:49  ·  上海 | 显示全部楼层
qiqico 发表于 2016-4-7 12:28
ROM Dumper就是你想要的直接读取FC卡带ROM的硬件。你所说的bootloader,并不一定要基于现在的硬件实现, ...

你可能是先全部都读完再游戏ROM到RAM中,再开始运行,这样的话,读取ROM部分的电路你可以独立设计,用个支持SDIO协议的ARM小板读取SD卡就行了,读完后向你的FPGA执行硬件发个信号开始执行。

答复:你的理解有差别。
这个bootloader不是基于ARM的,因为已经有6502CPU了,就是利用现成的6502CPU。因为FC上的6502上的地址范围有部分区域是没有使用的,所以这些未使用的地址范围可以作为SPI 的读写寄存器。
这个Bootloader只要对这些SPI寄存器做一些设置,就能读写SD卡了,再上层就是移植文件系统。这些都调试通过了。
再上层就是UI,可以直接利用FC的PPU来显示菜单等。这一步在被我修改过的NDX模拟器上测试也通过了。
其实整个bootloader就是一个16k prg,8k chr的MAPPER0的nes文件。
所以没有附加的CPU,只是多了一个RAM,存放这个BOOTLOADER

骑士

Emulation

精华
0
帖子
2133
威望
0 点
积分
2412 点
种子
357 点
注册时间
2010-5-14
最后登录
2023-7-1
发表于 2016-4-7 13:52  ·  加拿大 | 显示全部楼层
thecrazyboy 发表于 2016-4-7 13:49
你可能是先全部都读完再游戏ROM到RAM中,再开始运行,这样的话,读取ROM部分的电路你可以独立设计,用个 ...

问题就在于6502的主频太低,用它执行程序进行SD读写速度估计很慢,我不知道你的SPI接口设置了多少通信频率?或者你可以动态调整FPGA版6502的运行频率?

精华
0
帖子
17
威望
0 点
积分
17 点
种子
10 点
注册时间
2016-4-6
最后登录
2023-2-5
 楼主| 发表于 2016-4-7 14:28  ·  上海 | 显示全部楼层
qiqico 发表于 2016-4-7 13:52
问题就在于6502的主频太低,用它执行程序进行SD读写速度估计很慢,我不知道你的SPI接口设置了多少通信频 ...

哈哈,你说到点子上了。
FPGA的时钟是50M,够了。
SPI模块的时钟基于主时钟的,速度够了。而且做了spi clk的设置的寄存器,可以在6502中设置spi的时钟了,其实也就是对50M进行分频,SD卡大概最大支持25M。一旦SD卡初始化之后,我就设置spi时钟为25M.
所以说SPI的时钟是没有问题的。

但是CPU的时钟实在太低了,1M多,读文件->读文件系统-> 设置SPI寄存器 -> 从spi寄存器中取数据,从中可以看到有很多代码来操作,当然速度太慢了。

因为CPU时钟也是50m时钟分频而来,其实只要在bootloader阶段提高CPU的clk就可以了,这个就是我之前说的,现在还没有做呢。

如果用ARM来做,当然速度很快,不过失去了研究学习的意义了。而且还得搭建板子,这个不是我的强项。
不过用FC现有的资源做BOOTLOADER,会涉及到很多的小项目:
1. bootloader本身就是一个工程,读写SPI寄存器,sd卡操作,文件系统,  NES文件分析,已经如何将数据加载到RAM, 此外涉及到UI,即PPU的操作,总得做一个文件浏览的功能吧。折腾了我两个礼拜。
2. 扩展现有模拟器的功能,不能在FPGA做测试,不然会累死的。 模拟器中增加SPI寄存器的支持,最终其实就是对 SD卡镜像文件的读写。 等等,还得做SD卡的镜像文件。。。。这个都做好了。
3. 当然是FPGA工程了,买了几个sd卡的模块,只有一个sd卡bootloader能初始化成功,目前还停留在读写sd卡成功,其余的还没有测试,毕竟fpga工程编译一次很耗时间,现在大部分时间都用模拟器先行仿真。
4. 小小项目,比如文件系统,nes文件浏览功能,6502资源很少,c编译器有很坑嗲,很多时候只能用汇编来写。现成开源的文件系统基本是不能使用的,占用RAM太多了。 文件浏览功能调试占了我很多时间。。。

骑士

Emulation

精华
0
帖子
2133
威望
0 点
积分
2412 点
种子
357 点
注册时间
2010-5-14
最后登录
2023-7-1
发表于 2016-4-7 15:11  ·  加拿大 | 显示全部楼层
thecrazyboy 发表于 2016-4-7 14:28
哈哈,你说到点子上了。
FPGA的时钟是50M,够了。
SPI模块的时钟基于主时钟的,速度够了。而且做了spi cl ...

你写的这些我觉得都非常有意思,交个朋友。我最近刚设计完一个完全自己的8位CPU,并测试完毕,下一步就是用7400芯片搭建实际硬件。你有兴趣可以关注一下我的博客: blog.congao.net 。另外我之前也做过一个DSDuino的项目,扩展NDS和Arduino的,在NDS上直接编写、运行Basic程序就可以控制外设、读取各种传感器信息等。

精华
0
帖子
5553
威望
0 点
积分
6171 点
种子
628 点
注册时间
2015-12-23
最后登录
2024-1-15
发表于 2016-4-7 15:18  ·  广东 | 显示全部楼层
qiqico 发表于 2016-4-7 15:11
你写的这些我觉得都非常有意思,交个朋友。我最近刚设计完一个完全自己的8位CPU,并测试完毕,下一步就是 ...

看过你写的GB模拟器的文章,并收藏了

精华
0
帖子
274
威望
0 点
积分
354 点
种子
78 点
注册时间
2008-8-12
最后登录
2024-11-17
发表于 2016-4-7 15:23  ·  天津 | 显示全部楼层
高手啊  ,这样是不是 fc游戏可以全支持了啊?

骑士

Emulation

精华
0
帖子
2133
威望
0 点
积分
2412 点
种子
357 点
注册时间
2010-5-14
最后登录
2023-7-1
发表于 2016-4-7 15:36  ·  加拿大 | 显示全部楼层
钢铁机器猫 发表于 2016-4-7 15:18
看过你写的GB模拟器的文章,并收藏了

多谢赏脸

精华
0
帖子
17
威望
0 点
积分
17 点
种子
10 点
注册时间
2016-4-6
最后登录
2023-2-5
 楼主| 发表于 2016-4-7 15:37  ·  上海 | 显示全部楼层
qiqico 发表于 2016-4-7 15:11
你写的这些我觉得都非常有意思,交个朋友。我最近刚设计完一个完全自己的8位CPU,并测试完毕,下一步就是 ...

过了一下你的blog,大神呀。
我本身只是个嵌入式工程师,
对于FPGA部分,去年才接触,其实我的原来公司就是做CPU设计,当初没去关注,哎。。。我只是把几个开源的项目的代码看懂,然后并凑在一起。
软件部分,大部分我自己折腾的。

精华
0
帖子
17
威望
0 点
积分
17 点
种子
10 点
注册时间
2016-4-6
最后登录
2023-2-5
 楼主| 发表于 2016-4-7 15:39  ·  上海 | 显示全部楼层
qazasd1982 发表于 2016-4-7 15:23
高手啊  ,这样是不是 fc游戏可以全支持了啊?

恩,差不多是这个意思。
看到有个EVERDRIVE n8的东西,我仔细一分析,我手头的资源都够了,如果自己做一个,很多东西可以复用。
不过真的坐起来,还是需要时间和精力的。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|A9VG电玩部落 川公网安备 51019002005286号

GMT+8, 2024-11-24 14:13 , Processed in 0.189449 second(s), 14 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部