路漫漫其修远兮,吾边漫步,边求索。
学习进度:Nand2Tetris Project1 THE END
学习小记
注意模块的复用
经常忘记在写复杂芯片的时候使用之前写过的芯片!之前写Mux16的时候还吐槽这么简单的逻辑还要单独写一个芯片,结果今天写Mux4Way16的时候完全没有使用Mux16的意识!写了一大堆都快晕过去了。
结果答案直接使用集成,把16条看成一条用Mux16飞快的解决了!哀叹我逝去的半小时……勿以chip简单而藐之!基础的模块都要牢记于心才能在合适的时候发挥作用。
还有就是注意一下使用Mux16这类数组写法的输入的时候直接传数组名就行,不需要[ ]
写Mux8Way16,写完的那一瞬间突然想到可以使用Mux4Way16!说明刚刚记过笔记的脑子就是好用!!
注意一下切片的语法sel[0..1],总感觉好像之前看书的时候有看见过,但是写的时候就是想不起来,或许之后应该先复习再开始写?今天是直接开始从昨天断掉的地方写project了,没有复习,下次可以注意。可以学习的时候先把笔记整理好,这样复习的时候直接看笔记就好了!
写DmuxWay8,写的时候先用的sel[0..1],但是这样就是根据第2位确定最后的的输出,会变成输出ae/bf/cg/dh,所以改成sel[1..2],这样写的时候就会变成abcdefgh输出了,看起来比较舒服。其可以对应到二进制,DmuxWay4帮助把sel前两位处理成一样的,这样接下来就只需要处理两次一位Mux,本质上就是一个分位处理,有点二叉树的样子,从高位开始分类,先分出大类,再分出小类,还是很直观的。
注意二进制的位数标记
sel[0]对应的是二进制最右边那一位,不是从左到右!
模拟作为重要思想
感觉很多时候做Dmux的时候会去想分支,如果sel[0]是0,那么a = in这样的思路
核心应该是对每一个输入默认为1然后构建能输出1的析取范式的形式?本质上似乎是模拟电路通断,感觉可以细细思索一下。
学习感悟
第一章结束了!感觉还是很轻松的,前后加起来虽然很久,不过大多数时间是浪费的。
下一章开始的时候,可以先尝试梳理框架,总结核心知识点之后再开始写,写的时候实时记录感悟和遇到的坑点,这样补充起来内容会比较丰富,感觉上学习效率也会更高!期待~
第一章暂时就不重新梳理,或许未来会回来补一个article,这里简单总结一下:
- CHIP (hdl) 语法,= 表示把右边信号连接到到左边当前使用芯片引脚(引脚名是芯片定义好的,固定不变)
- Nand门构建Not And Or Mux Dmux Not16 And16 Or16 Mux16 Or8Way Mux4Way16 Mux8Way16 Dmux4Way Dmux8Way
- 后缀16指的是输出输入为16位并行处理
- 中间的4/8指的是有4/8个一组输出一个值/把一个值输出成4/8个值,通路量发生变化
随笔
破除执念,做好自己
什么才是最重要的东西呢?我们到底为什么而努力呢?个人以为从本心上讲,其实就是生活幸福美好罢了。三五亲朋,花前月下,风乎河畔,咏而归。所谓人生清明,不过小小得意,无忧而已。
可惜为无忧而生忧虑,为幸福为自我磨折,人不是常常这样吗?总是把自己的评价权向无情的社会拱手奉上,遇到挫折总是自责不已,抑或呼天抢地,这不是很奇怪吗?
既如此,何不归还本心?幸福的生活不必等到成功之后,不必等到目标实现。于是理想永远存在,良心永远安稳。现在无事地看茶叶在水中浮沉,抑或是静静的思考Nand门到Dmux8Way的实现,不也是一件让人心满意足的事情吗?
我想起一个存在日记本里面的原则:我自信我能做到,但做不到也没什么。
一切都会变好的,因为我们相信。
不急,底层的路不能急,人生的路需要缓,我们慢慢来。