龙少精简嗨爆版8位单周期CPU内核原创电路发布(计划出套件)
刚画完电路先把电路贴出来[s::victory:]
这个CPU由30多片TTL门电路组成.
非常简单而强大的电路...连我自己都被这个设计震惊...[s::funk:][s::@]
设计是按照硬件条件来设计的, 计划装在两片10CM*10CM的PCB上面,这个规格的PCB打样价格低.
跳转指令跳转消耗2个时钟,不跳转消耗1个时钟,其他指令1个时钟.
RAM和ROM地址为24位(地址寄存器24位,程序计数器24位),最大可以寻址16MB的RAM和16M的ROM.
IO方式为内存映射IO.
保守估计用同样型号的IC性能大概比小UU强大约2倍,条件是频率要运行在10MHZ左右(性能相当于小UU运行在27MHZ的2倍), =  =其实性能要看每秒加法减法多少次...[s::L][s::lol]  看频率有点吹水的感觉[s:;P]
Multisim 11.0仿真文件下载:

attachment icon 龙少精简嗨爆版8位单周期CPU.rar 1.45MB RAR 963次下载

本CPU可以看成由3个部分组成;
1.运算逻辑.
龙少精简嗨爆版8位单周期CPU运算逻辑.png

2.地址逻辑.
龙少精简嗨爆版8位单周期CPU地址逻辑.png

3.指令译码逻辑.
龙少精简嗨爆版8位单周期CPU译码逻辑.png

数据通道结构图:
龙少精简嗨爆版8位单周期CPU结构.png

[修改于 7 年前 - 2014-11-12 06:22:16]

+1  学术分    1211   2014-11-19   大作,理论阐述清晰,实践过程十分精彩
来自:计算机科学 / 计算机电子学
 
2
神之觉醒 作者
7年1个月前 修改于 7年1个月前
1楼
注意:此CPU仅供学习研究,未经本人同意切勿用于商业用途.
此CPU所有指令16位
A寄存器和B寄存器为数据寄存器
A2 A1 A0寄存器为24位地址寄存器
RAM的地址为24位,高8位A2 中8位A1 低8位A0



1.传送指令(??为立即数,XX为任意值)
立即数送A寄存器  0x31??
立即数送B寄存器  0x32??
立即数送A0寄存器  0x33??
立即数送A1寄存器  0x34??
立即数送A2寄存器  0x35??
立即数送A0寄存器并清零A1A2寄存器  0x36??
立即数送A1寄存器并清零A2寄存器  0x38??
立即数送RAM  0x37??
A寄存器送A寄存器  0x11ff
A寄存器送B寄存器  0x12ff
A寄存器送A0寄存器  0x13ff
A寄存器送A1寄存器  0x14ff
A寄存器送A2寄存器  0x15ff
A寄存器送A0寄存器并清零A1A2寄存器  0x16ff
A寄存器送A1寄存器并清零A2寄存器  0x18ff
A寄存器送RAM  0x17ff
B寄存器送A寄存器  0x11af
B寄存器送B寄存器  0x12af
B寄存器送A0寄存器  0x13af
B寄存器送A1寄存器  0x14af
B寄存器送A2寄存器  0x15af
B寄存器送A0寄存器并清零A1A2寄存器  0x16af
B寄存器送A1寄存器并清零A2寄存器  0x18af
B寄存器送RAM  0x17af
A0寄存器送A寄存器  0x41XX
A0寄存器送B寄存器  0x42XX
A0寄存器送A0寄存器  0x43XX
A0寄存器送A1寄存器  0x44XX
A0寄存器送A2寄存器  0x45XX
A0寄存器送A0寄存器并清零A1A2寄存器  0x46XX
A0寄存器送A1寄存器并清零A2寄存器  0x48XX
A0寄存器送RAM  0x47XX
A1寄存器送A寄存器  0x51XX
A1寄存器送B寄存器  0x52XX
A1寄存器送A0寄存器  0x53XX
A1寄存器送A1寄存器  0x54XX
A1寄存器送A2寄存器  0x55XX
A1寄存器送A0寄存器并清零A1A2寄存器  0x56XX
A1寄存器送A1寄存器并清零A2寄存器  0x58XX
A1寄存器送RAM  0x57XX
A2寄存器送A寄存器  0x61XX
A2寄存器送B寄存器  0x62XX
A2寄存器送A0寄存器  0x63XX
A2寄存器送A1寄存器  0x64XX
A2寄存器送A2寄存器  0x65XX
A2寄存器送A0寄存器并清零A1A2寄存器  0x66XX
A2寄存器送A1寄存器并清零A2寄存器  0x68XX
A2寄存器送RAM  0x67XX
RAM送A寄存器  0x21XX
RAM送B寄存器  0x22XX
RAM送A0寄存器  0x23XX
RAM送A1寄存器  0x24XX
RAM送A2寄存器  0x25XX
RAM送A0寄存器并清零A1A2寄存器  0x26XX
RAM送A1寄存器并清零A2寄存器  0x28XX
RAM送RAM  0x27XX




