Nand to Tetris

Why I want to learn it

​ 一方面是因为自己不仅想学code还想真正接触计算机科学,学习CS的知识。另一方面是因为自己基础薄弱,觉得迟早要学,不如先开始。

​ 我的学习路线还是按照Teach yourselfCS-CN 来学的。

What we will learn

​ 这里用中文快速写一遍吧。我们知道操作系统是连接软件和硬件的中间的一层,学习内容可想而知,不仅会涉及到硬件的知识,同时也会涉及到软件的代码,这门Build a Modern from the first principle是来自希伯来大学(以色列)的两名教授Noam Nisan Shimon Schocken经过很长时间探索打造的一门课,目的是帮助大家更好地了解计算机组成。这课最终目标能让大家自己打造一个操作系统(语言是类似Java的Jack语言,呃),然后在你设计的操作系统上写Tetris(俄罗斯方块这个游戏)想想还是比较激动的,虽然我现在啥都不会啊。

​ 课程分为两大部分,第一部分是硬件篇,从数学逻辑开始,慢慢的过渡到逻辑符号的一些硬件设计然后再设计晶体管,再慢慢上升到CPU,RAM之类的,最后到集成电路(Hack 电脑)。这部分时间大概是7周45h,每天学习2h左右吧。第二部分是软件,时间也是7周,这部分就先放一下,目标时是用高级语言设计虚拟机鸭~。

​ 课程适合入门学习,教材阅读可以选择The Elements of Computing System

​ 课程里的一些注意事项的补充:

​ Shimon在课程里将chip和gate理解成一个东西,都是执行逻辑功能的最小物理设备,以下为原书里的摘抄:

Today, most gates are implemented as transistors etched in silicon, packaged as chips. In this book we use the words chip and gate interchangeably, tending to use the term gates for simple chips

The content

Boolean Functions and Gate Logic

这部分的内容简单来说从数学逻辑(逻辑符号,逻辑表达式,逻辑表达式计算准则)出发然后引申到Logic Gate(Xor,Nand之类的,重点是Nand,它会和后面的知识串起来)再到硬件语言(HDL)再到设计。

一些必会的知识点:

三个简单逻辑的hardware diagram的表示方法

几个我当时犹豫思考后觉得有趣的地方:

逻辑表达式:

对于一张带有x,y参数和最后运算结果的Table,我们如何得到它的逻辑表达式呢?方法是通过NOT,AND,OR进行连接,凑value是1的表达式然后用OR进行连接。

值得注意的地方还有逻辑表达式的计算准则,除了类似小学学的交换、结合、分配律之外,还有一个mogan法则(De Morgon’s Law),不过也接触过,就是(x AND y) == NOT(NOT x OR (NOT y))。

这是我在阅读The Element of Computer System时有一个概念没有看懂叫做Canonical Representation中文翻译规范表达。摘了一段进行加强理解.

Thus the canonical representation of the Boolean function shown in figure 1.1 is f(x,y,z) =

这里的Canonical representation有点像是最简表达式的韵味了。

Gate Logic:

A gate is a physical device that implements a Boolean function.

The simplest gates of all are made from tiny switching devices, called transistors, wired in a certain topology designed to effect the overall gate functionality.

Gate里的逻辑一般用diagram来表示。

思考题:Xor(a,b)的canonical representation是如何表示的?它的diagram怎么画?

NAND:

可以用NOT + AND进行理解。x NAND y = NOT(x AND y)

任何的逻辑函数都可以用NAND进行一个表示,有两个好玩的证明。

  1. NOT(x) = (x NAND x)

  2. (x AND y) = NOT(x NAND y)

Hardware description languages(HDL):

HDL(hardware description language)其实就是设计硬件的语言。

常见的HDLs:

Hardware Simulation:

这里的Hardware Simulation的意思是硬件仿真,其实就是用软件去设计硬件啦,这里最基本的是设计最基本的chips。

下面的这张截图是对用Hardware Simulator仿真的一些内容。可以看出有几个部分内容是挺重要的丢,hdl语言部分,tst描述执行文件,.out文件,.cmp文件。

基本的概念得知道,现在的硬件设计者不需要再用手去设计硬件产品如芯片啦,设计过程自动化,他们是system architecht,写HDL项目用电脑软件Hardware simulator进行反复的仿真测试chip的正确性(可能会有几个月甚至更久哦)。那他们干嘛呢?计算速度,能量消耗,成本等是他们去注意的呦

Mux & DMux:

Mux是一种Multiplexor,这里的意思是有多个输入,同时sel对输入会有影响。

Chip name: Mux Inputs: a, b, sel Outputs: out Function: If sel=0 then out=a else out=b.

Chip name: DMux Inputs: in, sel Outputs: a, b Function: If sel=0 then {a=in, b=0} else {a=0, b=in}.

DMux可以理解为对Mux的一种解码或者解密,具体看书会更清楚。

15 particular gates:

​ 下面的这张图是15个最长使用的gates,也是作业里要做的内容,注意,作业里的HDL语言是经过简化过的,比起现在商业化用的VHDL等,简单很多。

