文号
t68417
阅读
72453
回复
49
收藏
29
DIY的测试版8位计算机完整原创电路和部分程序发布
2014/11/29
IP:广西
把文件整理了一下,特开此帖上文件.
这里的电路和程序源码每行都是本人亲手编写,可以看出写得比较烂...里面有些程序是以前没有完全了解C语言的时候写的,有些不合适的地方。。。但是执行结果正确的。。过后再改了。。。转载请注明出处.
下面这些文件后面慢慢解释。
原贴链接: https://www.kechuang.org/t/59032

8位DIY计算机电路PDF文件下载:

attachment icon 8位DIY计算机电路_CPU.pdf 95.26KB PDF 3664次下载 预览

attachment icon 8位DIY计算机电路_VGA.pdf 84.59KB PDF 3002次下载 预览

attachment icon 8位DIY计算机电路_IO.pdf 168.64KB PDF 1767次下载 预览

8位DIY计算机电路_Protel原理图下载:

attachment icon 8位DIY计算机电路_Protel原理图.rar 3.68MB RAR 684次下载

GB2312、ASCII、乘法器 二进制ROM文件下载:

attachment icon GB2312_ASCII_MUL二进制文件.rar 94.86KB RAR 312次下载

本机专用C编译器源码下载:

attachment icon lscpuC编译器易语言源码.rar 105.02KB RAR 484次下载

本机部分应用程序下载:

attachment icon 内存卡加载CPU.bin运行.zip 599.72KB ZIP 553次下载


attachment icon HTTP服务器.rar 341.88KB RAR 398次下载


attachment icon HTTP服务器 (高速优化).rar 403.95KB RAR 427次下载


attachment icon VGA部分函数测试程序.rar 310.65KB RAR 438次下载


8位DIY计算机电路_IO.png

8位DIY计算机电路_CPU.png

8位DIY计算机电路_VGA.png
[ 修改于12年1个月前 - 2014/11/30 13:51:38 ]
12年1个月前IP:北京
732611
1楼
坐等大神转换成HDL格式的。
引用
评论
12年1个月前IP:广西
732612
2楼
本机还有很多嗨爆程序  后面慢慢更....
引用
评论
12年1个月前IP:广东
732643
3楼
[s:39]搞得我也想去深入学学计算机原理了
引用
评论
12年1个月前IP:四川
732661
4楼
出套件了叫一声哦[s:38]
引用
评论
12年1个月前IP:福建
732665
5楼
大神什么时候出套件啊 。。。。膜拜中
引用
评论
12年1个月前IP:湖南
732682
6楼
坐等大神变成红石的。。。。
引用
评论
12年1个月前IP:广东
732691
7楼
做出红石电路就牛了!
引用
评论
12年1个月前修改于 12年1个月前IP:广西
732741
8楼
启动本机的方法:

1 . 把三个原理图和外部设备根据  "8位DIY计算机电路_IO"  这张图里的提示连接好, 用洞洞板飞线快的话一个多星期就搞定.

2 . 然后把 "GB2312_ASCII_MUL二进制文件.rar" 里面的bin文件分别烧入到 "8位DIY计算机电路_IO" 这张图里面的U71、U72、U69.

3 . 最后把应用程序bin文件烧入到  "8位DIY计算机电路_IO" 这张图里面的U84(开机运行ROM).

接上电源,按下 "8位DIY计算机电路_IO" 这张图里面的S2开机,就会运行烧入的程序.


"内存卡加载CPU.bin运行" 程序说明:

把这个程序的bin文件烧入到开机运行ROM.

这个程序上电的时候会搜索TF/SD卡根目录的 "CPU.bin" 文件,找到文件后会自动把文件数据载入到 "8位DIY计算机电路_IO" 这张图里面的U82和U83存储器(任务ROM,由SRAM组成),然后CPU就切换执行任务ROM里的程序.
TF/SD卡文件系统为FAT32.

这样搞临时调试程序比较方便.
引用
评论
12年1个月前IP:广西
732750
9楼
本机C编译器说明:

支持全局变量、局部变量、函数、头文件、字符串替换命令.


1.支持数据类型.

signed可以省略,会默认为有符号数.
char占1个字节,int占2个字节,long int占4个字节, 指针占2个字节.

signed char
signed int
signed long int
unsigned char
unsigned int
unsigned long int

signed char*
signed int*
signed long int*
unsigned char*
unsigned int*
unsigned long int*

signed char 一维数组
signed int 一维数组
signed long int 一维数组
unsigned char 一维数组
unsigned int 一维数组
unsigned long int 一维数组

16进制常量
10进制常量
8进制常量
字符常量


变量的物理地址定义方式.
@0xfffe char a,b;@
意思是修改当前变量的分配地址为0xfffe,然后变量a的地址就是0xfffe,b的地址是0xffff, 然后遇到第2个"@"分配地址会恢复,否则会一直加下去....