2.移位指令(XX为任意值)
A寄存器带0左移1位送A寄存器  0x71XX
A寄存器带0左移1位送B寄存器  0x72XX
A寄存器带0左移1位送A0寄存器  0x73XX
A寄存器带0左移1位送A1寄存器  0x74XX
A寄存器带0左移1位送A2寄存器  0x75XX
A寄存器带0左移1位送A0寄存器并清零A1A2寄存器  0x76XX
A寄存器带0左移1位送A1寄存器并清零A2寄存器  0x78XX
A寄存器带0左移1位送RAM  0x77XX
A寄存器带B寄存器最高位左移1位送A寄存器  0x81XX
A寄存器带B寄存器最高位左移1位送B寄存器  0x82XX
A寄存器带B寄存器最高位左移1位送A0寄存器  0x83XX
A寄存器带B寄存器最高位左移1位送A1寄存器  0x84XX
A寄存器带B寄存器最高位左移1位送A2寄存器  0x85XX
A寄存器带B寄存器最高位左移1位送A0寄存器并清零A1A2寄存器  0x86XX
A寄存器带B寄存器最高位左移1位送A1寄存器并清零A2寄存器  0x88XX
A寄存器带B寄存器最高位左移1位送RAM  0x87XX
A寄存器带0右移1位送A寄存器  0x91XX
A寄存器带0右移1位送B寄存器  0x92XX
A寄存器带0右移1位送A0寄存器  0x93XX
A寄存器带0右移1位送A1寄存器  0x94XX
A寄存器带0右移1位送A2寄存器  0x95XX
A寄存器带0右移1位送A0寄存器并清零A1A2寄存器  0x96XX
A寄存器带0右移1位送A1寄存器并清零A2寄存器  0x98XX
A寄存器带0右移1位送RAM  0x97XX
A寄存器带A寄存器最高位右移1位送A寄存器  0xa1XX
A寄存器带A寄存器最高位右移1位送B寄存器  0xa2XX
A寄存器带A寄存器最高位右移1位送A0寄存器  0xa3XX
A寄存器带A寄存器最高位右移1位送A1寄存器  0xa4XX
A寄存器带A寄存器最高位右移1位送A2寄存器  0xa5XX
A寄存器带A寄存器最高位右移1位送A0寄存器并清零A1A2寄存器  0xa6XX
A寄存器带A寄存器最高位右移1位送A1寄存器并清零A2寄存器  0xa8XX
A寄存器带A寄存器最高位右移1位送RAM  0xa7XX

B寄存器带0左移1位送A寄存器  0xb1XX
B寄存器带0左移1位送B寄存器  0xb2XX
B寄存器带0左移1位送A0寄存器  0xb3XX
B寄存器带0左移1位送A1寄存器  0xb4XX
B寄存器带0左移1位送A2寄存器  0xb5XX
B寄存器带0左移1位送A0寄存器并清零A1A2寄存器  0xb6XX
B寄存器带0左移1位送A1寄存器并清零A2寄存器  0xb8XX
B寄存器带0左移1位送RAM  0xb7XX
B寄存器带0右移1位送A寄存器  0xc1XX
B寄存器带0右移1位送B寄存器  0xc2XX
B寄存器带0右移1位送A0寄存器  0xc3XX
B寄存器带0右移1位送A1寄存器  0xc4XX
B寄存器带0右移1位送A2寄存器  0xc5XX
B寄存器带0右移1位送A0寄存器并清零A1A2寄存器  0xc6XX
B寄存器带0右移1位送A1寄存器并清零A2寄存器  0xc8XX
B寄存器带0右移1位送RAM  0xc7XX
B寄存器带B寄存器最高位右移1位送A寄存器  0xd1XX
B寄存器带B寄存器最高位右移1位送B寄存器  0xd2XX
B寄存器带B寄存器最高位右移1位送A0寄存器  0xd3XX
B寄存器带B寄存器最高位右移1位送A1寄存器  0xd4XX
B寄存器带B寄存器最高位右移1位送A2寄存器  0xd5XX
B寄存器带B寄存器最高位右移1位送A0寄存器并清零A1A2寄存器  0xd6XX
B寄存器带B寄存器最高位右移1位送A1寄存器并清零A2寄存器  0xd8XX
B寄存器带B寄存器最高位右移1位送RAM  0xd7XX
B寄存器带A寄存器最低位右移1位送A寄存器  0xe1XX
B寄存器带A寄存器最低位右移1位送B寄存器  0xe2XX
B寄存器带A寄存器最低位右移1位送A0寄存器  0xe3XX
B寄存器带A寄存器最低位右移1位送A1寄存器  0xe4XX
B寄存器带A寄存器最低位右移1位送A2寄存器  0xe5XX
B寄存器带A寄存器最低位右移1位送A0寄存器并清零A1A2寄存器  0xe6XX
B寄存器带A寄存器最低位右移1位送A1寄存器并清零A2寄存器  0xe8XX
B寄存器带A寄存器最低位右移1位送RAM  0xe7XX





