【matthew的业余DIY系列】我的CPU我作主
本帖最后由 matthewchan 于 2016-3-18 20:47 编辑这是一个有故事的CPU
写一个属于我自己的CPU,源于我多年前的一个愿望。当我还在读高中的时候,学校机房有几台286和一台386.几个同学趁着老师不在,在上面玩起了《三国志》。。。 就这样,我被“电脑”这玩意给吸引了。我还知道,它的核心是一个叫CPU的神秘东西。。。:lol 上大学,学了微机原理,学过51单片机,基本概念有了。。。所以就有自己搞一个玩玩的念头。。。然后,我自学了verilog,找了一个MCU作为模版,开始写起code来。。。。。
可是,由于家里出了情况,这个项目永远定格在,2004年9月22日,未完成。。。。
为了忘却的**吧。最近把他重新捡起来,沿着原来的设计思路把他做出来。配套的,写了几个简单的测试用例,并做个原型板(就是二楼的计算器)。
这是一个非常小的RISC CPU core:
1. 35 条指令,跟PIC 8位单片机 的兼容(兼容PIC16F88x)
2. 带中断功能,外设只有GPIO。
3.512B RAM, 4-14KB ROM
4.资源:大约占用了150个slice。速度150MHz左右(spartan 6上面,ISE默认设置)。
为什么选这样一个CPU啦?:
1.指令少,结构简单。
这个最大的好处是倒不是写代码的工作量,而是写测试的工作量。
另外一个理由是,当年的fpga还是很小的。
2.有现成C编译器
这样有利于编写和移植程序。看起来高大上一点。
//ps,这是现在想出来的理由,早忘了当年是怎么想的:lol:lol
其实写个CPU就是个引子,真正的目的是:通过做一件自己感兴趣的东西,把技术练起来。
本帖最后由 matthewchan 于 2016-3-17 19:33 编辑
原型版,目的当然是CPU的功能验证。不愿意做的,网上随便个100来块钱的fpga开发板都能做这个实验。这是一个很丑很丑的计算器:Q:
一开机,先来显示个温度和湿度吧(这是整个设计最大的亮点:lol。对于我们家领导,这是这个玩具唯一的价值:L)
计算器输入输出,基本都是按照通用的计算器来做的。实现超长精度的10进制加减乘除操作(占用了2KB代码空间)。
下面是一个减法:
本帖最后由 matthewchan 于 2016-3-21 12:13 编辑
《设计和实现手册》(坑有点大:L,慢慢填吧;P。有耐心的慢慢等罗,没耐心就自己开干一个吧:lol)。
设计目标我们希望这个CPU具有以下特点:1. 功能完备他应该跟实际的CPU一样,能完成各种任务。2. 结构要简单这样便于理解和把握;同时也能让我们编写代码和测试的工作量在合适的范围内。3. CPU设计中包含了足够的技术细节这些细节反映了CPU的关键技术,我们可以在实践中慢慢体会他的设计思想、概念和原理。4. C编译器的支持在应用开发的时候,如果能有C编译器的支持,我们可以快速的把应用构建起来。这将非常有趣。例如,我的原型板上面有一个温度湿度模块,使用one wire协议。厂家提供了c代码,因为有了xc8的支持,我花了10分钟就移植上去了:lol
CPU基本结构和原理
本帖最后由 matthewchan 于 2016-3-17 19:37 编辑
这一层,想好了写什么再填。
搬个板凳慢慢等 :lol 坐等 啥型号的mcu 都有什么功能呢 xilinx硬件代码写的mcu?然后支持C51Hex么? 坐等更新! MJM_WSY 发表于 2016-3-17 17:54
xilinx硬件代码写的mcu?然后支持C51Hex么?
是的,verilog写的,不过是兼容PIC的,不是51的。可以用PICC或者XC8编译器。 matthewchan 发表于 2016-3-17 19:34
是的,verilog写的,不过是兼容PIC的,不是51的。可以用PICC或者XC8编译器。
高人。有时我也曾想过。 只不过就用过epm240门数太少,可以公开代码么? 有时间也想搞一个,坐等楼主更新 我也对此感兴趣,不过静不下心来搞这个了 学习一下!顶楼主 MJM_WSY 发表于 2016-3-18 00:30
高人。有时我也曾想过。 只不过就用过epm240门数太少,可以公开代码么? ...
我1米7多,普通身材,不高啊:lol
cpld还是fpga都是类似的,会用一个就能用另外一个。
代码会公开的,等文档做好了,会先放在open core上面吧。到时候给个链接就好了。
其实单纯代码对你没啥用的,网上很多。 cauhorse 发表于 2016-3-18 10:43
有时间也想搞一个,坐等楼主更新
@cauhorse @神奇号
心动不如行动啦:lol matthewchan 发表于 2016-3-18 20:53
我1米7多,普通身材,不高啊
cpld还是fpga都是类似的,会用一个就能用另外一个。
:lol你多加点注释。。。CPLD/FPGA 我还是个外行,最近才接触 本帖最后由 matthewchan 于 2016-3-19 18:22 编辑
3楼是文档,持续的更新中。。。。由于每天时间有限,只能慢慢填啦:lol 步步惊芯???????
页:
[1]
2