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

  先放一些图吧

cbedd7d5844f92fe01b06550c241b140524d8018.png

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

0d096d9a99c61918e65b0c96ec56f53e2f3366a3.png@1096w_1282h.png

 ALU的结构设计

以及之前最早的电路图

86f9fbd7700a52b2410a7e5ba422b1d3f9f9a8b9.png

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


目前的话预计的配置

名称:

隶属:暂无

结构:哈佛结构

位宽:8位

ROM大小:4MB可拓张

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

内存:128KB                   

SFR:未定

大概就这么多吧

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

attachment icon ALU(完成).pdsprj 24.61KB PDSPRJ 72次下载

另外,本设计完全开源

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

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

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

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

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


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

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

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

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

attachment icon 龙少电路图整理.pdf 468.58KB PDF 169次下载 预览

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


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

加载全文
来自:科创生活广场 / 创意与DIY计算机科学 / 计算机电子学
 
6
2019-8-23 20:34:58
52楼

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

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

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

attachment icon Digital_v0.23(左手执者修改版).zip 7.24MB ZIP 65次下载

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

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

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

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

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

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

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

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

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

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

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

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

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



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

alutest.png

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

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

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

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


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

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


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

pingpong.png

以及面包板电路

pingpong(fact).png

(虽然NE555不能画上去)

attachment icon pingpong.dig 19.40KB DIG 31次下载

attachment icon pingpong(fact).dig 19.25KB DIG 37次下载


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

厉害了

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

终于,在不断的努力下,于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
左手执者(作者)
63楼

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


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


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


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


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

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

于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
左手执者(作者)
65楼

电路的反馈似乎有问题


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


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


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


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


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


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

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

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

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

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

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

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

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


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


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


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

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

全家福

ALU.png

A.png

attachment icon ALU.zip 35.56KB ZIP 32次下载

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

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

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

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

ALU1.png

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

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

最近因个人原因退网


及“遗照”,文件

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

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

attachment icon ALU1.zip 167.18KB ZIP 39次下载


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

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

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

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

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

流水线结构基本想好了


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


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

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


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

想用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
左手执者(作者)
75楼

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


首先一改之前的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
左手执者(作者)
76楼

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

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

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

折叠评论
加载评论中,请稍候...
折叠评论
2020-01-28 19:13:20
2020-1-28 19:13:20
左手执者(作者)
77楼

花了几天的时间,把之前电路没用的东西删了,然后重新做,终于把乘法调试好了(泣)(吐血)

Snipaste_2020-01-28_19-11-26.png


折叠评论
加载评论中,请稍候...
折叠评论
2020-01-29 19:45:07
2020-1-29 19:45:07
左手执者(作者)
78楼

然后...就这么冒冒失失地把bug修复好了

alutest.png

估计会省一些元件吧

现在先不做板子,把电路完善了以后在出一些东西

毕竟吸取了之前的教训,先做一些细枝末节的东西只会事半功倍