3.逻辑运算指令(下面A/B/A2/A1/A0/RAM 为寄存器和内存的简称)

A = A & B  0x11bf
A = A | B  0x11ef
A = ~A & B  0x113f
A = ~A | B  0x118f
A = A & ~B  0x117f
A = A | ~B  0x11df
A = ~(A & B)  0x114f
A = ~(A | B)  0x111f
A = ~A  0x110f
A = ~B  0x115f
A = A^B  0x116f
A = ~(A^B)  0x119f
B = A & B  0x12bf
B = A | B  0x12ef
B = ~A & B  0x123f
B = ~A | B  0x128f
B = A & ~B  0x127f
B = A | ~B  0x12df
B = ~(A & B)  0x124f
B = ~(A | B)  0x121f
B = ~A  0x120f
B = ~B  0x125f
B = A^B  0x126f
B = ~(A^B)  0x129f
A0 = A & B  0x13bf
A0 = A | B  0x13ef
A0 = ~A & B  0x133f
A0 = ~A | B  0x138f
A0 = A & ~B  0x137f
A0 = A | ~B  0x13df
A0 = ~(A & B)  0x134f
A0 = ~(A | B)  0x131f
A0 = ~A  0x130f
A0 = ~B  0x135f
A0 = A^B  0x136f
A0 = ~(A^B)  0x139f
A1 = A & B  0x14bf
A1 = A | B  0x14ef
A1 = ~A & B  0x143f
A1 = ~A | B  0x148f
A1 = A & ~B  0x147f
A1 = A | ~B  0x14df
A1 = ~(A & B)  0x144f
A1 = ~(A | B)  0x141f
A1 = ~A  0x140f
A1 = ~B  0x145f
A1 = A^B  0x146f
A1 = ~(A^B)  0x149f
A2 = A & B  0x15bf
A2 = A | B  0x15ef
A2 = ~A & B  0x153f
A2 = ~A | B  0x158f
A2 = A & ~B  0x157f
A2 = A | ~B  0x15df
A2 = ~(A & B)  0x154f
A2 = ~(A | B)  0x151f
A2 = ~A  0x150f
A2 = ~B  0x155f
A2 = A^B  0x156f
A2 = ~(A^B)  0x159f
(A0 = A & B)并清零A2A1  0x16bf
(A0 = A | B)并清零A2A1  0x16ef
(A0 = ~A & B)并清零A2A1  0x163f
(A0 = ~A | B)并清零A2A1  0x168f
(A0 = A & ~B)并清零A2A1  0x167f
(A0 = A | ~B)并清零A2A1  0x16df
(A0 = ~(A & B))并清零A2A1  0x164f
(A0 = ~(A | B))并清零A2A1  0x161f
(A0 = ~A)并清零A2A1  0x160f
(A0 = ~B)并清零A2A1  0x165f
(A0 = A^B)并清零A2A1  0x166f
(A0 = ~(A^B))并清零A2A1  0x169f
(A1 = A & B)并清零A2  0x18bf
(A1 = A | B)并清零A2  0x18ef
(A1 = ~A & B)并清零A2  0x183f
(A1 = ~A | B)并清零A2  0x188f
(A1 = A & ~B)并清零A2  0x187f
(A1 = A | ~B)并清零A2  0x18df
(A1 = ~(A & B))并清零A2  0x184f
(A1 = ~(A | B))并清零A2  0x181f
(A1 = ~A)并清零A2  0x180f
(A1 = ~B)并清零A2  0x185f
(A1 = A^B)并清零A2  0x186f
(A1 = ~(A^B))并清零A2  0x189f
RAM = A & B  0x17bf
RAM = A | B  0x17ef
RAM = ~A & B  0x173f
RAM = ~A | B  0x178f
RAM = A & ~B  0x177f
RAM = A | ~B  0x17df
RAM = ~(A & B)  0x174f
RAM = ~(A | B)  0x171f
RAM = ~A  0x170f
RAM = ~B  0x175f
RAM = A^B  0x176f
RAM = ~(A^B)  0x179f




4.算术运算指令(下面A/B/A2/A1/A0/RAM 为寄存器和内存的简称)
A = A + B  0x1194
A = A + A  0x11c4
A = A + 1  0x1100
A = A + B + 1  0x1190
A = A + A + 1  0x11c0
A = A - B  0x1160
A = A - 1  0x11f4
A = A - B - 1  0x1164
B = A + B  0x1294
B = A + A  0x12c4
B = A + 1  0x1200
B = A + B + 1  0x1290
B = A + A + 1  0x12c0
B = A - B  0x1260
B = A - 1  0x12f4
B = A - B - 1  0x1264
A0 = A + B  0x1394
A0 = A + A  0x13c4
A0 = A + 1  0x1300
A0 = A + B + 1  0x1390
A0 = A + A + 1  0x13c0
A0 = A - B  0x1360
A0 = A - 1  0x13f4
A0 = A - B - 1  0x1364
A1 = A + B  0x1494
A1 = A + A  0x14c4
A1 = A + 1  0x1400
A1 = A + B + 1  0x1490
A1 = A + A + 1  0x14c0
A1 = A - B  0x1460
A1 = A - 1  0x14f4
A1 = A - B - 1  0x1464
A2 = A + B  0x1594
A2 = A + A  0x15c4
A2 = A + 1  0x1500
A2 = A + B + 1  0x1590
A2 = A + A + 1  0x15c0
A2 = A - B  0x1560
A2 = A - 1  0x15f4
A2 = A - B - 1  0x1564
(A0 = A + B)并清零A2A1  0x1694
(A0 = A + A)并清零A2A1  0x16c4
(A0 = A + 1)并清零A2A1  0x1600
(A0 = A + B + 1)并清零A2A1  0x1690
(A0 = A + A + 1)并清零A2A1  0x16c0
(A0 = A - B)并清零A2A1  0x1660
(A0 = A - 1)并清零A2A1  0x16f4
(A0 = A - B - 1)并清零A2A1  0x1664
(A1 = A + B)并清零A2  0x1894
(A1 = A + A)并清零A2  0x18c4
(A1 = A + 1)并清零A2  0x1800
(A1 = A + B + 1)并清零A2  0x1890
(A1 = A + A + 1)并清零A2  0x18c0
(A1 = A - B)并清零A2  0x1860
(A1 = A - 1)并清零A2  0x18f4
(A1 = A - B - 1)并清零A2  0x1864
RAM = A + B  0x1794
RAM = A + A  0x17c4
RAM = A + 1  0x1700
RAM = A + B + 1  0x1790
RAM = A + A + 1  0x17c0
RAM = A - B  0x1760
RAM = A - 1  0x17f4
RAM = A - B - 1  0x1764



5.跳转指令(下面A/B/A2/A1/A0为寄存器的简称;X为任意值)
判断A最高位为0跳转到[A2,A1,A0]  0x09XX
判断B最高位为0跳转到[A2,A1,A0]  0x0aXX
判断A不等于B跳转到[A2,A1,A0]  0x0b9f
判断A+B有进位跳转到[A2,A1,A0]  0x0c94
判断A+A有进位跳转到[A2,A1,A0]  0x0cc4
判断A+1有进位跳转到[A2,A1,A0]  0x0c00
判断A+B+1有进位跳转到[A2,A1,A0]  0x0c90
判断A+A+1有进位跳转到[A2,A1,A0]  0x0cc0
判断A-B没有借位跳转到[A2,A1,A0]  0x0c60
判断A-1没有借位跳转到[A2,A1,A0]  0x0cf4
判断A-B-1没有借位跳转到[A2,A1,A0]  0x0c64
无条件跳转到[A2,A1,A0]  0x0dXX
这个CPU不使用标志寄存器.



6.其他指令
空操作 0x00XX 0xffXX
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
21006091
7年1个月前
2楼
呵呵,编译个程序来看看先
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前
3楼
引用 21006091:
呵呵,编译个程序来看看先
之前没研究好编译器算法, 现在算法有了, 写个简单C编译器分分钟的事[s:;P] 太激动了...
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
21006091
7年1个月前
4楼
膜拜大神了!整套成本多少?
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前
5楼
引用 21006091:
膜拜大神了!整套成本多少?
CPU核心部分就两块板 5元1片 30多片IC  用拆机的几毛钱1片.  还有内存板  SPI  VGA  之类的外设看情况  还不确定 ..现在只完成了CPU部分
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
BG8KIH
7年1个月前
6楼
标记,等全部出来自己造台计算机玩玩?想当年学校机房的老古董才33M主频,没有硬盘,全靠软驱过活,只能DOS,还是单色的显示器。考虑复原一台......
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
穆宝じ☆ve孤独
7年1个月前
7楼
大神找女朋友不
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前
8楼
仿真文件说明(CPU启动方法).
1.首先在下图的模拟ROM拨上需要CPU执行的指令(CPU指令参看1楼指令集),CPU会从上到下执行ROM的指令.
图2.png

