龙少精简炮灰测试版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位色模式:
点击此处查看视频
XXXXXXXXXXXXXXXXXXXX/programs/view/Y3x2o4d_snY/


下面是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 高质量发帖
来自:计算机科学 / 计算机电子学
211
 
2
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
神之觉醒 作者
11年7个月前 IP:未同步
469929
这个炮灰CPU的架构改了好多次,都是往简单的方向改,为了降低DIY的难度,和降低成本,没有加入堆栈和中断功能,整个CPU只有50+片74LS,IC成本就几十块钱, 原来我是想用74F的,我用74F按照门的串联延迟估计频率在30~40MHZ之间,但是手头紧 只好用了74LS,当初按照IC的MAX延迟估计实际频率也就在20MHZ左右,但是实际做出来却有点出乎意料;  不管怎样只是做来试验玩玩的,没必要太认真[s:229]   和人家INTEL、AMD、STC等等跟本不能比,对于能有这样的效果,我是用最直接的办法来控制的,所有细节我会慢慢道来,是不是这样或你对我有怀疑 等我说完你做一个出来就懂了

8位炮灰测试CPU架构图:
8位炮灰测试CPU架构图.jpg

指令集、Protel 99 SE电路、PCB文件、Multisim 11.0仿真文件:

attachment icon 指令集、Protel 99 SE电路、PCB文件、Multisim 11.0仿真文件.rar 1.68MB RAR 299次下载

下面还有很多,我要思考下以怎样的顺序给大家作祥细的介绍,并且我尽量说的通俗易懂,好让每个人都能了解CPU的工作原理,有能力自己DIY
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
11年7个月前 IP:未同步
470005
双面制板就打好定位洞两边爆光好就OK了

菲林:
菲林1.jpg

菲林2.jpg   

暴光:
暴光.jpg
显影:
显影完成.jpg

腐蚀:
腐蚀.jpg

腐蚀2.jpg

腐蚀3.jpg

腐蚀OK:
腐蚀OK1.jpg

腐蚀OK 正面_近.jpg

腐蚀OK 背面.jpg

打洞:
打洞.jpg

打洞1.jpg

打洞OK.jpg

脱膜:
脱膜.jpg

脱膜OK.jpg

脱膜OK1.jpg
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
11年7个月前 IP:未同步
470007
装上IC自我陶醉一下[s:269]:
装上IC自我陶醉一下.jpg

开焊:
开焊.jpg

开焊1.jpg

焊好:
焊好.jpg

焊好1.jpg

焊好2.jpg

焊好3.jpg

焊好4.jpg

焊好5.jpg

焊好6.jpg

焊好7.jpg

焊好8.jpg

完工:
完工.jpg

上电调试指令:
调试指令.jpg

调试指令1.jpg

调试指令3.jpg
引用
评论
1
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
11年7个月前 IP:未同步
470204
下面是此CPU的使用说明;

CPU引脚:

电源插针。

CPU时钟输入和复位插针。

ROM读 和 RAM读、写 输出插针。

ROM 16位地址线输出 两排插针。

RAM 16位地址线输出 两排插针。

ROM 机器码指令数据输入插针。

RAM 数据输入输出插针。

位控制输出插针。(用来控制液晶 TF卡什么的~)

数据总线插针。

累加器和R1寄存器输出插针。

指令寄存器输出插针。

CPU电路在35楼。




炮灰CPU的寄存器(图在35楼):

1.数据寄存器,此CPU有两个数据寄存器,累加器和R1,分别由一片74LS273锁存器组成。

2.RAM地址寄存器,此CPU有两个RAM地址寄存器,为R2和R3,R2为高8位地址,R3为低8位地址,共同组成16位地址,可以寻址64KB的RAM,也是分别由一片74LS273锁存器组成。

3.程序计数器,此CPU的程序计数是16位的,可以寻址64KB的ROM,由4片74LS161二进制同步加法计数器组成。

4.状态标志,状态标志只有两位,分别为零标志位和进借位标志位,由一片74LS74组成。

XXXX,IR为CPU的指令寄存器,不可寻址的,由一片74LS273组成。








炮灰CPU的寻址方式、指令、和机器码:

这个CPU有三种寻址方式,立即数寻址,寄存器寻址,寄存器间接寻址。


后面都把累加器简称为A。


1.立即数寻址(立即数传送指令):

MOV A,7FH       //将16进制数7FH送累加器       第1字节机器码为00000000  第2字节机器码为7FH

MOV R1,7FH     ; //将16进制数7FH送R1寄存器     第1字节机器码为00000001  第2字节机器码为7FH

MOV R2,7FH     ; //将16进制数7FH送R2寄存器     第1字节机器码为00000010  第2字节机器码为7FH

