FPGA学习指南
FPGA初学者学习手册

调试:使用示波器、逻辑分析仪等工具进行调试
FPGA开发工具
添加标题
ChipScope:Xilinx公司开发的FPGA调试工具,支持Vivado设计环境。
添加标题
ModelSim:Mentor公司开发的FPGA仿真工具,支持Verilog、VHDL等硬件描述语言。
添加标题
Lattice Diamond:Lattice公司开发的FPGA设计工具,支持Verilog、VHDL等硬件描述语言。
数字电路设计实例
实例一:LED灯控制电路
实例二:按键控制电路
实例三:时钟电路
实例四:温度传感器电路
实例五:UART通信电路
实例六:SPI通信电路
HDL代码编写与仿真
仿真工具:Modelsim、Questa等
HDL(硬件描述语言):Verilog、VHDL等
代码编写:遵循语法规则,定义模块、端口、信号等
FPGA行业竞争格局:国内外FPGA厂商竞争加剧,市场份额逐渐向头部企业集中
FPGA技术标准与规范:制定更完善的FPGA技术标准与规范,推动行业健康发展
感谢您的观看
汇报人:XXX
FPGA硬件描述语言
HDL简介
添加标题
添加标题
添加标题
添加标题
HDL的主要目的是为了简化硬件设计过程,提高设计效率
HDL(Hardware Description Language)是一种用于描述硬件电路的语言
HDL可以分为两大类:行为描述语言(如Verilog)和结构描述语言(如VHDL)
HDL在FPGA设计中起着至关重要的作用,是FPGA设计的基础和核心
优化寄存器使用:减少寄存器的使用,提高电路性能
优化逻辑设计:采用高效的逻辑设计方法,如流水线、并行处理等,提高电路性能
FPGA学习步骤

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等,以及各种外设的工作原理和接口电路设计。
如何入门FPGA

如何入门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简介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要学习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学习步骤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入门教程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初学者学习指南

Icarus Verilog:开源的仿真工具,支持Verilog硬件描述语言
GTKWave:开源的波形查看工具,支持多种硬件描述语言和仿真模型
FPGA应用领域与 案例分析
通信设备: FPGA在通信设 备中的应用, 如路由器、交
Xilinx Vivado Design Suite:Xilinx公司的FPGA设计工具,支持HDL、 Schematic等多种设计方式
Intel Quartus Prime:Intel公司的FPGA设计工具,支持HDL、 Schematic等多种设计方式
ModelSim:Mentor公司的仿真工具,支持多种硬件描述语言和仿真模 型
自然语言处理:FPGA用于加速自然 语言处理算法,提高处理速度和准 确性
添加标题
添加标题
添加标题
添加标题
图像处理:FPGA用于加速图像处理 算法,提高图像处理速度和质量
机器学习:FPGA用于加速机器学习 算法,提高训练速度和模型性能
感谢您的观看
汇报人:XXX
FPGA是一 种可编程 逻辑器件, 可以定制 硬件电路。
FPGA主要 由可编程 逻辑块 (CLB)、 输入输出 块(IOB) 和互连资 源组成。
CLB是 FPGA的核 心,可以 实现各种 逻辑功能。
IOB是 FPGA与外 部世界的 接口,可 以实现与 外部设备 的通信。
互连资源是 FPGA内部 的连接通道, 可以实现 CLB和IOB 之间的连接。
语法:包括模块定 义、端口定义、信 号定义、行为描述 等。
应用:广泛应用 于FPGA设计、 ASIC设计等领域。
HLS是一种用于FPGA设计的高级语言,它可以将C、C++等高级语言转换为FPGA硬件描述 语言。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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的应用领域并不广,还有很多人没听过这种东西,导致求职的不利。