龙少精简炮灰测试版8位机(原创、纯硬件、开源)
这个做来当炮灰测试的,只做了些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位色模式:
点击此处查看视频
http://www.tudou.com/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

+1  科创币    神之觉醒   2012-11-28   先从单片机入手吧  之后研究下计算机原理就OK的
加载全文
来自 计算机电子学
 
1
2012-11-20 11:53:13
100楼
表示俺也想弄一个,虽然目前在玩高压。。。不过我只知道一丁点C语言,汇编完全不懂。。要学的东西还有好多。。。。。
+0.01  科创币    神之觉醒   2012-11-28   先从单片机入手吧  之后研究下计算机原理就OK的
折叠评论
加载评论中,请稍候...
折叠评论
2012-11-22 00:57:36
101楼
做个双核的51看看效如何
+1  科创币    神之觉醒   2012-11-28   你做~~~
折叠评论
加载评论中,请稍候...
折叠评论
102楼
牛人啊!!!!
折叠评论
加载评论中,请稍候...
折叠评论
103楼
低级的fpga开发人员用hdl语言,对存储空间的浪费很大,高级的fpga开发人员用手工画电路图,就像高级的电路设计人员不会让电脑自动布线要手工布线一样,楼主乃神人也。建议楼主下一步可以做增加浮点运算单元和图像处理电路,配合sd卡的程序做成小霸王游戏机。
+1  科创币    神之觉醒   2012-11-28   写些小游戏来跑肯定没问题的,单机太无聊了,下一步尝试连接以太网
折叠评论
加载评论中,请稍候...
折叠评论
2012-11-23 16:11:50
104楼
第一个国产CPU???
折叠评论
加载评论中,请稍候...
折叠评论
105楼
神一样的LZ。我一学化工的已经无力评论了.。
折叠评论
加载评论中,请稍候...
折叠评论
106楼
牛逼……只能膜拜了……
折叠评论
加载评论中,请稍候...
折叠评论
2012-11-24 20:35:21
2012-11-24 20:35:21
107楼
[s:257] 太震撼啦
折叠评论
加载评论中,请稍候...
折叠评论
2012-11-28 21:26:04
2012-11-28 21:26:04
神之觉醒(作者)
108楼
刚搞好了汇编器1.0版,      编译出来有些杀软报毒,  但我全家保证这个不是木马或病毒[s:274]
下载器现在还没弄好,过阵子才OK,搞好了下载器就方便了,只要把BIN文件通过串口送过去就OK了的
使用方法过些天再说

龙少炮灰8位CPU专用汇编器.rar
328k
RAR
34次下载

7.jpg
+5  科创币    daxus   2012-12-01   我也写了一个简单的汇编器,见110楼,有空的时候试一下?
折叠评论
加载评论中,请稍候...
折叠评论
109楼
回 108楼(神之觉醒) 的帖子
好的,现在在学51单片机,高二党表示时间不充裕啊 [s:273] [s:273]
折叠评论
加载评论中,请稍候...
折叠评论
2012-11-29 01:13:46
110楼
回 108楼(神之觉醒) 的帖子
我最近也在抽空闲时间写这个汇编器[s:223]  ,
根据你公布的指令集。
比较简陋,但是命令行的,直接处理写好的汇编文件,生成一个可执行的二进制文件。
初步计划只支持一层宏定义,支持注释,暂时不支持变量,先怎么简单怎么写。。。
才把框架搭起来,业余时间比较少,我自己慢慢来,有成果会更新上来的[s:274]  。


下面是目前的代码,
以前没写过,闭门造车,高手们不要贱笑[s:116] 。

#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef unsigned char BYTE;
typedef unsigned char byte;
typedef unsigned char UINT8;
typedef unsigned char u8;
typedef unsigned short UINT16;
typedef unsigned short u16;
typedef unsigned UINT32;
typedef unsigned u32;

/* MAX code length in byte */
#define MAX_CODE_LEN 2