MOV R3,7FH     ; //将16进制数7FH送R3寄存器     第1字节机器码为00000011  第2字节机器码为7FH

立即数传送指令为双字节指令,第一字节的高5位为操作码,低3位为寄存器地址,第二字节为立即数;其他指令都是单字节。







2.寄存器寻址(累加器传送指令和运算指令):

MOV A,A         //累加器的内容送累加器 (无聊操作- =~)   机器码为00011000

MOV R1,A       ; //累加器的内容送R1寄存器       机器码为00011001

MOV R2,A       ; //累加器的内容送R2寄存器       机器码为00011010

MOV R3,A       ; //累加器的内容送R3寄存器       机器码为00011011

MOV [R2,R3],A   //R2寄存器作为RAM高8位地址,R3寄存器作为RAM低8位地址,然后累加器的内容送RAM      机器码为00010000

ADD A,R1       ; //累加器和R1寄存器相加,结果送回累加器      机器码为00100000

INC A           //累加器加1     机器码为00101000

SUB A,R1       ; //累加器为被减数,R1为减数,相减,结果送回累加器    机器码为00110000

DEC A           //累加器减1     机器码为00111000

AND A,R1       ; //累加器和R1相与,结果送回累加器      机器码为01000000

OR A,R1         //累加器和R1相或,结果送回累加器      机器码为01001000

NOT A           //累加器取反     机器码为01010000                    

XOR A,R1       ; //累加器和R1寄存器相异或,结果送回累加器    机器码为01011000







3.寄存器间接寻址(RAM到寄存器传送指令 和 转移指令):

(1)RAM到寄存器传送指令:

MOV A,[R2,R3] ;  //R2寄存器作为RAM高8位地址,R3寄存器作为RAM低8位地址,然后RAM的内容送累加器    机器码为00001000

MOV R1,[R2,R3]; //和上面一样R2、R3内容作为RAM地址,然后RAM的内容送R1寄存器    机器码为00001001

MOV R2,[R2,R3]; //和上面一样R2、R3内容作为RAM地址,然后RAM的内容送R2寄存器    机器码为00001010

MOV R3,[R2,R3]; //和上面一样R2、R3内容作为RAM地址,然后RAM的内容送R3寄存器    机器码为00001011

(2)转移指令:

JMP [R2,R3]     ; //无条件转移到由R2、R3组成的16位地址     机器码为01100011

JNC [R2,R3]     ; //进借位标志位为0时,执行转移,转移到由R2、R3组成的16位地址    机器码为01100000

JNE [R2,R3]     ; //零标志位为0时,执行转移,转移到由R2、R3组成的16位地址    机器码为01100001

JA [R2,R3]       //零标志位或进借位标志位有一个1时,执行转移,转移到由R2、R3组成的16位地址    机器码为01100010



下面是特别的控制指令:

(1)状态标志控制指令

进借位标志位置1      机器码为01101000

进借位标志位置0      机器码为01110000

零标志位置1      机器码为01101001

零标志位置0      机器码为01110001

(2)CPU位控制输出 控制指令

位0控制输出置1      机器码为01101010

位0控制输出置0      机器码为01110010

位1控制输出置1      机器码为01101011

位1控制输出置0      机器码为01110011

位2控制输出置1      机器码为01101100

位2控制输出置0      机器码为01110100

位3控制输出置1      机器码为01101101

位3控制输出置0      机器码为01110101

位4控制输出置1      机器码为01101110

位4控制输出置0      机器码为01110110

位5控制输出置1      机器码为01101111

位5控制输出置0      机器码为01110111





运算指令对标志位的影响:

ADD加法指令,如果运算有进位,进借位标志置1,否则置0;如果运算结果为0,零标志置1,否则置0;

INC加1指令,如果运算有进位,进借位标志置1,否则置0;如果运算结果为0,零标志置1,否则置0;

SUB减法指令,如果运算有借位,进借位标志置1,否则置0;如果运算结果为0,零标志置1,否则置0;

DEC减1指令,如果运算有借位,进借位标志置1,否则置0;如果运算结果为0,零标志置1,否则置0;

AND与运算指令,不影响进借位标志;如果运算结果为0,零标志置1,否则置0;

OR或运算指令,不影响进借位标志;如果运算结果为0,零标志置1,否则置0;

NOT非运算指令,不影响标志;

XOR异或运算指令,不影响进借位标志;如果运算结果为0,零标志置1,否则置0;
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
上级专业
同级专业
神之觉醒
学者 机友 笔友
文章
71
回复
1163
学术分
4
2011/08/12注册,1年4个月前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:手机号
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}