继龙少和qql之后,我也在不断地更新着我的74门计算机

  先放一些图吧

cbedd7d5844f92fe01b06550c241b140524d8018.png

 这个是该款微处理器的总的框架图

0d096d9a99c61918e65b0c96ec56f53e2f3366a3.png@1096w_1282h.png

 ALU的结构设计

以及之前最早的电路图

86f9fbd7700a52b2410a7e5ba422b1d3f9f9a8b9.png

 毕竟是最早的设计嘛,所以有一些地方还不是很到位,在设计方面存在一些缺陷和诟病


目前的话预计的配置

名称:

隶属:暂无

结构:哈佛结构

位宽:8位

ROM大小:4MB可拓张

RAM大小:显存:64KB×2=128KB                   

内存:128KB                   

SFR:未定

大概就这么多吧

文档的下载链接(这个版本的电路图还是属于最早的测试版的,新版还没有画完

ALU(完成).pdsprj
24.6k
PDSPRJ
25次下载

另外,本设计完全开源

最初打算制作这款计算机的缘由:

自从16年看到龙少等人研究出自己的74门计算机,并有一定的生态圈子时,很是羡慕,梦想自己也能做出一台除74门外不含有任何逻辑性质的芯片的计算机

  可是,年复一年(大概断断续续思考了有一年左右吧)一直倒在vga这块儿,也就当做笑耳,以这个为借口不再研发下去了

  今年寒假,为windows苦于图形界面软件编程教程甚少的时候,又会想起来,可惜但是只不过时间太短了,没有留下什么留念,只是草草翻译了几篇datasheet了吧,寒假过后,也没机会碰电脑,毕竟一个初中生怎么较量得过家管严的父母呢

  暑假,在B站上投稿了较多专栏,主要以教程的方式向大家入门74门微处理器,慢腾腾地做着自己的专栏,所幸,反响不错


在这段期间内,我还肤浅地研究了一下龙少的机子,发现了两个诟病(如有错误欢迎指正)

1.大量使用74门自身特性做延迟用 

2.对于移位方面比较浪费元件

我还小小地整理了一下龙少的电路图,整合成一个pdf

龙少电路图整理.pdf
469k
PDF
77次下载

 暂时就这么多吧,等会去学校回来继续更新


[修改于 1 年前 - 2018-09-09 14:44:36]

加载全文
来自 快乐DIY计算机电子学
 
5
2019-8-23 17:40:16
左手执者(作者)
50楼

目前经过电路优化后理论上可以达到1m/s的乘除法计算速度(16的节拍,采用16mhz时钟),相比查表法轻量许多(其实也并不算真正的轻量 毕竟alu为此付出了很大的代价),上图就是整个alu,目前还没有实际检验过操作是否符合过理论,因为手工仿真比较繁琐,一步错就完了,估计要画两三张板子,pcb将采用山字型排布(所有板子通过一张总线板挂在一起),降低了拆装复杂度,提升了美观性。@神之觉醒 您怎么看

折叠评论
加载评论中,请稍候...
折叠评论
2019-8-23 20:34:58
51楼

所以说现代的搞法应该是先用HDL做然后写testbench来验证。。。

折叠评论
加载评论中,请稍候...
折叠评论
2019-08-29 11:29:33
2019-8-29 11:29:33
左手执者(作者)
52楼

新版本的digital似乎发错位置了(另一贴) ( ,补发

Digital_v0.23(左手执者修改版).zip
7.24M
ZIP
13次下载

使用起来个人感觉还行,主要是能够直接控制输入输出端,而不是使用繁琐的单刀双掷开关(也不知道其他eda是否能够这样便捷的操作),比较适合数电的开发,很容易上手。目前我将软件中的74系列的库文件修改了一下(原来的库是使用DIP封装的,现在被我改成更利于使用的逻辑图符号了),原作者是说如果自己做了库是可以在github上pull request他的,不过本人不太会用git ( 。将软件直接解压便可以使用,大小只有十几M,然后打开上述的电路图文件(.dig)便可以了。

折叠评论
加载评论中,请稍候...
折叠评论
2019-09-13 22:13:13
2019-9-13 22:13:13
左手执者(作者)
53楼

更新一个直观展示乘法的图,动画就懒得做了,毕竟太费时间

Microsoft Word - 8位乘法运算.docx.png

这结构我打算更新一下,至于怎样之后再看吧,总之用料更少+速度更快

折叠评论
加载评论中,请稍候...
折叠评论
2019-09-17 01:16:51
2019-9-17 01:16:51
54楼
引用 左手执者 发表于 50 楼的内容:
目前经过电路优化后理论上可以达到1m/s的乘除法计算速度(16的节拍,采用16mhz时钟),相比查表.....

感觉最近对复杂的东西特别头晕,  就是想着怎么精简又能实现功能, 有些理论上是这么说,  实际做出来的运行效果还有使用上的优缺点又是另个坑.

折叠评论
加载评论中,请稍候...
折叠评论
2019-09-21 21:26:56
2019-9-21 21:26:56
左手执者(作者)
55楼

近期脑回路又爆炸了,增加BRK信号,如果除法的余数为零就会终止此指令。乘法则可以判断不进行无用的+0,两者都能在一定程度上提高效率,不过一是懒得搞了,二是怕瞎搞调bug调半天,三是怕电路太臃肿(功耗,功耗啊),四是怕摊大饼(如今算延迟看来这个频率还是挺悬的)还是保留这个引脚吧

折叠评论
加载评论中,请稍候...
折叠评论
56楼

都有硬件乘除法了能不能再弄个硬件FPU?

折叠评论
加载评论中,请稍候...
折叠评论
左手执者(作者)
57楼
引用 信仰は儚き人間の為に 发表于 56 楼的内容:
都有硬件乘除法了能不能再弄个硬件FPU?

FPU目前不太感冒,一是因为没有高精度小数运算的需要(就算3d图形整数表达估计也够了),而是目前的ALU足够强大,对移位之类的做了特别优化,再做FPU略伤财



目前大概是这个样子,还没测试过,暂发图以免丢人

alutest.png

有木有发现比上次的少了好多元件

折叠评论
加载评论中,请稍候...
折叠评论
2019-09-22 18:05:56
左手执者(作者)
58楼

目前寄存器的读写已经通过仿真测试,乘法这边测试的代码还有点问题

Snipaste_2019-09-22_18-05-35.png


折叠评论
加载评论中,请稍候...
折叠评论
2019-09-30 22:38:59
2019-9-30 22:38:59
左手执者(作者)
59楼

晚上弄了会关键字的翻译,以及深入学习了一下微机


顺便展示一下晚上做的电路,是个乒乓球游戏机

pingpong.png

以及面包板电路

pingpong(fact).png

(虽然NE555不能画上去)

pingpong.dig
19.4k
DIG
5次下载

pingpong(fact).dig
19.3k
DIG
5次下载


折叠评论
加载评论中,请稍候...
折叠评论
2019-10-01 14:27:49
60楼

厉害了

折叠评论
加载评论中,请稍候...
折叠评论
左手执者(作者)
61楼

终于,在不断的努力下,于2019年10月1日10时30分,硬件乘法器“试车”(笑,本站特色)成功

Snipaste_2019-10-01_22-31-38.png

共计30个周期(加上接口和前期寄存器工作模式设定),核心时序为16个

图中A为高位,A'为低位(测试数据用),可以结合53楼的图表看出,最后的结果是0x7DBE,答案符合

明天试着吧硬除也测试好来,通过这次实验,发现了以前注意不到的很多细节时序问题


+10  科创币    虎哥   2019-10-01   资瓷
折叠评论
加载评论中,请稍候...
折叠评论
2019-10-02 13:13:45
左手执者(作者)
62楼

趁着吃完饭的当儿,调试了一下昨天的,不试不知道,计算)0xff×0xff出错了,但是之前的运算可以


于是拼命排bug,最后发现只是一句话写错了,修改之后就没有大碍了


不由得对比前几天的遭遇,面包板上一团麻的电路排了个遍。最后发现只是一个复位引脚被我用0.1uf的电容串到电源上了,我以为这样可信,殊不知对于内阻极大的cmos根本无法做到上电复位的作用,就是画蛇添足


Snipaste_2019-10-02_13-11-00.png


[修改于 2 个月前 - 2019-10-03 11:19:52]

折叠评论
加载评论中,请稍候...
折叠评论
左手执者(作者)
63楼

于2019年10月2日21时许,除法运算验收成功,至此,将进入下一个阶段,kicad制板

高兴一下:啊啊啊啊,两年了,终于成功了

Snipaste_2019-10-02_21-08-31.png

顺手算了一个除以0


接下来制板之后再将指令流水线做好,届时只要有两模块和一些基本的输入输出接口即可作为一无中断的单片机


后续将会制作:

IO输入输出单元

段寄存器寻址单元

中断控制单元

微码单元(用于高级自定义指令运行,不过本机子目前已经直接运行微码)

串口以及外设单元(外接CH340以及usb拓展口即可连接HID设备)

VGA显示卡(支持画线,滚动页面等硬件可以实现的低级操作)

协处理器(用于运算三角函数和浮点数)

以时间为序,之后想到的再补充吧


太激动了,一时字都打飞了

折叠评论
加载评论中,请稍候...
折叠评论
2019-10-03 11:29:23
左手执者(作者)
64楼

电路的反馈似乎有问题


本来是想将总线接缓冲器之后弱拉回来的,这是我从其他微机上看到的接法,用于保持总线的数据


例如:上一个周期输出了寄存器,这时寄存器的数据就被总线接受了,在下一个周期即使寄存器没输出,总线上也能够保持,这样就可以操作别的寄存器载入了


然而我无论是将feedback封装成模块还是直接接电路上,在数据跳变时都会报错会短路


唉,也不知道之后怎么解决了


Snipaste_2019-10-03_11-27-57.png


折叠评论
加载评论中,请稍候...
折叠评论
65楼

把俩门的输出同时接在一起当然会短路。

要这么做应该用OC门或OD门。

有两年的时间画图,还不如先花一个月买本数字电路翻翻。

要实现这个需求可以在总线上增加一个触发器

[修改于 2 个月前 - 2019-10-03 14:01:21]

折叠评论
加载评论中,请稍候...
折叠评论
左手执者(作者)
66楼
引用 信仰は儚き人間の為に 发表于 65 楼的内容:
把俩门的输出同时接在一起当然会短路。要这么做应该用OC门或OD门。有两年的时间画图,还不如先花一个月.....

我的意思不是这样啊,我是说把信号接中继器然后通过一个拉电阻反馈回去,现在改成一个带oc门的8d触发器了


两年当然不是画这个图,而是从两年前(甚至更久远)就开始瞎嘀咕要做这个了


然后之前都只是比划而已,甚至都没仿真过,也没钱,不能做板子,最近一个月才开始真正的动工画图,并实现功能


折叠评论
加载评论中,请稍候...
折叠评论
左手执者(作者)
67楼

最后一次检查排完了,BOM也算好了

全家福

ALU.png

A.png

ALU.zip
35.6k
ZIP
0次下载

Snipaste_2019-10-03_16-30-56.png

总共有36个元件,10×10的板子估计得分次打了

折叠评论
加载评论中,请稍候...
折叠评论
2019-10-04 14:00:42
左手执者(作者)
68楼

第一版原理图已经检查两遍,可以画板

ALU1.png

kicad复制出来是像素风,你别说还蛮好看的

折叠评论
加载评论中,请稍候...
折叠评论
2019-10-05 21:26:58
2019-10-5 21:26:58
左手执者(作者)
69楼

最近因个人原因退网


及“遗照”,文件

Snipaste_2019-10-05_21-24-39.png

Snipaste_2019-10-05_21-25-01.png

ALU1.zip
167k
ZIP
0次下载


折叠评论
加载评论中,请稍候...
折叠评论
70楼

强烈建议在DIY 74hcxx CPU时,不用实现硬件乘除法。只要实现加减移位与或非异或就行了。

折叠评论
加载评论中,请稍候...
折叠评论
2019-10-06 09:34:39
左手执者(作者)
71楼
引用 ldfa 发表于 70 楼的内容:
强烈建议在DIY 74hcxx CPU时,不用实现硬件乘除法。只要实现加减移位与或非异或就行了。

并非额外功能,而是附加功能,以原硬件为优势追加的。加了也不必付出多大的硬件代价(龙少的似乎也是用了30多片作为核心),只需一点硬件大大提高效率(例如,此举也能增加文字渲染效率,参见乘法原理),何乐而不为呢

折叠评论
加载评论中,请稍候...
折叠评论
2019-10-13 15:57:50
2019-10-13 15:57:50
左手执者(作者)
72楼

流水线结构基本想好了


指令代码主要包括:①指令序列号;②控制总线信号③数据总线信号


不过由于月考成绩不理想,电脑倒是被ban了,等考好了再回归吧,(成也物理,败也物理)

于学校参加“竞赛培训”中,看着老师讲微机不免令我这搞微机的噗嗤一笑,果然我这人不适于刷题啊(其实多多少少和应试教育挂钩吧(笑))


折叠评论
加载评论中,请稍候...
折叠评论
2019-10-19 23:05:40
2019-10-19 23:05:40
左手执者(作者)
73楼

想用arduino控制板作为输入,目前画了这么多

Snipaste_2019-10-19_22-56-02.png

突然大悟所谓在线eda的用途,这不就是一躲外面画板子的节奏吗


最近突然YY到能不能用74前端+高速sram,以及由单片机和显示器组成的便携逻辑分析仪,目前看起来还挺现实的


等等,arduino是不是只能初始化IO?这样就不能双向io了


也罢,也罢,一星期仅有的躲着捉迷藏画板子的晚上就是半休日了

折叠评论
加载评论中,请稍候...
折叠评论
2019-11-03 16:00:50
2019-11-3 16:00:50
左手执者(作者)
74楼

人在学校微机房,继续更新,依旧是没有图片的(手稿在教室,没有摄像机没法拍)


首先一改之前的cisc结构,改成了risc,具有三块有关于代码的储存器。

一块512k的eeprom,其中一半作为1024个代码的指令集,每个指令统一八个周期,

另外一半则作为引导程序的储存信息,也是bios,引导读出SD卡中的操作系统。当然了,现在还不可能占到256k,所以可以直接装代码

一块256k的高速is61c256作为cu,在boot时通过一系列时序利用PC寄存器读出eeprom内的指令集

一块4M的sram,作为微机的内存条,储存有数据和代码,可以热读写。(其实这个时候已经算不上储存的冯·诺伊曼结构了,属于和哈佛结构的结合体)boot方法如上


boot时,将PC地址遍历一遍,同时载入指令集和操作系统,然后正式启动微机


PC寄存器的计数结构有点复杂,包括PC寄存器,PC预寄存器(因为一次只能操作8位,20位地址线分三次,此时不能直接导入PC),PC备份寄存器


其中,PC全部支持计数,预PC的低16位支持计数,同时,预PC的低8位可以与备份寄存器进行加减,得到-127——+128内的相对地址,备份寄存器广泛运用于读写数据,中断,子程序


例如,我们要读数:

①PC导入备份寄存器

②与预PC对接,导入目标地址

③DTPR寄存器记下该数据

④与备份寄存器对接,导入原地址


中断:

①PC直接清零

②在中断向量表中找到服务申请地址,导入预PC,跳转(预PC无法读出,但是一般应用程序不能直接操作PC,需要调用系统中的跳转函数,以弥补虚拟MMU,而其他的不可读寄存器应用程序在使用时须先在pid对应寄存器信息页中声明该程序对应的各寄存器量,方便返回时重新装载,同时,计数器归操作系统保管)

③服务程序根据自身需要备份一些可读寄存器(A,B,PSW等等),正式进入目标程序(免去全部寄存器备份的延迟和繁琐)

④还原场景,返回


差不多先这些,等会上图

折叠评论
加载评论中,请稍候...
折叠评论
2019-11-09 20:02:40
2019-11-9 20:02:40
左手执者(作者)
75楼

重置,毕竟原来那个图没人看得懂,预告(虽说挺想先把pc做好的,这样就可以实际运行zhuang13(雾))

Snipaste_2019-11-09_20-00-18.png

我很好奇是什么让我把这个板子做这么久的,之前的pc一天就构思好了(

折叠评论
加载评论中,请稍候...
折叠评论

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

插入资源
全部
图片
视频
音频
附件
全部
未使用
已使用
正在上传
空空如也~
上传中..{{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