折叠评论
加载评论中,请稍候...
折叠评论
2020-02-03 01:02:23
2020-2-3 1:02:23
79楼
引用左手执者发表于78楼的内容
然后...就这么冒冒失失地把bug修复好了估计会省一些元件吧现在先不做板子,把电路完善了以后在出一些...

    机缘巧合,困在家里不能上班,再加上自己有些愁事,在各种坛子里游荡。我这思维可能是比较烦躁吧,各种跳跃。白天本来学KiCAD画图。打算从2020年彻底使用开源的,免得惹事。今天刚刚开始,画的是某前辈开源程控直流电源图纸,以便于既能学会KiCAD的基本技巧,同时对程控直流电源也能有一个大概的学习吧。后来脑海里由“开源”,想到了自制CPU。本人没有受过正统的技能教育,既想自己能做出“开源”的CPU及其生态,又觉得自己能力确实不济。便突发奇想在某论坛对CPU进行搜索,搜到了其他前辈对“龙少”帖子的转帖。进而看到了本论坛,有事机缘巧合看到了您的帖子。主要是你的照片,着实让我吃一惊。这才仔细的阅读了您的帖子。对您及您的思路有了初步的认识。


    由于坛规所限,所以在帖子中说了一些由来,略显唐突!见谅!


    既然有机会在此处结识您以及其他几位高手,那就是缘分。我粗略发表自己一些小看法,权当交流心得。如果本人言论有冒犯之处,还望指出!

    1、在论坛中出现有动议类似“使用74系列芯片制作CPU”的活动,鄙人发现就有一些好心的高手建议作者使用FPGA平台,借用VHDL或Verilog HDL语言来实现。鄙人由于未受正统教育,曾经在2010~2012年期间,断断续续学习过一段时间的VerilogHDL,并在某项目中构思试用过FPGA(当时做了实验PCB,后项目下马,未商用)。从我的拙见看,从长远从业角度,FPGA绝对是大方向,但是学术味道太浓了。类似“使用74系列芯片制作CPU”的活动,无论是作者还是热心人,更多的是关注实现的“思路”,包括电路思路以及生态中的指令、总线结构、编译器生态等。如果作者以及观众对FPGA工具生态尚不熟悉的情况下,以鄙人拙见,必将花费大量的时间、精力、财力等在FPGA的生态上。虽说“磨刀不误砍柴工”,然而“74系列”的实施,鄙人感觉,更纯粹,更直接。无论是DIY的精神,还是动手能力,远胜于FPGA。当然,已经熟悉FPGA工具生态的高手前辈,另当别论!

    2、关于“自制CPU”的必然性。鄙人落脚的城市在伟大的雄安新区附近,属于三、四线小城。也有那么几所高等院校。在此城生活也近20年余,越来越感觉,在技术沉淀上,不知道是人才都走了,还是鄙人自己的层次不够未能遇到人才,简言之,在“电+计算机”领域,鄙人的拙见是“悲观”的。相较于2000~2008年之间,那时无论是“电子”、“电工”、“单片机”、“计算机”等等,已经有了遍地开花欣欣向荣的气氛。然而现在,“互联网”这个大风,有点儿太大了!把认真学习的人好像刮跑了很多!君不见:3个月速成“JAVA工程师”,而且还包分配;君不见“电子技术”专业,竟然没有“单片机”老师,学生毕业后,“单片机”教材崭新如初;君不见:送快餐、送快递,月薪5000+提成,还有周末。苦人学习“嵌入式”,因为一把电烙铁,只会烫手,不会化焊锡。只会谈Linux,不知道钽电容分正负极!

    仅仅与此,我特别赞成本贴的行动。只要坚持,n年以后,再回首,绝对受益无穷!

    3、关于“使用74系列芯片制作CPU”即使顺利,其作品确实不足与西方大咖做对比的悲观心态,鄙人持不同意见!荷兰的光刻机事件,时不时的就冒出来提醒一下大家!我们即不反对开放和交流,但是不能没有“备胎”,“备胎”在没有正式入列之时,就要能够挨得住寂寞,同时还要继续发展。“备胎”在短时间内,就是不经济的,就是烧钱的。而备胎的基础必须是从基层做起!切不可,JAVA架构师,不知道8086的引导启动流程!引导盘引导盘,只知道是一个盘,不知道怎么引导流程!

    不抬杠、不纠结。仅为一家之言!如有冒犯,请各位看客海涵。

    最后,趁着这几天闭关,试着与家人沟通。因为小儿粗略学习机器人编程一年了,无论其成绩如何,鄙人观察其有一定的兴趣爱好。看到作者的执着与造诣,鄙人打算让小儿也能循序渐进的对此有一个了解。虽然小儿可能永远也达不到作者的水平,但是“兴趣为王”的原则,如果其兴趣点儿确实在这上面,以后也是一个方向!

折叠评论
加载评论中,请稍候...
折叠评论
2020-02-16 14:01:23
2020-2-16 14:01:23
左手执者(作者)
80楼

更新,我的CPU可以计算斐波那契数列了
(1, 1, 2, 3, 5, 8, 13, 21, 34, 55)
显示的是16进制的,对应
(1, 1, 2, 3, 5, 8, D, 15,  22, 37)

yeh.gif

attachment icon ALU.zip 10.51KB ZIP 25次下载


折叠评论
加载评论中,请稍候...
折叠评论
左手执者(作者)
81楼
引用慧翀发表于79楼的内容
    机缘巧合,困在家里不能上班,再加上自己有些愁事,在各种坛子里游荡。我这思维可能是比较烦躁吧,...

