E2 硬件描述语言
你已经学习了数字电路的基础知识, 并已经在Logisim中设计了简单的处理器. 但你应该也多少能体会到, Logisim并不适合设计更复杂的电路. 事实上, 现代处理器都是通过硬件描述语言(HDL)来设计的. 接下来, 你将来学习如何通过HDL来设计数字电路.
需要说明的是, 虽然我们后面不再使用Logisim进行处理器设计, 但Logisim的使用经验应该已经帮助你建立了"电路思维": 数字电路设计只做两件事, “实例化”和"连线". 你接下来使用HDL来设计数字电路时, 头脑中也需要将HDL代码和Logisim的使用经验建立关联: 你只不过是换了一种方式来设计电路, 但本质上还是在进行"实例化"和"连线"的工作, 因此你应该能根据你编写的代码想象到电路的逻辑结构. 如果你发现自己无法想象, 那你很大概率会设计出质量较低的电路(频率低, 面积大, 功耗高), 甚至是功能不符合预期的电路.
通过线上网站学习Verilog语言
我们给大家推荐Verilog在线学习网站HDLBits, 它提供了丰富的习题, 并通过在线仿真判断你的代码是否正确.
如果你对自己的Verilog水平很有自信, 可以尝试完成以下习题:
- Sequential Logic
- Finite State Machines
- Lemmings 1
- Lemmings 2
- Lemmings 3
- Lemmings 4
- PS/2 packet parser
- PS/2 packet parser and datapath
- Serial receiver
- Serial receiver and datapath
- Serial receiver with parity checking
- Finite State Machines
如果你发现上述习题非常困难, 我们建议你从基础习题开始做起. 具体地, 你需要完成以下章节对应的习题:
- Getting Started - 建议完成, 以熟悉完成习题的流程
- Verilog Language - 建议不熟悉Verilog的同学完成
- Combinational Logic
- Basic Gates
- More logic gates
- Truth tables
- Simple circuit A
- Simple circuit B
- Thermostat
- 3-bit population count
- Even longer vectors
- Multiplexers
- 2-to-1 multiplexer
- 9-to-1 multiplexer
- 256-to-1 4-bits multiplexer
- Arithmetic Circuits
- Signed addition overflow
- 100-bits binary adder
- Basic Gates
- Sequential Logic
- Latches and Flip-Flops
- D flip-flip
- DFF with reset value
- DFF with asynchronous reset
- DFF with byte enable
- Mux and DFF
- Create circuit from truth table
- Detect an edge
- Detect both edges
- Edge capture register
- Dual-edge triggered flip-flop
- Counters
- Decade counter again
- Slow decade counter
- Counter 1000
- 12-hour clock
- Shift Registers
- Left/right rotator
- Left/right arithmetic shift by 1 or 8
- 5-bits LFSR
- Shift register
- 3-input LUT
- More Circuits - 全部完成
- Finite State Machines - 全部完成
- Latches and Flip-Flops
另外推荐一些数字电路学习资料
- 数字电路与计算机体系结构: 如果你在学习过程中需要了解一些数字电路的理论知识, 可以参考书中的1~5章
- Verilog入门视频
- Verilog语法简介
- Verilog高级数字系统设计技术与案例分析
- 中科大的Verilog OJ平台(需要注册并登录)
学习敏捷开发语言Chisel
对于一些复杂的数字电路, 采用Chisel进行设计将会更方便, 你在学习B阶段的过程中将会逐渐体会到这一点. 不过"一生一芯"并不限制你使用何种语言来设计处理器.
如果你打算学习Chisel语言, 我们还是建议你先掌握一些Verilog语言的基础, 然后建议你按照如下顺序学习:
- Chisel Bootcamp是一个很不错的Chisel教程, 还支持在线运行Chisel代码, 你可以一边编写Chisel代码一边学习. 其中
- 第1章是Scala入门
- 第2章是Chisel基础
- 第3章是Scala高级特性和Chisel的混合使用
- 第4章是FIRRTL后端相关内容 你需要完成前两章的学习, 同时我们强烈建议你学习第3章. 第4章和电路设计没有直接关系, 可以作为补充阅读材料.
- Chisel Users Guide比较系统地整理了chisel的特性, 也是不错的入门教程.
- Chisel小抄简明地列出了chisel语言的大部分用法.
- Digital Design with Chisel是一本结合数字逻辑设计和Chisel的参考书.
- Chisel API详细地列出了chisel库的所有API供参考.
如果你希望加入Chisel交流群, 可以微信扫描下方二维码联系助教申请进群:
