“一生一芯”太理工作室一组寒假研学第二次学习路线
学习情况:经过上周理论学习为主,本周我们要重视实践部分了
学习目标:Verilog 实践练习和 LCTHW 数据结构实践
学习任务
数字设计
我们在这之前学习了 C 语言,makefile,markdown,或许有人还学了一部分 shell 脚本语言;但我们今天要开始学习一门全新与众不同的语言——RTL 硬件设计语言 Verilog
什么是 Verilog?
Verilog HDL(Hardware Description Language)是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。 现实生活中多用于专用集成电路(Application Specific Integrated Circuit,ASIC)和现场可编程门阵列(Field Programmabl Gate Array,FPGA)的实现。
TIP
看不懂定义? 其实很简单
1.为什么与众不同?
因为这就是硬件编程,我们需要更多地关注于电子元件和电路的设计,实现硬件设备的控制及其与软件的交互。相比之下,软件编程更多地涉及编写代码来构建应用程序,这些程序被设计为运行在硬件上。因此我们编程时关注的点完全不一样
2.为什么有这样一门语言?
还记得当时的宣讲会吗?随着集成电路规模越来越大,电路越来越复杂,传统的画图或连线的设计方法已不再适用;此时就诞生了这样一门硬件编程语言,利用代码生成庞杂的电路
3.他能做什么?
a.设计者可以通过编程来实现加法器、计数器、寄存器等基础电路,同时也能够设计出 CPU、存储器等复杂系统。这个过程中,设计者不仅能够提高自己的逻辑思维能力,还能学会如何优化电路设计,使之高效运行。
b.也可以去编写仿真测试。验证自己设计的电路没有致命问题,如果开始生产才出现问题,那就浪费了极大的金钱成本。
c.支持 FPGA(Field-Programmable Gate Array)和ASIC(Application-Specific Integrated Circuit)开发上。这两种技术都是现代电子设备中非常关键的部分,它们使得定制化的高性能电子系统设计成为可能。
d.多领域发展,包括但不限于嵌入式系统、人工智能、物联网等前沿技术领域。嵌入式系统中经常会用到 FPGA 来处理特定的高速或并行计算任务,而 Verilog 则是实现这一目的的关键工具。在人工智能领域,Verilog 可以用来设计高效的机器学习硬件加速器。物联网设备也常常需要低功耗且高性能的定制电路,Verilog 编程在这里同样发挥着重要作用。
你现在应该明白这一门语言的特殊性和重要性了 ^_^,如果还不明白的话,可以看一下下面这个视频:
30 分钟了解 verilog 特性:verilog 入门视频
内容
理论方面学习资料推荐:
Verilog HDL 数字设计与综合(群文件中有电子版)

本周学习章节:第七章行为级建模完成,(注意有关延迟的部分可以不看,比如 forever 循环,并行块,命名块等等)
学习行为级建模后,大家很有可能会认为行为级建模才是正确的,但要记住 verilog 的本质是硬件描述语言而不是硬件设计语言,因此你需要去了解行为级建模,数据流建模,结构化建模的区别,以及为什么我们不推荐使用行为级建模。
相关推荐学习资料:
html 文档学习:Verilog 实践部分文档学习(可以在这上面直接学习相关的语法——重实践)
推荐的自学课程:中科大的 Verilog OJ 平台(需要注册并登录),推荐边看书边练手。实际部分掌握不错的可以跳过该课程
TIP
推荐学习方法:看书作为理论学习,Verilog 实践文档作为实践学习,然后就可以上手中科大的 verilog 实践 OJ 平台了,全部知识学完之后,就可以开始拔高部分的数字设计 HDLbits OJ 做题网站学习了。(这两个平台有一些题目是重复的,做过一遍可以跳过)
学习作业
- 随时记录自己的学习记录,一定要如实记录,我们会不定期查看各位的学习情况。
- Learn C The Hard Way 中第 1-16 节完成,最后将章节练习任务放在命名为“C”的文件夹中。
TIP
这部分已经完成的同学可以选择拔高作业。
- Verilog 实践:Verilog 在线学习网站——veilog 学习实践,全英文(在这里推荐一个浏览器插件:沉浸式翻译,如果看不懂的话,就用这个插件配合学习吧!),完成到 2.4produres 结束,上传截图即可
TIP
进度快的同学继续向后做即可,做腻了可以选择拔高或选做的其他部分内容

最后将以上内容放入一个文件夹里,文件夹命名为 你的姓名-专业班级,然后压缩为一个压缩文件即可。
请严格按照上述要求发送到邮箱:
我相信这个寒假不少同学会充分利用这个黄金时间学习技术,那么以上的学习内容肯定是不够你学的,因此我准备了这个部分内容。
选做
计算机组成原理
地位
考研 408 数据结构 操作系统 计算机组成原理 计算机网络,计算机知识硬件部分精华科目,理工科学生必修课之一,无论考研还是工作都占据极其重要的地位,同时更是我们后续实践的基础科目。
TIP
为什么有这么重要的地位呢?
那就要知道计组具体学的内容了,以下是计组完整学习的思维导图,大家自取了解: 链接:https://pan.baidu.com/s/1YDMg_OsAa2Kn5wpj7k99JA?pwd=9999 提取码:9999
看完之后,你应该就明白为何如此重要了——这不就是我们设计芯片的基础蓝图吗? 第六七章的 IO 和总线部分难度大,内容多,大家在后续才会接触,因此我们寒假只需要学习完第五章处理器即可。
内容
以下视频的 CH3-CH4 两章内容学习,记得随手 typora 记录笔记和继续自己的学习记录哦!
https://www.bilibili.com/video/BV1Ba4y1V7GD/?vd_source=4ec31615294fd2510d5fd40f0183648f
计组部分学习会大量涉及你学过的数电知识,如果当时没有好好学,那就要比较吃力了。
TIP
注意!该课程是使用教材为 MIPS 指令集版本,我们之后设计芯片,使用的是 RISCV 指令集版本,但是考虑到该课程体系完善,效果好,指令集思想是相通的,因此我们仍然选择了该视频课程,配套书籍为黑皮书:计算计组成与设计:硬件软件接口,图示如下(群内有电子版资料),想搭配书籍的同学可以参考——不推荐纯看书,黑皮书阅读难度大,知识点深而且广,很难理清知识点。
因此,也可以选择你觉得好的计组课程或者硬啃黑皮书,学到知识就好!

TIP
学完计组我能干什么?
1.为之后的数字设计,硬件设计,芯片设计等等相关方面打基础,缺少计组知识你将寸步难行
2.对考研有很大的帮助
3.硬件相关学校课程的修读难度会很低
任务
交回相关 markdown 笔记(我们推荐大家进行总结归纳和心得记录,这真的很有帮助),以此说明你完成了此部分的学习。
拔高
数字设计
数字设计重要性不言而喻,因此拔高部分你可以选择继续学习数字设计,学的越多越好,书籍内容一直学到行为级建模结束,过程中进行实践,学习;Verilog 在线学习网站中一二三四章都非常推荐学习,所以加油吧!
TIP
那我计组部分的实践内容嘞?
计组的学习内容就决定,它学到的很多是思想,是整体的架构,这就意味计组实践内容需要你技术栈更全更深,因此计组实践内容还要向后放,简单部分实践在之后会有一部分,处理器设计方面内容则需要寒假开学之后,视个人进度逐步进行实践。
Learn C the hard way
LCTHW:https://wizardforcel.gitbooks.io/lcthw/content/preface.html 其中的 26、37-41、43、45-47 不需要学习,性价比比较低,不推荐学习,其他内容我们都很推荐学习,想要技术很强的话,都可以试着去学习,并在其中锻炼自己 gdb 等 debug 工具使用和相关能力思维。
其中有关“一生一芯”的必须完成部分如下:

一生一芯课程 PA
PA 是我们后续学习中非常重要的一部分内容,目前我们已经把 PA0 相关的基础知识进行了补全,大家可以去尝试 PA0 的相关内容学习,不过想开 PA1 还需要一些时间,PA1 的内容需要数据结构,Lchtw 都学到不错的地步并具备一定的编程思想,然后就需要你的时间和精力花费了。
TIP
说这么多,其实就是告诉大家 PA1 部分的学习内容难度很高,可能会花费不少时间,同时这也是后续预学习答辩的重要内容之一,所以如果你想挑战自己的能力极限,那现在去做 PA1 也是可以的,加油!
以上就是拔高作业的全部内容,说实话如果你能在这个寒假把以上内容全做完,意味着——》寒假结束后一个月内即可参加预学习答辩并顺利通过,正式进入“一生一芯”项目,后续继续保持学习,那么你的技术将比我更强!暑假你完全可以凭借自己的实力进入线下基地。但是也请大家劳逸结合,考虑自己的能力和精力,合理学习,不要为了求快,去燃烧自己的热情与生命,这样是非常得不偿失的,
TIP
难度这么高几乎无法完成,那拔高作业布置这么多是为什么?
- 想让大家明白自己要学的内容还有很多。
- 让大家可以自由选择拔高的学习内容,以上三项,皆可自由选择学习,不存在非常强烈的关联先后关系。
- 并没有要求大家拔高作业全部完成,而是根据自己情况,可以完成多少就完成多少。