2.然后把下图的S1开关拨为高电平,CPU取消复位, 这时拨动S2开关给CPU输入执行时钟,CPU开始执行ROM的指令,就可以在LED上面看到寄存器的数据变化.
图1.png
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前
9楼
引用 穆宝じ☆ve孤独:
大神找女朋友不
[s::funk:][s::funk:][s::funk:]
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前
10楼
引用 gb505329191:
标记,等全部出来自己造台计算机玩玩?想当年学校机房的老古董才33M主频,没有硬盘,全靠软驱过活,只能DOS,还是单色的显示器。考虑复原一台......
一起玩[s:;P]  我还要发一堆帖..更加嗨的还在后面, 让你知道计算机可以做得如此简单而强大, 越来越接近本质了
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
BG8KIH
7年1个月前
11楼
引用 神之觉醒:
一起玩  我还要发一堆帖..更加嗨的还在后面, 让你知道计算机可以做得如此简单而强大, 越来越接近本质了
那只能是跟你混了
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
最高主机泡泡
7年1个月前
12楼
围观膜拜神作[s::funk:]
等着出套件了,这套U真的太神了,看这些基本的逻辑门电路就能组合出一个真正的CPU来。。。实在是太神了。。
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
liangjiajing
7年1个月前
13楼
套件什么时候出?
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前
14楼
引用 liangjiajing:
套件什么时候出?
看情况, 不定时的, 我想把套件做得完整一点, 尽量快...
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前 修改于 7年1个月前
15楼
引用 21006091:
膜拜大神了!整套成本多少?

给你演示一个程序.
这里是一个8位无符号数除以8位无符号数的程序,应该还可以再写得高效率点,有符号除法复杂一点点.
RAM内存单元定义:
000000H : 余数
000001H : 被除数
000002H : 除数
000003H : 商
000004H : 计数

程序代码(下面部分用表达式形式来表示CPU的指令):
000000H    A2A1A0 = 0x000000;
000001H    RAM = 0x00;
000002H    A2A1A0 = 0x000004;
000003H    RAM = 0x07;
000004H    A2A1A0 = 0x000003;
000005H    A = RAM;
000006H    RAM = A << 1;
000007H    A2A1A0 = 0x000000;
000008H    A = RAM;
000009H    A2A1A0 = 0x000001;
00000AH    B = RAM;
00000BH    A = (A << 1) | (B >> 7 & 0x01);
00000CH    B = B << 1;
00000DH    RAM = B;
00000EH    A2A1A0 = 0x000000;
00000FH    RAM = A;
000010H    A2A1A0 = 0x000002;
000011H    B = RAM;
000012H    A2A1A0 = 0x000016;
000013H    判断A - B没有借位跳转到000016H;
000014H    A2A1A0 = 0x00001B;
000015H    无条件跳转到00001BH;
000016H    A2A1A0 = 0x000000;
000017H    RAM = A - B;
000018H    A2A1A0 = 0x000003;
000019H    A = RAM;
00001AH    RAM = A + 1;
00001BH    A2A1A0 = 0x000004;
00001CH    A = RAM;
00001DH    RAM = A - 1;
00001EH    A2A1A0 = 0x000004;
00001FH   判断 A - 1没有借位跳转到000004H;

上面程序执行完成后结果在RAM内存单元里[s::lol]
大约250个时钟内完成计算
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
hchc0834
7年1个月前
16楼
彪悍的节奏
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
富二代创始人
7年1个月前
17楼
引用 穆宝じ☆ve孤独:
大神找女朋友不
[s::funk:]
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
eeprom
7年1个月前
18楼
吊胃口啊!
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
sisisisisi0
7年1个月前
19楼
清华的学生有的也不是那么喜欢学习的,但是清华的要求极为严格,四年之间只要一科不及格就取消推研资格,三科不及格就退学了,所以我们都要疯狂地学习。大二的时候,我们有一个夏季小学期共两周。第一周周一上午,我们在一间教室上了两个小时课,学了计算机的VHDL语言。下课老师要求我们在周五之前编出一个主频30M的CPU来。所有的人都疯了,因为上午根本就不知道他在说什么。后来我们知道,在其他大学的电子系这门课要学一个学期的。但是老师说得很清楚了,做不出来就不及格。于是大家就疯狂地跑到图书馆借书,回去废寝忘食地看,第一天看不懂,第二天稍有点明白,第三天白天编了几个简单的程序,晚上开始正式编程,编到凌晨3点,周四编了一天加一个通宵,周五早上8点通过了验收。在此之前,我们没有想到我们还可以在这么短的时间里做这么多事,但是在巨大的压力之下我们完成了。(从网上转的,vhdl是啥啊?)
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
eeprom
7年1个月前
20楼
引用 sisisisisi0:
清华的学生有的也不是那么喜欢学习的,但是清华的要求极为严格,四年之间只要一科不及格就取消推研资格,三科不及格就退学了,所以我们都要疯狂地学习。大二的时候,我们有一个夏季小学期共两周。第一周周一上午,我们在一间教室上了两个小时课,学了计算机的...
VHDL硬件描述语言,还有Verilog HDL,AHDL等
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前
21楼
引用 sisisisisi0:
清华的学生有的也不是那么喜欢学习的,但是清华的要求极为严格,四年之间只要一科不及格就取消推研资格,三科不及格就退学了,所以我们都要疯狂地学习。大二的时候,我们有一个夏季小学期共两周。第一周周一上午,我们在一间教室上了两个小时课,学了计算机的...
这样搞容易残废[s::funk:][s::L]
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前
22楼
正在进行焊接...
DSCF2798.jpg