typedef struct
{
    char * asm_string;
    u8 code_len;
    u8 code[MAX_CODE_LEN];
}machine_code_type;

#define MAX_CODE_SIZE 4096
u8 code_output_buff[MAX_CODE_SIZE];

machine_code_type mach_code_table[] =
{
    {"NOP",                1, 0x18},
    {"MOV A,#XX",        2, 0x00, 0x00},
    {"MOV R1,#XX",        2, 0x01, 0x00},
    {"MOV R2,#XX",        2, 0x02, 0x00},
    {"MOV R3,#XX",        2, 0x03, 0x00},
    {"MOV R1,A",        1, 0x19},
    {"MOV R2,A",        1, 0x1A},
    {"MOV R3,A",        1, 0x1B},
    {"MOV [R2,R3],A",    1, 0x10},
    {"MOV A,[R2,R3]",    1, 0x08},
    {"MOV R1,[R2,R3]",    1, 0x09},
    {"MOV R2,[R2,R3]",    1, 0x0A},
    {"MOV R3,[R2,R3]",    1, 0x0B},
    {"ADD A,R1",        1, 0x20},
    {"INC A",            1, 0x28},
    {"SUB A,R1",        1, 0x30},
    {"DEC A",            1, 0x38},
    {"AND A,R1",        1, 0x40},
    {"OR A,R1",            1, 0x48},
    {"NOT A",            1, 0x50},
    {"XOR A,R1",        1, 0x58},
    {"JMP [R2,R3]",        1, 0x63},
    {"JNC [R2,R3]",        1, 0x60},
    {"JNE [R2,R3]",        1, 0x61},
    {"JA [R2,R3]",        1, 0x62},
    {"SETX",            1, 0x68},
    {"CLRX",            1, 0x70},
    {"SETZ",            1, 0x69},
    {"CLRZ",            1, 0x71},
    {"SET B0",            1, 0x6A},
    {"SET B1",            1, 0x6B},
    {"SET B2",            1, 0x6C},
    {"SET B3",            1, 0x6D},
    {"SET B4",            1, 0x6E},
    {"SET B5",            1, 0x6F},
    {"CLR B0",            1, 0x72},
    {"CLR B1",            1, 0x73},
    {"CLR B2",            1, 0x74},
    {"CLR B3",            1, 0x75},
    {"CLR B4",            1, 0x76},
    {"CLR B5",            1, 0x77},
    {"",                0, 0x00, 0x00}
};

#define MAX_ASM_FILE_SIZE    (128*1024) // 128KB
u8 asm_buff[MAX_ASM_FILE_SIZE];

/* read file to buff */
int read_asmfile(u8 *buff, char *filename)
{
    return 0;
}

/* delete comments in buff */
int delete_comments(u8 *buff)
{
    return 0;
}

/* replace definition in buff */
int preprocess(u8 *buff)
{
    return 0;
}

/* format ASM line to standard */
int format_asm(u8 *buff)
{
    return 0;
}

/* translate asm to machine code */
int translate_asm_to_code(u8 *asm_buff, u8 *code_buff, u32 code_buff_size)
{
    return 0;
}

/* write machine code to file */
int binary_output(u8 *code_buff, char *filename)
{
    return 0;
}

void usage(char *prog_name)
{
    printf("Must input 2 arguments\\n");
    printf("%s <asm_filename> <output_name>\\n", prog_name);
}

int main(int argc, char **argv)
{
    memset(code_output_buff, 0x0, MAX_CODE_SIZE);
    memset(asm_buff, 0x0, MAX_ASM_FILE_SIZE);

    if (argc != 3)
    {
        usage(argv[0]);
        return 0;
    }

    /* 1. read ASM file to buff */
    read_asmfile(asm_buff, argv[1]);

    /* 2. delete comments */
    delete_comments(asm_buff);

    /* 3. replace definition (pre-process) */
    preprocess(asm_buff);

    /* 4. format ASM line */
    format_asm(asm_buff);

    /* 5. translate ASM to machine code */
    translate_asm_to_code(asm_buff, code_output_buff, MAX_CODE_SIZE);

    /* 6. write machine code to file */
    binary_output(code_output_buff,argv[2]);

    return 0;
}





