|
发表于 2021-12-10 16:00:35
|
显示全部楼层
可以参考如下知识点与顺序:
电子工程师(Electronics Engineer)基础知识 -->数字IC设计专业知识 -->进阶知识、技能 --> 项目锻炼 的顺序学习。
A:电子工程师(Electronics Engineer)基础知识
1:数字电路基础(知道与或非,MUX等数字逻辑,卡诺图化简,组合逻辑、数字逻辑,DFF,FSM等),推荐《数字设计(原理与实践)》;
2:微机原理,汇编语言(推荐王克义老师的《微机原理(第2版)》);
3:C/C++语言(谭浩强老师的c语言书,掌握8成吧),数据结构;
4:Verilog语言(比如Michael, D.Cilette的《Verilog HDL高级数字设计》或夏宇闻老师的《Verilog数字系统设计教程》);
5:晶体管原理;(做数字IC/FPGA设计,只需大致了解)
B:数字IC设计专业知识
1:进数字IC前端/FPGA设计的专业知识学习,sky推荐这本书:《CMOS VLSI Design A Circuits and Systems Perspective》。自认为是数字IC设计入门“圣经”。基本电路结构,加减法器结构,组合逻辑,时序逻辑,跨时钟设计都有涉及。
2:在此还需要理解On-Chip-Bus的基本知识与一个数字系统的基本结构,建议学习理解:AMBA总线,含:APB/AHB/AXI。由于ARM在数字IP领域的领导低位,AMBA总线事实上已经成为数字IC的通用总线结构,必学。
3:现在可以开始做数字IP的设计了,涉及到使用相关EDA tool。
a):功能验证:对于初学者(在校生),能modelsim/questasim上做仿真测试,熟悉波形窗口;debug RTL code。再使用下windows版的nLint/Debussy就能完成数字IP功能设计验证了。
b):综合与实现:这部分首先(重点)要掌握STA原理,比如:cell delay在cell library里面是怎么标定的,tool是怎么计算delay的,setup/hold timing check的计算公式是什么;clk skew, clk uncertainty, create_clock, create_generateclock, set_ideal_network, set_input_delay, set_false_path, set_multi_cycle_path,OCV , .... 是什么意思,对STA有何作用。懂了STA原理,就可以用TCL语言写SDC(DC综合)/XDC(vivado综合实现)timing constraint了。目前XDC/SDC的语法已经基本统一了。
C:进阶知识、技能
1:算法方向:信号与系统,数字信号处理(DSP);
2:接口方向:UART/IIC/SPI/DDR等常用接口协议;如有余力,可以看看USB/PCIE/SATA/MIPI;
3:日常工作的OS平台:linux操作系统使用;vim(emac)使用;bash(csh);makefile;
4:脚本语言:Perl(Python)/TCL;
5:版本管理工具:SVN/Git;
D:项目锻炼
1:小数字IP的设计、验证(UART/SPI/Timer/AHB-SRAM);
2:小数字IP在FPGA上的实际运行;
3:HW/SW的协同运作(试试zynq FPGA上PS-PL的协同);
4:中大数字IP的设计、验证(AXI-DMA,图像ISP处理,CNN加速器等);
5:中大型FPGA项目开发(导师项目);
6:参与一个数字IC项目的设计、验证、FPGA emulation、流片(这个目前在校参与的机会很小);
sky在腾讯课堂有课程,《数字IC/数字电路/FPGA设计_从入门到精通_合集》: https://ke.qq.com/course/3133628?tuin=64ce5e2a ,主要讲解:可综合verilog语法和”B:数字IC设计专业知识“。
课程源自台湾大厂数字IC工程师培训课,添加10个数字IP设计实例+2个大课程设计(可以写入简历的),让有电子信息相关背景的同学能顺利上手数字IC/FPGA设计,完成小白到初出茅庐,再到高级工程师的蜕变。学习、理解课程内容后,数字IC/SOC/FPGA设计的笔试、面试问题,也能轻松应对。
|
|