感谢,一时看到太多,不知从何讲起


首先,看到您的支持与理解以及对孩子的培养,深感荣幸

我不过只是一个业余的爱好者,说难听点,当初自己想要做这个就是因为感到现代编程难以学习,才萌生了造一台机子以至于可以看得懂的机器,可以说,也许就是一个蠢货造就了这个想法,但因为当时年纪还小,又懒于学习语言(但是对CMD很排斥,看到没有窗体的程序就没有学下去的动力)也不知道什么时候就慢慢的一点点构思了出来,现在虽然已经对高级语言具有一定的熟悉程度,但不认为所做的无用,也许只是小小的想法改变了我的理想吧,我并不认为我是一个优秀的程序员,希望您的孩子能够早日超过我

,也希望天下的家长都能和您一样大力支持孩子的兴趣


其次,您不必过分赞扬我,我的模拟电路学得一团糟,甚至现在还无法完全理解电感这个元件,最近才清楚运算放大器能够实现电压大小的隔离,顶多靠唯一的数电撑起我的门面,可以这样说,我在数字电路上的造诣也不算特别大,一个一般人,如果对这门艺术抱有兴趣的话,是完全可以学到这样的水凭的,您认为雄安地区是小地区,但其实我们这边落后得甚至都算不上五线城市——一个商品房难得超过十层楼的小县城


关于FPGA,我对其看法是:如果都只是拿FPGA做了,那和买来的CPU已经没有多大的差异了,丧失了自己动手实现的乐趣,更别说安装软件,配置环境这一层遇到的困难了,难以与他人产生共鸣,难以具有感染力,他人很可能只是成为惊叹的过客。相反,自己制作这样的乐趣就和他人安装LINUX类似:一个个驱动,自己配置,自己拼接,就像是玩积木一样,终于成为了一个可用好用的家伙


有朝一日,我们会看到这机器成功的亮起来,而且飞跑起来!感谢,十分感谢您的理解与支持


最后,祝您祝身体健康,事业顺利

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

更新,这次终于可以自行运行ROM启动程序了

(之前的是测试工具相当于数据都是灌到嘴巴里的,但是这次是用一个简易的pc计数器来控制的,排除了一些实际运行中的错误)


离目标又近了一步

ALU beta.png

attachment icon ALU.zip 641.55KB ZIP 29次下载


剩下的就是时间对它的考验了,鬼知道以后还会遇到多少问题

折叠评论
加载评论中,请稍候...
折叠评论
2020-02-20 23:34:53
2020-2-20 23:34:53
左手执者(作者)
83楼

继上文,电路板画好了

ALU0.png

不过还有一块位置剩下来,不知道做什么(这是两块板子之一)(笑)

折叠评论
加载评论中,请稍候...
折叠评论
2020-02-21 00:13:47
84楼

预祝成功开跑。

折叠评论
加载评论中,请稍候...
折叠评论
2020-02-22 21:23:01
2020-2-22 21:23:01
85楼
引用左手执者发表于81楼的内容
感谢,一时看到太多,不知从何讲起首先,看到您的支持与理解以及对孩子的培养,深感荣幸我不过只是一个业余...

周一,就要复工了。看到一个视频在讲基本的二极管PN结,好几天前发现的。今天把儿子拽过来,看。没想到视频里有广告插播,是讲“从0开始学习计算机”的淘宝店。具体的网址我就不登出来了。通过辗转,我到了这位工程师的官网,其中有一个简介,我把他复制过来,“我家有一个5年级的小朋友,我和大多数中国家长一样非常焦虑,我想给他学一些什么东西,因为我本身是学软件的,由于工作的关系很多年不从事相关的专业工作了。我知道计算机很重要,我希望他能够学习一些这方面的方面的知识,大家知道,计算机是需要很多的技术知识的积累的。然而外面有很多这样的培训班比如像机器人,我总是认为他们的教学只是为了让家长开心而已,我想给他一些更基础的知识,就像是武术中的少林派,而不是九阴白骨爪。然后希望锻炼他一些自己动手的能力,以及一些思考问题的方法。嗯于是我开始着手准备一些资料。但是我发现这些准备这些资料的是非常困难的。偶然有一次机会我发现ben eater 在网上发布了一系列的视频一步一步教大家如何从74系列的逻辑芯片构造一台最基础的计算机。虽然只有16个内存,16条指令,但是他揭示出了计算机的核心,这个项目让我非常震撼。

    原来以为只有西方人在做这些基础的东西。没想到咱们有不少人都在投入类似的工作中。这里面一定有情怀,但同时也是一个时代的产物!

    加油!

