作为一个FPGA初级工程师,分享一下我的经验,FPGA作为一个将设计者的设计方法实现的工具。学习FPGA的最终目的,就是能够熟练应用并且在规定时间段内,设计出完美的时序逻辑电路。我以为应该从以下六方面着手: 一、数字电路等基础知识 FPGA是一个可编程逻辑器件。在学习FPGA之前,必须熟练掌握乃至精通数字电路的知识如:组合逻辑电路(译码器、编码器、逻辑门)、时序逻辑电路(RAM、ROM、触发器、计数器、FIFO、双口RAM等)、数制与编码(常用的几种编码格式尤其是独热码)、状态机、接口与、时序图(SPI、I2C、USB等)、波形图。有些知识可能在开发时你容易忽略如,亚稳态、开关噪声(SSN)。这些基础知识都要学习。 二、FPGA的内部结构 了解FPGA内部结构,有助于方案器件选型与解决方案设计。也是对FPGA器件使用的最基本要求。 三、FPGA的开发与调试 FPGA开发包含开发工具和开发语言的选择。开发FPGA的厂商很多,如 Intel Altera,Xilinx等。所以需要针对一门开发工具和仿真工具进行学习。开发工具包含设计工具和仿真工具(如modelsim、QuestaSim)。 然后再根据不同的开发工具选择不同的开发流程。具体工具入门可参考网上相关教程。开发语言可选Verilog HDL 与VHDL 其中一种进行学习,随后根据需要可以再学习另一门语言。语言学习时,需要注意编写规范。 FPGA的调试是比较复杂的一个过程,包含板级调试和算法调试。算法调试必须借助JTAG调试接口与相关工具(逻辑分析仪、示波器、MATLAB)进行。因此必须掌握JTAG、逻辑分析仪、示波器、MATLAB等相关工具使用。 四、FPGA的系统级设计 如果未来准备从事板级类开发,就要学习FPGA外围硬件原理图。涉及到电源设计(LDO、DC-DC)、接口电路(SPI、CAMISP、总线)、外设硬件(ADC、DAC、驱动器)、时钟模块等部分。有时为了需要可能会在FPGA内部集成SOC或者一个OS核,需要学习操作系统、内核硬核等知识。 五、FPGA设计难点 设计FPGA代码的难点在于时序,同时要在面积和功耗进行折中。重点学习时序对齐、跨时钟域信号同步问题、时序约束、功耗控制等。 六、FPGA应用领域 前面五点做到的话, FPGA就算入门了。但是针对不同的应用领域你还需要掌握其他知识,如图像处理、数字信号处理、通信方面等。掌握高级语言如C语言也是必须的,在前期算法设计时可以先用c进行实现,然后在转化到到硬件描述语言。 |
|
来自: 昵称11935121 > 《未命名》