2.支持函数类型.
signed可以省略,会默认为有符号数.
char返回1个字节,int返回2个字节,long int返回4个字节, 指针返回2个字节.

void

signed char
signed int
signed long int
unsigned char
unsigned int
unsigned long int

signed char*
signed int*
signed long int*
unsigned char*
unsigned int*
unsigned long int*


函数分页定义方式.
void x()rom0 on
{
}
函数括号末尾加上"rom0"的意思是编译的时候把这个函数放在rom第0页,一页64KB,最多可以支持255页(16MB的ROM), 因为这个CPU程序计数器16位只能寻址64KB,也就是这里一个函数最大64KB, 怎么实现不同函数的页间调用。。这个是我觉得做得比较得意的地方~~ 后面有空讲.
后面那个"on"的意思就是这个函数是页间共享, 这样其他页的函数就可以调用本函数, 如果不加 "on" 其他页的函数不能调用本函数, 加 "on" 比不加 "on" 效率低.

如果不加 "rom0", 这个函数默认放在ROM第0页.




3.支持控制语句.

if - else
if - else if - else if - else if ......
while
do - while
for
goto
break
continue
return
rom_run
特殊控制语句 "rom_run" .
本机有两组ROM, 不管CPU当前执行的程序在哪个ROM,只要执行到rom_run后就会切换到另一组ROM的首地址开始运行, 而且还可以通过 _R1(CPU的R1寄存器) 传递一个数值给另一组ROM.



4.支持运算符(表达式里的运算符严格按照C优先级处理).

sizeof
()
[]
+
-
*
/
%
&
|
~
^
!
>
<
>=
<=
==
!=
++
--
&&
||
>>
<<
+=
-=
*=
/=
%=
&=
|=
^=
<<=
>>=
?:



5.可以表达式插入操作的CPU部件和指令:

_ACC
_R1
_R2
_R3
_C
_Z
_BIT0
_BIT1
_BIT2
_BIT3
_BIT4
_BIT5
_RAM
_NOP






本编译器的局部变量分配方法:

函数之间有调用关系分配地址不同,函数之间没有调用关系,分配地址相同.

下面这种调用关系的程序内存总占用约为1024字节.
void a()
{
  char x[1024];
}

void b()
{
  char x[1024];
}

main()
{
  a();
  b();
}


而下面这种调用关系的程序内存总占用约为2048字节.
void a()
{
  char x[1024];
}

void b()
{
  char x[1024];
  a();
}

main()
{
  a();
  b();
}
引用
评论
12年1个月前IP:广西
732752
10楼
CPU没有调用指令,实现函数调用也是我觉得比较得意的[s::loveliness:][s::lol]
引用
评论
12年1个月前IP:广西
732773
11楼
引用 小八一3:
大神什么时候出套件啊 。。。。膜拜中
估计下个月就有套件了..
引用
评论
12年1个月前IP:广西
732774
12楼
引用 sszxlsy:
出套件了叫一声哦
OK
引用
评论
12年1个月前IP:广西
732789
13楼
在这里对一个变量加1的话用 "++i" 比 "i++" 效率高, 因为"++i" 直接等效 "(i = i+1)", 而"i++" 等效 "(j = i ,++i , j)",然后把 "j" 变量放到表达式里面 "i" 的位置, 这里的j是编译器临时分配的一个用于存放中间运算结果的内存单元.
引用
评论
12年1个月前IP:福建
732834
14楼
OK 下个月搞一套玩玩
引用
评论
12年1个月前IP:北京
732847
15楼
出套件了必入一套。。。
引用
评论
12年1个月前IP:广西
732913
16楼
顶楼的电路文件刚刚修正了一个BUG,... 看来我的第6感不错... 我说怎么感觉好像哪里不对.
改正的电路是 "8位DIY计算机电路_IO" 这张图.
图片上面那些图元的符号有点乱了.. 引脚上面的杠符号错位.  用protel看原理图比较好.

错误.png

已更改.png
引用
评论
12年1个月前IP:四川
733227
17楼
今晚楼主没有出现,顿时觉得整个人的不好了[s::loveliness:]
引用
评论
12年1个月前IP:广西
733385
18楼
引用 虎哥:
今晚楼主没有出现,顿时觉得整个人的不好了
[s::funk:]~~正在研究中~~[s::kiss:]
引用
评论
12年0个月前IP:福建
733497
19楼
等待大神的套件来学习
引用
评论
12年0个月前IP:浙江
733560
20楼
同样等套件(最好是印制板),下学期学了计算机拿这个实践一下,这个好神奇
引用
评论
12年0个月前IP:广西
733967
21楼
....正在搞个装BI的程序  改天晒晒 ..   这个程序太装BI了   小心亮瞎[s::lol]
这台机终于发现频率不能跑高的原因了...  原来是电源线的VCC布线有问题,  改了一下 CPU主频完美回归25MHZ, HTTP服务器传输速度60+KB/S, 数据不出错,   频率应该还可以跑更高.
CPU25Mhz.png
引用
评论
12年0个月前IP:广西
733968
22楼
真好玩[s:;P]
引用
评论
12年0个月前IP:广西
734155
23楼
这样搞会不会装大了= =...  程序还没做完.

