FPGA学习指南
- 格式:docx
- 大小:23.20 KB
- 文档页数:3
FPGA学习步骤FPGA(Field Programmable Gate Array)是一种可编程的数字逻辑设备,具有强大的计算能力和灵活性。
学习FPGA涉及多个方面的知识和技能,以下是一个学习FPGA的步骤。
1.学习数字电路基础知识:学习数字逻辑、组合逻辑、时序逻辑、时钟域等基础知识。
了解逻辑门、多路选择器、编码器、解码器等基础组件的工作原理和常见应用。
2. 学习HDL语言:FPGA设计通常使用硬件描述语言(HDL)进行,如VHDL或Verilog。
学习HDL语言的基本语法、数据类型、运算符以及模块化设计方法。
掌握HDL语言的基本语法和常用语句,能够编写简单的模块。
同时,了解设计模块之间的连接和通信方式。
3. 熟悉开发工具:选择一款FPGA开发工具,如Xilinx ISE、Altera Quartus等,并熟悉其使用方法。
掌握工具的安装、项目的创建、仿真、烧写等基本操作。
了解工具中提供的IP核和库函数,以及如何使用这些资源来简化设计过程。
4.学习FPGA体系结构:了解FPGA的基本组成元件和工作原理,包括可编程逻辑单元(PLU)、片上存储器(BRAM)和片上时钟管理等。
熟悉FPGA的时序特性和时钟域设计方法,掌握时钟驱动设计的原则和技巧。
5.设计简单的数字逻辑电路:从简单的数字逻辑电路开始,如全加器、加法器、乘法器等。
通过HDL语言编写这些电路的设计和仿真测试,然后在FPGA上实现并验证电路功能。
通过不断实践,加深对数字逻辑电路设计和FPGA实现的理解。
6.学习FPGA高级应用:掌握FPGA高级应用的设计方法,如时序逻辑设计、状态机设计、数据通路设计等。
了解时分复用(TDM)、频分复用(FDM)、空分复用(SDM)等常用数据传输方式的原理。
学习高级FPGA设计技术,如流水线设计、多周期设计、并行设计等。
7.学习FPGA外设接口:了解FPGA的外设接口标准,如UART、SPI、I2C、PCIe等,以及各种外设的工作原理和接口电路设计。
如何入门FPGAFPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,可以按需编程、配置和重构。
学习和掌握FPGA技术对于想要从事数字电路设计、嵌入式系统开发、通信系统设计等领域的人来说非常有价值。
以下是如何入门FPGA的步骤和建议。
1.学习数字电路基础知识:在学习FPGA之前,了解数字电路的基础知识将非常有帮助。
理解基本的逻辑门(与门、或门、非门等)和组合逻辑电路、时序逻辑电路的概念和工作原理。
可以通过读书、参加相关的课程或在线学习平台来学习这些基础知识。
2. 了解FPGA的工作原理:FPGA是由大量的可编程逻辑单元(Look-up Tables,LUTs)和触发器(Flip-Flops,FFs)组成的。
学习FPGA的基本结构和原理,涉及到配置位文件(Configuration Bitstream)的生成和加载,以及时钟、信号输入输出等方面的知识。
4. 学习HDL编程语言:FPGA编程使用的主要是硬件描述语言(Hardware Description Language,HDL),如VHDL(VHSIC Hardware Description Language)和Verilog。
选择其中一种HDL语言进行学习,并通过编写一些简单的逻辑电路代码来熟悉语法和使用方式。
6.实践项目:通过动手实践一些简单的项目,如实现基本的逻辑电路或时序电路,来巩固所学的知识。
可以在官方的开发工具中找到一些示例项目,并根据自己的兴趣和学习目标来选择适合自己的项目。
7.参加培训或课程:如果有条件的话,参加FPGA相关的培训或课程可以帮助深入理解FPGA的概念和应用。
有些在线学习平台也提供了一些免费或付费的FPGA课程,可以根据自己的需要选择适合自己的课程。
8.参考资料和社区支持:在学习FPGA的过程中,参考相关的书籍、教程、文档和网上资料很重要。
此外,加入FPGA相关的技术论坛或社区,与其他的FPGA爱好者和专业人士交流和分享经验,可以帮助解决问题和扩展自己的知识。
fpga入门培训例程欢迎大家参加本次FPGA入门培训,本例程将介绍FPGA的基本知识和使用方法,并提供一些实例让大家进行实践和学习。
希望通过本次培训,能够帮助大家快速入门FPGA,并享受到这项技术带来的乐趣和创造力。
一、FPGA简介FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,具有灵活性高、可重构性好的特点。
通过在FPGA芯片内部配置可编程逻辑门和连接方式,可以实现各种数字电路的设计与实现。
相比其他可编程器件如微控制器和DSP,FPGA在高速数据处理、并行计算等方面具有优势。
二、FPGA入门准备在开始学习FPGA之前,我们需要准备一些必要的软硬件设备:1. 开发板:选择一块适合入门的FPGA开发板作为学习平台。
常见的开发板有Xilinx、Altera等品牌,在价格和功能上有所区别,初学者可以选择价格适中的开发板。
2. 开发环境:安装并配置开发环境,常见的开发环境有Xilinx ISE、Quartus II等软件。
根据所选开发板的不同,选择相应的开发环境。
3. 资源学习:查找合适的FPGA学习资源,如书籍、文档、网络教程等。
这些资源将帮助你理解FPGA的原理和开发流程。
三、FPGA入门步骤1. 学习FPGA基础知识:了解FPGA的结构、原理以及其与传统硬件的区别。
熟悉FPGA的编程语言,如VHDL或Verilog,并学习其语法和基本设计原则。
2. 设计简单电路:选择一个简单的电路设计进行学习和实践。
例如,使用FPGA实现一个加法器或计数器。
通过这些简单的电路设计,你可以熟悉FPGA的开发流程和工具的使用。
3. 深入学习:学习更复杂的FPGA设计,如状态机、数值处理等。
尝试设计并实现一个功能完善的电路,以锻炼你的设计能力和解决问题的能力。
4. 加载到FPGA开发板:将设计好的电路加载到FPGA开发板上进行实验。
通过实际测试,检验你的设计是否符合预期,并对其性能进行评估和优化。
如何学习FPGA要学习FPGA(现场可编程门阵列)的基本概念和使用技巧,以下是一些建议。
1.了解FPGA的基本原理FPGA是一种可编程的集成电路,它使用门和触发器组成的逻辑单元来实现设计的功能。
学习FPGA之前,你需要了解数字电路的基本概念和电子学的基础知识,如布尔代数、逻辑门、时序电路等。
2.学习硬件描述语言(HDL)硬件描述语言(如Verilog和VHDL)是FPGA编程的基础工具。
通过学习HDL,你可以描述和设计数字电路,在FPGA上实现相应的功能。
这些语言有自己的语法和结构,你需要熟悉它们的基本概念、数据类型、控制结构等。
3.使用开发工具和设计环境4.学习FPGA的架构和资源管理FPGA的架构和资源管理是设计和优化FPGA项目的关键。
学习FPGA 架构可以了解其内部的逻辑和资源分配情况,以便更好地规划和设计你的项目。
同时,了解资源管理的策略可以更好地利用FPGA的资源,提高性能和效率。
5.实践和开展项目通过实际项目的实践来加深对FPGA的理解。
选择一些简单的项目开始,逐步提高难度。
你可以在学习资源的支持下实现一些基本的功能,如计数器、时钟发生器等。
通过不断地实践,你将逐渐熟悉FPGA的编程和设计过程。
6.参加课程和培训参加正规的FPGA课程和培训可以加快学习的速度和提高技能。
许多学校和培训机构提供了针对FPGA的课程和实验班。
参加这些课程可以获得系统化的学习,同时还可以和其他学习者进行交流和讨论。
7.了解FPGA的应用领域FPGA在许多领域都有广泛的应用,如通信、图像处理、嵌入式系统等。
了解FPGA在不同领域的应用可以帮助你更好地了解其应用场景和需求。
你可以通过阅读相关的书籍、论文和实际案例来了解FPGA的应用。
8.加入社区和论坛加入FPGA的在线社区和论坛可以与其他FPGA爱好者和专业人士进行交流和讨论。
这些社区提供了丰富的学习资源、教程和项目案例,同时你还可以提问和解答问题,加深对FPGA的理解。
FPGA学习步骤FPGA(Field-Programmable Gate Array)是可编程逻辑器件的一种,它具有高度可编程性和灵活性,被广泛应用于数字电路设计和嵌入式系统开发。
学习FPGA可以使我们了解数字电路的原理和设计方法,并能够利用FPGA开发和优化各种应用。
下面是一个FPGA学习的步骤,帮助你逐步了解FPGA的原理和应用。
步骤1:掌握数字电路基础知识FPGA是用于设计数字电路的器件,因此首先需要掌握数字电路的基础知识。
学习数字电路的基本逻辑门、布尔代数和组合逻辑电路等概念,理解时序电路、存储器和状态机等高级概念。
步骤2:了解FPGA的原理和架构学习FPGA的原理和架构有助于理解FPGA是如何实现数字电路的。
学习FPGA的片上资源,如查找表、触发器和运算器等,以及FPGA的内部连接结构。
还可以探索FPGA的编程方式,包括寄存器传输级综合(RTL)和硬件描述语言(HDL)等。
步骤3:学习硬件描述语言(HDL)硬件描述语言是FPGA设计的基础,通常使用的HDL是Verilog和VHDL。
学习HDL的语法和基本结构,并掌握如何使用HDL描述数字电路。
可以通过书籍、在线教程和实践项目等方式学习HDL。
步骤4:使用FPGA开发工具步骤5:完成简单的FPGA设计项目开始进行一些简单的FPGA设计项目,如实现基本的逻辑门、组合逻辑电路和时序电路等。
通过这些项目,学会如何使用HDL描述和实现数字电路,如何利用FPGA的资源和工具进行设计和优化。
步骤6:进阶学习FPGA应用进一步学习FPGA的应用,例如数字信号处理(DSP)、图像处理、通信系统和嵌入式系统等。
根据自己的兴趣和需求选择相应的应用领域,并实践相关项目。
学习如何使用FPGA实现更复杂的功能和算法,并了解相应的设计方法和技术。
步骤7:参加竞赛或项目参加FPGA设计竞赛或实际项目有助于提升自己的FPGA设计能力。
通过参赛或项目,可以锻炼自己的团队合作能力和解决问题的能力,并将学到的知识应用到实际应用中。
FPGA入门教程FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,可以根据用户的需求进行配置,用于实现各种不同的逻辑电路。
相比于ASIC(Application-Specific Integrated Circuit), FPGA在设计周期、成本和灵活性方面具有明显的优势。
本教程将介绍FPGA的基本概念、设计流程和常见的编程方法。
一、FPGA的基本概念FPGA由可编程逻辑单元(Look-Up Tables, LUTs)、寄存器和多路复用器等基本元件组成。
这些元件通过一系列的可编程连线来连接,从而实现用户所需的电路功能。
用户可以通过编程来配置FPGA的连线和逻辑单元,从而实现不同的电路功能。
二、FPGA的设计流程1.需求分析:明确设计的目标和需求,确定需要实现的功能。
2.电路设计:将所需的功能转化为电路设计,包括逻辑门电路的设计和连线规划。
3.编程语言选择:选择一种适合的编程语言进行FPGA的编程。
常见的编程语言包括VHDL和Verilog。
4.编写代码:使用选定的编程语言编写FPGA的代码,其中代码包括包括逻辑电路和连线规划。
5.仿真验证:通过仿真软件对FPGA的代码进行验证,确保电路的正确性。
6.综合和布局布线:将FPGA的代码进行综合,将其转换为真正的逻辑电路。
然后进行布局布线,将逻辑电路映射到FPGA的可编程连线中。
8.测试和调试:对FPGA进行测试和调试,检查功能和性能是否符合设计需求。
三、FPGA的编程方法1.结构化编程:采用模块化设计方法,将FPGA的功能划分为若干个模块,每个模块负责实现特定的功能。
然后,将这些模块进行实例化和连接,构建成完整的电路。
2.状态机设计:利用状态机的概念来描述和实现电路的行为。
将电路分为若干个状态,并定义状态之间的转移条件。
通过寄存器和逻辑门来实现状态机的转移和控制逻辑。
3.时序分析:对FPGA的时序进行分析,在设计和布局布线过程中保证电路的正常工作。
fpga自学流程FPGA(现场可编程门阵列)是一种可编程逻辑器件,具有广泛的应用领域,包括计算机科学、电子工程、通信等。
如果你对FPGA感兴趣,并希望自学这一领域,下面是一些流程和步骤,帮助你开始学习。
1. 学习数字电子学基础知识:在开始学习FPGA之前,了解数字电子学的基础知识非常重要。
这包括数字电路、逻辑门、组合逻辑和时序逻辑等内容。
有了这些基础知识,你将更好地理解FPGA的工作原理和应用。
2. 学习HDL(硬件描述语言):HDL是用于描述FPGA设计的语言,常见的HDL包括VHDL和Verilog。
选择一种HDL语言,并系统地学习它。
掌握HDL将使你能够描述和设计FPGA电路,并能将其实现在硬件上。
3. 学习FPGA开发工具和平台:学习并熟悉FPGA开发工具和平台是必不可少的一步。
常用的FPGA开发工具包括Xilinx的Vivado和Altera的Quartus等。
这些工具提供了设计、仿真和综合FPGA电路所需的环境和工具。
4. 完成入门项目:在开始复杂的FPGA设计之前,先从一些入门级项目开始。
这些项目旨在帮助你熟悉FPGA开发流程和基本的电路设计。
一些常见的入门项目包括LED闪烁、数码管显示和按钮输入等。
5. 深入学习FPGA设计技术:一旦你完成了入门项目,就可以开始深入学习更高级的FPGA设计技术。
学习如时钟管理、状态机设计、并行处理和通信接口等高级概念。
还可以尝试设计更复杂的项目,如数字信号处理和图像处理等。
6. 参与在线社区和论坛:在学习过程中,参与在线FPGA社区和论坛可以帮助你与其他FPGA爱好者交流经验和获取实际指导。
在这些平台上,你可以提问问题、分享项目经验,并从其他人的经验中学习。
7. 实践和不断练习:FPGA是一门实践性很强的学科,通过实践和不断练习你的技能将得以提高。
尝试设计不同类型的项目,并挑战自己解决问题的能力。
通过不断实践和尝试,你会逐渐成为一位熟练的FPGA工程师。
FPGA新手指南FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,它的功能可以重新配置来实现不同的电路设计。
对于初学者来说,了解FPGA的基本知识和入门步骤是非常重要的。
下面是一个FPGA新手指南,帮助你入门这个领域。
1.了解FPGA的基本概念和原理首先,了解FPGA的基本概念和原理非常重要。
FPGA是一种可编程逻辑器件,它包含了一系列的可编程逻辑单元(CLB)和可编程互连资源(ICR)。
CLB可以实现逻辑功能,而ICR则用于连接CLB之间的信号传输。
2.学习FPGA的编程语言FPGA的设计通常是使用硬件描述语言(HDL)进行的。
最常用的HDL 语言是Verilog和VHDL。
你需要学习这些语言的基本语法和设计风格。
3.选择合适的开发工具在开始FPGA开发之前,你需要选择一款适合你的需求的开发工具。
Xilinx和Altera是最常见的FPGA供应商,它们都提供了强大的开发工具套件。
4.学习开发工具的使用5.实践设计简单的电路为了更好地理解FPGA的工作原理,你可以从一些简单的电路设计开始。
例如,你可以创建一个在FPGA上控制LED灯闪烁的电路。
这将帮助你了解FPGA的输入输出接口、时钟和状态机的概念等。
6.学习最佳实践和优化技巧一旦你熟悉了FPGA的基础知识和流程,你可以学习一些最佳实践和优化技巧,以提高设计的性能和效率。
例如,使用合适的时钟域划分、逻辑合成优化和资源利用等。
7.扩展你的知识一旦你掌握了基本的FPGA设计技能,你可以扩展你的知识,并学习更高级的主题,如FPGA与嵌入式系统的集成、高级存储器和外设接口等。
8.参与FPGA社区和论坛参与FPGA社区和论坛可以帮助你学习更多关于FPGA的知识,并与其他FPGA开发者交流经验和解决问题。
这些社区和论坛经常有许多有用的资源和教程。
总结:以上是一个简单的FPGA新手指南,帮助你入门这个领域。
学习FPGA需要时间和精力,但掌握这项技术将使你能够设计高性能和可定制的电路,具有无限的应用潜力。
初学者如何学好FPGA第一步:学习了解结构,FPGA到底是什么东西,芯片里面有什么,不要开头就拿个开发板照着别人的东西去编程。
无数开发板的程序写的很烂,我也做过一段时光的开发板设计,我觉得很大程度上,开发板在误人子弟。
不过原厂提供的正品开发板,代码很优秀的,可以借鉴。
惟独了解了FPGA 内部的结构才干明了为什么写和写C整体思路是不一样的。
其次步:把握FPGA设计的流程。
了解每一步在做什么,为什么要那么做。
无数人都是不就是那几步吗,有什么惊奇的?呵呵,我想起码有一半以上的人不知道synthesize和traslate的区分吧。
了解了FPGA /news/fpga 的结构和设计流程才有可能知道怎么去优化设计,提高速度,削减资源,不要暴躁,不要去在为挑选什么语言和挑选哪个公司的芯片上下功夫。
语言只是一个表达的方式,重要的是你的思维,没有一个好的指导思想,语言用得再好,不过是个懂语言的人。
第三步:开头学习代码了。
我建议要学代码的人都去或的网站上下原厂工程师的代码学习。
不要一开头就走入误区。
个人愚见,欢迎大家研究。
做fpga主要是要有的思想,作为初学者,往往对器件可能不是认识,那么应当对于数字电路的学问很认识吧,fpga中是由触发器和查找表以及互联线等基本结构组成的,其实在我们在代码里面能够看到的就是与非门以及触发器,不要把verilog和c语言等同起来,根本就是不同的东西,没有什么可比性,在写一句程序的时候应当想到出来的是一个什么样的电路,计数器挑选器三态门等等,理解时序,规律是一拍一拍的东西,在设计初期想的不是很清晰的时候可以画画时序图,这样思路会越发的清楚,还有就是很重要,不要写完程序就去往fpga中去加载,首先要仿真,尤其是对照较大型一点的程序,想像自己是在做asic,是没有二次机会的,所以一定要把仿真做好,还有无数新手对于语言的学习不知道选vhdl好还是verilog好,个人偏好第1页共2页。
0基础小白如何制定fpga学习计划在当今科技日新月异的时代,硬件编程越来越受到重视,FPGA(Field-Programmable Gate Array)作为一种可编程的逻辑芯片,在各种应用领域都有着广泛的应用。
而对于0基础小白而言,想要学习FPGA编程可能会感到困惑和迷茫。
因此,本文将为0基础小白制定一份FPGA学习计划,帮助他们逐步掌握FPGA编程的相关知识和技能。
第一阶段:入门基础1.了解FPGA的基本概念FPGA是一种可编程逻辑芯片,它可以通过编程来实现不同的逻辑功能。
小白需要了解FPGA的基本原理和结构,包括FPGA的硬件资源、布线和时序控制等方面的知识。
2.学习Verilog或VHDL语言Verilog和VHDL是FPGA编程的两种主流语言,小白可以选择其中一种语言进行学习。
通过学习Verilog或VHDL语言,理解逻辑门、组合逻辑、时序电路等基本概念,并能够编写简单的逻辑电路代码。
3.掌握常用的FPGA开发工具在学习FPGA编程过程中,开发工具是必不可少的。
小白可以选择常用的FPGA开发工具,如Quartus、Vivado等,并学习其基本操作和使用方法。
第二阶段:深入学习1.学习FPGA的高级应用除了基本的逻辑设计外,FPGA还可以应用在数字信号处理、通信系统、图像处理等领域。
小白可以学习FPGA的高级应用,了解FPGA在各个领域的具体应用场景和实现方法。
2.了解FPGA的硬件架构FPGA的硬件架构包括逻辑单元、存储单元、时序控制等部分,小白可以深入学习FPGA的硬件架构,理解FPGA内部的工作原理和结构。
3.实践项目通过实践项目,小白可以将理论知识与实际应用相结合,提高自己的编程能力。
可以选择一些简单的FPGA项目,如LED灯控制、数码管显示、信号发生器等,逐步提高自己的编程和调试能力。
第三阶段:提升水平1.参加FPGA竞赛或比赛参加FPGA竞赛或比赛是一个锻炼自己的好机会,通过参加比赛,小白可以将自己的FPGA编程能力与他人进行比拼,在竞赛中学习和提高。
目录我的FPGA学习步骤 (1)第一步了解FPGA (1)1.1 FPGA概念 (1)1.2 FPGA结构 (1)1.3 FPGA如何工作 (2)1.4 FPGA内部各模块功能 (2)1.5遗留问题 (4)第二步FPGA开发流程 (4)第三步学习Verilog语言 (6)第四步开发板学习 (6)我的FPGA学习步骤第一步了解FPGA1.1FPGA概念FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
1.2 FPGA结构FPGA的基本结构FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。
现场可编程门阵列(FPGA)是可编程器件,与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构。
1.3 FPGA如何工作FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了既可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。
FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能,FPGA允许无限次的编程。
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。
PS:笔者强烈建议诸位注册一个EETOP的账号,每天签到或者发贴、回贴就有积分了,里面的资源非常丰富,各种软件、资料都能找到。
一、入门首先要掌握HDL(HDL=verilog+VHDL)。
第一句话是:还没学数电的先学数电。
然后你可以选择verilog或者VHDL,有C语言基础的,建议选择VHDL。
因为verilog太像C了,很容易混淆,最后你会发现,你花了大量时间去区分这两种语言,而不是在学习如何使用它。
当然,你思维能转得过来,也可以选verilog,毕竟在国内verilog用得比较多。
接下来,首先找本实例抄代码。
抄代码的意义在于熟悉语法规则和编译器(这里的编译器是硅编译器又叫综合器,常用的编译器有:Quartus、ISE、Vivado、Design Compiler、Synopsys的VCS、iverilog、Lattice的Diamond、Microsemi/Actel的Libero、Synplify pro),然后再模仿着写,最后不看书也能写出来。
编译完代码,就打开RTL图,看一下综合出来是什么样的电路。
HDL是硬件描述语言,突出硬件这一特点,所以要用数电的思维去思考HDL,而不是用C语言或者其它高级语言,如果不能理解这句话的,可以看《什么是硬件以及什么是软件》。
在这一阶段,推荐的教材是《Verilog传奇》、《Verilog HDL高级数字设计》或者是《用于逻辑综合的VHDL》。
不看书也能写出个三段式状态机就可以进入下一阶段了。
此外,你手上必须准备Verilog或者VHDL的官方文档,《verilog_IEEE官方标准手册-2005_IEEE_P1364》、《IEEE Standard VHDL Language_2008》,以便遇到一些语法问题的时候能查一下。
二、独立完成中小规模的数字电路设计。
现在,你可以设计一些数字电路了,像交通灯、电子琴、DDS等等,推荐的教材是《Verilog HDL应用程序设计实例精讲》。
在这一阶段,你要做到的是:给你一个指标要求或者时序图,你能用HDL设计电路去实现它。
这里你需要一块开发板,可以选Altera的cyclone IV系列,或者Xilinx的Spantan 6。
还没掌握HDL之前千万不要买开发板,因为你买回来也没用。
这里你没必要每次编译通过就下载代码,咱们用modelsim仿真(此外还有QuestaSim、NC verilog、Diamond的Active-HDL、VCS、Debussy/Verdi等仿真工具),如果仿真都不能通过那就不用下载了,肯定不行的。
在这里先掌握简单的testbench就可以了。
推荐的教材是《WRITING TESTBENCHES Functional Verification of HDL Models》。
三、掌握设计方法和设计原则。
你可能发现你综合出来的电路尽管没错,但有很多警告。
这个时候,你得学会同步设计原则、优化电路,是速度优先还是面积优先,时钟树应该怎样设计,怎样同步两个异频时钟《Altera FPGA/CPLD 等等。
推荐的教材是《FPGA权威指南》、《IP核芯志-数字逻辑设计思想》、设计》第二版的基础篇和高级篇两本。
学会加快编译速度(增量式编译、LogicLock),静态时序分析(timequest),嵌入式逻辑分析仪(signaltap)就算是通关了。
如果有不懂的地方可以暂时跳过,因为这部分还需要足量的实践,才能有较深刻的理解。
四、学会提高开发效率。
因为Quartus和ISE的编辑器功能太弱,影响了开发效率。
所以建议使用Sublime text 编辑器中代码片段的功能,以减少重复性劳动。
Modelsim也是常用的仿真工具,学会TCL/TK 以编写适合自己的DO文件,使得仿真变得自动化,推荐的教材是《TCL/TK入门经典》。
你可能会手动备份代码,但是专业人士都是用版本控制器的,所以,为了提高工作效率,必须掌握GIT。
文件比较器Beyond Compare也是个比较常用的工具。
此外,你也可以使用System Verilog来替代testbench,这样效率会更高一些。
如果你是做IC验证的,就必须掌握System Verilog和验证方法学(UVM)。
推荐的教材是《Writing Testbenches using SystemVerilog》、《The UVM Primer》、《System Verilog1800-2012语法手册》。
掌握了TCL/TK之后,可以学习虚拟Jtag(ISE也有类似的工具)制作属于自己的调试工具,此外,有时间的话,最好再学个python。
脚本,意味着一劳永逸。
五、增强理论基础。
这个时候,你已经会使用FPGA了,但是还有很多事情做不了(比如,FIR滤波器、PID算法、OFDM等),因为理论没学好。
我大概地分几个方向供大家参考,后面跟的是要掌握的理论课。
1、信号处理——信号与系统、数字信号处理、数字图像处理、现代数字信号处理、盲信号处理、自适应滤波器原理、雷达信号处理2、接口应用——如:UART、SPI、IIC、USB、CAN、PCIE、Rapid IO、DDR、TCP/IP、SPI4.2(10G以太网接口)、SATA、光纤、DisplayPort3、无线通信——信号与系统、数字信号处理、通信原理、移动通信基础、随机过程、信息论与编码4、CPU设计——计算机组成原理、单片机、计算机体系结构、编译原理5、仪器仪表——模拟电子技术、高频电子线路、电子测量技术、智能仪器原理及应用6、控制系统——自动控制原理、现代控制理论、过程控制工程、模糊控制器理论与应用7、压缩、编码、加密——数论、抽象代数、现代编码技术、信息论与编码、数据压缩导论、应用密码学、音频信息处理技术、数字视频编码技术原理现在你发现,原来FPGA会涉及到那么多知识,你可以选一个感兴趣的方向,但是工作中很有可能用到其中几个方向的知识,所以理论还是学得越多越好。
如果你要更上一层,数学和英语是不可避免的。
六、学会使用MATLAB仿真。
设计FPGA算法的时候,多多少少都会用到MATLAB,比如CRC的系数矩阵、数字滤波器系数、各种表格和文本处理等。
此外,MATLAB还能用于调试HDL(用MATLAB 的计算结果跟用HDL算出来的一步步对照,可以知道哪里出问题)。
推荐的教材是《MATLAB宝典》和杜勇的《数字滤波器的MATLAB与FPGA实现》。
七、足量的实践。
这个时候你至少读过几遍芯片手册(官网有),然后可以针对自己的方向,做一定量的实践了(期间要保持良好的代码风格,增加元件例化语句的可读性,绘制流程图/时序图,撰写文档的习惯)。
比如:通信类的可以做调制解调算法,仪表类的可以做总线分析仪等等。
不过这些算法,在书上只是给了个公式、框图而已,跟实际的差距很大,你甚至会觉得书上的东西都很肤浅。
那么,你可以在知网、百度文库、EETOP论坛、opencores、ChinaAET、Q群共享、博客上面找些相关资料(校外的朋友可以在淘宝买个知网账号)。
其实,当你到了这个阶段,你已经达到了职业级水平,有空就多了解一些前沿技术,这将有助于你的职业规划。
在工作当中,或许你需要关注很多协议和行业标准,协议可以在EETOP上面找到,而标准(如:国家标准GB和GB/T,国际标准ISO)就推荐《标准网》和《标准分享网》。
八、图像处理。
(这部分只写给想学图像处理的朋友,也是由浅入深的路线)1、Photoshop。
花一、两周的时间学习PS,对图像处理有个大概的了解,知道各种图片格式、直方图、色相、通道、滤镜、拼接等基本概念,并能使用它。
这部分是0基础,目的让大家对图像处理有个感性的认识,而不是一上来就各种各样的公式推导。
推荐《Photoshop CS6完全自学教程》。
2、基于MATLAB或OpenCV的图像处理。
有C/C++基础的可以学习OpenCV,否则的话,建议学MATLAB。
这个阶段下,只要学会简单的调用函数即可,暂时不用深究实现的细节。
推荐《数字图像处理matlab版》、《学习OpenCV》。
3、图像处理的基础理论。
这部分的理论是需要高数、复变、线性代数、信号与系统、数字信号处理等基础,基础不好的话,建议先补补基础再来。
看不懂的理论也可以暂时先放下,或许学到后面就自然而然地开窍了。
推荐《数字图像处理》。
4、基于FPGA的图像处理。
把前面学到的理论运用到FPGA上面,如果这时你有前面第七个阶段的水平,你将轻松地独立完成图像算法设计(图像处理是离不开接口的,上面第五个阶段有讲)。
推荐《基于FPGA的嵌入式图像处理系统设计》、《基于FPGA的数字图像处理原理及应用》。
5、进一步钻研数学。
要在算法上更上一层,必然需要更多的数学,所以这里建议学习实分析、泛涵分析、小波分析等。
下面这两个阶段是给感兴趣的朋友介绍的。
九、数电的尽头是模电。
现在FPGA内部的事情是难不到你的,但是信号出了FPGA,你就没法控制了。
这个时候必须学好模电。
比如:电路分析、模拟电子技术、高频电子线路、PCB设计、EMC、SI、PI等等,能设计出一块带两片DDR3的FPGA开发板,就算通关了。
具体的学习路线可以参考本博客的《如何学习硬件设计——理论篇》和《如何学习硬件设计——实践篇》。
十、学无止境。
能到这个境界,说明你已经很厉害了,但是还有很多东西要学的,因为FPGA常常要跟CPU交互,也就是说你得经常跟软件工程师交流,所以也得懂点软件方面的知识。
比如ARM (Xilinx的ZYNQ和Altera的SOC会用到ARM的硬核,请参考本博客的《如何学习嵌入式软件》)、DSP、linux、安卓、上位机(QT、C#、JAVA)都可以学一下,反正学无止境的。
十一、其它问题。
a、为什么不推荐学习NIOS II和MicroBlaze等软核?1、性价比不高,一般的软核性能大概跟Cortex M3或M4差不多,用FPGA那么贵的东西去做一个性能一般的CPU,在工程上是非常不划算的。
不如另外加一块M3。
2、加上软核,可能会影响到其它的逻辑的功能。
这是在资源并不十分充足的情况下,再加上软核,导致布局布线变得相当困难。
3、软核不开源,出现Bug的时候,不容易调试。
4、工程上很少使用,极有可能派不上用场。
b、为什么不推荐0基础学习ZYNQ或SOC?1、容易让人有傍同心理。
傍同心理是指一个人通过渲染与自己有亲近关系的人的杰出,来掩盖和弥补自己在这方面的不足,从而获得心理上的平衡。
自己在学习很厉害的东西,然后也感觉自己很厉害,但这只是错觉而已。
2、入门应该学习尽量简单的东西,要么专心学习ARM,要么专心学习FPGA。
这样更容易有成就感,增强信心。
3、ZYNQ和SOC的应用领域并不广,还有很多人没听过这种东西,导致求职的不利。