## 硬禾学堂研前2个月实战培训内容
本培训为期2个月(8周),重点入门PCB设计 + FPGA应用 + Python编程 + 基于MicroPython的嵌入式系统,强调PCB设计的流程和规范、FPGA编程的数字逻辑设计思路、嵌入式系统的软硬件系统协同应用,也强调英文文档的阅读和项目总结、报告的能力。
### 培训前的准备工作:
- 学员摸底调查问卷:
* 已经具备的基础、掌握的技术、参加过的电赛活动
* 自己感兴趣或希望要加强的技术
* 研究生要做的研发课题
- 构建Wiki项目页面,学员每天在这个页面进行项目的状态更新,养成写文档的习惯、培养向外展示自己的能力
* 一个项目组一个页面
* 每个人一个页面,轮流进行发布
* 用于平日资料查询的归纳、总结、对项目阶段性进程的记录
- 学员分组、3个人1组合作负责1个项目的完成
* 基于技术能力的互补
* 基于每个学员将来论文研发的方向
### 课程大致进度:
### 第一阶段 - 基础实训:
- 第1周
- 7月4-5:资料查找及方案设计
- 7月6-8:使用KiCad6设计一款PCB
- 第2周
- 7月11-13:FPGA基础知识及编程
- 7月14-15:PCB焊接,并用FPGA编程驱动焊接好的PCB板
- 第3周
- 7月18-20:FPGA数字系统编程 - PWM、DDS、SPI、ADC
- 7月21-22:Python编程应用 - 科学计算、数据分析、可视化
- 第4周
- 7月25-29:基于MicroPython的嵌入式系统学习(Pico学习板)
### 第二阶段 - 综合设计
- 第5周
- 方案制定:查阅资料制定实施方案
- 第6周
- 系统设计:完成从电路设计到系统编程
- 第7周
- 系统调试:完成系统联调、性能测试
- 第8周
- 项目报告:完成项目总结报告、提交给导师
### 讲师
- 苏公雨(PCB、综合)
- Daniel(FPGA基础)
- 吴志军(FPGA系统)
- 齐伟(Python)
- 陈强(MicroPython嵌入式)
### 实训项目安排
项目1 - 驱动64个LED:
* 熟悉矩阵式驱动控制电路设计及控制方式
* 熟悉PCB的设计流程以及操作技巧
* 用于焊接训练用
* 用于FPGA编程控制
* 用于RP2040编程控制
{{drawio>2monthstrainingproject1.png}} 实战培训项目: 点亮64个LED
项目2 - 高速数据采集
* 技术指标分析及方案设计
* 模拟电路设计方法、要点及仿真(增益调整、频带控制)
* 电源设计 - 几种不同的变换方式比较以及在工程中的实际应用
* WiFi连接/物联网构成
* MCU + FPGA + ADC + 模拟信号链路 + Matlab的分工协调
* 上位机工具,尤其是开源工具的使用,比如Matlab、LabView、SerialPlot、QT编程等
{{drawio>2monthstrainingproject2.png}} 实战培训项目: 高速数据采集
### 课程大纲
^**时间**||**上午(9:30-11:30)**|**下午(2:00 - 5:00)**|
^ 第1周(PCB设计)|星期一 |开营及实战训练介绍 |学员查找资料(英文阅读),写综述报告(现场布置题目,基于Wiki系统,用Markdown的格式) |
^ |星期二 |电子产业链的介绍及电子产品的基本构成 |资料查找(英文阅读)、项目方案确定 - 第一个项目设计|
^ |星期三 |PCB设计及KiCad6介绍 |用KiCad6设计原理图|
^ |星期四 |用KiCad6进行PCB布局|自己完成项目的元器件布局|
^ |星期五 |用KiCad6进行PCB布线|自己完成项目的PCB布线,并提交Gerber文件去制板|
^第2周(FPGA基础)|星期一 |什么是FPGA、能做什么、如何设计 |小脚丫FPGA设计流程体验/WebIDE介绍 |
^ |星期二 |Verilog语法规范及在FPGA上实现组合逻辑|学员自己完成数码管显示操作|
^ |星期三 |在FPGA上实现时序逻辑|学员自己完成呼吸灯、流水灯、计数器等操作|
^ |星期四 |在FPGA上实现状态机|学员自己实现交通灯的功能|
^ |星期五 |焊接基本技巧 | 学员完成自绘电路板的焊接,并用小脚丫FPGA编程测试|
^第3周(FPGA系统及Python编程)|星期一 |PWM原理、设计及应用|学员设计PWM信号,并用硬件助手进行观察波形|
^ |星期二 |DDS生成任意波形|学员自己根据教程实现方波、三角波、正弦波,并使用硬件助手进行观察|
^ |星期三 |常用的串行总线及比较 - SPI、I2C、UART|UART总线的逻辑编程及应用、用硬件助手观察波形|
^ |星期四 |Python语言特点、应用及开发环境,Python的数据类型和控制流程|基于对象的编程|
^ |星期五 |Python在科学计算中的应用|Python在数据分析中的应用|
^ 第4周(嵌入式系统)|星期一|嵌入式系统基本概念以及RP2040的开发使用环境 |学员根据网上例程完成LED等的显示、蜂鸣器的音乐播放等|
^ |星期二|嵌入式系统中的线程和中断的使用|学员根据网上教程完成交通灯的控制|
^ |星期三|SPI总线驱动OLED显示 |学员根据网上资料实现OLED上的图形化编程|
^ |星期四|嵌入式系统中的数据采集及ADC的应用|学员在OLED上显示采集到的波形 - 音频|
^ |星期五|WiFi的连接及物联网应用|学员根据网上资料实现Web Server功能|
^第5周(方案制定) |星期一 |综合性项目的任务布置 - 功能、性能等要求,学员选择适合自己方向的项目,并分组(3人一组)|专家讲座 - 如何根据项目需求做好方案设计和开题报告?|
^ |星期二 |专家讲座 - 半导体产业前沿技术、产品、工具及产业链关系|学员自己查阅资料进行方案设计,导师答疑|
^ |星期三 |专家讲座 - 高效进行文献检索的方法及英文专业资源的介绍|学员自己查阅资料进行方案设计,导师答疑|
^ |星期四 |学员方案设计并准备开题报告|学员开题报告 - 随机抽样,导师点评|
^ |星期五 |学员完善自己的方案,导师答疑|学员完善自己的方案,导师抽检学员的方案设计|
^第6周(综合项目系统设计)|星期一 |电路原理图设计要点|学员根据自己的项目做原理图设计,导师答疑|
^ |星期二 |原理图点评及PCB布局要点|学员修正原理图,并做PCB布局,导师答疑|
^ |星期三 |PCB布局点评及PCB布线要点|学员调整布局,并做PCB布线,导师答疑|
^ |星期四 |PCB布线点评|学员完成PCB布线,提交制板,导师答疑|
^ |星期五 |专家讲座 - 提升研发效率的系列工具介绍及演示|专家讲座 - 项目管理及产业资源的有效利用|
^第7周(系统调试)|星期一 |学员进行项目设计 - 软件或FPGA编程/导师答疑|学员进行项目设计 - 软件或FPGA编程/导师答疑|
^ |星期二 |专家讲座 - 技术专利的申请技巧以及流程|学员进行项目设计 - 软件或FPGA编程/导师答疑|
^ |星期三 |专家讲座 - 营销的重要性及营销/沟通的方式和技巧|学员进行项目设计 - 软件或FPGA编程/导师答疑|
^ |星期四 |板卡焊接/系统调试,导师答疑|板卡焊接/系统调试,导师答疑|
^ |星期五 |板卡焊接/系统调试,导师答疑|板卡焊接/系统调试,导师答疑|
^第8周(综合测试、报告)|星期一 |专家讲座 - 学术论文撰写的基本要求、方法及技巧|学员系统测试/论文撰写,导师抽检及答疑|
^ |星期二 |学员系统测试/论文撰写,导师抽检及答疑|学员系统测试/论文撰写,导师抽检及答疑|
^ |星期三 |专家讲座 - 好的PPT的撰写以及演讲技巧|论文撰写/PPT撰写,导师抽检及答疑|
^ |星期四 |学员进行论文/PPT撰写,导师答疑|将摘要性论文发布在电子森林|
^ |星期五 |综合知识测试,项目总结|学员PPT报告答辩 - 随机、抽样|