win7下使用MinGW环境编译通过。
+200  科创币    虎哥   2012-11-30   支持共同开发
折叠评论
加载评论中,请稍候...
折叠评论
2012-11-30 01:00:45
111楼
/* 1. read ASM file to buff */
/* 2. delete comments */
这两步已经完成。

目前支持C语言的两种注释方法:
/* ...... */
//......

新的代码:

phasm.rar
2.00k
RAR
10次下载
折叠评论
加载评论中,请稍候...
折叠评论
2012-12-01 21:03:43
2012-12-1 21:03:43
112楼
命令行的汇编器已经基本完成,基于@神之觉醒 所公布的指令集。

目前的功能:
1. 翻译汇编语言为机器码
2. 支持C语言格式的注释格式
    段注释:/*...*/
    行注释://...
3. 支持十进制和十六进制的立即数
     十进制立即数写法:#32
     十六进制立即数写法:#0x20

目前实现的方法是全文遍历解析,次方法存在以下局限性:
1. 难以准确输出语法错误信息的行号
2. 代码大小,行数,规模有限制(目前每行最多支持128字节,汇编文件最大不能超过128KB)

后面有时间打算用逐行解析的实现方法推翻重写。

目前个人认为还需要添加的重要功能有:
1. 标号支持,用于增加跳转指令的灵活性
2. “宏定义”解析,用于减小代码维护的工作量
3. 函数支持,便于模块化编程
4. 数据段定义,便于快速内存访问
...
总之,需要做的还有很多,我的时间不太稳定,有更新会及时同步上来的。

代码如下:

phasm.rar
21.0k
RAR
16次下载


阅读代码建议用uedit32或sourceinsight,记事本查看时换行符可能不对。
C语言代码我已经加了比较详尽的注释,也没什么复杂的算法,如果还有人不明白我可以重新开楼讲解。

文件列表如下:
Makefile  - 用于自动编译的脚本,支持make,make clean,make test三个命令。
phasm.c - 代码文件(C语言)
phasm.exe - 我编译出来的Windows可执行文件
test.asm - 用于测试编译器功能的测试汇编文件
test.bin - 测试汇编文件生成的二进制可执行文件

如果要自己编译:
Linux下直接 make 。
Windows下需要先安装MingW开发环境,然后mingw32-make.exe 改名为 make.exe,然后才能make

MingW下载地址:http://sourceforge.net/projects/mingw/

目前汇编器在汇编时还会生成一堆调试信息,但这不影响最后的输出。


汇编器使用方法:
1. 自己编写汇编语言,存为一个文件,如:xxx.asm
2. 执行命令 phasm.exe xxx.asm yyy.bin
这样就能将xxx.asm汇编输出为yyy.bin文件

下面是目前支持的汇编语句格式:
注意,逗号","前后可以有空格,操作码(如MOV)后面必须有且只有1个空格。
汇编语句以换行为结尾,每行只能写一句汇编指令。
捕获.PNG

捕获1.PNG


PDF文件如下:

炮灰8位CPU汇编器设计.pdf
331k
PDF
31次下载
+50  科创币    神之觉醒   2012-12-04   非常感谢!!!
+50  科创币    LiuNianqiu   2012-12-17   支持合作开发!
折叠评论
加载评论中,请稍候...
折叠评论
2012-12-04 00:50:48
2012-12-4 00:50:48
神之觉醒(作者)
113楼
回 112楼(daxus) 的帖子
高手啊!支持共同开发!!!非常感谢你!!!非常感谢!!! 好感动。。。。真的[s:229]    
真是太难为你了。。。早知道就把这个CPU指令做完善一点,这个CPU很简陋,不用太较真的去弄的,当然有兴趣就当研究下随便搞搞行了;最后还是非常感谢你~~!

