发新帖本帖赏金 10.00元(功能说明)我要提问
12下一页
返回列表
打印

【matthew的业余DIY系列】我的CPU我作主

[复制链接]
3521|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
matthewchan|  楼主 | 2016-3-17 13:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
DIY, CPU, lol, pi, ic
本帖最后由 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就是个引子,真正的目的是:通过做一件自己感兴趣的东西,把技术练起来。








打赏榜单

21ic小喇叭 打赏了 10.00 元 2016-03-23

相关帖子

沙发
matthewchan|  楼主 | 2016-3-17 13:20 | 只看该作者
本帖最后由 matthewchan 于 2016-3-17 19:33 编辑

原型版,目的当然是CPU的功能验证。不愿意做的,网上随便个100来块钱的fpga开发板都能做这个实验。这是一个很丑很丑的计算器:Q:


一开机,先来显示个温度和湿度吧(这是整个设计最大的亮点:lol。对于我们家领导,这是这个玩具唯一的价值:L)


计算器输入输出,基本都是按照通用的计算器来做的。实现超长精度的10进制加减乘除操作(占用了2KB代码空间)。
下面是一个减法:

















使用特权

评论回复
板凳
matthewchan|  楼主 | 2016-3-17 13:22 | 只看该作者
本帖最后由 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 13:34 | 只看该作者
本帖最后由 matthewchan 于 2016-3-17 19:37 编辑

这一层,想好了写什么再填。

使用特权

评论回复
5
xlhtracy| | 2016-3-17 13:55 | 只看该作者
搬个板凳慢慢等 :lol

使用特权

评论回复
6
wanyisq| | 2016-3-17 14:49 | 只看该作者
坐等

使用特权

评论回复
7
大秦正声| | 2016-3-17 16:07 | 只看该作者
啥型号的mcu

使用特权

评论回复
8
gaojintao| | 2016-3-17 16:34 | 只看该作者
都有什么功能呢

使用特权

评论回复
9
MJM_WSY| | 2016-3-17 17:54 | 只看该作者
xilinx  硬件代码写的mcu?然后支持C51  Hex么?

使用特权

评论回复
10
hameyou| | 2016-3-17 19:23 | 只看该作者
坐等更新!

使用特权

评论回复
11
matthewchan|  楼主 | 2016-3-17 19:34 | 只看该作者
MJM_WSY 发表于 2016-3-17 17:54
xilinx  硬件代码写的mcu?然后支持C51  Hex么?

是的,verilog写的,不过是兼容PIC的,不是51的。可以用PICC或者XC8编译器。

使用特权

评论回复
12
MJM_WSY| | 2016-3-18 00:30 | 只看该作者
matthewchan 发表于 2016-3-17 19:34
是的,verilog写的,不过是兼容PIC的,不是51的。可以用PICC或者XC8编译器。

高人。有时我也曾想过。    只不过就用过epm240门数太少,可以公开代码么?

使用特权

评论回复
13
cauhorse| | 2016-3-18 10:43 | 只看该作者
有时间也想搞一个,坐等楼主更新

使用特权

评论回复
14
神奇号| | 2016-3-18 12:03 | 只看该作者
我也对此感兴趣,不过静不下心来搞这个了

使用特权

评论回复
15
奥卡姆剃刀| | 2016-3-18 14:16 | 只看该作者
学习一下!顶楼主

使用特权

评论回复
16
matthewchan|  楼主 | 2016-3-18 20:53 | 只看该作者
MJM_WSY 发表于 2016-3-18 00:30
高人。有时我也曾想过。    只不过就用过epm240门数太少,可以公开代码么? ...

我1米7多,普通身材,不高啊:lol

cpld还是fpga都是类似的,会用一个就能用另外一个。

代码会公开的,等文档做好了,会先放在open core上面吧。到时候给个链接就好了。
其实单纯代码对你没啥用的,网上很多。

使用特权

评论回复
17
matthewchan|  楼主 | 2016-3-18 20:54 | 只看该作者
cauhorse 发表于 2016-3-18 10:43
有时间也想搞一个,坐等楼主更新

@cauhorse @神奇号

心动不如行动啦:lol

使用特权

评论回复
18
MJM_WSY| | 2016-3-18 22:30 | 只看该作者
matthewchan 发表于 2016-3-18 20:53
我1米7多,普通身材,不高啊

cpld还是fpga都是类似的,会用一个就能用另外一个。

:lol你多加点注释。。。CPLD/FPGA 我还是个外行,最近才接触

使用特权

评论回复
19
matthewchan|  楼主 | 2016-3-19 18:18 | 只看该作者
本帖最后由 matthewchan 于 2016-3-19 18:22 编辑

3楼是文档,持续的更新中。。。。由于每天时间有限,只能慢慢填啦:lol

使用特权

评论回复
20
mars4zhu| | 2016-3-20 14:16 | 只看该作者
步步惊芯???????

使用特权

评论回复
发新帖 本帖赏金 10.00元(功能说明)我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

33

帖子

4

粉丝