点击此处查看视频

测试程序1.jpg

测试程序2.jpg

测试程序3.jpg
引用
评论
12年0个月前IP:北京
734160
24楼
WOW 赶上直播了吗? 好棒!!!!
引用
评论
12年0个月前IP:广西
734505
25楼
引用 张静茹:
WOW 赶上直播了吗? 好棒!!!!
[s::$] 现在突然发现 随随便便一搭 电脑就出来撩... 搞进去才发现没有多少东西~ 其实不用搞得这么复杂 就是通和断1和0  然后再研究一下别人定义的东西就差不多了,  说不定什么时候有灵感 一不留神又想出个更吊的结构就爽,  几年前还觉得程序猿是个很神奇的东西 搞得差不多先 看来应该要写本DIY秘籍
引用
评论
12年0个月前IP:四川
734507
26楼
引用 神之觉醒:
这样搞会不会装大了= =...  程序还没做完.

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
这难道是KCOS0.0.1版[s::funk:]
引用
评论
12年0个月前IP:广西
734509
27楼
引用 LED:
这难道是KCOS0.0.1版
没错  正在内测中~~~~&^&*^  边写边测  边测边写
引用
评论
12年0个月前IP:浙江
734514
28楼
引用 神之觉醒:
现在突然发现 随随便便一搭 电脑就出来撩... 搞进去才发现没有多少东西~ 其实不用搞得这么复杂 就是通和断1和0  然后再研究一下别人定义的东西就差不多了,  说不定什么时候有灵感 一不留神又想出个更吊的结构就爽,  几年前还觉得程序猿是...
是啊,好多东西自己做出来就觉得,也就那么回事
引用
评论
12年0个月前IP:广西
736450
29楼
放角落, 一直在运行HTTP服务器程序  还没死过机,  IP的原因, 目前只能局域网服务[s::L]
DSCF2946_调整大小.jpg
引用
评论
12年0个月前IP:广东
736581
30楼
龙少,你搞么叨的电路让我很爽
引用
评论
11年10个月前IP:江苏
749138
31楼
太羡慕,高手呀。真心不懂这个,只会在别人的基础上学习编程
引用
评论
11年10个月前IP:广东
749141
32楼
我屌,楼主太强悍了!
引用
评论
11年10个月前IP:福建
749152
33楼
膜拜大神
引用
评论
11年10个月前IP:广西
749154
34楼
引用 mvip:
太羡慕,高手呀。真心不懂这个,只会在别人的基础上学习编程
本贴这台机搞得太破烂--  有更加好的电路和最新的方案:
https://www.kechuang.org/t/68167
https://www.kechuang.org/t/69505
引用
评论
11年10个月前IP:浙江
749214
35楼
弱问那个编译器是用yacc+lex写的吗?
引用
评论
11年10个月前IP:广东
750138
36楼
太强悍了,资料也很齐全
引用
评论
11年10个月前IP:北京
750483
37楼
强人呀,碉堡了。
引用
评论
11年10个月前IP:河北
750551
38楼
编译器好用吗
引用
评论
1
11年10个月前IP:广西
750747
39楼
引用 zepan:
弱问那个编译器是用yacc+lex写的吗?
用国产易语言写的[s:;P]  表示支持国货;
引用
评论
11年10个月前IP:广西
750748
40楼
引用 edaboy:
编译器好用吗
还可以~  不是很完美
引用
评论
11年9个月前IP:湖北
755101
41楼
我的神呀如此强大
引用
评论
11年5个月前IP:上海
778885
42楼
引用 分析纯_金:
坐等大神变成红石的。。。。
Mincraft玩家[s::lol]
引用
评论
11年5个月前IP:上海
778886
43楼
引用 t502187408:
做出红石电路就牛了!
Mincraft玩家[s::lol]
引用
评论
11年5个月前IP:上海
778888
44楼
先凑钱,表示支持套件


期待16位的[s::lol][s::lol]
引用
评论
11年5个月前IP:广西
780600
45楼
引用 CES747MAYDAY:
先凑钱,表示支持套件


期待16位的
弄个32位的.. ~
引用
评论
10年8个月前IP:北京
816992
46楼
还有很多程序
引用
评论
10年8个月前IP:北京
816994
47楼
搞得我也想去深入学学计算机原理
引用
评论
10年8个月前IP:辽宁
817082
48楼
不错不错
引用
评论
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的