​ 做这个作业最大的收获还是感受一下逻辑设计的过程,思考方式,当然可能会与实际有所不同。

一些做作业的时候需要注意的地方。

做作业过程中收获的地方:

总的来讲,有点层层递进的感觉,利用Nand可以构成一切的特性,首先写And,Not,Or,然后再慢慢利用构建的这些简单逻辑去构建多位的,多路的,Mux,DMux等。

From Nand to Tetris Week1 超详细2021相关推荐

  1. eclipes下载与配置中文(超详细2021年最新版)

    注意:不想看步骤想直接下的话Eclipse downloads - Select a mirror | The Eclipse Foundation点击这里就好了,会直接跳到下载页面. 一:下载与安装 ...

  2. From Nand to Tetris Week2 2021 超详细笔记

    Week2 为什么学这章的内容及学习目标 围绕着电脑计算展开,现在的我们知道CPU是计算机大量计算的关键部分,而在CPU内最关键处理计算的Chip是一个叫ALU(Arithmetic Logic Un ...

  3. 2021国赛超详细各类资源下载(一)

    2021国赛超详细各类资源下载(一) 文章目录 2021国赛超详细各类资源下载(一) 前言 内容链接 前言 本文汇总了一部分国赛相关资源,后续将会持续更新 内容链接 2021Python全套学习资料下 ...

  4. Swig超详细入门教程(Java调用C/C++, CMake)——更新于2021.12

    目录 相关教程 环境配置 0基础上手例子(C/C++) 使用CMake的例子(C语言) 使用CMake的例子(C++) 本文主要是手把手教萌新们如何用官方用例构建(有许多本人亲身踩坑血泪史) 相关教程 ...

  5. android如何实现qq登陆和qq分享,2021超详细mob平台图解教程?

    android如何使用mob平台实现QQ登录以及分享功能 1.在mob平台配置ShareSDK环境 1.如何在mob平台创建应用 2.获取你的`App Key`和`App Secret`(建议用自己的 ...

  6. 一份超详细的数据科学路线图!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:魔王.陈萍,来源:机器之心 从头开始学习数据科学的免费资源. 如何 ...

  7. 我的Go+语言初体验——(1)超详细安装教程

    我的Go+语言初体验--(1)超详细安装教程 "我的Go+语言初体验" | 征文活动进行中- Go+ 是什么?为数据而生,实现教学.工程与数据的 "三位一体". ...

  8. Git(2)-- Git安装后首次配置与第一次使用Git和Github管理自己的代码(超详细纯小白图文教程)

    文章目录 0.写在前面: 一.注册Github 1.注册Github: 2.登录 3.创建仓库 二.安装Git 三.配置Git和Github(Git安装好后首次使用需要配置完成后才可以使用) 1.打开 ...

  9. 卷积神经网络超详细介绍

    文章目录 1.卷积神经网络的概念 2. 发展过程 3.如何利用CNN实现图像识别的任务 4.CNN的特征 5.CNN的求解 6.卷积神经网络注意事项 7.CNN发展综合介绍 8.LeNet-5结构分析 ...

最新文章

  1. linux下IPROTO_TCP,TCP/IP协议栈在Linux内核中的运行时序分析
  2. 程序设计与算法----递归之n皇后问题
  3. mysql 查询最顶级_2018顶级MySQL博客作者
  4. template.js 模板引擎
  5. xshell和xftp免费版下载地址
  6. vue打包导致浏览器崩溃的解决方法
  7. XTU OJ 1397 Patchouli的金字塔
  8. Iris植物分类数据可视化(散点图)(python-nvd3)
  9. nvidia-smi卡顿详解
  10. TortoiseGit 假定未变更
  11. 四篇文章带你快速入门Jetpck(中)之ViewModel,DataBinding
  12. HIS系统多少钱?HIS怎么卖?
  13. 想要专升本你不得不看的全干货_吐血整理_专升本_计算机文化基础(五)
  14. 100集华为HCIE安全培训视频教材整理 | 双机热备(十一)
  15. 专家表示:土地管理法修订应和物权法精神统一
  16. bash 获取脚本存放路径_如何获取Bash脚本自己的路径
  17. NOIP201002接水问题 题解
  18. js逆向-喜马拉雅登陆参数分析
  19. U3D开发性能优化笔记(待增加版本.x)
  20. Appnium下载及安装

热门文章

  1. iOS 调整图片尺寸和大小的两个方法
  2. 解决Node.js中下包速度慢的问题
  3. Perl-LWP文档
  4. 以太网 STP临时环路的产生、STP BPDU的转发过程、根桥故障案例分析。
  5. “锟斤拷“的前世今生
  6. 用html2canvas长按保存h5页面,html2canvas - 微信中长按存图 - 将h5活动结果保存到本地...
  7. 计算机屏幕节省电,电脑显示器如何省电
  8. minigui学习笔记四
  9. 开放数据资产估值白皮书,首创“数据势能”估值模型【附下载链接】
  10. 创建微信订阅号全攻略