计算机原理与电路

电子计算机原理,电子计算机硬件,电子计算机电路

今日: 1 主题: 9 回复: 566

分类: (暂无分类)

原始的帖子在这里,电路原理图也有 https://bbs.kechuang.org/t/81422 现在重新做了几块板子,挺漂亮的。 ============================================== 计算机系统的配置: 小名:qCPU(CuteCPU) CPU:4位 ROM:4KB RAM:4KB 运行频率:74芯片极限 IO:2组4位的IO口 4个按键 其他外设就是5个LED发光二极管,一个蜂鸣器,一个4位数码管, 一个5X7点阵LED,一个LCD1602液晶 配备我自己设计的汇编器,使用起来跟 当年使用8086汇编编程很像 目前可以使用USB下载,USB提供电源,在电脑编写代码后,编译下载运行一条龙!! ============================================== 支持指令如下: ADD    加法 RM     读取内存 ADDC   带进位加法 WM     写内存 SUB    减法 OUT    IO输出 <      小于比较 =      等于比较 GOTO   小跳转 QCLR   清空 QMOV   赋值 QADD   加法 QSUB   减法 QGOTO  长跳转 QJMP   立即跳转 ============================================== 主板整体图 LED点阵和数码管板子 漂亮但是也比较贵的圆孔IC插座,还没有安装上74芯片的样子 漂亮的白色USB下载器 这个是原始的电路版本和USB下载器,可以比较一下 新版本合影,还有LED点阵和数码管没有做好,点阵是方形点阵 非常好用的,自己设计的汇编器 ============================================== 一共是: 一块蓝色主板, 一块白色下载器, 一块1602液晶, 一块LED点阵 一块数码管 一起大概170元,(如果不要圆孔IC插座150元这样就可以,龙少的设计好像400多元) ============================================== CuteCPU计算机原理图-2.pdf 587k 99次 CuteCPU指令集解释.pdf 89.4k 65次 LED点阵等原理图.pdf 233k 41次 CuteCPU编译器.rar 239k 55次 xLED流水灯测试代码.a 167b 36次 LED点阵马赛克.a 775b 30次 LED点阵显示0-9(2).a 11.6k 30次


