文号
t67627
阅读
30250
回复
32
收藏
21
[原创电路]单周期1位CPU电路图 只用11片TTL74门电路 玩具级别 方便发烧友DIY
2014/10/21
IP:广西
发现CPU DIY发骚友苦于找不到简单的CPU电路...
那么问题就来了,为何不设计个超级简单的CPU给CPU DIY发烧友入门...
于是电路就诞生了...
跳转指令执行跳转的时候消耗2个时钟 不执行跳转消耗1个时钟  其他指令都是1个时钟 工作频率估计10MHZ以上;
非常简单的一个电路;
这个CPU搭配 ROM 和 位RAM/IO 就可以工作了;
ROM位宽是16位(1条指令16位);
这里的程序计数器可以寻址64KB的ROM(可以增减);
如果你有想法...这个CPU是可以实现比较牛逼的程序  加上RAM/IO 带个TFT模块神马的...

单周期1位CPU电路图.png
32
12年2个月前IP:广西
727339
1楼
[s::funk:]DIYCPU技术哪家强, 科创论坛找龙少[s::funk:]
引用
评论
12年2个月前修改于 12年2个月前IP:广西
727365
6楼
引用 虎哥:
喜闻乐见的套件呢
.....那部8位机写几个程序跑跑先再说  如果出套件的话必须有一个严谨的设计...  那个8位机的CPU毕竟是人生第1个DIY CPU, 设计不是很严谨,  出套件的话不打算出那个,  现在准备搞定编译器写程序让它大规模跑起来感觉不一样的!   搞定之后发布文件  可以仿照DIY;
本贴这个1位CPU可以出套件  但是长远考虑 也不打算出这个架构的套件;   如果出套件的话肯定要出个超牛X架构的套件...
引用
评论
12年2个月前IP:广西
727453
11楼
引用 novakon:
挺好的,1bit机器出套件,元件够少,够好玩。楼主若能折腾出编译器,马上就变成高端玩具了。

看了一下,基本看明白了,俺数电水平也算对得起群众了。跳转信号没到,地址计数器不断+1;跳转信号到了,ROM地址计数器就载入R1 R0两个寄存器...
...计算逻辑可以接外面  不接的话1位1位判断计算= =
引用
评论
12年2个月前IP:广西
727455
12楼
引用 warmonkey:
其他指令可以虚拟出来 用一小段程序实现
建议用74AC系列的芯片跑到100MHz以上
编译器可以用sdcc做改造,那个的c解析部分是通用的,根据不同的ic产生机器码的部分改改就好
100MHZ[s::funk:]
引用
评论
12年2个月前IP:广西
728170
14楼
引用 zengdz:
这个简单版的有没有文档发布呀,简单点的易上手点、
现在还没写文档
引用
评论
12年2个月前IP:广西
728562
17楼
引用 zengdz:
希望早点发布个详细的简单版的文档,不然跟不上呀、
那张图就说明一切了  门电路型号  原理图  指令集都在那里,  时序的话自己分析一下就出来的  通电 复位 然后给脉冲....就能跑    位寄存器和ROM那一块 我看看有空再画个图...发挥你的想像..    有数电基础和计算机原理基础的 一看就知道怎么回事  数电基础和计算机原理基础网上大把
引用
评论
12年2个月前IP:广西
728572
18楼
这个CPU如果要实现函数调用的话比较困难  不是说实现不了  不过函数返回地址装入程序计数器很蛋疼   要靠编译器实现
实现方法:
这里  y为返回地址选择   调用函数的时候要给y装入返回地址选择值
然后函数尾部生成如下返回指令(编译器计算生成)...
if(y == 0) xxxx地址装入程序计数器;
else if(y == 1) xxxx地址装入程序计数器;
else if(y == 2) xxxx地址装入程序计数器;
.
.
.
.
.
.
这里目的是实现功能 忽略效率

1位CPU怎么判断多位数...   可以通地址线来选择判断哪一位 一位一位判断  虽然程序复杂而且量大 但是可以实现.
CPU指令功能简单 实现同样功能但代码量大  CPU指令功能复杂  实现同样功能代码量低.

这个CPU是可以实现C语言编译器的, 除了递归...
现在考虑是不是要做这个CPU的编译器开发这个CPU  如果做的话程序计时器增加到24位ROM容量可以寻址到16MB
引用
评论
12年0个月前IP:广西
736447
23楼
引用 分立元件:
控制1和控制2是干什么用的?看来半天还是不明白
这个看你心情...用来控制什么都行    这个图现在一看画得好无聊了...= =...  运算器都不用[s:;P]..
引用
评论
11年6个月前IP:广西
771545
27楼
引用 天上猪在飞:
大神你好!我研究您的一位CPU两天了,有几个问题没有弄明白:这个CPU是直接从ROM里读取指令的对吗?如果是的话那RAM在这个架构中又起到什么作用呢?还是仅仅用于读写IO?或者位寄存器16位地址总线另有他用??望大神指点一二!
...额, 莫纠结, 这里的CPU是直接从ROM读取指令的, 这里的位寄存器16位地址总线可以看做是RAM的地址总线, 然后这里的RAM的位宽只有1位..  BIT_CB0~3用来操作iRAM(位寄存器), 就是这个意思~   参考参考就可以,,,
建议研究这个结构 https://www.kechuang.org/t/68167 ,  很容易做成宽位的,  运算器也可以换成你自己设计的运算器,  过阵子所有指令执行的详细原理会弄成文档, 敬请关注>>>
引用
评论
11年4个月前IP:广西
782634
29楼
引用 星湖三文鱼:
来这学习了,很早之前就在看homebrew上的cpu设计,就是太过复杂了,不适合简单DIY,现在终于找到了!哈哈可以继续玩DIY cpu了。。。希望楼主多写点说明类的教程哇
嗯  会的, 多谢支持.
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的