文号
t52167
阅读
255974
回复
211
收藏
148
龙少精简炮灰测试版8位机(原创、纯硬件、开源)
2012/11/11
IP:广东
这个做来当炮灰测试的,只做了些CPU基本的功能,很简单的,主要是验证本人YY的CPU控制器架构的实际表现,结果还可以;
架构、电路原理、制作过程后面再边整理边发上来,现在先写了段小程序驱动SD、TF卡和小液晶来展示这个CPU的简单应用,程序是汇编(指令集)写的,对ROM手工2进制编程,现在没有做RAM/IO板,只是用了一片8KB 100ns的SRAM加电容(电容用来保持SRAM数据不丢失)当做ROM,这个简单的程序用ALU寄存器就够了,不用RAM

这个CPU可在3.3V工作,供电是7805稳压,接上了有压降,现在实测电压4V  电流在400~500mA之间跳动,
最高主频未知~~~

后面我再考虑下是否做个C编译器;

龙少CPU简单编程应用展示 屏分辩率128x160   RGB为16位色模式:
点击此处查看视频
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX


下面是CPU现在周边的配置:

CPU时钟发生和复位板  正面:
CPU时钟发生和复位.jpg
CPU时钟发生和复位板  背面:
CPU时钟发生和复位(背面).jpg

ALU寄存器数据指示LED和拨码开关(拨码开关起初是用来调试指令的)  正面:
数据指示LED和拨码开关.jpg
ALU寄存器数据指示LED和拨码开关  背面:
数据指示LED和拨码开关(背面).jpg

SRAM加电容当ROM用(用3V的电池充电了电压会变低的,后面我改成电容了)  正面:
SRAM.jpg
SRAM加电容当ROM用  背面:
SRAM(背面).jpg

硬件SPI板 正面:
硬件SPI.jpg
硬件SPI板 背面:
硬件SPI(背面).jpg

CPU板正面:
CPU板.jpg
CPU板背面:
CPU板背面.jpg    左面.jpg
后面.jpg
右面.jpg
+30
科创币
yanli12321
2012/11/11
牛人啊,今天分都给你了
+24
科创币
delete
2012/11/11
高质量发帖
+50
科创币
hefanghua
2012/11/11
大赞。LZ高超的水平续写了8位机的传奇。期待后续详解。
+40
科创币
celeron533
2012/11/11
高质量发帖
+25
科创币
cccyl
2012/11/11
厉害啊
+50
科创币
小哈_abc
2012/11/11
楼主拨了多长时间才把这个程序烧上去的啊。。。
+15
科创币
daxus
2012/11/11
碉堡了。。。
+50
科创币
10班陈大葱22号
2012/11/11
给跪了...
+25
科创币
vile_hand
2012/11/11
高质量发帖
+50
科创币
量子隧道
2012/11/12
哇靠,牛B大发了
+100
科创币
山猫
2012/11/12
龙少威武
+200
科创币
虎哥
2012/11/12
太强大了,可以上报纸了。
+1
科创币
虎哥
2012/11/12
通知其他版主:本帖已于第50830号主题合并加学术分,请勿重复加分。
+1
科创币
hx
2012/11/12
高质量发帖
+25
科创币
wenrui
2012/11/12
厉害啊
+25
科创币
delete
2012/11/12
高质量发帖
+25
科创币
BA7MEL
2012/11/12
这是要逆天了。。。。。
+200
科创币
ehco
2012/11/12
这也忒强大了
+24
科创币
wuncle
2012/11/12
膜拜
+50
科创币
孤独的酒精灯
2012/11/12
+200
科创币
任某人
2012/11/12
我去!!!!这个不加没道理啊。。去吧STC干爆吧!!
+50
科创币
小特斯拉圈圈
2012/11/12
NB
+50
科创币
乖乖乖
2012/11/12
我今天就这么多了。。。
+100
科创币
jrcsh
2012/11/12
高质量发帖
+40
科创币
科学人
2012/11/12
+10
科创币
罗布
2012/11/12
这个真心强大。。。。
+25
科创币
wjwj1234xx
2012/11/12
我了个去这个太威武了
+25
科创币
冲压发动机
2012/11/13
亲!你可以移民了.恭喜.
+25
科创币
hsldlee
2012/11/13
全力顶,就这点权限,笑纳
+25
科创币
TubeChip404
2012/11/13
加,不加没道理呀      ^_^
+50
科创币
逆天
2012/11/15
看到3DMARK立马跪了。。。。
+50
科创币
jxs
2012/11/15
啥时用全模拟元件做一个。。。
+25
科创币
luo
2012/11/16
+30
科创币
kknd
2012/11/16
不会是实时3D吧。。。那可太强大了。。。
+50
科创币
极度深寒
2012/11/17
。。这焊工太彪悍了
+25
科创币
金星凌日
2012/11/22
+30
科创币
带火星的木条
2012/11/23
顶礼膜拜.我只剩这么多分了今天
+25
科创币
wwt3100
2012/12/12
膜拜...
+25
科创币
xusixteen
2013/07/03
必须膜拜
+10
科创币
ldfa
2014/04/25
高质量发帖
14年1个月前IP:未同步
470229
51楼
制电路板我还是更倾向热转印。。方便些。。