折叠评论
加载评论中,请稍候...
折叠评论
2020-02-24 11:56:03
2020-2-24 11:56:03
左手执者(作者)
86楼
引用慧翀发表于85楼的内容
周一,就要复工了。看到一个视频在讲基本的二极管PN结,好几天前发现的。今天把儿子拽过来,看。没想到视...

他我知道,就是benblue嘛,不过那些并不是他自己做,而是搬运并配音国外的beneater的视频,然后还顺带把套件搬运到国内来,中间的利润估计也挺大的,不过搬运了这么多视频似乎也可以体谅,不知视频和套件是否获得原作者的许可,具体什么来头不大清楚

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

把上下两张板子做好了,可以看看


ALU0.png

ALU1.png


以后文件直接上传github,方便控制版本:

https://github.com/Left-Hand/74-gate-computer

不过kicad的覆铜不敢恭维,只要是封闭图形中间就不覆铜,而且线距比较大(如果有更改选项的方法请告诉我),所以我一般是导入到立创之后生成gerber。不过这几天疫情嘛,打板恢复到20元了,不打也得打,只不过心里在滴血。

关于其他单元是否要做板子的话另议,一般先会用洞洞板做

接下来我检查一下库存,看看是否有缺少的元件


杂谈:最近入手了一个低压烙铁控制板,看看是否能加一个t12的头上去,我这个黄花907还是有些问题,可能存在漏电的现象(我家住顶层,还没有可用的地线)上次的一个芯片可能就是因为这个原因烧掉了,为避免经济损失,打算用这个自己做一个烙铁



折叠评论
加载评论中,请稍候...
折叠评论
2020-02-25 10:41:10
88楼
引用左手执者发表于87楼的内容
把上下两张板子做好了,可以看看以后文件直接上传github,方便控制版本:https://githu...

不要自制烙铁,直接上网买个白菜白光吧,不贵好用,哪怕是最便宜,控温不太精准的型号都很好用了

折叠评论
加载评论中,请稍候...
折叠评论
2020-03-03 21:44:06
2020-3-3 21:44:06
89楼
引用左手执者发表于87楼的内容
把上下两张板子做好了,可以看看以后文件直接上传github,方便控制版本:https://githu...

整个剪线Dell/HP工作站电源再加个恒温烙铁

折叠评论
加载评论中,请稍候...
折叠评论
2020-03-15 17:24:14
2020-3-15 17:24:14
左手执者(作者)
90楼

把vga显卡做好了,显示的分辨率为256*240 60hz

attachment icon vga.dig 185.01KB DIG 12次下载

vga.png

通过在总线操作写入x,y地址,数据来实现图片的写入。使用了4块is62c256的sram进行乒乓工作,两块sram构成一个帧,一个帧在显示的同时写入另一个帧。8位色,届时通过R2R电阻分压网络实现DA。支持Y方向上的硬件滚屏,(x应该会考虑,方便制作多向卷轴,不过再加上去就占位置了),总计元件费约为70元,其中20元用于sram,亦可做其他开发板的显示模块


顺便说一下打板子的事,其实我一开始是想说尽早把之前的板子打掉了,但是看到20元钱心里还是很犹豫,现在都拖了这么久了,干脆就等到底吧

折叠评论
1
加载评论中,请稍候...
折叠评论
2020-03-21 20:17:28
2020-3-21 20:17:28
左手执者(作者)
91楼

最近有空吧代码读取的部分做了,第一次给这个写真正意义上的程序(在vga上显示一个句号)

顺便做了一个编译器


以下为图片

Snipaste_2020-03-21_19-41-42.png

Snipaste_2020-03-21_19-41-17.png

1584791710420.jpeg

