设为首页 收藏本站 网络运维 任务中心 道具中心 获得家元 原创收益 搜优惠券 VIP会员
切换到宽版

数码之家

  找回密码
  立即注册
快捷导航
  • 首頁Portal
  • 社区BBS
  • 关注朋友圈/我的关注
  • 导读Guide
  • 淘帖Collection
  • 打卡打卡签到
  • 悬赏问答悬赏
  • 积分商城
  • 幸运屋积分抽奖
  • 数码文库
  • 回老站
搜索
数码之家» 社区 玩家进阶界 创意DIY 干一票大的!用FPGA制作红白机游戏烧录卡 ...
1 2 3 4 5 6 7 8 9 10 ... 11 下一页
返回列表 发新帖
查看: 28886|回复: 203

[影音] 干一票大的!用FPGA制作红白机游戏烧录卡

    [复制链接]
orsonzou
发表于 2020-2-16 16:27:44 | 显示全部楼层 | 阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号? 立即注册

x
本帖最后由 orsonzou 于 2020-2-20 15:32 编辑

鬼市真是一个神奇的地方,上次因为一个20元的屏幕大折腾一次之后( https://www.mydigit.cn/forum.php?mod=viewthread&tid=64326)。年前又在鬼市买了一个fpga开发板俺搞过单片机,soc,fpga这东西还真没搞过。于是开始了fpga的学习之旅!

这是鬼市买的黑金开发板:
黑金开发板.jpeg

但是fpga对于我这种电子达人,学习曲线还是相当陡峭的。

因为fpga对于硬件产品的开发实在是意义重大,相比于单片机,soc等,有更好的灵活性和性能,广泛应用于各行各业。作为一个电子达人,既然得到一块开发板,不深入一下怎么行呢?

在观摩了一系列的各种开发板的基础教程后,对fpga还是一脸懵逼。因为这东西对初学者实在是太不友好,开发环境复杂(各种jtag,示波器,逻辑分析仪等),对软件硬件的基础知识的要求非常之高。从基本的数字电路,到各种触发器,到寄存器,cpu,无一不是非常硬核的东西!

下图是初学资料,看了一大堆:
fpga学习文件.jpeg

因为买的开发板太老,是altera cyclone 2的,应该是接近20年前的产品了。于是在网上买了一块国产(高云)fpga作为入门开发之用。这块板子小巧,能接屏幕,直接usb下载调试,也是非常方便。于是在提供的源程序基础上,改写了一些小程序出来。点亮个LED和屏幕,还算顺利。

国产的高云nano tang:
nano tang .jpeg

后来还买了BTC矿渣控制板,是Xilinx zynq 7010的。这货才是当今fpga的主流,其fpga+arm soc的架构,真是甩了Intel 接手后的Altera很多条街。具体关于xilinx zynq的东西以后有机会再说,反正就是强大得史无前例。

矿渣板:
矿渣板.jpeg

目前我的fpga开发板集合:
所有fpga板子.jpeg


在简单熟悉了tang nano和zynq的开发调试并驱动了LED流水灯之后,决定干一票大的。

之前帮人折腾各种老式游戏机的时侯,心想如果有软件辅助硬件维修该有多少。因为游戏机作为一套电脑系统,既复杂又相对电脑系统简单。电脑可以有各种诊断软件,但游戏机都只有一些游戏卡,没法完成各种自检级别的诊断。于是网上查了一下,还真有一些爱好者写的老游戏机的诊断软件,但是需要烧录或者固化到相应的卡上。于是萌生了自己用fpga做游戏卡的想法。
最简单的红白机的游戏卡叫NROM,只有两块ROM芯片,一片装32k程序,一片8k的图样。fpga上可以用ip核模拟ram rom等各种存储器,只要把相应的rom文件录入到fpga的rom ip核就可以了。

老的大黄卡:
大黄卡.jpeg
于是在网上找了一个红白机测试程序,叫nestest.nes。nes文件格式简单,分离出程序rom和图样rom,然后用软件把二进制做成fpga开发软件识别的coe格式就行。

nes文件到coe文件的处理如下:

nes文件处理.jpeg

录入到fpga 的rom ip核:
录入90坦克.jpeg
fpga的两个rom核.jpeg


于是开始电路设计等准备工作!

手上3块fpga开发板,但是他们的io都不够,因为红白机的卡槽是60脚,去掉一些不必要的,关键的信号也是50来条。3块板子的fpga的io引脚都是不够的。于是买了一块xilinx spartan6的最小系统开发板,全新包邮40元。

xilinx spartan6的最小系统开发板:
spartan6.jpeg

因为xilinx spartan6也是10年前的产品了,开发软件ise也是很老,软件能在xp上用。相对现在的xilinx vivadoo真是难用很多,不过基本的该有都有。对于我来说,io和基本ip核够用就好。

游戏烧录卡这个项目主要分软件和硬件部分,一方面设计硬件制作电路板,一方面是用ISE做fpga程序代码,写一些模拟测试。最后合并起来就行了。

spartan6是3.3v的电平标准,红白机是5v的电平标准。加上这么多io引出,用洞洞板肯定是不行的。于是开始了第一次pcb的设计制作,因为是头一次,这个过程也是一波N折。

电路不复杂,主要就是用总线收发器做5v和3.3v的电平转换。选了半天,用了3片74lvch162245,1片245,才够50多条。一片负责cpu 地址线(15位),一片负责ppu地址线(14位),一片负责cpu 数据和ppu数据(8位+8位),245负责控制总线。

到货的芯片:
ic.jpeg


第一次做,就用最简单嘉立创的EDA软件,从画电路图到PCB到下单一体。功能简单,适合初学者。

下图是电路和PCB设计:
电路设计图.jpeg

PCB设计图.jpeg
EDA模拟图.jpeg

第一次打样板子回来后,发现有不可更改的电路设计错误。于是打样第二次
下图是第一次打样后焊接的成果,因为错误,都废了:

焊接.jpeg

第一次板子0.jpeg

第一次板子1.jpeg

第一次板子2.jpeg


第二次打样中间隔着春节,回来后是这样:
5张PCB.jpeg


一阵焊接猛如虎,焊完之后,漂亮,不过这是理想中的样子:
想象种的PCB1.jpeg
想象种的PCB2.jpeg


但是最后实际因为电路设计的一些错误,PCB设计的语一些错误,最后的电路是这样,擦!!!丑得一比:
实际的样子1.jpeg

实际的样子2.jpeg

这就是理想和现实的差距,还好错误是可以通过飞线弥补的。也懒得再打样了,耽误事儿,所以就先这样吧!
第一次上机联调是紧张的,忐忑的,也是注定失败的。因为这东西软硬结合,各种总线,信号一堆,真是头大得一比。基本上来说,就是接示波器看数据总线上连个毛线都没有,一片空白。。。这东西的第一次,真是太难了。

下面是ISE软件界面:
工作界面和软件.jpeg

不放弃的我,研究如何用调试fpga,用示波器肯定不行,因为信号太多,而且也没法知道具体的数据。fpga开发工具都能用jtag实时调试的,这样就可以用fpga的视角来看到具体实际的波形和数据究竟是什么。ISE的ChipScope就是ISE自带的调试工具,一阵学习后,各种信号,数据,一目了然。至少知道了红白机给fpga发了什么,fpga收到什么,fpga又回给红白机了什么。

折腾几天后,总于能在ChipScope看到数据和已经根据预设的逻辑,收发了一些数据,虽然数据都是些莫名其妙的,但是至少有数据流动了。

既然是一些莫名奇妙的数据,那就该知道正确的应该是什么。研究了一些红白机CPU上电后的一些资料,知道会访问内存FFFC和FFFD(实际是ROM的3FFC/3FFD,因为红白机只用15条地址线)的reset程序指针,然后转向这部分程序,开始执行。于是在ChipScope中设定cpu地址线上的地址,在3FFC上触发,并记录波形。

红白机模拟器的调试界面,可以看到内存和指令,红框部分是reset的中断例程入口和代码:
模拟器界面.jpeg

缺DIR设计的波形.jpeg

以上是理想的猜测,但是实际上,数据都是莫名奇妙的。。。不停的通过ChipScope找原因,发现数据的错误来自于fpga的50Mhz主频太高,对红白机的1到2兆的波形造成一些误读。于是修改fpga程序,自己为适应红白机cpu的1.66Mhz频率做了一些分频处理,于是第一次能收发一些正确的数据了。

如图可以看到数据总线上出现了3FFC/3FFD的地址,并在数据总线上出现了相应地址的正确的内容。。。但这个只是一个美好的开始,理论上要从这两个地址指向的内存开始读取和执行,但是并没有。。。这个找了好久,最后发现是我的程序和电路设计都是错误。我用fpga输出High Z来退出对数据总线的占用。但是因为有电平转换芯片的使用,所以还要用总线收发芯片的OE引脚来确保对数据总线的占用。相当于fpga一直占用数据总线,导致红白机CPU对机内其它设备,内存的存取被影响了。
找到问题之后飞线,用fpga控制74lvch162245的OE引脚,程序增加了cpu_data_oe和ppu_data_oe的控制。

飞线补上了cpu和ppu的data OE引脚:
PCB补上数据DIR.jpeg

搞定之后,ChipScope现实数据地址和数据线读取了3FFC/3FFD,并执行了3FFC/3FFD指向的reset例程部分,程序可以运行了!

第一次成功运行程序的波形:
读取正确的数据.jpeg

但是,但是。。。ChipScope可以看到,运行一阵后,数据核地址总线都是全高电平了。这说明程序跑飞了,cpu处于死机状态。

用ChipScope看到波形还是有很多干扰,我怀疑是排线的串扰问题。于是在芯片旁加入了退偶电容抗干扰。果然一击奏效。。。汗)。波形看到cpu的执行地址在270-290之间循环,结合模拟器反汇编看到的。应该是在等待输入之类的地方了。

