所以说现代的搞法应该是先用HDL做然后写testbench来验证。。。
先放一些图吧
这个是该款微处理器的总的框架图
ALU的结构设计
以及之前最早的电路图
毕竟是最早的设计嘛,所以有一些地方还不是很到位,在设计方面存在一些缺陷和诟病
目前的话预计的配置
名称:
隶属:暂无
结构:哈佛结构
位宽:8位
ROM大小:4MB可拓张
RAM大小:显存:64KB×2=128KB
内存:128KB
SFR:未定
大概就这么多吧
文档的下载链接(这个版本的电路图还是属于最早的测试版的,新版还没有画完
另外,本设计完全开源
最初打算制作这款计算机的缘由:
自从16年看到龙少等人研究出自己的74门计算机,并有一定的生态圈子时,很是羡慕,梦想自己也能做出一台除74门外不含有任何逻辑性质的芯片的计算机
可是,年复一年(大概断断续续思考了有一年左右吧)一直倒在vga这块儿,也就当做笑耳,以这个为借口不再研发下去了
今年寒假,为windows苦于图形界面软件编程教程甚少的时候,又会想起来,可惜但是只不过时间太短了,没有留下什么留念,只是草草翻译了几篇datasheet了吧,寒假过后,也没机会碰电脑,毕竟一个初中生怎么较量得过家管严的父母呢
暑假,在B站上投稿了较多专栏,主要以教程的方式向大家入门74门微处理器,慢腾腾地做着自己的专栏,所幸,反响不错
在这段期间内,我还肤浅地研究了一下龙少的机子,发现了两个诟病(如有错误欢迎指正)
1.大量使用74门自身特性做延迟用
2.对于移位方面比较浪费元件
我还小小地整理了一下龙少的电路图,整合成一个pdf
暂时就这么多吧,等会去学校回来继续更新
[修改于 6年2个月前 - 2018/09/09 14:44:36]
新版本的digital似乎发错位置了(另一贴) ( ,补发
使用起来个人感觉还行,主要是能够直接控制输入输出端,而不是使用繁琐的单刀双掷开关(也不知道其他eda是否能够这样便捷的操作),比较适合数电的开发,很容易上手。目前我将软件中的74系列的库文件修改了一下(原来的库是使用DIP封装的,现在被我改成更利于使用的逻辑图符号了),原作者是说如果自己做了库是可以在github上pull request他的,不过本人不太会用git ( 。将软件直接解压便可以使用,大小只有十几M,然后打开上述的电路图文件(.dig)便可以了。
更新一个直观展示乘法的图,动画就懒得做了,毕竟太费时间
这结构我打算更新一下,至于怎样之后再看吧,总之用料更少+速度更快
目前经过电路优化后理论上可以达到1m/s的乘除法计算速度(16的节拍,采用16mhz时钟),相比查表...
感觉最近对复杂的东西特别头晕, 就是想着怎么精简又能实现功能, 有些理论上是这么说, 实际做出来的运行效果还有使用上的优缺点又是另个坑.
近期脑回路又爆炸了,增加BRK信号,如果除法的余数为零就会终止此指令。乘法则可以判断不进行无用的+0,两者都能在一定程度上提高效率,不过一是懒得搞了,二是怕瞎搞调bug调半天,三是怕电路太臃肿(功耗,功耗啊),四是怕摊大饼(如今算延迟看来这个频率还是挺悬的)还是保留这个引脚吧
引用信仰は儚き人間の為に发表于57楼的内容都有硬件乘除法了能不能再弄个硬件FPU?
FPU目前不太感冒,一是因为没有高精度小数运算的需要(就算3d图形整数表达估计也够了),而是目前的ALU足够强大,对移位之类的做了特别优化,再做FPU略伤财
目前大概是这个样子,还没测试过,暂发图以免丢人
有木有发现比上次的少了好多元件
目前寄存器的读写已经通过仿真测试,乘法这边测试的代码还有点问题
晚上弄了会关键字的翻译,以及深入学习了一下微机
顺便展示一下晚上做的电路,是个乒乓球游戏机
以及面包板电路
(虽然NE555不能画上去)
终于,在不断的努力下,于2019年10月1日10时30分,硬件乘法器“试车”(笑,本站特色)成功
共计30个周期(加上接口和前期寄存器工作模式设定),核心时序为16个
图中A为高位,A'为低位(测试数据用),可以结合53楼的图表看出,最后的结果是0x7DBE,答案符合
明天试着吧硬除也测试好来,通过这次实验,发现了以前注意不到的很多细节时序问题
趁着吃完饭的当儿,调试了一下昨天的,不试不知道,计算)0xff×0xff出错了,但是之前的运算可以
于是拼命排bug,最后发现只是一句话写错了,修改之后就没有大碍了
不由得对比前几天的遭遇,面包板上一团麻的电路排了个遍。最后发现只是一个复位引脚被我用0.1uf的电容串到电源上了,我以为这样可信,殊不知对于内阻极大的cmos根本无法做到上电复位的作用,就是画蛇添足
于2019年10月2日21时许,除法运算验收成功,至此,将进入下一个阶段,kicad制板
高兴一下:啊啊啊啊,两年了,终于成功了
顺手算了一个除以0
接下来制板之后再将指令流水线做好,届时只要有两模块和一些基本的输入输出接口即可作为一无中断的单片机
后续将会制作:
IO输入输出单元
段寄存器寻址单元
中断控制单元
微码单元(用于高级自定义指令运行,不过本机子目前已经直接运行微码)
串口以及外设单元(外接CH340以及usb拓展口即可连接HID设备)
VGA显示卡(支持画线,滚动页面等硬件可以实现的低级操作)
协处理器(用于运算三角函数和浮点数)
以时间为序,之后想到的再补充吧
太激动了,一时字都打飞了
电路的反馈似乎有问题
本来是想将总线接缓冲器之后弱拉回来的,这是我从其他微机上看到的接法,用于保持总线的数据
例如:上一个周期输出了寄存器,这时寄存器的数据就被总线接受了,在下一个周期即使寄存器没输出,总线上也能够保持,这样就可以操作别的寄存器载入了
然而我无论是将feedback封装成模块还是直接接电路上,在数据跳变时都会报错会短路
唉,也不知道之后怎么解决了
把俩门的输出同时接在一起当然会短路。
要这么做应该用OC门或OD门。
有两年的时间画图,还不如先花一个月买本数字电路翻翻。
要实现这个需求可以在总线上增加一个触发器
引用信仰は儚き人間の為に发表于66楼的内容把俩门的输出同时接在一起当然会短路。要这么做应该用OC门或OD门。有两年的时间画图,还不如先花一个月...
我的意思不是这样啊,我是说把信号接中继器然后通过一个拉电阻反馈回去,现在改成一个带oc门的8d触发器了
两年当然不是画这个图,而是从两年前(甚至更久远)就开始瞎嘀咕要做这个了
然后之前都只是比划而已,甚至都没仿真过,也没钱,不能做板子,最近一个月才开始真正的动工画图,并实现功能
最后一次检查排完了,BOM也算好了
全家福
总共有36个元件,10×10的板子估计得分次打了
第一版原理图已经检查两遍,可以画板
kicad复制出来是像素风,你别说还蛮好看的
强烈建议在DIY 74hcxx CPU时,不用实现硬件乘除法。只要实现加减移位与或非异或就行了。
强烈建议在DIY 74hcxx CPU时,不用实现硬件乘除法。只要实现加减移位与或非异或就行了。
并非额外功能,而是附加功能,以原硬件为优势追加的。加了也不必付出多大的硬件代价(龙少的似乎也是用了30多片作为核心),只需一点硬件大大提高效率(例如,此举也能增加文字渲染效率,参见乘法原理),何乐而不为呢
流水线结构基本想好了
指令代码主要包括:①指令序列号;②控制总线信号③数据总线信号
不过由于月考成绩不理想,电脑倒是被ban了,等考好了再回归吧,(成也物理,败也物理)
于学校参加“竞赛培训”中,看着老师讲微机不免令我这搞微机的噗嗤一笑,果然我这人不适于刷题啊(其实多多少少和应试教育挂钩吧(笑))
想用arduino控制板作为输入,目前画了这么多
突然大悟所谓在线eda的用途,这不就是一躲外面画板子的节奏吗
最近突然YY到能不能用74前端+高速sram,以及由单片机和显示器组成的便携逻辑分析仪,目前看起来还挺现实的
等等,arduino是不是只能初始化IO?这样就不能双向io了
也罢,也罢,一星期仅有的躲着捉迷藏画板子的晚上就是半休日了
重置,毕竟原来那个图没人看得懂,预告(虽说挺想先把pc做好的,这样就可以实际运行zhuang13(雾))
我很好奇是什么让我把这个板子做这么久的,之前的pc一天就构思好了(
花了几天的时间,把之前电路没用的东西删了,然后重新做,终于把乘法调试好了(泣)(吐血)
然后...就这么冒冒失失地把bug修复好了
估计会省一些元件吧
现在先不做板子,把电路完善了以后在出一些东西
毕竟吸取了之前的教训,先做一些细枝末节的东西只会事半功倍
更新,我的CPU可以计算斐波那契数列了
(1, 1, 2, 3, 5, 8, 13, 21, 34, 55)
显示的是16进制的,对应
(1, 1, 2, 3, 5, 8, D, 15, 22, 37)
更新,这次终于可以自行运行ROM启动程序了
(之前的是测试工具相当于数据都是灌到嘴巴里的,但是这次是用一个简易的pc计数器来控制的,排除了一些实际运行中的错误)
离目标又近了一步
剩下的就是时间对它的考验了,鬼知道以后还会遇到多少问题
继上文,电路板画好了
不过还有一块位置剩下来,不知道做什么(这是两块板子之一)(笑)
感谢,一时看到太多,不知从何讲起首先,看到您的支持与理解以及对孩子的培养,深感荣幸我不过只是一个业余...
周一,就要复工了。看到一个视频在讲基本的二极管PN结,好几天前发现的。今天把儿子拽过来,看。没想到视频里有广告插播,是讲“从0开始学习计算机”的淘宝店。具体的网址我就不登出来了。通过辗转,我到了这位工程师的官网,其中有一个简介,我把他复制过来,“我家有一个5年级的小朋友,我和大多数中国家长一样非常焦虑,我想给他学一些什么东西,因为我本身是学软件的,由于工作的关系很多年不从事相关的专业工作了。我知道计算机很重要,我希望他能够学习一些这方面的方面的知识,大家知道,计算机是需要很多的技术知识的积累的。然而外面有很多这样的培训班比如像机器人,我总是认为他们的教学只是为了让家长开心而已,我想给他一些更基础的知识,就像是武术中的少林派,而不是九阴白骨爪。然后希望锻炼他一些自己动手的能力,以及一些思考问题的方法。嗯于是我开始着手准备一些资料。但是我发现这些准备这些资料的是非常困难的。偶然有一次机会我发现ben eater 在网上发布了一系列的视频一步一步教大家如何从74系列的逻辑芯片构造一台最基础的计算机。虽然只有16个内存,16条指令,但是他揭示出了计算机的核心,这个项目让我非常震撼。”
原来以为只有西方人在做这些基础的东西。没想到咱们有不少人都在投入类似的工作中。这里面一定有情怀,但同时也是一个时代的产物!
加油!
周一,就要复工了。看到一个视频在讲基本的二极管PN结,好几天前发现的。今天把儿子拽过来,看。没想到视...
他我知道,就是benblue嘛,不过那些并不是他自己做,而是搬运并配音国外的beneater的视频,然后还顺带把套件搬运到国内来,中间的利润估计也挺大的,不过搬运了这么多视频似乎也可以体谅,不知视频和套件是否获得原作者的许可,具体什么来头不大清楚
把上下两张板子做好了,可以看看
以后文件直接上传github,方便控制版本:
XXXXXXXXXXXXXXXXXX/Left-Hand/74-gate-computer
不过kicad的覆铜不敢恭维,只要是封闭图形中间就不覆铜,而且线距比较大(如果有更改选项的方法请告诉我),所以我一般是导入到立创之后生成gerber。不过这几天疫情嘛,打板恢复到20元了,不打也得打,只不过心里在滴血。
关于其他单元是否要做板子的话另议,一般先会用洞洞板做
接下来我检查一下库存,看看是否有缺少的元件
杂谈:最近入手了一个低压烙铁控制板,看看是否能加一个t12的头上去,我这个黄花907还是有些问题,可能存在漏电的现象(我家住顶层,还没有可用的地线)上次的一个芯片可能就是因为这个原因烧掉了,为避免经济损失,打算用这个自己做一个烙铁
把上下两张板子做好了,可以看看以后文件直接上传github,方便控制版本:https://githu...
不要自制烙铁,直接上网买个白菜白光吧,不贵好用,哪怕是最便宜,控温不太精准的型号都很好用了
把vga显卡做好了,显示的分辨率为256*240 60hz
通过在总线操作写入x,y地址,数据来实现图片的写入。使用了4块is62c256的sram进行乒乓工作,两块sram构成一个帧,一个帧在显示的同时写入另一个帧。8位色,届时通过R2R电阻分压网络实现DA。支持Y方向上的硬件滚屏,(x应该会考虑,方便制作多向卷轴,不过再加上去就占位置了),总计元件费约为70元,其中20元用于sram,亦可做其他开发板的显示模块
顺便说一下打板子的事,其实我一开始是想说尽早把之前的板子打掉了,但是看到20元钱心里还是很犹豫,现在都拖了这么久了,干脆就等到底吧
最近有空吧代码读取的部分做了,第一次给这个写真正意义上的程序(在vga上显示一个句号)
顺便做了一个编译器
以下为图片
<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>
电路文件(瞎取的):
图片:
感慨了一下我们大学要学的内容人家在初中就已经开始了。对于楼主要做的事情,我觉着意义除了学习以外,还有另一层。我记得自己小时候受到鲁滨逊漂流记(后又读凡尔纳的神秘岛)影响很大,于是乎经常设想自己流落荒岛(还有世界末日)后会建设出什么样的东西,尤其是一开始几乎是一穷二白的时候,怎么让自己对其它动物快速产生科技优势?解决生存危机?
于是对于矿石收音机或者自制发报机就特别感兴趣,因为这意味着你可以对外发信号,不过要做到这点,光有电子学知识是绝对不够的,你还得懂怎么找到代替二极管的晶体吧?所以呢,这个过程其实非常有意思,也有意义。
说到底。从无到有的创造,正是一种极客精神的体现。但抛去现有基础完全从0出发肯定是地域模式,也不一定适合所有场景。
楼主做的事情完全可以假设世界末日了,你刚好从一个电子元器件仓库醒来只有各种基础元器件,没有电脑没有网,而且发现周围几十公里都没有人,这时候,你想动手自己创造自动发报机……
哼,我觉得自己实际上应该当编剧去,完。
引用TubeChip404发表于47楼的内容看到楼主,想起去年上课无聊,遂拿出笔记本开始研究起cpu了,这不是我yy的第一个cpu,回想整个yy...
你好,这个设计文件可以共享出来不,想参考下,谢谢!
时段 | 个数 |
---|---|
{{f.startingTime}}点 - {{f.endTime}}点 | {{f.fileCount}} |
200字以内,仅用于支线交流,主线讨论请采用回复功能。