后面那个下载器也不难搞, 我思路是把BIN文件通过串口助手用单片机写到SRAM上去;
之前我是把BIN文件放TF卡通过单片机写上去的,很简单的

天冷了~~我有点懒~~~没啥心情搞~~先放一放了我。。[s:275]我这边暂时没什么进度[s:275]

那个源码后面还想改一下再发上来~~~ 最近太冷可能不动工了[s:220]
源码也先丢上来吧(后面有可能的话我再进一步完善):

8位机汇编器.rar
11.0k
RAR
25次下载


是用易语言写的~ =  =#!~
折叠评论
加载评论中,请稍候...
折叠评论
2012-12-06 16:17:12
2012-12-6 16:17:12
114楼
高手啊,表示学了两年单片机和嵌入式没啥进展了,高中时期也玩过黑客接触过易语言和汇编没像楼主这样坚持学通啊.只能是膜拜了.想交楼主这个朋友啊,有兴趣加我
+1  科创币    神之觉醒   2013-08-09   .......
折叠评论
加载评论中,请稍候...
折叠评论
115楼
回 103楼(cdyqj) 的帖子
“低级的fpga开发人员用hdl语言,高级的fpga开发人员用手工画电路图”,这个是真的吗,感觉不绝对吧,你从哪得出的结论?

楼主如果真的全部自己弄过来的,那就真的很牛X了[s:271],起码硬件有不小的功底,数电也学的很不错了。建议下次尝试改用FPGA来搭建,那样的话更方便对设计上进行修改。国内处理器设计的未来就看像楼主你这样的人了[s:319]。
折叠评论
加载评论中,请稍候...
折叠评论
2012-12-09 16:45:31
2012-12-9 16:45:31
116楼
我只想说两个字。。天才,
折叠评论
加载评论中,请稍候...
折叠评论
2012-12-17 12:29:16
2012-12-17 12:29:16
117楼
从头到尾看了一遍,确实受益匪浅,感谢楼主分享了

之前还在纠结没有条件判断指令如何执行程序,看完后才想清楚,这些指令确实足矣