请问楼主这在大学里是什么专业啊。。高三僧求大学选专业指导撒。。呵呵。。
+1
科创币
神之觉醒
2012/11/13
表示只是初中毕业
引用
评论
14年1个月前IP:未同步
470236
52楼
额滴个神啊![s:271]
引用
评论
14年1个月前IP:未同步
470247
53楼
我会以图的方式说明  CPU控制器对所有指令执行过程[的每一个时钟 门电路工作状态[s:222]
引用
评论
14年1个月前IP:未同步
470258
54楼
嗯,上百兆是得注意布线。
这让我有一种D一个i4004的冲动,不过话说4004,4003,4003这三个集成电路就可以做一台微型计算机了............[s:275]
引用
评论
14年1个月前IP:未同步
470266
55楼
回 49楼(神之觉醒) 的帖子
唉,初中生学到这种地步都我有点自卑了
引用
评论
14年1个月前IP:未同步
470273
56楼
膜拜!话说以后有时间也D一个玩玩,
16位的cpu比这个复杂多少?
话说16位的cpu再加上一个硬盘,主板,显卡,ram,就可以装一个电脑,然后装上dos了
引用
评论
14年1个月前IP:未同步
470357
57楼
虎哥 给楼主整点经费 吧
引用
评论
14年1个月前IP:未同步
470359
58楼
楼主  拜你为师 收多少学费
引用
评论
14年1个月前IP:未同步
470360
59楼
初中毕业?!!!lz什么时候开始搞这些?
引用
评论
14年1个月前IP:未同步
470369
60楼
卧槽
楼主太强大了。
27MHz主频刷图速度都那么快  
看来架构设计的很好啊。比STC强多了
顶楼主

中国的芯片产业就靠你了
引用
评论
14年1个月前IP:未同步
470436
61楼
双面板子我做过。双面焊盘你那么处理的啊。
底座都是ic座子拆掉塑料

打孔就是一大工程啊
+1
科创币
神之觉醒
2012/11/16
两边都焊就OK的
引用
评论
14年1个月前IP:未同步
470548
62楼
其实完全可以批量生产这种巨型cpu   散热又好   都不懂为什么台式cpu也要这么小   这样就有200元i7买了    楼主加油啊
引用
评论
14年1个月前IP:未同步
470687
63楼
引用第62楼kc地毯清洁员于2012-11-15 13:32发表的  :
其实完全可以批量生产这种巨型cpu   散热又好   都不懂为什么台式cpu也要这么小   这样就有200元i7买了    楼主加油啊


200元的I7,体积是一个房间,上海非常郊区的房价一个平米算1万,如果是这样,那我还是买小点的I7好
引用
评论
14年1个月前IP:未同步
470688
64楼
回 49楼(神之觉醒) 的帖子
LZ是不是有自己写汇编器?比较感兴趣,能开源让俺瞅瞅不?
+1
科创币
神之觉醒
2012/11/28
在108楼
引用
评论
14年1个月前IP:未同步
470702
65楼
回 64楼(daxus) 的帖子
没做汇编器,ROM程序是用机器码写的2进制文件,用C32Asm 或 WinHex打开就能看见了 (我是用C32Asm写的)

ROM二进制文件:

attachment icon 8位机测试程序.rar 0.40KB RAR 131次下载

程序结构后面我再说,不然现在SPI板和硬件连接还没说清楚; 码字很累。。。[s:221]
引用
评论
14年1个月前IP:未同步
470704
66楼
立即数传送指令执行原理  这样弄不知道大家能看得懂不~~~[s:108]  
(ROM里的机器码请参照49楼)      这个是GIF文件  是动的

立即数传送指令执行原理.gif



估计放不了GIF[s:263]
引用
评论
14年1个月前IP:未同步
470731
67楼
楼主太强大了
引用
评论
14年1个月前IP:未同步
470770
68楼
[s:271]牛A  ~  牛C

楼主多费点精力,弄个从零开始DIYCPU的教程吧。
从基础原理 到元器件选择、搭建、编程、运行、调试。
让一般人也能依样画葫芦的鼓捣出一个真正意义的CPU,说不定,中国未来的某一个CPU设计者就这样被勾引上路了[s:274]
+16
科创币
神之觉醒
2012/11/16
好主意,那后面我就按你的流程说了。。。
引用
评论
14年1个月前IP:未同步
470785
69楼
回 68楼(kc2038) 的帖子
科新社先预定出版权。。[s:178]
+1
科创币
神之觉醒
2012/11/16
。。。。。
引用
评论
14年1个月前IP:未同步
470792
70楼
不会是实时3D吧。。。那可太强大了。。。
+1
科创币
神之觉醒
2012/11/16
不会。。。3D算法还没学, 现在只是刁虫小技的刷图片
引用
评论
14年1个月前IP:未同步
470794
71楼
上面的都抛掉了 这里我全部重新开始讲:


大概是在09年的时候,我朋友发了个链接过来,他说是国外DIY CPU的,就是那个Magic-1,我把全文拜读完后,佩服得5体头地,心里面的疑惑也油燃而生,老外的这个CPU怎么装上主板去用的呢,又没有显示器,就是一堆集成电路,还是什么门电路,我那时对门电路是什么东西还不知道,但就是那一刻起,DIY CPU就像一颗种子一样种在了我的心里,其实也不是天天想着弄这玩意睡不着; (09年我还在玩音响,我朋友也是)  


2010年中,开始对木马感兴趣,主要就是玩灰鸽子木马,但是木马一放到别人电脑就被杀毒软件秒掉了,怎么办呢,就要做免杀,免杀就是让杀软认不出来,我就到网上搜啊搜,看到了一篇介绍特征码免杀的文章,大概操作方法就是把木马分成很多个文件之后用杀软杀,杀软会把某一个文件杀掉,这样就再把那个被杀掉的文件再分,再用杀软来杀,再分,再杀,再分,再杀。。。。。。。。。最后就锁定了精确的位置,只要修改那个位置,杀软就不会杀了,那个位置的长度仅为两个字节,这就是特征码,文章的作者说,修改要涉及到汇编,当时我也不知道汇编是什么东西,大概就是什么加法减法移动跳转~~~  后面反正就是看了一堆教程,就知道操作了,结果就不多说了。。。。玩木马就玩了个把月,之后就开学了;就是这次经历汇编也在我心里种下了一颗种子。


2010年10月还是11月了~  的某天, 不太记得时间了- -, 看了一偏说人类DNA的什么代码,有个老外研究发现,可能是外星人写的,说是还加了注释,没全部跑起来,全跑起来就很叼杠了 什么什么之类的,这篇文章很搞。。。同时也激发了我下决心要学编程;


2010年底到2011年之间,看教程学了易语言编程,全中文的,很好搞,也明白了程序是怎么个回事,还写了几个无聊脑残型的程序。


2011年初,我在上高二,就是这段时间开始对计算机感兴趣,YY着用继电器做个计算器(是计算器不是计算机,因为这个时候还没了解计算机的原理),不知道怎么无意间想起门电路,上课的时候用手机查,不查不知道,一查还蹦出了一大堆,什么与门 或门 非门 与非门 或非门  异或门  同或门 三态门,有点眼晕,细细看完才明白原来是高低电平输入和输出的不同对应关系,YY的用继电器做个计算器后来也没有搞, 反倒是我同桌,整天跟我费话,烦得要死,跟我说什么单片机,他想做个串口的下载器,后来他也没有搞,还没到2011年中他就走了,我闷得无聊,因为班里面的那群B整天赌钱,没人跟我有相同爱好的,后面放假了,我也打算不再读下去; 2011年6月初,想起单片机,就下了教程来看,边教C语言的,讲得很不错,有些心动,跑到了收破烂那里捡了几片回来,后面有点懒还有兴趣问题就没开工。


2011年7月~8月,这个时间发现了科创论坛, 玩高压电,玩高压电是因为我对流传的特斯拉线圈输出大于输入报有幻想,后来破灭了,就玩玩了也不玩了;


2011年9月底第一个单片机作品,那个兴奋劲~~  诶 ~不说了  现在想想那时像个傻X一样;


2011年10月初开始认真搞计算机原理,由于初步玩了单片机差不多心里就有个底了,后面当然就是下教程来看拉,同时还去图书馆借了几本书,对我帮助最大的就是<<新编微机原理及接口技术>> 和 <<数字逻辑>> 这两本,  教程就断续看了半个月,看了有10多集这样,名字叫<<微机原理>>,是个女老师讲课; 之后就明白了汇编和机器码的原理; 后面又搜到<<简单cpu的逻辑设计>>,我点进去看,进去时不懂CPU的架构和指令集,出来时就都懂了~~~


2011年底到2012年2月底就开始用Multisim 11.0画电路,是16位机,很蛋疼的电路和架构,操作系统的内存加载方案和进程切换机制都有了,后来也没完成,技术原因(硬件CPU控制器还没YY出来 想用单片机来控制)和本人太懒。


2012年3月就全部放下了,帮同学亲戚装了几台机;4月底就有计划的用单片机对鼠标试验驱动,因为我还YY着用单片机作为DIY计算机的PS/2接口转换处理,打算用键盘鼠标作为输入设备, 后面就顺便玩玩单片机; 7月还出去打了半个月工,做电脑销售员  擦的。。。后面被辞了,没工资+ +!。 8月底我抛弃了16位机,转向更简单的8位设计,就是9月底发上来的那个,可以写个简单的单任务操作系统来跑跑,因为那个架构可以靠操作系统软件在外部(内存卡和硬盘之类的)加载程序数据进ROM,之后操作系统再修改程序指针把程序入口地址转向刚加载进ROM的程序, 电路只是仿真粗略画一下,还没进行优化的。


再后面花了一个星期不到的时间来设计现在的这个炮灰小机机,想验证一下这个纯硬件CPU控制器,10月初就完成设计了,这个炮灰小机机有两个版本,第一版本是双指令控制器,也就是二级流水线版的(过后我发上来),二级流水线的最高速度为4个时钟一条指令,比现在的8个时钟一条指令的第二版本最大提升速度为两倍,不过我太懒了,又不想搞这么复杂;之后第二版本就改好后,想拿去打样,是15CM X 20CM的板子,麻弊的。。。一问打样价格两狗多(两百多),都能买好几套IC了。。。后面我问其他几家10CM X 10CM的10片能拼板不,说是能,我就把电路分割开为4个部份,分别画完了4块10CM X 10CM内的板子,一发过去,我擦,他说拼板只能在10CM X 10CM内拼,我勒个去~! 搞来搞去都10月中旬了,算了想想干脆自己做得了,后面就这样了~~~


下面是我对CPU原理的理解,好吧,我尽量通俗~   本人文笔不是很好
+25
科创币
cnacd
2012/11/19
上进少年!!励志贴!!加油!!这让大学里打DOTA的人们情何以堪啊
+15
科创币
mobius
2012/12/22
挺励志的
引用
评论
14年1个月前IP:未同步
470796
72楼
回 71楼(神之觉醒) 的帖子
原理不难,电路不难,仿真不难,程序不难,难的是真的有人肯做!!!!
顶你!!!
引用
评论
14年1个月前IP:未同步
470845
73楼
[s:261] 好厉害,不顶不行了,钻眼儿可是个力气活啊,佩服
引用
评论
14年1个月前IP:未同步
470854
74楼
回 65楼(神之觉醒) 的帖子
如果有进一步的编程需求,我觉得可以搞一个汇编器,反正指令集也少。
如果有可能,还可以移植gcc,那样就有的玩了。
+7
科创币
神之觉醒
2012/11/16
对!大规模编程跑起来才爽
引用
评论
14年1个月前IP:未同步
470877
75楼
这楼讲我对计算机原理的理解(建意最好有单片机和C语言的基础):


学过C语言的人对 “x = y + z - k;” 这段语句肯定很熟悉,那么CPU是怎么实现的呢,用中文来描述,就是变量y和变量z相加 得出的结果再减变量k,最后把运算结果放到变量x ,对,CPU就是按照这个步奏来实现的,


下面我们就来虚拟一个计算机系统,详细说明CPU是怎么处理 “x = y + z - k;” 的。



现在这里的计算机系统包含有CPU、ROM、RAM;
    

1. ROM是一个存储器,用来顺序存放运算“x = y + z - k;”的步奏(程序代码).

2. RAM也是一个存储器, 和ROM不同的是,RAM是用来存放数据变量x、y、z、k的.

3. CPU是包含控制和运算功能的一个器件,现在假定CPU里面有两个数据寄存器,分别为累加器A和R1,   --------数据寄存器是什么东西有什么用,怎么用,先不用管.


首先要说明一点,变量x为RAM里的3单元,变量y为RAM里的0单元,变量z为RAM里的1单元,变量k为RAM里的2单元;



要执行“x = y + z - k;”这条C语言语句就要进行底层编程,底层编程就是像上面中文描述的过程一样,用CPU的指令来代替中文描述, 一步一步的进行运算处理, 也就是用CPU提供的指令来编程.  (这一步应该叫做C编译了)


下面是用CPU指令编好的程序(其实就是“x = y + z - k;”的编译结果):

MOV A,[0];  

MOV R1,[1];

ADD A,R1;

MOV R1,[2];

SUB A,R1;

MOV [3],A;

上面的程序一共有6行,然后,装入ROM,就像这个样子:

1.jpg


装好程序后,下面CPU开始上电~~~
CPU复位上电后程序指针是指向ROM的0地址.  (当然不也能排除某些变态脑残无敌型CPU是指向XXX%$#的)


1.执行 MOV A,[0];  此时CPU的程序指针是指向ROM的0地址, CPU把0地址里的 “MOV A,[0];” 通过ROM数据线读入CPU,这一阶段称作取指令或发射指令,取完指令了,CPU分解指令,知道这条指令名为“MOV” ,MOV也就是传送操作的意思,并且知道要把RAM “[0]”地址里的数据送往“累加器A”, CPU解读完这条指令就开始操作,这时CPU先把地址[0]送往数据指针,数据指针也就是RAM的地址,之后再把RAM里的y通过RAM数据线送往累加器A,这时累加器A的内容就为y,    最后CPU还要做一个关键的动作,就是把程序指针加1,以指向下一条指令,结果如下图所示。

2.jpg


2.执行 MOV R1,[1];  此时CPU的程序指针是指向ROM的1地址, CPU把1地址里的 “MOV R1,[1];” 通过ROM数据线读入CPU,这一阶段称作取指令或发射指令,取完指令了,CPU分解指令,知道这条指令名为“MOV” ,MOV也就是传送操作的意思,并且知道要把RAM “[1]”地址里的数据送往“R1”, CPU解读完这条指令就开始操作,这时CPU先把地址[1]送往数据指针,数据指针也就是RAM的地址,之后再把RAM里的z通过RAM数据线送往R1,这时R1的内容就为z,    最后CPU还要做一个关键的动作,就是把程序指针加1,以指向下一条指令,结果如下图所示。

3.jpg

3.执行 ADD A,R1;  此时CPU的程序指针是指向ROM的2地址, CPU把2地址里的 “ADD A,R1;” 通过ROM数据线读入CPU,这一阶段称作取指令或发射指令,取完指令了,CPU分解指令,知道这条指令名为“ADD” ,ADD也就是加法操作的意思,并且知道要把累加器A和R1相加, CPU解读完这条指令就开始操作,累加器A作为被加数,R1作为加数,相加,运算结果送回累加器A,覆盖累加器A的内容,最后CPU还要做一个关键的动作,就是把程序指针加1,以指向下一条指令,结果如下图所示。

4.jpg

4.执行 MOV R1,[2];  此时CPU的程序指针是指向ROM的3地址, CPU把3地址里的 “MOV R1,[2];” 通过ROM数据线读入CPU,这一阶段称作取指令或发射指令,取完指令了,CPU分解指令,知道这条指令名为“MOV” ,MOV也就是传送操作的意思,并且知道要把RAM “[2]”地址里的数据送往“R1”, CPU解读完这条指令就开始操作,这时CPU先把地址[2]送往数据指针,数据指针也就是RAM的地址,之后再把RAM里的k通过RAM数据线送往R1,这时R1的内容就为k,    最后CPU还要做一个关键的动作,就是把程序指针加1,以指向下一条指令,结果如下图所示。

5.jpg

5.执行 SUB A,R1;  此时CPU的程序指针是指向ROM的4地址, CPU把4地址里的 “SUB A,R1;” 通过ROM数据线读入CPU,这一阶段称作取指令或发射指令,取完指令了,CPU分解指令,知道这条指令名为“SUB” ,SUB也就是减法操作的意思,并且知道要把累加器A和R1相减, CPU解读完这条指令就开始操作,累加器A作为被减数,R1作为减数,相减,运算结果送回累加器A,覆盖累加器A的内容,最后CPU还要做一个关键的动作,就是把程序指针加1,以指向下一条指令,结果如下图所示。

6.jpg


6.执行 MOV [3],A;  此时CPU的程序指针是指向ROM的5地址, CPU把5地址里的 “MOV [3],A;” 通过ROM数据线读入CPU,这一阶段称作取指令或发射指令,取完指令了,CPU分解指令,知道这条指令名为“MOV” ,MOV也就是传送操作的意思,并且知道要把累加器A的数据送往RAM的“[3]”地址, CPU解读完这条指令就开始操作,这时CPU先把地址[3]送往数据指针,数据指针也就是RAM的地址,之后再把累加器A里的数据通过RAM数据线写入RAM, 最后CPU还要做一个关键的动作,就是把程序指针加1,以指向下一条指令,结果如下图所示。

7.jpg



总之MOV、ADD神马之类的指令和机器码是等同的,机器码就是用2进制来定义表示,CPU可以读取。


这U的电路和指令集都发了,下楼将解密视频上的“播放”效果~
引用
评论
14年1个月前IP:未同步
470880
76楼
再做块板搭个硬件乘法器,你这个U就有得玩了。。。
虽然简单,但中规中矩。
而且还可以针对某些应用做些特别的优化。。。

如果真的可以搞出来,
从库文件开始用汇编实现一个C不是不可能的。。。
然后。。。。
YYing。。。
+7
科创币
神之觉醒
2012/11/16
硬件乘法器~~~
引用
评论
14年1个月前IP:未同步
470906
77楼
回 76楼(kknd) 的帖子
硬件乘法器是个好东西,下次有机会也一起搞上去,这东西要是有现成的IC就好[s:274]    话说我现在这U也可以实现乘法,不过要RAM做为铺助,乘法可以用移位和加法来实现,  移位可以用加法来实现,  就是做8位乘8位的乘法会很烦琐,  后面我再把此机的乘除法程序试着写出来
引用
评论
14年1个月前IP:未同步
470916
78楼
这CPU能玩超频不?
话说LZ你还没说时钟是干什么用的呢
+7
科创币
神之觉醒
2012/11/17
可以啊~~~加电压!超频,估计能上40MHZ以上!时钟就是主频,主频就是时钟
引用
评论
14年1个月前IP:未同步
470926
79楼
回 78楼(dx毁灭者) 的帖子
反正时钟就是¥¥……¥#·#%……#¥。。。。。=  =[s:275]  表达的意思多了去了   在本帖你就把时钟看成HZ得了[s:221]
引用
评论
14年1个月前IP:未同步
470939
80楼
记得一位老工程师的回忆录:

国产计算机稳定性不好,当时都用国产小规模集成电路,非常脆弱,每次开机都会烧坏一两块芯片,必须找出来换上新的……

我一直比较纳闷:换芯片就得关机啊,关机换好了再开,不又要烧吗?
+1
科创币
神之觉醒
2012/11/17
这么搞笑。~&nbsp;&nbsp; 现在的IC感觉都比较难烧,短路都没事
+1
科创币
kknd
2012/11/17
亮点是“国产”
引用
评论
14年1个月前IP:未同步
470967
81楼
回 80楼(虎哥) 的帖子
应该不会每次开机都烧吧,不然还怎么用 [s:225]
引用
评论
14年1个月前IP:未同步
470979
82楼
回 80楼(虎哥) 的帖子
说不定是可以热插拔的。。。

开机烧片显然是电源设计有问题啊
引用
评论
14年1个月前IP:未同步
470994
83楼
回 楼主(神之觉醒) 的帖子
看了你的帖子,使我想起了magic1
心潮澎湃啊!!!我也想做一台!
+1
科创币
神之觉醒
2012/11/17
好!现在玩这东西的人比较少,期待你的加入~
引用
评论
14年1个月前IP:未同步
471042
84楼
这楼讲解视频上的“播放”效果,其实就是刷图片,后来感觉没声音很无聊,就把声音配上去了。

刷图片速度快最主要的就是靠硬件SPI,CPU只是充当控制角色。

下面是硬件SPI电路图。

硬件SPI板.jpg

控制指令和连接定义(下面以16进制代表2进制的机器码指令):

0x6A  位0控制输出置1  选液晶数据寄存器           //TFT液晶RS线,连接CPU板的BIT0_OUT(请参看电路图,此控制位有插针输出)  
0x72  位0控制输出置0  选液晶命令寄存器           //TFT的复位线接VCC,RD线接VCC,CS线接GND。

TFT我是在这里买的XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX (我和他不是一伙的~)

0x6B  位1控制输出置1  SPI寄存器为置数模式        //SPI板左移/置数选择线,连接CPU板的BIT1_OUT(请参看电路图,此控制位有插针输出)
0x73  位1控制输出置0  SPI寄存器为左移模式        

0x6C  位2控制输出置1  TF卡的MOSI为SPI寄存器输出    //连接SPI板的TF卡MOSI置1控制,连接CPU板的BIT2_OUT(请参看电路图,此控制位有插针出)      
0x74  位2控制输出置0  TF卡的MOSI置1                    

0x6D  位3控制输出置1  无
0x75  位3控制输出置0  无

0x6E  位4控制输出置1  液晶写时钟                    // TFT的WR线,连接CPU板的U53B的第10脚(请参看电路图有IC号)
0x76  位4控制输出置0  无

0x6F  位5控制输出置1  SPI寄存器置数锁存时钟          // 连接CPU板的U53A的第4脚(请参看电路图有IC号)
0x77  位5控制输出置0  SPI寄存器和TF卡左移一位时钟    // 连接CPU板的U53A的第1脚(请参看电路图有IC号)



上面的控制和单片机IO口模拟差不多。
玩过TFT的人知道用单片机IO口控制液晶的写(WR)线 完成一次液晶写操作 在C语言中要这样操作:

WR = 0;
WR = 1;

上面这样的操作在一般51核的内部大约需要几十个时钟的时间,用IO口模拟控制效率比较低; 而在本人的这个CPU中设置有特别的控制,只要执行一条机器码指令0x6E就能完成一次液晶写操作,只须8个时钟~~~ 有木有效率~

而且用SPI板只要8个时钟就能和TF卡传输一个字节的数据,1条CPU指令产生1个时钟。


程序的控制流程(TF卡和TFT的操作方法网上一大堆,这里就不细讲了):
程序流程.jpg

ROM的2进制文件在65楼发了。。。我不可能一个字节一个字节的注释,那样会挂掉的[s:221]  有兴趣的话可以参看指令集或49楼的说明来对照

下面大概讲一下ROM 2进制文件的结构:

ROM文件里的地执和ROM地址是对应的;

地址0H~2CFH为TFT的初始化部份,下图。
TFT初始化部份.jpg

地址2D0H~34FH为TF卡复位为SPI模式程序,下图。
TF卡复位为SPI模式程序.jpg

地址350H~3CFH为TF卡初始化程序,下图。
TF卡初始化程序.jpg

地址3D0H~44FH为发送CMD18读多块命令到TF卡,其中地址3E1H、3F1H、401H、411H分别为00、04、E2、00,也就是TF卡的扇区地址0004E200,为存放BIN图片文件的起始扇区地址,文件的起始扇区地址我是用WinHex查看的,下图。
发送CMD18读多块命令到TF卡.jpg

地址450H~166FH为读TF卡512字节和刷掉两个CRC(太长就不截图了。。。)。


地址1670H~1677H为SPI再接收一个字节,下图。
SPI再接收一个字节.jpg

地址1678H~1685H为判断SPI收到0xFE?,下图。
判断SPI收到0xFE?.jpg

这些16进制程序都是手工码上去的[s:221]
引用
评论
14年1个月前IP:未同步
471044
85楼
佩服,厉害,给力,学习
引用
评论
14年1个月前IP:未同步
471107
86楼
其实这个也没什么的玩玩而已。。。搞东西去~~~后面的太多,有时间再说了  先闪

最后发个71楼说的第一版的电路没优化的2级流水线CPU,纯属乱搞

attachment icon 哈佛结构2级流水线.rar 1.82MB RAR 141次下载
+7
科创币
kknd
2012/11/17
感谢分享!
引用
评论
14年1个月前IP:未同步
471127
87楼
回 86楼(神之觉醒) 的帖子
这个模型用FPGA实现吧,不要再焊数字IC了。。。
这样更有助于你快速开发不同字长不同架构的CPU。。。
+1
科创币
神之觉醒
2012/11/28
好!
引用
评论
14年1个月前IP:未同步
471190
88楼
神人神人啊!
引用
评论
14年1个月前IP:未同步
471191
89楼
真不知道你耗了多少时间..............
引用
评论
14年1个月前IP:未同步
471503
90楼
象你这样的进步青年 要当心。他们会迫害你的
+1
科创币
神之觉醒
2012/11/28
???!!!!!!!!o_0!
引用
评论
14年1个月前IP:未同步
471750
91楼
ALU单元是怎么设计的?
+1
科创币
神之觉醒
2012/11/28
74LS181&nbsp;&nbsp;搜一下&nbsp;&nbsp; ALU也可以用门来搭
引用
评论
14年1个月前IP:未同步
471791
92楼
楼主!开个课程好了!
引用
评论
14年1个月前IP:未同步
471804
93楼
学校教过 门电路可以用 VHDL  做.体积可以小100倍
引用
评论
14年1个月前IP:未同步
471819
94楼
回 69楼(虎哥) 的帖子
《神之国度CPU发展大事记》

著者:神之觉醒
出版:科创论坛
主编:虎哥

  要是能在著作里提这么一句:
序言 神之历OO年,在某某提议下,神之觉醒开始了某某CPU的启蒙教程,………………[s:178]
让俺也史上留个名 [s:178]
+1
科创币
神之觉醒
2012/11/28
=&nbsp;&nbsp;=! 这么垮张
引用
评论
14年1个月前IP:未同步
471888
95楼
太强大了,小人佩服啊!!
引用
评论
14年1个月前IP:未同步
471892
96楼
怎么能跑 3D ?
+1
科创币
神之觉醒
2012/11/28
是图片
引用
评论
14年1个月前IP:未同步
471920
97楼
   申请~~~转贴到太平洋

    稿费~~~~另行支付KCB



   作者~~~~1秒钟内不提出反对表示,接受本人的转贴申请,稿费为1KCB.[s:219]
引用
评论
14年1个月前IP:未同步
471925
98楼
回 87楼(kknd) 的帖子
为什么cpu都要做的怎么小...  省电?省位子?  对台式机来说都是木有用的啊,   如果山寨的这种巨型cpu性能又高又便宜是不是一样能用?
引用
评论
14年1个月前IP:未同步
471928
99楼
回 98楼(20!不曾存在) 的帖子
太多了~~~比如晶元面积,
引用
评论
14年1个月前IP:未同步
471973
100楼
表示俺也想弄一个,虽然目前在玩高压。。。不过我只知道一丁点C语言,汇编完全不懂。。要学的东西还有好多。。。。。
+1
科创币
神之觉醒
2012/11/28
先从单片机入手吧&nbsp;&nbsp;之后研究下计算机原理就OK的
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的