OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3669|回复: 3

[其他] 利用FPGA制作一台PDA设计思想与实现结果

[复制链接]

23

主题

72

帖子

0

精华

高级会员

Rank: 4

积分
735
金钱
735
注册时间
2015-7-9
在线时间
135 小时
发表于 2021-12-26 21:34:32 | 显示全部楼层 |阅读模式
本帖最后由 wgui 于 2021-12-26 21:38 编辑

先上效果!
运行效果:https://www.bilibili.com/video/BV1eS4y1M76n?share_source=copy_web
视频的编译器附件(含演示程序代码,不含编译器源码):
链接:https://pan.baidu.com/s/1PcQ-pa7DAu9u8Ifzy0Z09w
提取码:1234

想利用FPGA模拟一个自己的CPU,一个作显示图形处理,又没有找到更完整的指令集和CPU架构运作流程资料。然后只有C51在STC文档时有详细指令介绍,但C51只支持16位地址空间,也就是只能访问64KB内存,显得很格格不入。
于是利用空余时间制作了一套属于自己的编译器,CPU指令集是自已根据需要定义的常规指令,目前FPGA逻辑资源量只做到了16位CPU,32位运算,然后制定汇编编译器。
编译器语法是用C语言编写的,编译语言也是根据C语言格式描述就行了,但又未能完全支持所有复杂的描述方式。在原C基础上整合了二进制表示常量,如B10010,所有变量或寄存器支持类似单片机的sbit位定义直接修改变量位。目前支持二维二维数组,指针结构,枚举等的特殊语法。视频中的程序就是在此编译上编译。
然后C语言编译时又会生成一个中间代码,就是把单项运行流程给分解了,然后中间代码编译器根据对应代码查找汇编库的对应的功能代码,转换成相应的汇编代码,汇编编译器转成机械码。
理论上来说,按照同样的运作流程更换汇编指令库就可以移植到其它不同CPU上。
关于汇编编译器,因为之前弄过几个不同指令集又不满意,又需要更换结构,因此显得汇编编译器需要重写,或重更改?这一来就很多麻烦。于是汇编编译器又加上一项可组织不同形式汇编指令的功能,就是一个可以编程汇编指令的汇编编译器,这样一来,更改指令就不需要重新整改汇编编译器了,只需用文本编译你需要的指令结构描述就可以了。这会不会影响汇编编译速度?实际运行,占用编译时间的是C解释编译,汇编编译速度还是挻快的。
浮点运算如何实现?浮点实现是需要自行编译源代码实现,有了基础编译功能,在C语言上用利用非浮点数方法写浮点数运算原理。编译出汇编,放到汇编功能库中,此时在浮点运算时会调用对应的浮点库。即可实现浮点运算,目前实现了浮点加减乘。除法还存在一位差的问题未能解决,所以使用FPGA的IP核运算。

空战

空战

贪吃蛇

贪吃蛇
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

3229

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8074
金钱
8074
注册时间
2020-5-11
在线时间
3574 小时
发表于 2021-12-27 09:59:32 | 显示全部楼层
专治疑难杂症
回复 支持 反对

使用道具 举报

13

主题

644

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1937
金钱
1937
注册时间
2021-4-16
在线时间
495 小时
发表于 2021-12-27 10:14:01 | 显示全部楼层
大佬大佬。
回复 支持 反对

使用道具 举报

3

主题

1979

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5520
金钱
5520
注册时间
2018-10-21
在线时间
1561 小时
发表于 2021-12-27 11:17:42 | 显示全部楼层
厉害了

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-10-3 22:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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