有一点想请教的是,显示部分的数据是直接从ram获取还是直接连接的寄存器呢?
+1  科创币    神之觉醒   2013-08-09   TF卡的数据读到SPI寄存器 然后直接写液晶..... 好久没翻贴  回复慢了..
折叠评论
加载评论中,请稍候...
折叠评论
2012-12-22 19:19:26
2012-12-22 19:19:26
118楼
好久没来科创,没想到一来遇到这么个人才,高中毕业就自学了这么多,而且根据你自述的经历可看出你理解接受能力非同一般,如果所述属实那你真可称之为天才,另外不知你在哪里工作,愿意来成都不?
+1  科创币    神之觉醒   2013-08-09   我在南宁工作........
折叠评论
加载评论中,请稍候...
折叠评论
119楼
不错嘛~
玩也玩的很认真~
折叠评论
加载评论中,请稍候...
折叠评论
2012-12-23 19:29:12
120楼
楼主,能用电子管,搭一台不
+1  科创币    神之觉醒   2013-08-09   可以~~~  只要有客户需要~~~
折叠评论
加载评论中,请稍候...
折叠评论
2012-12-31 12:09:19
2012-12-31 12:09:19
121楼
牛啊,膜拜!!!!!!!!
折叠评论
加载评论中,请稍候...
折叠评论
2013-01-02 23:58:37
2013-1-2 23:58:37
122楼
强人,太牛了。这些都要基础知识吃透啊。
折叠评论
加载评论中,请稍候...
折叠评论
2013-01-04 11:45:57
2013-1-4 11:45:57
123楼
楼主真厉害,硬件,软件相当强悍!讲的很详细,终于理解通了计算机怎么执行指令。 有时间我也搭一个出来。感谢!
折叠评论
加载评论中,请稍候...
折叠评论
2013-01-17 23:51:53
2013-1-17 23:51:53
124楼
看到那上百块的IC,头都晕了
折叠评论
加载评论中,请稍候...
折叠评论
2013-01-20 13:44:30
2013-1-20 13:44:30
125楼
话说……跪拜了……表示有压力啊
折叠评论
加载评论中,请稍候...
折叠评论
2013-01-21 12:29:57
126楼
[s:274][s:274]神啊。我有一块很老的电脑主板,可以正常开机,有显示。CPU是竖着装的,我收藏多年啦,我想送你研究,我用不上
+1  科创币    神之觉醒   2013-08-09   ...  我怎么好意思收呢。。。
折叠评论
加载评论中,请稍候...
折叠评论
2013-01-23 09:26:23
2013-1-23 09:26:23
127楼
[s:247][s:247]焊了几年
+1  科创币    神之觉醒   2013-08-09   0.008219178年
折叠评论
加载评论中,请稍候...
折叠评论
2013-02-07 11:18:49
2013-2-7 11:18:49
128楼
很假,为什么呢?背景声音根本就不是现场喇叭放出来的,你听不出来?
-5  科创币    苦丁茶   2013-02-10   不好好看帖还瞎说
+1  科创币    神之觉醒   2013-08-09   假的。。。。
折叠评论
加载评论中,请稍候...
折叠评论
2013-02-09 18:07:27
2013-2-9 18:07:27
129楼
看不太懂,是不是楼主自己做了一个CPU??
看视频的时候想起小时候的电脑做测试,测试到那个大块头拿着滚筒出场我的电脑就卡住了
折叠评论
加载评论中,请稍候...
折叠评论
2013-02-10 13:12:32
130楼
初中毕业…………(#°Д°)我勒个喷天大槽……
折叠评论
加载评论中,请稍候...
折叠评论
2013-02-16 19:12:11
2013-2-16 19:12:11
131楼
楼主太厉害了
折叠评论
加载评论中,请稍候...
折叠评论
132楼
技术宅的逆天之作呐~~
折叠评论
加载评论中,请稍候...
折叠评论
2013-03-02 18:46:56
2013-3-2 18:46:56
133楼
看完这篇浑身舒畅,我觉得瞬间有力量了
+1  科创币    神之觉醒   2013-08-09   没错。。。这样就能激发更多人能量
折叠评论
加载评论中,请稍候...
折叠评论
134楼
想起了一个关于电脑高手的笑话,原来这一切是真的…………


很久以前,那还是我用win98的时候有次我系统崩溃了,因为我是电脑白痴,我朋友给我介绍了一个高手来帮我修电脑。他看了一下电脑,问我有没有98的盘,我说没有。
 他想了一下,叫我把固定电话拿给他,我想修电脑要电话干什么,但人家是高手,我也不好说什么,就把电话拔下来给他了。
 他把电话线空着的一头接在电脑的一个插孔内,然后进入了dos,然后就开始在电话上不停的按着键,他按键的速度非常快,但是只按0,1两个键,我搞不懂这有什么用,但也不敢问,看了半个多小时,他还是不停的按这两个键,我渐渐的有些困,我问他这东西要搞多久,他说要几个小时,我给他倒了杯茶,就一个人去隔壁睡觉了。醒来的时候,一看已经过了4个多小时,我起身到隔壁,看见他正在98里面调试,过了一会儿,他说,你试试,我坐上椅子用了一下,真的好了,我当时也不懂电脑,谢过人家就走了。 后来我慢慢对电脑有了了解,终于了解,原来当时那位高手是用机器语言编了一个98系统,我后来问我朋友那位高手的下落,我朋友说前几年去了美国IBM之后,杳无音讯……
  我很想他,如果谁遇到了,给我发个短信……
+1  科创币    神之觉醒   2013-08-09   
折叠评论
加载评论中,请稍候...
折叠评论
2013-03-03 07:00:18
135楼
太强大了,现在大学搞计算机的没几个有这水平。
折叠评论
加载评论中,请稍候...
折叠评论
136楼
我初中时候只做过遥控电路。再膜拜一下[s:275]
折叠评论
加载评论中,请稍候...
折叠评论
2013-03-07 11:20:23
2013-3-7 11:20:23
137楼
感动的哗哗的,淫才啊,求招募,来河南发展吧……
折叠评论
加载评论中,请稍候...
折叠评论
138楼
膜拜,专业人士太牛x了
折叠评论
加载评论中,请稍候...
折叠评论
139楼
我提议向lz资助   有钱的出钱  有能力的出能力  既然lz资金困难 我知道我们论坛肯定有有钱人   大家说怎么样啊
+1  科创币    神之觉醒   2013-08-09   建议你还是跟我一起玩比较好。。。。
折叠评论
加载评论中,请稍候...
折叠评论
2013-03-11 00:40:16
2013-3-11 00:40:16
140楼
高精度的光刻,还是双面板,位置定的可要准呀,再次感叹高精度。
折叠评论
加载评论中,请稍候...
折叠评论
2013-04-11 20:50:39
2013-4-11 20:50:39
141楼
做硬件的感觉都好厉害啊
折叠评论
加载评论中,请稍候...
折叠评论
2013-04-14 12:13:07
2013-4-14 12:13:07
142楼
注意到楼主的手,保养得非常好,感觉象个女人的手.........
+1  科创币    神之觉醒   2013-08-09   你是不是"制成"!!!
折叠评论
加载评论中,请稍候...
折叠评论
143楼
好东东,中国芯cpu有希望了,果然功夫不负有心人;只是焊点有点不美观!!!!
折叠评论
加载评论中,请稍候...
折叠评论
144楼
震撼震撼,膜拜膜拜!!!!!
折叠评论
加载评论中,请稍候...
折叠评论
2013-05-18 17:14:30
2013-5-18 17:14:30
145楼
多年以前有过类似的经历,用普通的门电路搭了一个电子钟...话说回来,如果楼主对CPU设计有兴趣的话最好还是去学verilog和FPGA吧,用分立元件做CPU真的很难,而且实用性不高
+1  科创币    神之觉醒   2013-08-09   目前龙少工作室表示用74搭个性能 〉50MIPS的CPU无压力。。。继续YY。。。
折叠评论
加载评论中,请稍候...
折叠评论
2013-05-20 14:01:01
2013-5-20 14:01:01
146楼
回 楼主(神之觉醒) 的帖子
有电路图吗?
折叠评论
加载评论中,请稍候...
折叠评论
147楼
.....................这货不是人,真不是人,,,,简直就是神。。。。

真心跪了。。楼主。你太强悍了。
折叠评论
加载评论中,请稍候...
折叠评论
2013-05-21 09:08:58
148楼
技术帝。膜拜
折叠评论
加载评论中,请稍候...
折叠评论
149楼
引用第84楼神之觉醒于2012-11-17 17:00发表的 :
这楼讲解视频上的“播放”效果,其实就是刷图片,后来感觉没声音很无聊,就把声音配上去了。

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

下面是硬件SPI电路图。
.......  

骇客帝国。。。。
折叠评论
加载评论中,请稍候...
折叠评论

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

插入资源
全部
图片
视频
音频
附件
全部
未使用
已使用
正在上传
空空如也~
上传中..{{f.progress}}%
处理中..
上传失败,点击重试
{{f.name}}
空空如也~
(视频){{r.oname}}
{{selectedResourcesId.indexOf(r.rid) + 1}}
ID:{{user.uid}}
{{user.username}}
{{user.info.certsName}}
{{user.description}}
{{format("YYYY/MM/DD", user.toc)}}注册,{{fromNow(user.tlv)}}活动
{{submitted?"":"投诉"}}
请选择违规类型:
{{reason.description}}
支持的图片格式:jpg, jpeg, png