数字电路基础实验
数字电路是"一生一芯"的前导课程, 我们列出了一些需要大家掌握的知识点, 大家不仅需要知道它们的概念, 还需要学会使用硬件描述语言来实现其中的电路模块.
- 信息的二进制编码
- 组合逻辑设计: 多路选择器, 译码器, 优先编码器, 加法器, 比较器
- 时序逻辑设计: 时钟, D触发器, 计数器, SRAM和DRAM, 有限状态机, 时序分析
数字电路学习资料
- 数字电路与计算机体系结构 1-5章节
- Verilog在线学习网站,推荐边看书边练手
- 中科大的Verilog OJ平台(需要注册并登录),推荐边看书边练手
- Verilog高级数字系统设计技术与案例分析
Chisel学习资料
建议按照如下顺序学习:
- Chisel Bootcamp是一个很不错的chisel教程, 还支持在线运行chisel代码, 你可以一边编写chisel代码一边学习. 其中
- 第1章是scala入门
- 第2章是chisel基础
- 第3章是scala高级特性和chisel的混合使用
- 第4章是FIRRTL后端相关内容 你需要完成前两章的学习, 同时我们强烈建议你学习第3章. 第4章和本课程没有直接关系, 可以作为课外阅读材料.
- Chisel Users Guide比较系统地整理了chisel的特性, 也是不错的入门教程.
- Chisel小抄简明地列出了chisel语言的大部分用法.
- Chisel API详细地列出了chisel库的所有API供参考.
然后尝试使用Chisel来完成上述数字电路实验, 你只需要把编译出的verilog代码接入verilator和NVBoard就可以了.
verilog学习资料
我们需要培养的是硬件思维,需要头脑中先有电路再下手写代码,verilog的本质是硬件描述语言而不是硬件设计语言,大家可以看verilog入门视频和语法简介进行入门.
vscode自动跳转插件
- 如果选择chisel编程,推荐metals插件
- 如果选择verilog编程,推荐digital ide插件
借助NVBoard完成数字电路实验
我们首先推荐南京大学的数字电路与计算机组成实验.
南京大学开展教学改革, 将"数字电路"与"计算机组成原理"两门课程进行融合, 其实验内容贯穿从数字电路基础到简单的处理器设计, 最近尝试加入程序运行时环境的相关内容, 与"一生一芯"的主线内容非常契合.
以下部分是必做题:
- 实验一 选择器
- 实验二 译码器和编码器
- 实验三 加法器与ALU
- 实验六 移位寄存器及桶形移位器
- 实验七 状态机及键盘输入
其他内容作为了解可以选做,在预学习部分不作规定。 有了NVBoard之后, 你就可以把它当作FPGA来使用, 用它来实现需要FPGA支持的实验内容.