数字电路数据选择器及其应用实验报告_处理器设计第一步:学习数字电路

5d87a3eddf2bdc1a452619ebc65b2c39.png

前提:

我们学习设计处理器需要的前提是:有程序设计的经验、对计算机系统有简要了解。程序设计经验指的是曾经使用编程语言编写过程序,如面向过程的C语言、面向对象的JAVA语言、函数式编程语言Haskell和脚本语言Python等都属于编程语言。而用于写网页的HTML和CSS等则属于标记语言,此类语言的使用经验不属于我们这里提的程序设计经验。对计算机系统有简要了解并非指熟读CSAPP之类的经典书籍,而是指了解计算机有哪些硬件、硬件是什么?哪些软件,软件是什么?诸如此类的问题能夸夸其谈,也算是对计算机系统有简要了解了。

我们所讲的前提不是必须的,没有这些基础也可以按照这系列文章了解或开始处理器设计。当然,如果想要成功设计自己的处理器,中间必然会补上这许多知识。

如果你想尽快上手,可以跳到下一节,什么是数字电路?为什么要学习数字电路?

如果你想复习或现在补充这些知识,推荐Yale N. Patt的经典书籍《计算机系统概论》:

计算机系统概论 (豆瓣)​book.douban.com
a18560d665948cc8966e709e5353b586.png

这本书采用Bottom-up的方法,前十章介绍计算机系统,后十章介绍C语言,是很好的计算机系统入门书籍。如果你想进阶,可以继续阅读上文提到的CSAPP:

深入理解计算机系统(原书第3版) (豆瓣)​book.douban.com
8983a3426d4a0424fd6b2410826e6a5b.png

这本书即有广度、又有深度,相信能指引你对计算机系统的探索。完成以上,让我们进入正题。(其实还有一个隐含前提,英语。)

什么是数字电路?为什么要学习数字电路?

数字电路指用数字信号完成对数字量进行算术运算和逻辑运算的电路。与数字电路相对应的是模拟电路,模拟电路指用来对模拟信号进行传输、变换、处理、放大、测量和显示等工作的电路。我们现在所使用的计算机系统是基于数字电路的,组成处理器的各个部件都是或复杂或简单的数字电路。即数字电路是处理器设计的基础,想要设计优秀的处理器,必须要有足够的数字电路知识。

实际上,数字电路和模拟电路是分不开的。但为了快速入手,我们这里忽略模拟电路的学习,提炼出更有用的数字电路的学习。在需要模拟电路的地方,我们可以采用理解、假设的方法,至于原理,可以在非学不可的时候进行补充。

数字电路理论:

如果想不求甚解,理解万岁,推荐阅读Yale N. Patt的《计算机系统概论》的前三章

计算机系统概论 (豆瓣)​book.douban.com
a18560d665948cc8966e709e5353b586.png

如果想扎扎实实,打破砂锅问到底,推荐在阅读上书前三章后,阅读康华光的《电子技术基础,数字部分,第六版》(豆瓣只有第五版的链接):

电子技术基础 数字部分 (豆瓣)​book.douban.com
4951c024b742a0b8304f6bbfe0d8f514.png

提供一些问题供大家检测学习情况:

  1. 数制指什么?什么是十进制?什么是二进制?他们之间可以转换吗?怎么转换?
  2. 逻辑代数指什么?基本逻辑运算有哪些?什么是逻辑函数?有哪些逻辑代数定律?有哪些逻辑代数规则?逻辑函数如何化简?
  3. 什么是组合逻辑电路?什么是时序逻辑电路?
  4. 什么是N(MOS)管?什么是P(MOS)管?
  5. 基本的组合逻辑电路,如编码器、译码器、数据选择器、比较器、加法器是怎么构成的?
  6. 基本的时序逻辑电路,如锁存器、触发器、寄存器、计数器、存储器是怎么构成的?
  7. 如果有一个数字电路,我该如何分析它的功能和时序?
  8. 给出一个部件的功能和时序,我该如何设计相应的数字电路?

数字电路实践:

受够了纸上谈兵?下面让我们来使用一些工具实践我们的想法吧!我们需要采用硬件描述语言(HDL)来描述我们的数字电路,并且采用集成开发环境(IDE)来生成我们描述的电路,即通过综合检查语法和一些错误,通过仿真观察时序,通过下载进行验证。目前市面上有许多可供我们实践的方案。这里推荐采用Verilog HDL + Xilinx Vivado IDE的方案。

Verilog HDL的学习可以参考链接网页,也可以参考市面上的许多Verilog教程书籍,还可以参考各种博客,网页。

Xilinx Vivado的学习自然要参考官方文档,不过为了快速,参考博客也是可以的。

以上可以看出,实践与理论多有不同。理论尚可埋头书本,实践必要依赖搜索。善用百度、谷歌等搜索引擎,能让你事半功倍。

照例,提供一些问题供大家检测学习情况:

  1. (非必要)除了Verilog和Xilinx Vivado外,还有哪些解决方案?它们都是谁开发,由谁维护?有什么关系?
  2. Verilog语言的语法有哪些?怎么使用Verilog描述我们在理论部分学习到的数字电路,包括组合逻辑和时序逻辑?Verilog和C等编程语言有何异同?
  3. Xilinx Vivado如何建立工程?如何添加文件并编写Verilog代码?如何综合Verilog描述的电路?如何仿真?如何生成可下载的比特流文件?
  4. (进阶)调研并购买FPGA,阅读说明文档,使用Vivado下载生成的比特流文件并观察是否表现期待时序?

后续:

数字电路的学习到此就告一段落了,接下来我们要学习的是组成原理,并完成简单处理器的单周期设计和多周期设计。

风雨携晴:处理器设计第二步:学习组成原理​zhuanlan.zhihu.com
be08d5fef581908e4ab3542db36a5a88.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值