<span style="color:rgb(169, 183, 198);">plist = [<span style="color:#6a8759;">"NON"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"ACP"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"AMR"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"STL"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"STR"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"LDM"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"BLLD"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"BHLD"</span><span style="color:#cc7832;">,<br></span><span style="color:#cc7832;">         </span><span style="color:#6a8759;">"AILD"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"MLD"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"STC"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"CLC"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"REC"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"NF"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"CAI"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"CLD"</span><span style="color:#cc7832;">,<br></span><span style="color:#cc7832;">         </span><span style="color:#6a8759;">"PCLLD"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"PCMLD"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"PCHLD"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"INTE"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"RD"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"WT"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"INTU"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"GED"</span><span style="color:#cc7832;">,<br></span><span style="color:#cc7832;">         </span><span style="color:#6a8759;">"JMP"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"HLT"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"JC"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"JNC"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"JZ"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"JNZ"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"JV"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"JNV"</span><span style="color:#cc7832;">,<br></span><span style="color:#cc7832;">         </span><span style="color:#6a8759;">"RET"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"RESTC"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"LDCL"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"LDCH"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"FINT3"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"MMULD"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"CLD"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"DLD"</span><span style="color:#cc7832;">,<br></span><span style="color:#cc7832;">         </span><span style="color:#6a8759;">""</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">""</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">""</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">""</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">""</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">""</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">""</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">""</span><span style="color:#cc7832;">,<br></span><span style="color:#cc7832;">         </span><span style="color:#6a8759;">""</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">""</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">""</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">""</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">""</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">""</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">""</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">""</span><span style="color:#cc7832;">,<br></span><span style="color:#cc7832;">         </span><span style="color:#6a8759;">"SAM"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"IVS"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"WVGA"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"YP"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"LXB"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"LX"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"LYB"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"LY"</span>]<br>olist = [<span style="color:#6a8759;">"BUSO"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"PCLO"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"PCMO"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"PCHO"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"UO"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"DO"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"AOO"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"ACO"</span><span style="color:#cc7832;">,<br></span><span style="color:#cc7832;">         </span><span style="color:#6a8759;">"CO"</span><span style="color:#cc7832;">, </span><span style="color:#6a8759;">"DO"</span>]<br>m = <span style="color:#6897bb;">0<br></span>fpath = </span><font color="#6a8759">input()</font><span style="color:rgb(106, 135, 89);"><br></span><span style="color:rgb(204, 120, 50);">with </span><font color="#a9b7c6">open(fpath</font><span style="color:rgb(204, 120, 50);">, </span><span style="color:rgb(106, 135, 89);">"r"</span><font color="#a9b7c6">) </font><span style="color:rgb(204, 120, 50);">as </span><font color="#a9b7c6">file:<br>    lines = file.readlines()<br>    </font><span style="color:rgb(204, 120, 50);">for </span><font color="#a9b7c6">i </font><span style="color:rgb(204, 120, 50);">in </span><font color="#a9b7c6">range(len(lines)):<br>        lines[i] = lines[i].split()<br><br></font><span style="color:rgb(204, 120, 50);">def </span><font color="#a9b7c6">findins(ins):<br>    </font><span style="color:rgb(204, 120, 50);">global </span><font color="#a9b7c6">plist<br>    </font><span style="color:rgb(204, 120, 50);">global </span><font color="#a9b7c6">m<br>    </font><span style="color:rgb(204, 120, 50);">try</span><font color="#a9b7c6">:<br>        i = plist.index(ins)<br>        m = </font><span style="color:rgb(104, 151, 187);">0<br></span><span style="color:rgb(104, 151, 187);">    </span><span style="color:rgb(204, 120, 50);">except </span><font color="#a9b7c6">ValueError:<br>        i = olist.index(ins)<br>        m = </font><span style="color:rgb(104, 151, 187);">1<br></span><span style="color:rgb(104, 151, 187);">    </span><span style="color:rgb(204, 120, 50);">return </span><font color="#a9b7c6">i<br></font><span style="color:rgb(204, 120, 50);">def </span><font color="#a9b7c6">delline(line):<br>    outline = </font><span style="color:rgb(106, 135, 89);">""<br></span><span style="color:rgb(106, 135, 89);"><br></span><span style="color:rgb(106, 135, 89);">    </span><font color="#a9b7c6">ins = hex(findins(line[</font><span style="color:rgb(104, 151, 187);">0</span><font color="#a9b7c6">])).replace(</font><span style="color:rgb(106, 135, 89);">"0x"</span><span style="color:rgb(204, 120, 50);">, </span><span style="color:rgb(106, 135, 89);">""</span><font color="#a9b7c6">)<br><br>    </font><span style="color:rgb(204, 120, 50);">if </span><font color="#a9b7c6">len(line) == </font><span style="color:rgb(104, 151, 187);">2</span><font color="#a9b7c6">:<br>        ins = gethex(ins</font><span style="color:rgb(204, 120, 50);">, </span><font color="#a9b7c6">m</font><span style="color:rgb(204, 120, 50);">, </span><span style="color:rgb(104, 151, 187);">1</span><font color="#a9b7c6">)<br>        outline += (ins + </font><span style="color:rgb(106, 135, 89);">","</span><font color="#a9b7c6">)<br>        num = hex(int(line[</font><span style="color:rgb(104, 151, 187);">1</span><font color="#a9b7c6">])).replace(</font><span style="color:rgb(106, 135, 89);">"0x"</span><span style="color:rgb(204, 120, 50);">, </span><span style="color:rgb(106, 135, 89);">""</span><font color="#a9b7c6">)<br>        </font><span style="color:rgb(204, 120, 50);">if </span><font color="#a9b7c6">len(num) == </font><span style="color:rgb(104, 151, 187);">1</span><font color="#a9b7c6">:<br>            num = </font><span style="color:rgb(106, 135, 89);">"0"</span><font color="#a9b7c6">+num<br>        outline += (num + </font><span style="color:rgb(106, 135, 89);">","</span><font color="#a9b7c6">)<br><br>    </font><span style="color:rgb(204, 120, 50);">else</span><font color="#a9b7c6">:<br>        ins = gethex(ins</font><span style="color:rgb(204, 120, 50);">, </span><font color="#a9b7c6">m</font><span style="color:rgb(204, 120, 50);">, </span><span style="color:rgb(104, 151, 187);">0</span><font color="#a9b7c6">)<br>        outline += (ins + </font><span style="color:rgb(106, 135, 89);">","</span><font color="#a9b7c6">)<br>    </font><span style="color:rgb(204, 120, 50);">if </span><font color="#a9b7c6">len(line)  == </font><span style="color:rgb(104, 151, 187);">2</span><font color="#a9b7c6">:<br>        print(line[</font><span style="color:rgb(104, 151, 187);">0</span><font color="#a9b7c6">] +</font><span style="color:rgb(106, 135, 89);">" " </span><font color="#a9b7c6">+ line[</font><span style="color:rgb(104, 151, 187);">1</span><font color="#a9b7c6">] +</font><span style="color:rgb(106, 135, 89);">"  ->  " </span><font color="#a9b7c6">+ outline)<br>    </font><span style="color:rgb(204, 120, 50);">elif </span><font color="#a9b7c6">len (line) == </font><span style="color:rgb(104, 151, 187);">1</span><font color="#a9b7c6">:<br>        print(line[</font><span style="color:rgb(104, 151, 187);">0</span><font color="#a9b7c6">] + </font><span style="color:rgb(106, 135, 89);">"  ->  " </span><font color="#a9b7c6">+ outline)<br>    </font><span style="color:rgb(204, 120, 50);">return </span><font color="#a9b7c6">outline<br></font><span style="color:rgb(204, 120, 50);">def </span><font color="#a9b7c6">gethex(ins</font><span style="color:rgb(204, 120, 50);">, </span><font color="#a9b7c6">m</font><span style="color:rgb(204, 120, 50);">, </span><font color="#a9b7c6">n):<br>    </font><span style="color:rgb(204, 120, 50);">if </span><font color="#a9b7c6">len(ins) == </font><span style="color:rgb(104, 151, 187);">1</span><font color="#a9b7c6">:<br>        ins = </font><span style="color:rgb(106, 135, 89);">"0"</span><font color="#a9b7c6">+ins<br>    ins = hex(int(ins[</font><span style="color:rgb(104, 151, 187);">0</span><font color="#a9b7c6">])+</font><span style="color:rgb(104, 151, 187);">8</span><font color="#a9b7c6">*n+</font><span style="color:rgb(104, 151, 187);">4</span><font color="#a9b7c6">*m).replace(</font><span style="color:rgb(106, 135, 89);">"0x"</span><span style="color:rgb(204, 120, 50);">, </span><span style="color:rgb(106, 135, 89);">""</span><font color="#a9b7c6">)+ins[</font><span style="color:rgb(104, 151, 187);">1</span><font color="#a9b7c6">:</font><span style="color:rgb(104, 151, 187);">2</span><font color="#a9b7c6">]<br>    </font><span style="color:rgb(204, 120, 50);">return </span><font color="#a9b7c6">ins<br><br>outlines = </font><span style="color:rgb(106, 135, 89);">""<br></span><span style="color:rgb(204, 120, 50);">for </span><font color="#a9b7c6">line </font><span style="color:rgb(204, 120, 50);">in </span><font color="#a9b7c6">lines:<br>    </font><span style="color:rgb(204, 120, 50);">if </span><font color="#a9b7c6">len(line) != </font><span style="color:rgb(104, 151, 187);">0</span><font color="#a9b7c6">:<br>        outlines += delline(line)<br>print(outlines[</font><span style="color:rgb(104, 151, 187);">0</span><font color="#a9b7c6">:len(outlines)-</font><span style="color:rgb(104, 151, 187);">1</span><font color="#a9b7c6">])<br>print(outlines.replace(</font><span style="color:rgb(106, 135, 89);">","</span><span style="color:rgb(204, 120, 50);">, </span><span style="color:rgb(106, 135, 89);">" "</span><font color="#a9b7c6">))<br><br>NON<br>NON 127<br>LXB<br>LX 119<br>LYB<br>LY<br>NON 255<br>WVGA <br>WVGA 126 <br>LXB<br>LX 120<br>LYB <br>LY 255<br>WVGA 129<br>LXB<br>LX 255<br>WVGA 126 <br>LXB<br>LX 121<br>LYB <br>LY 255<br>WVGA 129<br>LXB<br>LX 255<br>WVGA 127<br>LXB <br>LX 122<br>LYB<br>LY 255<br>WVGA<br>WVGA<br>IVS<br>JMP<br></font>

电路文件(瞎取的):

attachment icon POB.dig 500.60KB DIG 15次下载

图片:

POB.png


折叠评论
1
加载评论中,请稍候...
折叠评论
2020-03-29 15:53:48
2020-3-29 15:53:48
左手执者(作者)
92楼

其中一块板子在路上了,我也把一些做好的文件传了github上面

链接:https://github.com/Left-Hand/74-gate-computer

md文件里面总算是具体地交代了一下操作


折叠评论
加载评论中,请稍候...
折叠评论
2020-04-01 09:05:01
2020-4-1 9:05:01
93楼

感慨了一下我们大学要学的内容人家在初中就已经开始了。对于楼主要做的事情,我觉着意义除了学习以外,还有另一层。我记得自己小时候受到鲁滨逊漂流记(后又读凡尔纳的神秘岛)影响很大,于是乎经常设想自己流落荒岛(还有世界末日)后会建设出什么样的东西,尤其是一开始几乎是一穷二白的时候,怎么让自己对其它动物快速产生科技优势?解决生存危机?

于是对于矿石收音机或者自制发报机就特别感兴趣,因为这意味着你可以对外发信号,不过要做到这点,光有电子学知识是绝对不够的,你还得懂怎么找到代替二极管的晶体吧?所以呢,这个过程其实非常有意思,也有意义。

说到底。从无到有的创造,正是一种极客精神的体现。但抛去现有基础完全从0出发肯定是地域模式,也不一定适合所有场景。

楼主做的事情完全可以假设世界末日了,你刚好从一个电子元器件仓库醒来只有各种基础元器件,没有电脑没有网,而且发现周围几十公里都没有人,这时候,你想动手自己创造自动发报机……


哼,我觉得自己实际上应该当编剧去,完。

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

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

%7B%22isDisplay%22%3Atrue%7D

仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。

插入资源
全部
图片
视频
音频
附件
全部
未使用
已使用
正在上传
空空如也~
上传中..{{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}}
学术分隐藏
{{submitted?"":"投诉"}}
请选择违规类型:
{{reason.description}}
支持的图片格式:jpg, jpeg, png