一直有打造一台计算机系统的想法,恰巧今年有机会,就开始了设计。我的目标是能够运行,用74门搭建,而不仅仅是仿真或在FPGA上运行(主要是我不会hh)。构思了一段时间,把整台机器的架构稍微梳理了一下。画了一个思维导图,大家凑合看。涉及到运算,一定会有位宽这一概念。这台计算机设计出来的目标是运行,不仅仅是软件上的设计,于是74门的数量就是个大问题。大家知道,计算机的位宽增加,晶体管的数量必然成指数型增加,划不来。现在拿性能换成本,抛弃性能,做成一位的,74门数量可以做到几十片甚至十几片。 首先是CPU 实际上,CPU的开发工作在几个月前就开始了,几年前也有过做CPU的想法,也构思过一段时间。成本限制,现在目前设计了16位程序指针,可以寻址64k字节的程序代码。CPU涉及到跳转指令,所以使用74hc161这种可预置的二进制计数器作为程序指针,共需4片。cpu采用超精简设计,由于只有一位位宽,在操作内存过程中没有字节的概念,直接操作位。这样虽然效率较低,但硬件简便。CPU没有片上alu,只提供立即数放内存、读取内存、内存移内存精简指令,把alu逻辑运算单元当作内存的一部分操作,如思维导图。cpu使用16位指令集,低八位数据,高八位指令。低八位在跳转指令时先分别向两个程序地址寄存器中送入数据,耗时两个时钟,再跳转,耗时两个时钟。共耗时四个时钟。 片内所有的寄存器,包括内存数据暂存器、指令暂存器、两片程序地址暂存器,都使用了74hc273这种上升沿D触发器。指令译码部分其实有点像自动机,每次译码要先给主时钟,PC+1,等地址和数据建立完毕后再拉高指令锁存,然后全0为不动作(空指令),看哪位有1就执行相应的动作。按照这个逻辑,指令锁存要比PC时钟迟一些到来,所以给指令暂存器的锁存端口加一个非门。这样主时钟上升时建立地址,稳定后时钟下降,地址锁住不变,此时对于指令暂存器来说时钟是上升的,指令被锁住,完成译码。 构思CPU有三种跳转方式,分别是目标地址跳转、DB总线接口为1跳转、DB总线接口为0跳转。目标地址跳转需要两个时钟周期,判断跳转需要1+2=3个时钟周期,若不跳转只消耗2个时钟周期。因为内存里的数据需要读取到暂存器,所以这会占用一个时钟。判断跳转那个地方使用四个与非门,根据电路图不难了解原理。 CPU设计完毕后打了一张板子,把基本的功能之类都测试一遍,发现功能正常。下面放一波图 图为测试板 测试得出一点:所有把数据移入某个寄存器的指令后面必须不能是把数据移入这个寄存器的指令(例如数据移ra后,下一个时钟周期不能再次移ra),因为移入时寄存器的时钟需要上升沿才能有效,而两次移入会导致时钟没有拉低缓冲时间。 将CPU的指令汇总一下,就有了指令集。真正的精简指令,只有10条(也可以认为是我偷懒了 RA是高八位地址寄存器 RB是低八位地址寄存器 xx表示任意数据 aa表示地址数据 高位 低位 单字节: 0x00 0xxx 空指令 0x80 0xxx DB为1时跳转到RA RB 0x40 0xxx DB为0时跳转到RA RB 0xC0 0xxx 无条件跳转到RA RB 0x20 0xaa 地址数据送RA 0x10 0xaa 地址数据送RB 0x08 0xxx RARB指向RAM送RC 双字节: 0x04 0xxx┐ 0x06 0xxx┴ RARB指向RAM置0 0x05 0xxx┐ 0x07 0xxx┴ RARB指向RAM置1 0x00 0xxx┐ 0x02 0xxx┴ RC送RARB指向RAM 注:RAM区不使用标准结构,使用上升沿D锁存器构成储存单元,寻址空间0~2^16-1=0~65535 然后就是构成计算机系统了。RAM使用74HC74+(74hc138+4016传输门)译码,ROM是at28c256。这些确定了就可以打主板了。没想着做多少性能,就只用了4片74HC74构成1*8的内存空间,ROM有16*32K空间,两者最多均可寻址64K。io部分就偷懒吧,直接把内存的输出引出来,接个led也可以显示工作状态,没有设计输入接口。 这是整个计算机系统的pcb,已经设计好送去打样了,还没到手。布线很乱,大家也不要喷了,因为这个电路相对来说还是有点麻烦的,于是自动布线爽歪歪。毕竟板子不想跑高频,主频10K差不多了,虽然74门最多可以支持10M,不过也无所谓啦。现在板子上不带时钟,用按钮按,时钟有引出,可以外加。 好吧,今天先写这么多,等全部测试完毕后再来补吧。电路图不在身边,下次再发。



现代的CPU很强大和复杂,导致很多人认为个人是无法设计一个CPU的,或者即使能设计出来简单的也是需要很多经费和大量的元器件。 百度和谷歌一下网上的设计,几乎都是外国人的作品,有一些还是很复杂的,动不动说花了好几年时间。最近有一个英国剑桥的詹姆斯·纽曼(James Newman),打造一台只能玩俄罗斯方块的大块头花了他四年时间,耗资达到4万英镑!!!!而仅仅只是希望让人了解计算机的工作原理。 那我们普通人能不能加入?到底能不能设计出一个计算机来? 当然能! 强大的CPU暂且不说,就拿简单的来说,我认为个人设计一个简单的CPU不但是可行的,还是非常有意义的,当然这个设计必须得是从零开始设计的----只使用简单的逻辑元器件,比如74系列元器件(三极管?)。 在查找了很多相关的书籍还有逛国内外网站后,又花了很多时间去比较和验证,终于设计出了一个简单又特别经典的计算机(关键是成本也少)。 也许很多人说为什么不使用可编程逻辑器件来制作呢?还简单便捷,我觉得能使用简单的逻辑器件制作的才是从零开始设计,也是对计算机的底层工作原理了解最好的方式。 另外要说,按照我的设计,你甚至可以使用简单的三极管、MOS管来制作一个计算机!而且并不是很难的事情,因为我的设计也只使用了28块74系列芯片而已! ============================================== 介绍一下我设计的计算机系统的基本概况: 小名:qCPU(CuteCPU) CPU:4位 ROM:4KB RAM:4KB 运行频率:74芯片极限 IO:2组4位的IO口 4个按键 其他外设就是5个LED发光二极管,一个蜂鸣器,一个5X7点阵LED,一个LCD1602液晶 总共8条指令,配备我自己设计的汇编器,使用起来跟 当年使用8086汇编编程很像 目前可以使用USB下载,USB提供电源,在电脑编写代码后,编译下载运行一条龙!! ============================================== 目前的指令如下: ADD    加法 RM     读取内存 ADDC   带进位加法 WM     写内存 SUB    减法 OUT    IO输出 <      小于比较 =      等于比较 GOTO   小跳转 QCLR   清空 QMOV   赋值 QADD   加法 QSUB   减法 QGOTO  长跳转 QJMP   立即跳转 ============================================== 不多说了,,,上图说话吧,,目前一些功能还在测试中,代码库也在完善中,敬请期待。 这个板子发去打样后发现有一个BUG,就在板子上临时修改了 待续……







nkc production Server  https://github.com/kccd/nkc

科创研究院 (c)2005-2016

蜀ICP备11004945号-2 川公网安备51010802000058号