第一次程序不跑飞的波形:
第一次正确的中断向量读取和程序读取.jpeg

接上屏幕一看,有画面了!!!虽然残缺不全,但是总算是一个巨大的进步!

残缺的画面:

初期字符不全1.jpeg
初期字符不全2.jpeg

然而这个残缺不全的画面,以为成功将近。。。但竟然又让我折腾了好几天!
直接说结论好了,红白机ppu的地址数据总线分时复用的ALE信号,造成了数据的干扰。fpga程序上,用另外分频出来的时钟和一些逻辑来确保数据的正确性,这说得简单,搞了3天,其中包括研究ALE这一堆知识。

示波器看到的数据干扰:
示波器看到rd和数据干扰.jpeg

示波器看到的ALE,和干扰同步,证明是ALE产生的:
示波器上ALE导致干扰.jpeg

ChipScope看到的干扰,严重扰乱了数据:
干扰造成数据错误.jpeg


红白机的ALE和51单片机的ALE,类似。。。那个年代,管脚不够用,所以总搞复用:
fc的ALE.png

51单片机ALE图.png


最后,终于,终于,终于,第一次出来完整画面时侯的心情是复杂和骄傲的:
小屏幕是上次折腾的产物( https://www.mydigit.cn/forum.php?mod=viewthread&tid=64326),这次派上用场。屏幕内容是正确的nestest.nes程序:
桌面第一次成功的画面.jpeg


测试烧录了其它几个游戏,又遇到问题。有些游戏有第一画面,有些没有背景只有前景。研究发现是横向滚动核纵向滚动的游戏,对VRAM的访问地址,需要用跳线来设定,是访问2400还是2C00。开关加上后,顺利测试了几个游戏。到这里,这个项目基本完成了。

加上了H/V开关,开关好丑,凑合用:
加上HV开关.jpeg

烧录的90坦克:
小屏幕90坦克.jpeg

小屏幕90坦克2.jpeg
烧录的超级玛丽:
小屏超级玛丽.jpeg




杂乱的桌面:
桌面全图.jpeg

桌面实验板子.jpeg

spartan6开发板,LED分别是fpga,程序rom,图样rom的工作灯,读取的时侯会闪动:
桌面fpga特写.jpeg

xilinx的jtga连接器:
fpga jtag.jpeg

fpga的烧录界面:
fpga烧录界面.jpeg


烧录fpga bit文件.jpeg


作为家长,顺势给娃上了一课,什么叫不放弃,什么叫专研精神。。。然而,娃只想快点打超级玛丽。。。。
娃打玛丽2.jpeg

熟悉红白机的朋友都知道,FC只能访问32K的程序ROM空间和8K的图样ROM,因为数据线就那么多。然后任天堂在后续推出了无数的大容量游戏,他们使用了各种奇巧淫技来将有限的地址线扩展成更大的程序空间,以达到推出更大容量游戏的目的。他们的方法就是用各种MMC(mapper)芯片,通过各种对地址和数据的访问组合,来预设高位地址线的,从而欺骗CPU。对这方面感兴趣的同学可以自行查阅上百种的mapper。而我的fpga程序,只支持最简单的mapper0,也就是32K程序+8K图样的。对于各种mapper的支持,对fpga来说,也是很好实现的!这个以后再说了!

好了,感谢您看到这里!此刻病毒肆虐,我们必须利用时间,坚持学习。也向奋战在一线的医务和科研工作者表示致敬!感谢观看!

nes, FPGA, ChipScope, 红白机, 烧录卡

打赏

参与人数 57家元 +931 收起 理由
音乐小麦 + 8
stdzlqz + 20
钟焘 + 4 優秀文章
疯狂石头 + 1 看不懂!五星好评!
链接 + 20
玛德陛下 + 20 謝謝分享
泥沙俱下 + 20 謝謝分享
vip2128 + 30 原創內容 大神
happyssy + 1 優秀文章
rallyezhang + 20 原創內容 有点厉害

查看全部打赏

相关帖子

  • • SUP摇杆掌上游戏机拆解
  • • 咨询:复刻版FC红白机可用吗?
  • • GBA烧录卡不能用了
  • • 红白机之父去世,日本著名游戏设计师上村雅之去世,享年78岁
  • • 拆改修金童PC-300海华伦飞电脑学习机 并运行古董电路板设计软件SMARTWORK
  • • 任天堂 FC红白机89版 自画尾板替换PCB 改音视频输出
  • • ALINX - ZYNQ = ARM + FPGA 男人对自己下手要狠点
  • • 封贴
  • • 想学FPGA,这玩意好学吗?
  • • 20年前有点山寨的星雷星学习游戏机拆解
主题文章热度奖励功能上线,帖子“火”了来领赏(奖励1000~3000家元)
回复

使用道具 举报

yumingg
发表于 2020-2-16 16:43:56 | 显示全部楼层
高手。顶一下。
回复 支持 反对

使用道具 举报

风信子玉
发表于 2020-2-16 16:58:19 | 显示全部楼层
这个牛逼,不得了,
回复 支持 1 反对 0

使用道具 举报

aacyxjz
发表于 2020-2-16 16:58:51 来自手机浏览器 | 显示全部楼层
牛掰,绝世好贴,坐等版主加精
回复 支持 反对

使用道具 举报

yjfxue
发表于 2020-2-16 17:04:03 | 显示全部楼层
再打一版,全集成,USB直接烧录
回复 支持 1 反对 0

使用道具 举报

tmc422
发表于 2020-2-16 17:08:14 | 显示全部楼层
真不错,我记得原来买过一张游戏模拟的光盘。不知道能不能烧录进去。
回复 支持 反对

使用道具 举报

wenxueroom
发表于 2020-2-16 17:27:09 | 显示全部楼层
大神请收下我的膝盖
回复 支持 反对

使用道具 举报

11651189
发表于 2020-2-16 17:27:49 | 显示全部楼层
给楼主的钻研精神点赞。楼主的K2P有根5G天线要遮挡电视画面,然后让它躺下了!
回复 支持 反对

使用道具 举报

唔见
发表于 2020-2-16 17:47:25 | 显示全部楼层
怎么这么厉害
回复 支持 反对

使用道具 举报

cn21sky
发表于 2020-2-16 17:57:58 | 显示全部楼层
文宇群友来顶贴。我就想说,你这浪费,心不会痛吗?!
回复 支持 反对

使用道具 举报

qrut
发表于 2020-2-16 18:37:16 | 显示全部楼层
能玩的动FPGA都非等闲之辈~
回复 支持 2 反对 0

使用道具 举报

ziyuling1981
发表于 2020-2-16 18:39:56 | 显示全部楼层

牛掰,绝世好贴,坐等版主加精
回复 支持 反对

使用道具 举报

xuyaz
发表于 2020-2-16 19:42:43 | 显示全部楼层
折腾回我的童年了
回复 支持 反对

使用道具 举报

asnake
发表于 2020-2-16 20:13:32 | 显示全部楼层
初学就能把FPGA弄成花花,厉害了!
回复 支持 反对

使用道具 举报

ztrdiy
发表于 2020-2-16 22:58:33 来自手机浏览器 | 显示全部楼层
厉害!楼主这种勇往直前刻苦钻研的精神非常值得敬佩!学习!
回复 支持 反对

使用道具 举报

kgkxwnfw
发表于 2020-2-16 23:18:01 来自手机浏览器 | 显示全部楼层
能玩懂FPGA,有一定的技术功底,我也很早就想学了,但一直没有行动,
回复 支持 反对

使用道具 举报

tamade
发表于 2020-2-16 23:46:10 来自手机浏览器 | 显示全部楼层
楼主就是好榜样的代表!
回复 支持 1 反对 0

使用道具 举报

genieg
发表于 2020-2-16 23:52:10 | 显示全部楼层
大神!膜拜!!锲而不舍的精神值得学习:lol:
回复 支持 反对

使用道具 举报

orsonzou
 楼主| 发表于 2020-2-17 15:03:18 | 显示全部楼层
cn21sky 发表于 2020-2-16 17:57
文宇群友来顶贴。我就想说,你这浪费,心不会痛吗?!

浪费了啥?
回复 支持 反对

使用道具 举报

还有一些帖子被系统自动隐藏,点此展开
下一页 »
1 2 3 4 5 6 7 8 9 10 ... 11 下一页
返回列表 发新帖
数码值得买
  • 罗蒙腰带9 肉粽4个9 森马防晒衣19 鸿星尔克裤39 夏凉被39 体温枪18 理发器25

    罗蒙腰带9 肉粽4个9 森马防晒衣1

  • 气传导蓝牙耳机25!TCL台灯5!空调挡风板3!密丝柔牙刷18支11!

    气传导蓝牙耳机25!TCL台灯5!空

  • 5.17-气传导蓝牙耳机25!TCL台灯5!空调挡风板3!密丝柔牙刷18支11!

    5.17-气传导蓝牙耳机25!TCL台灯

  • 优派键盘9 大麦茶2罐9 TCL台灯6 无线监控39 燃油宝6 无线洗车枪59 家用鞋架19

    优派键盘9 大麦茶2罐9 TCL台灯6

  • 头灯2 空调清洗剂5 空调挡风板3 空调滤芯5 台夹扇8 雨刮器6 数据线0.8 红茶5..

    头灯2 空调清洗剂5 空调挡风板3

  • 5.17白菜!三伏贴2 100只纸杯5 黑蜂蜜19 袋鼠腰带27 去油污3瓶9 吸顶灯9 风扇8

    5.17白菜!三伏贴2 100只纸杯5

高级模式
B Color Image Link Quote Code Smilies
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP| 手机版| 小黑屋| 关于我们| 联系我们| 法律条款| 技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-5-18 02:12 , Processed in 0.187200 second(s), 14 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表

两个鬼故事过年祝福语怎么说缺水火起名女孩名字好听单姓怎么起名铝制品公司起名宝宝免费起名网站一小白兔作文给公司起名多少钱星空大帝最强国防生天乩之白蛇传海贼之天赋系统西班牙人赛程带书字的女孩起名姓崔的起名字常姓女孩起名及寓意起英语名字的桥牌是什么隔着屏幕哄男生的方法人美b孩子起名吕姓臭鳜鱼孩子起小名叫什么好听新生儿起名网站 免费设计事物所起名给学校起的名字吗XP64位谢氏起名男宝名字含信字公司起名wd移动硬盘王 起名少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

两个鬼故事 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化