DSCF2799.jpg
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
cqb98
7年1个月前
23楼
楼主是学生吗?好厉害,高中还是大学?
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前
24楼
引用 cqb98:
楼主是学生吗?好厉害,高中还是大学?
业余爱好者- -  没有很厉害...只是对机关有点研究...  以前是机械机关(你懂得...yongdongji),  现在是电子机关,  我真的是对电子的东西很感兴趣[s::kiss:]   CPU就是一个电子机关.很简单的
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前
25楼
CPU运行起来的感觉就是这个样子 很嗨[s:;P][s::lol]

attachment icon 运行.rar 1.91MB RAR 343次下载
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
LED
7年1个月前
26楼
很不错,大神加油
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前
27楼
运算逻辑焊好.. 发现74HC11没库存了. [s::L]
DSCF2800_调整大小.jpg

DSCF2801_调整大小.jpg

DSCF2804_调整大小.jpg

DSCF2806_调整大小.jpg

DSCF2812_调整大小.jpg

DSCF2814_调整大小.jpg

DSCF2816_调整大小.jpg
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前 修改于 7年1个月前
28楼
给这个CPU编程必须按规则来, 有时要插入空操作, 不然指令执行会出错[s:;P]
"A = 0x00"的下一句是"A = 0x11"的话"A = 0x00"不会被执行.
如果要让A = 0x00被执行的话后面指令的目的操作数不能是A,
因为这个CPU锁存A = 0x00指令之后A寄存器(74XX273)的锁存线被拉低, 只有下一条指令不选中A寄存器,A寄存器的锁存线才会拉高锁存.
这个CPU的数据传送是靠阻塞来实现的...  意思就是数据消失的瞬间寄存器锁存线同时拉高出现的现象,  移位寄存器原理- -.
之前被洗脑了...以为一定要装个控制器上去才可以, 搞得得电路复杂得要死[s:;P]  还好觉悟得早
指令集里面的移位指令和跳转指令是根据经验来搞的.  这个经验在写编译器的时候一不留神就刷到了=  =
跳转指令产生的跳转信号本来还想在后面加个异或门控制真假,  想想没必要[s::lol] 增加延迟频率又降低.
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前
29楼
搞了几年...这个CPU真的是觉得设计的比较得意. 兴奋得晚上都睡不着
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
eeprom
7年1个月前
30楼
引用 神之觉醒:
搞了几年...这个CPU真的是觉得设计的比较得意. 兴奋得晚上都睡不着
期待[s::lol]
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
eeprom
7年1个月前
31楼
引用 神之觉醒:
CPU核心部分就两块板 5元1片 30多片IC  用拆机的几毛钱1片.  还有内存板  SPI  VGA  之类的外设看情况  还不确定 ..现在只完成了CPU部分
这个U的内存、spi、vga基本可以使用小UU的那一套吧
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
liangjiajing
7年1个月前
32楼
这个是可以接到vga显示器上的吗
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前
33楼
!!!顶楼电路运算逻辑有根线接错..下面是修改正确的电路:

attachment icon 龙少精简嗨爆版8位单周期CPU.rar 1.40MB RAR 358次下载

还有1楼的传送指令有3条由于头脑短路搞错了, 删除这三条指令.
A1寄存器送A0寄存器并清零A1A2寄存器  0x56XX
A2寄存器送A0寄存器并清零A1A2寄存器  0x66XX
A2寄存器送A1寄存器并清零A2寄存器  0x68XX

应该接到最高位A7的...接到A6了- -太激动了难免会出错=  =...[s::Q]
龙少精简嗨爆版8位单周期CPU运算逻辑_.png
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
rpg-7
7年1个月前
34楼
引用 神之觉醒:
!!!顶楼电路运算逻辑有根线接错..下面是修改正确的电路:


还有1楼的传送指令有3条由于头脑短路搞错了, 删除这三条指令.
A1寄存器送A0寄存器并清零A1A2寄存器  0x56XX
A2寄存器送A0寄存器并清零A1A2寄存...
膜拜大神!又开发新CPU了?啥时候考虑流片出来?KC-1号高性能单片机?[s::lol][s::lol]
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
rpg-7
7年1个月前
35楼
引用 神之觉醒:
!!!顶楼电路运算逻辑有根线接错..下面是修改正确的电路:


还有1楼的传送指令有3条由于头脑短路搞错了, 删除这三条指令.
A1寄存器送A0寄存器并清零A1A2寄存器  0x56XX
A2寄存器送A0寄存器并清零A1A2寄存...
终于自己设计ALU了?恭喜
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前
36楼
引用 rpg-7:
膜拜大神!又开发新CPU了?啥时候考虑流片出来?KC-1号高性能单片机?
接受你的膜拜...  说真的要是流片出来肯定是超低功耗,  目前欲望不在性能上面,  就是想让更多人会DIY自己的CPU,   会的人多了分布计算然后性能架构就非线性增长[s::funk:][s:;P] 刚喝了两杯不好意思
还没给CPU认真起过名字[s::L]
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前
37楼
引用 rpg-7:
终于自己设计ALU了?恭喜
现成的ALU[s::L]  用ROM来做ALU也得 ..乘法除法都可以算. 输入数据马上出结果
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前
38楼
好吧现在就给这个CPU起个名字...   科创龙少1号精简架构,  简称KC_LS1U架构[s:;P]
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前
39楼
套件结构先透露下...
首先CPU在最顶层,  是叠起来的, 通过插针连接, 然后下层到ROM
ROM的结构为, 有一组开机启动ROM, 容量几百KB就搞定了不用太多, 然后有一组SRAM是装任务切换运行,容量可以增减,  两组ROM可以相互切换,然后再下层RAM内存
RAM内存容量也是可增减的,然后再下层到外设
这里地方可以插VGA显卡 SPI  IDE 实时时钟 外设板随便插哪一层, 还可以装TFT液晶接口的啦  CH375 也可以插, 然后最后一层电源和时钟和复位
电源复位开关手动控/寄存器控,  不搞IDE还好有IDE了还要搞12降5

程序就图形界面啦  选内存卡或IDE的文件 点击启动运行 就这样咯[s::lol] 应用程序慢慢写  机载编译器 想写什么就写什么[s:;P]
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前
40楼
引用 liangjiajing:
这个是可以接到vga显示器上的吗
外设可以连接VGA
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前
41楼
引用 eeprom:
这个U的内存、spi、vga基本可以使用小UU的那一套吧
那套的SPI用在这里可能时序不对 要调整一下  VGA SRAM这个CPU都可以读写  这里ROM是16位
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前
42楼
突然发现我好有艺术感[s::$] 现在在意YIN这个新CPU跑起来灯在闪的样子

DSCF2818_调整大小.jpg

DSCF2819_调整大小.jpg
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前
43楼
又焊好了一个CPU,,,,,,, 改天通电[s::lol]  自己动手丰衣足食...
飞线示范视频...:
XXXXXXXXXXXXXXXXXXXX/programs/view/AIAbSCboq5I/
点击此处查看视频

DSCF2825_调整大小.jpg

DSCF2826_调整大小.jpg

DSCF2827_调整大小.jpg

DSCF2828_调整大小.jpg

DSCF2830_调整大小.jpg

DSCF2831_调整大小.jpg

DSCF2833_调整大小.jpg

DSCF2835_调整大小.jpg

DSCF2837_调整大小.jpg
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
liangjiajing
7年1个月前
44楼
你这cpu的程序都是自己编的吗,还是能兼容其他系统的程序
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前
45楼
引用 liangjiajing:
你这cpu的程序都是自己编的吗,还是能兼容其他系统的程序
我还要搞个C编译器的, 如果做好点就可以移植大部分程序[s:;P]
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前 修改于 7年1个月前
46楼
还没接内存上去..  一摸时钟线CPU就乱跑[s::lol][s::L]
上电测试视频:
XXXXXXXXXXXXXXXXXXXX/programs/view/UMM8y512QSI/
点击此处查看视频

DSCF2852_调整大小.jpg

DSCF2854_调整大小.jpg

DSCF2846_调整大小.jpg
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前
47楼
开始给I/O编址, 打算从0xff0000到0xffffff为I/O地址
VGA显存是RAM的一部份,和读写RAM一样操作, 看看放在RAM的哪个地址合适先[s::lol] 貌似放在RAM和I/O的中间比较合适[s::lol][s::lol][s::lol][s::$][s::L]
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前
48楼
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
神之觉醒作者
7年1个月前
49楼
KC-LS1u简介.
存储器结构 : 哈佛结构.
指令周期 : 跳转指令执行跳转消耗2个时钟脉冲,不执行跳转消耗1个时钟脉冲,其他指令消耗1个时钟脉冲.
工作频率 : 0Hz-?MHz(最高频率待测试,不同型号门电路工作频率不一样).
支持内存容量 : RAM和ROM的地址都为24位分别可以装配最大16M内存.
电路出现过程 : 经过龙少本人多年实践研究和消耗大量脑细胞而诞生  #~=  =,  这是一个精简化的结构.



CPU对外部的接口分别为:

XXXXM数据输入接口(16位),在电路图里的名称为 "ROM_DB".
XXXXM地址输出接口(24位),在电路图里的名称为 "ROM_AB".
3.RAM数据输入输出接口(8位),在电路图里的名称为 "DB".
4.RAM地址输出接口(24位),在电路图里的名称为 "RAM_AB".
5.RAM读写控制线两条,在电路图里的名称分别为 "RAM_WR" 和 "RAM_RD".
6.复位线和时钟线两条,在电路图里的名称分别为分别为 "复位" 和 "CPU主时钟".
7.电源.


电路工作原理:

我们都知道CPU的作用就是执行指令, 指令代码是用0、1、2、3、4、5、6...来表示,CPU只识别二进制的0、1、2、3、4、5、6..., 也就是1、10、11、100、101、110...
ROM和RAM内存单元的地址也是0、1、2、3、4、5、6...来表示,当然也是以二进制来表示地址.

XXXXM和RAM内存的操作.

ROM也就是只读存储器,既然是存储器那就有存入和取出数据的方法,ROM存放数据的方法为用编程器烧入数据,编程器会从ROM的0地址开始烧入数据; ROM对CPU来讲就是存放指令的,CPU上电复位之后输入时钟脉冲便开始运行,CPU从ROM的0地址开始取指令并执行这条指令,然后CPU的程序计数器会自动加1指向ROM的下一个单元,并且执行这条指令,CPU不断的取指令执行.
ROM读出数据的方法为,首先给ROM一个地址,然后ROM的读线拉低,这时数据便会从ROM的数据口输出; 在这里ROM的读线始终为低电平(接地),也就是ROM保持为读取数据的状态,通过改变ROM的单元地址,ROM输出数据也会随着改变;
RAM是可读写的数据存储器,读取数据的方法和ROM一样,写入数据的方法为,首先给RAM一个地址和需要写入的数据然后写线拉低再拉高就完成了写操作,在写线拉高的时候RAM就会保存数据到指定地址的单元里面.

2.CPU电路执行指令过程.

龙少精简嗨爆版8位单周期CPU运算逻辑.png
龙少精简嗨爆版8位单周期CPU地址逻辑.png
龙少精简嗨爆版8位单周期CPU译码逻辑.png

首先先给CPU复位.
把复位线拉低再拉高完成复位操作,从电路可以看到复位线一路过去连接运算逻辑的A寄存器U21(74XX273)和B寄存器U22(74XX273)的清零端、地址逻辑程序计数器U14U29U30U31U32U33(6片74XX161)的清零端、指令译码逻辑的指令寄存器U6U7(2片74XX273)的清零端,这些门电路的内容在执行复位操作之后都会被清0, 这时CPU就做好了开始执行指令的准备.

开始执行指令.
这时给CPU输入一个执行时钟(时钟线拉高再拉低),由于复位之后指令寄存器U6被清0,U6后面接的138译码器U3的第15脚为低电平,15脚是悬空, 对CPU来讲是一个空操作, CPU的时钟线连接了指令寄存器和程序计数器,所以这个时钟执行之后指令寄存器会锁存ROM输出的数据,程序计数器会被加1,也就是ROM的地址会被加1, 然后ROM输出这个地址的数据给CPU, 由于程序计数器和ROM有延迟,所以时钟线拉高之后 "ROM_DB" 的数据不会马上改变,指令寄存器锁到的是ROM 0地址的数据.
现在指令寄存器的内容为ROM 0地址的数据,假设现在指令寄存器的内容为3177H(3177H指令含义为立即数送A寄存器), 那么这时指令寄存器高8位经过138译码器会选通U12(U12位置在指令译码逻辑)同时拉低A寄存器U21(U21位置在运算逻辑)的锁存线, 从电路看到U12的输入端是指令寄存器的低8位,输出端是数据总线 "DB", 指令寄存器低8位的数据77H会被送到 "DB" 上,如果下一个执行时钟到来,并且指令寄存器锁到其他目的操作数不为A寄存器的指令,会导致A寄存器锁存线拉高锁存 "DB" 上的数据,A寄存器的内容会被更新为77H.
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
老途
7年1个月前
50楼
太牛了!!
回复
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

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

所属专业
上级专业
同级专业
神之觉醒
学者 机友 笔友
文章
70
回复
1161
学术分
4
2011/08/12注册,20 天前活动
暂无简介
%7B%22isDisplay%22%3Atrue%7D
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
插入资源
全部
图片
视频
音频
附件
全部
未使用
已使用
正在上传
空空如也~
上传中..{{f.progress}}%
处理中..
上传失败,点击重试
等待中...
{{f.name}}
空空如也~
(视频){{r.oname}}
{{selectedResourcesId.indexOf(r.rid) + 1}}
处理中..
处理失败
插入表情
我的表情
共享表情
Emoji
上传
注意事项
最大尺寸100px,超过会被压缩。为保证效果,建议上传前自行处理。
建议上传自己DIY的表情,严禁上传侵权内容。
点击重试等待上传{{s.progress}}%处理中...已上传
空空如也~
草稿箱
加载中...
此处只插入正文,如果要使用草稿中的其余内容,请点击继续创作。
{{fromNow(d.toc)}}
{{getDraftInfo(d)}}
标题:{{d.t}}
内容:{{d.c}}
继续创作
删除插入插入
{{forum.displayName}}
{{forum.countThreads}}
篇文章,
{{forum.countPosts}}
条回复
{{forum.description || "暂无简介"}}
ID: {{user.uid}}
学术分隐藏
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

支持的图片格式:jpg, jpeg, png
插入公式
分享回复:{{shareId}}
加载中...
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

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

空空如也