FPGA学习心得
fpga心得体会
fpga心得体会FPGA(Field Programmable Gate Array)是一种可编程逻辑设备,它具有强大的逻辑处理能力和灵活的可编程性,使得它在硬件设计领域得到广泛应用。
我在学习和使用FPGA的过程中收获了很多,下面就来分享一些我对FPGA的心得体会。
首先,FPGA具有极高的逻辑密度和计算性能,能够满足复杂的硬件设计需求。
相比于传统的固定功能芯片,FPGA具备了逻辑电路可编程的特性,使得它能够灵活地适应多种应用场景。
在我的项目中,我需要设计一个支持多种协议通信的嵌入式系统,而FPGA正是满足了这个需求。
通过在FPGA上编写逻辑代码,我成功实现了多个协议的处理和控制,大大提高了系统的灵活性和扩展性。
其次,FPGA具备了高度并行处理的能力,可以同时运行多个任务。
相比于单纯的软件实现,FPGA可以通过在不同的逻辑区域实现不同的功能模块,从而实现并行处理。
这对于需要高性能计算的应用非常有优势,如图像处理、音视频编码等。
在我的项目中,我利用了FPGA的并行处理能力,成功实现了一个高性能的图像处理算法,大大提高了系统的处理速度和效率。
第三,FPGA具备了较高的灵活性和可重构性,可以随时对逻辑进行修改和优化。
在硬件设计过程中,往往需要多次迭代和优化,而FPGA的可重构性使得这一过程变得更加高效。
通过修改逻辑代码和重新编程,我可以快速对设计进行调整和优化,并实时验证效果,减少了开发周期和成本。
另外,FPGA支持硬件和软件的协同设计,可以实现更灵活的系统架构。
在我的项目中,我采用了硬件和软件的结合,通过在FPGA上实现一些关键模块并通过软件控制,使系统具备了更高的通用性和扩展性。
FPGA还可以与其他处理器、外设等硬件组件进行连接,形成完整的系统。
这种协同设计方式使得我能够更好地解决具体的问题,并满足系统的要求。
最后,我发现学习和使用FPGA需要具备一定的硬件和软件知识,例如数字逻辑设计、Verilog/VHDL语言等。
fpga课程心得体会
fpga课程心得体会在进行FPGA课程学习的过程中,我不仅仅是学到了课堂上的知识,更重要的是获得了宝贵的心得体会。
通过这门课程,我深刻认识到了FPGA技术的重要性和应用广泛性,同时也明白了学习这门课程的困难和挑战。
在下面的文章中,我将分享我的FPGA课程心得体会。
一、FPGA技术的重要性FPGA是可编程逻辑器件,它具有灵活性、可重构性和高度并行性的特点。
在当今数字电子领域,FPGA被广泛应用于各种领域,如通信、医疗、军事等。
学习FPGA课程让我深刻认识到了FPGA技术对于解决实际问题的重要性。
二、FPGA课程的学习过程在学习FPGA课程的过程中,我首先学习了FPGA的基础知识,包括FPGA器件、FPGA实现原理以及FPGA的编程语言。
这些基础知识为后续的学习打下了坚实的基础。
接着,我学习了FPGA的开发工具,掌握了Vivado、Quartus等软件的使用方法。
这些开发工具提供了强大的设计和仿真功能,使得我们能够更加方便地进行FPGA设计和实现。
在学习过程中,我还进行了一系列的实验和项目实践。
通过这些实践,我深入理解了FPGA的原理和设计方法。
我在实验中遇到了很多问题和挑战,但通过努力和团队合作,我逐渐解决了这些问题,并获得了实际操作的经验。
三、挑战与收获学习FPGA课程并不是一件容易的事情,它需要我们具备扎实的电子学、数字逻辑和计算机编程知识。
在学习过程中,我遇到了许多困难和挑战,但正是这些困难和挑战让我得到了更多的成长和收获。
首先,FPGA课程对于电子学和数字逻辑的要求较高,需要我们具备良好的数学和逻辑思维能力。
在学习过程中,我不断加强了自己的学习方法和思维能力,提高了自己的解决问题的能力。
其次,FPGA课程还需要我们具备一定的计算机编程能力,熟练掌握Verilog或VHDL等编程语言。
在学习过程中,我通过编写代码、调试程序来实现各种功能,不断提高了自己的编程能力。
最后,FPGA课程的学习还需要我们具备团队合作和沟通能力。
FPGA学习总结
FPGA学习总结FPGA(现场可编程门阵列)是一种数字电路开发和实现的工具,它提供了一种灵活的方式来设计和实现各种数字电路。
在我的FPGA学习过程中,我经历了以下几个方面的学习和实践:1.FPGA基础知识:在学习FPGA之前,我首先了解了FPGA的基本概念和原理。
我学习了FPGA的架构、时序和时钟设计、数字电路设计和综合等方面的知识。
这些基础知识为我深入学习和实践FPGA打下了坚实的基础。
2. FPGA开发工具的使用:我使用了常见的FPGA开发工具,如Vivado和Quartus。
这些工具提供了一种直观而强大的方式来设计和实现FPGA。
我学习了如何创建项目、添加模块、定义信号、综合和布局布线等操作。
通过不断的实践和尝试,我逐渐掌握了这些工具的使用。
3. Verilog和VHDL的学习:Verilog和VHDL是FPGA开发中常用的硬件描述语言。
通过学习这两种语言,我能够使用它们来描述和设计各种数字电路。
我掌握了如何使用这些语言来描述寄存器、组合逻辑、状态机等部件,并能够将它们综合成FPGA可实现的电路。
4.FPGA的应用实践:在学习了FPGA的基础知识和工具使用之后,我开始进行一些实际的应用实践。
我使用FPGA设计和实现了一些简单的电路,如计数器、加法器、乘法器等。
通过实践,我加深了对FPGA的理解,并增强了自己的设计和调试能力。
5.FPGA高级特性的学习:除了基础知识和工具使用外,我还学习了一些FPGA的高级特性,如时序分析、时钟域划分、并行数据传输和高速串行数据传输等。
这些特性在设计和实现一些高性能和复杂的电路时非常重要,我通过学习和实践,学会了如何正确地使用这些特性。
总结起来,FPGA学习是一个既有理论基础又注重实践和应用的过程。
通过学习FPGA,我更好地理解了数字电路的原理和设计,增强了自己的工程能力。
我学会了使用FPGA开发工具,掌握了Verilog和VHDL等硬件描述语言,实践了FPGA的设计和实现,并学习了一些高级特性。
fpga课程心得体会
fpga课程心得体会导言FPGA(Field-Programmable Gate Array,现场可编程门阵列)是一种重要的数字电路设计和嵌入式系统开发工具,它具有灵活性高、性能好、可重新配置等特点,被广泛应用于各种领域。
在参加FPGA课程的学习过程中,我收获了许多知识和经验,并对FPGA的应用和发展有了更深入的了解。
在本文中,我将分享我在FPGA课程中的心得体会,并探讨FPGA的优势与前景。
一、FPGA的基本原理和特点FPGA,作为一种现场可编程器件,具有以下几个基本特点:1. 灵活性高:FPGA可以根据需求进行现场编程,实现不同的逻辑功能。
通过编程语言,我们可以控制FPGA中的门阵列、开关和触发器,从而实现我们所需要的电路功能。
2. 性能优良:由于FPGA的硬件实现,其性能通常优于软件实现。
通过FPGA的并行计算能力,我们可以有效地提高电路的运行速度和效率。
3. 可重新配置性:与ASIC(专用集成电路)相比,FPGA具有可重用、可重构的特点。
在设计中,我们可以多次重复使用FPGA,避免了重复设计的时间和成本。
4. 开发周期短:由于FPGA的可编程性,我们可以快速地进行电路设计和验证。
这大大缩短了开发周期,提高了产品的上市速度。
通过学习FPGA的基本原理和特点,我深刻认识到了它在数字电路设计和嵌入式系统开发中的重要性和价值。
二、FPGA在数字电路设计中的应用1. 逻辑电路设计:FPGA可以实现各种逻辑门和组合逻辑电路的设计。
通过使用FPGA进行逻辑电路设计,我们可以最大程度地提高电路的运算速度和准确性。
2. 时序电路设计:FPGA不仅可以实现逻辑电路的设计,还可以用于时序电路的设计。
通过使用FPGA的触发器和计数器等功能模块,我们可以方便地进行时序电路的建模和验证。
3. 通信电路设计:FPGA在通信电路设计中也有广泛的应用。
例如,我们可以使用FPGA实现数字信号处理(DSP)算法,用于音频和视频信号的处理和传输。
FPGA学习心得体会
篇一:fpga学习心得大报告《fpga技术基础》学习报告--课程内容学习心得姓名:学号:年级专业:指导教师:瞿麟 201010401128 自动化101薛小军摘要从开始学fpga到现在粗略算来的话,已经有3个多月了,就目前而言,我并不确定自己算不算高手们所说的入门了,fpga学习总结。
但是不管现在的水平如何,现在就总结一下自己学习它的感受或一些认识吧。
关键词fpga de2板 quartusii软件 verilog语言引言fpga是什么?fpga现状?怎样学习fpga?fpga是现场可编程门阵列的简称,fpga的应用领域最初为通信领域,但目前,随着信息产业和微电子技术的发展,可编程逻辑嵌入式系统设计技术已经成为信息产业最热门的技术之一,应用范围遍及航空航天、医疗、通讯、网络通讯、安防、广播、汽车电子、工业、消费类市场、测量测试等多个热门领域。
并随着工艺的进步和技术的发展,向更多、更广泛的应用领域扩展。
越来越多的设计也开始以asic转向fpga, fpga正以各种电子产品的形式进入了我们日常生活的各个角落。
正文(1)掌握fpga的编程语言在学习一门技术之前我们往往从它的编程语言开始,如同学习单片机一样,我们从c语言开始入门,当掌握了c语言之后,开发单片机应用程序也就不是什么难事了。
学习fpga也是如此,fpga的编程语言有两种:vhdl和verilog,这两种语言都适合用于fpga的编程。
(2)fpga实验尤为重要除了学习编程语言以外,更重要的是实践,将自己设计的程序能够在真正的fpga里运行起来,这时我们需要选一块板子进行实验,我们选择使用de2板才进行试验。
初识de2开发板de2的资源de2的资源非常丰富,包括1. 核心的fpga芯片-cyclone ii 2c35 f672c6,从名称可以看出,它包含有35千个le,在altera的芯片系列中,不算最多,但也绝对够用。
altera下载控制芯片- epcs16以及usb-blaste对jtag的支持。
学习FPGA的几点心得五篇
学习FPGA的几点心得五篇第一篇:学习FPGA的几点心得1、首先要明白的是软件设计和逻辑设计的不同,并理解什么是硬件意识。
软件代码的执行是一个顺序的过程,编绎以后的机器码放在存储器里,等着CPU一条一条的取指并执行;因此软件设计中经常会带有顺序处理的思维。
而逻辑设计则不同,我们设计的是数字电路,它是由很多很多的与非门及D触发器构成的,上电之后所有与非门和D触发器都同时工作,不会因为A触发器的代码描述在B触发器之前A触发器就是先工作,事实上,RTL级代码的代码先后顺序在综合成网表文件后这种顺序就消失了,取代的是基本逻辑电路之间的互联关系描述;因此逻辑设计需要的是一种并发的思维,我们也需要用并发的思维去考虑电路的设计。
当然,我们设计的电路功能一般都有先后顺序的关系,如果这种顺序不能通过代码的先后顺序来实现,那么要怎么完成这一功能呢?在逻辑设计中,我们所说的先后顺序都是基于时间轴来实现:它的承载体就是时序逻辑,也就是那些触发器。
2、其次就是要熟悉基本电路的设计。
基本的电路不是很多,也就是D触发器、计数器、移位寄存器、状态机、多路选择器、译码器等几种,所有复杂的电路都可由这些基本的电路构成。
高手水平高的体现并不是他能写出一些很奇特的电路,相反,水平高是体现在他们总能将复杂的电路用这些很朴素的基本电路去描述。
甚至,你会发现他们的代码基本上是由if...else、case这些语句构成的,朴素的让你觉得奇怪。
初学者在入门的时候,对于基本电路的设计应该固定化、标准化,每种电路该用什么样的代码描述,应该要固定、统一,尽量少一些花哨的东西。
说来这里我举个例子。
以前有几个朋友因为仿真有问题请我帮忙找问题。
他们的代码写的很乱,出现了很多种稀奇古怪的电路,一看头都大了,只好建议他们按照标准的电路重新写下代码。
结果过了半天,他们就和我说问题不见了。
所以,高手们喜欢用简单的代码是有道理的,电路的标准化和规范化可以减少许多稀奇古怪的问题,问题少了他们也就能在别人加班的时候回家多睡回觉,呵呵。
fpga课程设计心得体会
fpga课程设计心得体会近年来,随着科技的不断进步和发展,FPGA(Field-Programmable Gate Array)技术在各个领域中得到了广泛的应用。
作为一门专业课程,FPGA课程设计向我们展示了FPGA技术的基本原理、应用场景以及设计方法。
在这门课程的学习中,我获得了许多宝贵的知识和经验,下面将结合个人心得体会进行总结。
1. 了解基本原理在FPGA课程设计中,我们首先需要了解FPGA的基本原理。
FPGA是一种可编程逻辑器件,通过可编程的门电路和可编程的内部连线,可以实现不同的逻辑功能。
通过学习FPGA的内部结构、编程语言以及设计流程,我对FPGA的工作机制有了更深入的理解。
这对于后续的设计工作非常重要,因为只有了解了基本原理,才能够更好地应用和设计。
2. 掌握设计工具FPGA课程设计中,我们使用了一些重要的设计工具,如Vivado、Quartus等。
这些工具提供了一个集成的设计环境,可以帮助我们完成设计、仿真以及综合等工作。
通过学习和使用这些工具,我能够更加高效地进行FPGA设计。
同时,在实际的操作中,我也发现不同的工具有其特点和适用场景,因此正确选择和掌握设计工具对于设计工作的顺利进行至关重要。
3. 实践项目经验FPGA课程设计充分注重实践,为我们提供了多个设计项目的机会。
通过这些项目,我能够将理论知识应用到实际中,加深对FPGA设计过程的理解。
例如,在一个数字电路的设计项目中,我需要将一个简单的逻辑电路转化为FPGA可编程的电路。
在这个过程中,我不仅学会了如何进行电路设计和仿真,还学会了如何调试和优化电路性能。
4. 学会团队合作在FPGA课程设计中,我们通常需要与同学一起完成设计项目。
这让我学会了团队合作的重要性。
团队合作不仅能够充分发挥每个成员的优势,提高工作效率,还可以相互学习和交流经验。
通过与团队成员的密切合作,我不仅学到了其他同学的设计思路和方法,也发现了自己在某些方面的不足和提升空间。
学FPGA感想(五篇材料)
学FPGA感想(五篇材料)第一篇:学FPGA感想回想起自己学FPGA,已经有一段时间了,从开始的茫然,到后来的疯狂看书,调电路,练习各种FPGA实例,到最后能独立完成项目,一路走来,感受颇多,拿出来和大家分享,顺便介绍下自己的一点经验所得,希望对初学者有所帮助。
废话不说了,下面进入正题,学习FPGA我主要经历了这么几个阶段:①、VHDL和Verilog语言的学习,熟悉VHDL和Verilog语言的各种语法。
②、FPGA的学习,熟悉QuartusII软件的各种功能,各种逻辑算法设计,接口模块(RS232,LCD,VGA,SPI,I2c,AD,DA等)的设计,时序分析,硬件优化等,大家可以先从简单的做起,复杂的电路一定要把芯片资料读懂,上面的时序分析一定要看明白,然后才能设计正确驱动。
③、NiosII的学习,熟悉NiosII的开发流程,熟悉开发软件(SOPC,NiosII IDE),了解NiosII的基本结构,编写NiosII C语言程序,调试板子各模块功能。
NiosII软件调试要很费时间,大家要耐的住厌烦,如果对软件不熟悉会出现很多问题,自己遇到问题和解决问题的过程,也就是大家进步的过程,大家可以把NiosII内嵌的各种功能调试一遍,最后再移植C8051、uCOSII操作系统和uCLinux操作系统,估计你已经很熟悉了NiosII了。
先来说说第一个阶段,现在主要的硬件描述语言有VHDL,Verilog两种,现在Verilog用的人越来越多,因为容易上手(与C语言语法比较类似),也更灵活,现在的IC设计基本都用Verilog。
但是VHDL也有自己的优点,VHDL语言设计的程序很长,因为他本身语言比较严谨,在欧美一些国家还是比较喜欢VHDL语言。
所以我希望大家对两种语言应该都比较熟悉。
我们的开发板上都尽量把这两种语言进行完善。
其中关于VHDL语言和Verilog HDL语言资料书很多,如果还没有入门的话,可以买一本相对通俗易懂和简单的书来看,书籍我们在这就不推荐了,因为市面上关于这两种语言的书很多。
fpga课程设计心得体会
fpga课程设计心得体会作为计算机专业学生,学习FPGA是我们不可避免的一个课程,因为FPGA广泛应用于人工智能、物联网、数字信号处理、嵌入式系统等领域。
在学习FPGA的过程中,我有了一些心得体会,希望能够分享给大家。
一、学会思维和设计的转换FPGA设计需要我们将问题抽象为电路,并根据电路搭建原理完成电路设计。
因此在学习FPGA的过程中,我们需要把思考问题的角度从计算机编程的思路转换为电路设计的思路。
例如,在计算机编程中,求一个数组中的最大值我们可以使用循环或者递归的方式实现,在FPGA的电路设计中,则需要把该问题抽象为选择器的电路,再根据选择器的工作原理设计出电路实现该功能。
因此,学会思维和设计的转换是学习FPGA的第一步,只有以正确的思路去思考问题,才能够高效的完成电路的设计。
二、重视底层知识和基础在学习FPGA的过程中,我们需要重视底层知识和基础,因为FPGA是面向底层硬件的开发,需要理解FPGA芯片的内部结构和原理,并掌握数字电路原理、布尔代数等相关基础知识。
例如,在学习FPGA的高级应用时,例如图像处理、音频处理等,需要掌握数字信号处理的知识,才能够更好的完成对信号的采样、滤波、处理等操作。
因此,重视底层知识和基础是学习FPGA的必经之路,只有理解了底层知识和基础,才能够真正掌握FPGA的开发技术,实现更加复杂的功能。
三、遵循良好的设计习惯在进行FPGA的开发过程中,需要遵循良好的设计习惯,包括模块化、封装化、重用性等,这些习惯有助于提高代码的可维护性和可复用性。
例如,在设计FPGA的电路时,需要将不同的功能抽象为不同的模块进行设计,同时将这些模块封装为独立的模块库,并支持重复使用,以便于后续的开发和维护。
因此,良好的设计习惯是FPGA开发过程中不可缺少的一部分,只有遵循了良好的设计习惯,才能够编写出可靠、可维护、可复用的代码。
四、注重实践和实战实践和实战是学习FPGA的关键,因为FPGA开发的实现需要不断的调试和实现。
fpga学习心得
FPGA学习心得学习fpga一个多月以来,完全从零开始学习,感觉自己学到的东西真不少,虽然还不是很熟练,不过也对fpga有了很好的了解。
以前一直没有想过要来总结些什么,是感觉自己对于fpga根本就像是一无所知一样,虽然天天在学,不过确实没有一个总体观念,学的东西太混乱也没有一个总体的框架。
到了今天终于觉得自己的学习已经小有成就了,虽然还是没有能够独立设计的自信。
在最初学习的时候最主要就是对于fpga结构的一个基本认识和对硬件描述语言verilog HDL语言的学习。
之所以选择学习fpga是因为在这一学期找工作中发现,现在很多公司都需要会一点fpga方面的知识,在笔试的时候也会偶尔遇到一些用HDL语言编程的试题。
现在很多硬件工程师已经不再是单纯的用传统的方法进行电路的设计,至少现在很多招聘的岗位当中不再是单纯的电路的设计了,很多都涉及到嵌入式和HDL语言。
Fpga现在正在以异常的速度发展,在08年全球金融危机的时候大多数行业都呈现在下滑的趋势,而fpga的厂商如xilinx和altera等公司的收入却呈现出增长的态势。
在我看来fpga必将是将来硬件工程师不可缺少的一项本领,这也就是我学习fpga的原因之一。
一、硬件描述语言:对于硬件描述语言(HDL)语言我选择的是和C语言类似的verilog HDL语言,虽然VHDL语言在很多方面优于verilog HDL语言,但是作为初学,还是先学习一个简单一点的语言,尽量先将所需要学习的东西过一遍,将来等时间允许的时候再去学习VHDL语言,在网上有看到现在出来了一个叫system verilog的语言,据说融合了verilog 和VHDL语言各自的优点,可能将来会成为行业统一的语言吧。
verilog HDL现阶段主要接触的就是对组合逻辑电路和时序电路的描述了。
所接触的程序中以always @ (*)模块居多,几乎是所见过模块的核心部分了,其实在学习这个语言上面也没有花太多的时间,因为有对C语言的学习,所以就先入为主了。
FPGA个人学习总结1
FPGA个人学习总结11.综合方面1)经综合后:普通的数据单端输入都会加一个ibuf缓冲器;数据单端输出有个obuf缓存器;时钟输入口会加bufgp缓冲器;对于4选1的mux,if结构和case结构都只需要一个slice,由muxf5控制两个lut下图为8选一case结构,muxf6控制两个muxf5,以两个slices实现8选1,用if结构实现的结构也是一样的注意一点:使用viewtechnologyschematic,来查看最底层的实现形式,即fpga 中的lut、muxf5等使用但有的综合后rtlschematic相同,technoligyschematic不同,而有的又相反(如onebit相加,加括号前后例子),那么我们应该以哪种为最优呢?如下图:图上下分别为加括号前和加括号后rtl:只有根据实际需要来选择,如信号的先后顺序等等2.lut的名字后_数字,那个数字代表什么意思?luta_b:a代表所有输入数据位宽,即输入数据的个数,切勿将位宽理解为“每个输入端口的数据宽度(因每个输入端口是单bit输入);b代表lut被初始化的状态3.比较器位宽大小对综合结构的影响当比较的位宽高于一定位数时,综合会采用进位链结构,如下图:4.在调用dcm核时,clkfx_out为输出引脚,并且locked_out必须勾上,否则波形无法输出,具体步骤参考本文件夹下“dcm核设置”5.如何判断pcb板上的复位芯片是低复位还是高复位?将复位芯片的输出连接至led等,若正常工作后是亮(前提是led另一端是接地),表示正常工作是高,说明之前是低,即为低复位,不亮则为高复位6.两种不同下载接口的比较<具体还可参考项23>1每个fpga都有两组下载接口jtag和spi;○2jtag 中tms为模式选择,tck为时钟,tdi和tdo分别为输入输出数据;○3spi中ss(有的为stb)为片选信号,sck为时钟信号,另外两根为数据信号;○4通过jtag下载程序到fpga:编程管脚跳针要拔掉,掉电后程序也会丢失,即下次上○电工作后需要重新下载程序5通过spi 下载程序到fpga:先将编程引脚prog 接地,○spi接口断开与fpga通信,而与flash通信,程序下载到外挂flash中,然后将prog跳针拔掉,flash中程序下载到fpga中6外部flash 不单是一个裸存储器,○它还有spi接口,图中的spi接口就是从flash的spi接口中引出来的引脚7spi接口是串行同步通信,串口uart 是串行异步通信○7.关于示波器当配置芯片相应寄存器后,观察输出的波形频率时,若出现频率跳动,可以检查示波器上的采样电平是否在波形的中间位置8.关于复位信号与寄存器声明寄存器在声明时最好给个初始值,即加载时的值,例如:reg[1:0]a=2’b00或直接写0;复位信号不要列在敏感列表中,直接使用if (rst),使rst成为控制信号9.如何看出接口读取数据所用的时钟沿上图可以看出,时钟的下降沿对准数据中心,说明该芯片的此接口是用时钟的下降沿来读取数据的上图可以看出,时钟的上升沿对准数据中心,说明该芯片的此接口是用时钟的上升沿来读取数据的故:如果芯片ab之间有走线延迟的话,那么我们在芯片a要用相反的时钟沿送出数据,经过走线延迟后,芯片b对应接口读取数据的时钟沿正好对准到达芯片b的数据的保持时间,即使最大延迟半个周期,也正好对准数据的中心10.fpga内部寄存器都是高复位,综合时综合工具会自动为复位信号反相,若外部芯片为低复位,则可在fpga设计时,先将复位信号反相,然后使用if (rst)11.当控制信号高于slice的供应时,可将控制信号转化为数据信号,例如:if(a)q<=b;q<=(a&b)|(!a&q);elseq<=q;12.毛刺问题概念:由于延迟的作用,多个信号到达终点的时间有先有后,形成了竞争,由竞争产生的错误输出就是毛刺产生条件:在同一时刻有多个信号输入发生改变出现时间:由于冒险多出现在信号发生电平跳变的时刻,即在输出信号的建立时间内会产生毛刺,而在保持时间内不会出现,13.调用ram在建立ram的ip核时,关于是否选择输出寄存器,根据需要!选择一个寄存器,数据则在采到地址后,延迟一个时钟周期,才会输出14.综合后的寄存器fd为普通的寄存器;fdr为带复位端的寄存器;fdre为带复位端和使能端得寄存器15.寄存器地址注重参数化设计可以先用define定义相关寄存器的地址参数,然后在运用中使用该参数,如下:`definereset_addr4b1101;always@(posedgeclk32mornegedgerst)beginif(!rst)beginspi_en<=8b0010_0000;ctl[7:1]<=7b1111_101;reset<=8b1101_0000;endelseif(wr_reg==2b01)case(addr)`spi_en_addr:spi_en[7:0]<=data[7:0];`reset_addr:reset[7:0]<=data[7:0];……….则当给寄存器的赋值是某一固定值时,为只读寄存器16.综合问题将一输入端口赋值给一个寄存器,再将该寄存器赋值给一个wire型输出端口,则在综合后,输入不会赋值给输出,注意上面的输入输出指的是整个工程的输入输出解决办法:给输入添加一个ibuf,或者给输出添加一个obuf有时不必延迟一个时钟周期,而直接将输入赋值给输出17.时序约束问题1寄存器到寄存器:过周期约束来设置,一般为实际时钟频率的110%;○2输入管脚到寄存器:通过offsetin来设置,一般为半个时钟周期;○由于上游芯片的数据输出和该fpga的数据输入使用的是同一个时钟,故如果上游芯片的数据输出采用下降沿,那么fpga的offsetin就需采用上升沿;上游芯片的输出到fpga寄存器之间的延迟可能不到半个周期;3寄存器到输出管脚:参考○2○18.系统同步接口和源同步接口的区别1系统同步接口:上游芯片发送数据的时钟和fpga接收数据的时钟均为系统时钟,或者○fpga发送数据的时钟和下游芯片接收数据的时钟均为系统时钟;2源同步接口:上游芯片发送数据给fpga的同时,也发送接收时钟给fpga,或者fpga○发送数据给下游芯片的同时,也发送接收时钟给下游芯片。
FPGA,学习心得体会
篇一:fpga学习心得大报告《fpga技术基础》学习报告--课程内容学习心得姓名:学号:年级专业:指导教师:瞿麟 201010401128 自动化101薛小军摘要从开始学fpga到现在粗略算来的话,已经有3个多月了,就目前而言,我并不确定自己算不算高手们所说的入门了,fpga学习总结。
但是不管现在的水平如何,现在就总结一下自己学习它的感受或一些认识吧。
关键词fpga de2板 quartusii软件 verilog语言引言fpga是什么?fpga现状?怎样学习fpga?fpga是现场可编程门阵列的简称,fpga的应用领域最初为通信领域,但目前,随着信息产业和微电子技术的发展,可编程逻辑嵌入式系统设计技术已经成为信息产业最热门的技术之一,应用范围遍及航空航天、医疗、通讯、网络通讯、安防、广播、汽车电子、工业、消费类市场、测量测试等多个热门领域。
并随着工艺的进步和技术的发展,向更多、更广泛的应用领域扩展。
越来越多的设计也开始以asic转向fpga, fpga正以各种电子产品的形式进入了我们日常生活的各个角落。
正文(1)掌握fpga的编程语言在学习一门技术之前我们往往从它的编程语言开始,如同学习单片机一样,我们从c语言开始入门,当掌握了c语言之后,开发单片机应用程序也就不是什么难事了。
学习fpga也是如此,fpga的编程语言有两种:vhdl和verilog,这两种语言都适合用于fpga的编程。
(2)fpga实验尤为重要除了学习编程语言以外,更重要的是实践,将自己设计的程序能够在真正的fpga里运行起来,这时我们需要选一块板子进行实验,我们选择使用de2板才进行试验。
初识de2开发板de2的资源de2的资源非常丰富,包括1. 核心的fpga芯片-cyclone ii 2c35 f672c6,从名称可以看出,它包含有35千个le,在altera的芯片系列中,不算最多,但也绝对够用。
altera下载控制芯片- epcs16以及usb-blaste对jtag的支持。
fpga课程设计心得体会
fpga课程设计心得体会首先,我要说这门FPGA课程对我来说是一次非常有益的学习经历。
通过这门课程,我深入了解了FPGA的原理和应用,同时锻炼了我的实践能力和问题解决能力。
下面是我对这门课程的一些心得体会。
1. 了解FPGA的基本原理在这门课程中,我们首先学习了FPGA的基本原理。
我了解到FPGA是一种可编程逻辑设备,可以根据设计者的需求进行编程和配置,实现各种不同的功能。
这种可编程性使得FPGA在很多领域都有广泛的应用,例如数字信号处理、通信系统等。
通过学习FPGA的基本原理,我对其内部结构和工作原理有了更深入的认识。
2. 掌握FPGA设计流程在学习FPGA课程的过程中,我不仅学到了FPGA的基本原理,还学到了FPGA的设计流程。
这包括了设计规范、电路分析、RTL设计、仿真和验证等步骤。
掌握了FPGA设计流程后,我能够按照一定的规范和步骤进行FPGA的设计,确保设计的正确性和可靠性。
3. 实践能力的提升在这门课程中,我们进行了大量的实践操作,通过实验来巩固理论知识,并且提升了自己的实践能力。
我记得有一次实验任务是设计一个简单的计数器电路,并在FPGA上进行验证。
虽然是一个简单的任务,但是我在实践过程中遇到了一些问题,例如时序约束和逻辑冲突等。
通过不断的尝试和调试,最终我成功地完成了任务,并且对FPGA 的实践应用有了更深刻的理解。
4. 解决问题的能力在FPGA课程设计过程中,我遇到了各种各样的问题,有时是设计上的问题,有时是硬件资源的限制,有时是时序约束无法满足等。
但是通过这些问题的解决,我培养了分析和解决问题的能力。
有时,我需要查阅相关的资料和文献,有时,我需要与同学和老师进行讨论和交流。
这些经历让我对问题的解决能力有了很大的提升。
总结起来,通过学习FPGA课程,我不仅学到了FPGA的基本原理和设计流程,还提升了我的实践能力和解决问题的能力。
这门课程为我今后的学习和工作奠定了良好的基础。
我相信,在将来的实践中,我会更加熟练地应用FPGA进行设计和开发,为实际工程问题提供解决方案。
fpga心得体会
fpga心得体会
做了5年的FPGA了,做完一FPGA项目后的心得体会。
手中经过的项目也不在少数,就在此刻又一个FPGA项目宣告结题,好多感受趁着现在还新鲜着写出来和大家一起分享不对之处希望得到大家的指正另外1234并没有绝对顺序都是有感而发随性而写。
1.要和人配合以我们做硬件的工程师为例测试的时候一般都需要软件的配合一个对硬件来说无比复杂的工作可能在软件工程师看来就是几行简单的代码所以要和人配合:多听听别人的意见这样必然可以产生新的know-how从而加快测试和开发的速度退一步讲至少没有坏处。
2.测试还是要别人来做开发者看待自己的产品有如看待自己,大多是没有勇气去发现缺点的。
一是源自自尊心,二是为了避免额外的工作。
所以就算有问题如果不严重就藏着掖着但是这对项目来说是不行的,所以测试verification,一定要旁人来做。
3.多点时间思考。
出现问题后不要急着修改,要思考推测可能的原因,想清楚后把这些可能的原因都用debug pin或者chipscope引出来。
4.注意复用已有的debug pin很多时候在测试过程中产生了大堆测试信号但是时间一长就忘了复用。
实际上,当一个问题产生的时候通过反复观察已有的debug pin或许足以发现问题根源而无需再引出新的Pin,并浪费时间去综合和PAB。
FPGA学习总结
FPGA学习总结FPGA学习总结FPGA全称为Field-Programmable Gate Array,即现场可编程门阵列。
FPGA作为数字电路设计领域的重要组成部分,已经广泛应用于计算机、通信、汽车等各个领域。
作为一个FPGA初学者,经过几个月的学习和实践,我感受到了FPGA学习的重要性和挑战性。
在这里,我想总结一下我在FPGA学习中的经验和体会。
1.学习FPGA需要具备的基础知识FPGA作为数字电路设计的一种工具,其涉及的知识领域非常广泛。
对于初学者来说,需要掌握一定的电子技术和计算机科学知识。
具体来说,需要掌握数字电路的基础知识、硬件描述语言(HDL)的基本语法和应用、计算机组成原理等。
2.学习FPGA的方法2.1.理论学习FPGA的学习需要理论和实践相结合。
在理论学习方面,需要认真学习数字电路的基础知识,比如布尔代数、逻辑门、时序电路等内容。
此外,了解硬件描述语言的语法和应用,比如Verilog和VHDL 等。
2.2.实践操作在实践方面,可以通过一些开源的FPGA开发板进行实验。
通过实验,可以了解FPGA的基本原理和设计方法,掌握数字电路设计的技巧。
同时,通过实验可以加深对HDL语言的理解和掌握。
2.3.项目实践项目实践也是学习FPGA的一种好方法。
在实践中,需要尝试完成一些简单的项目设计,如LED灯闪烁、数码管显示、流水灯等。
这些项目虽然简单,但对于初学者来说却是很大的挑战。
通过项目实践,可以加深对FPGA的理解和掌握,并且培养实际操作能力。
3.学习FPGA需要注意的问题3.1.理论与实践相结合FPGA的学习需要理论和实践相结合,不能只看理论而忽略实践,也不能只做实践而忽略理论。
3.2.选择适合的开发板初学者在选择开发板时应该根据自己的学习需要和经济实力选择适合自己的开发板。
同时也需要了解不同开发板的优缺点和适用场景,选择适合自己的开发板。
3.3.认真备课在开始FPGA的学习之前,需要认真备课,将学习内容和方法分解为具体的步骤。
fpga课程设计心得体会
fpga课程设计心得体会一、前言在学习FPGA课程设计的过程中,我深深感受到了这门课程的重要性和挑战性。
通过对于FPGA的学习和实践,我积累了许多宝贵的经验和心得,下面将逐一进行分享。
二、理论与实践相结合FPGA课程设计不仅仅是理论知识的灌输,更需要将所学的理论知识与实践相结合。
在课程的实践环节中,我通过完成一系列的实验和项目,真正将理论应用到实际问题中。
通过调试、验证、优化等环节的循环迭代,我对于FPGA的应用有了更深入的理解。
三、团队合作与交流在学习FPGA课程设计的过程中,团队合作和交流是不可或缺的部分。
通过与同学们的密切合作和讨论,我能够在不同的角度和思维中获取更多的灵感和观点。
通过深入的交流,我还能够了解到其他同学的优点和学习方法,进一步提升自己的能力。
四、问题解决能力的培养在进行FPGA课程设计时,难免会遇到各种问题和困难。
如何解决这些问题,培养了我解决问题的能力。
在遇到问题时,我会采取主动的态度,分析问题的根源,并通过查阅资料和寻求他人的帮助来解决问题。
通过不断的尝试和实践,我逐渐掌握了解决问题的技巧和方法。
五、理论知识的拓展除了FPGA课程设计的核心知识外,我还通过自学拓展了更多相关的理论知识。
包括Verilog语言的进一步学习、数字电路设计的基础知识、FPGA的发展历程等。
这些知识的拓展使我更全面地了解了FPGA的应用领域和未来的发展趋势。
六、总结与展望通过FPGA课程设计的学习,我不仅获得了专业知识的积累,还培养了良好的学习和工作习惯。
在以后的学习和工作中,我将继续深入学习和应用FPGA技术,不断提高自己的能力,并为推动FPGA技术的发展做出自己的贡献。
以上就是我在FPGA课程设计中的心得体会,希望对于后续学习该课程的同学有所帮助。
通过深入学习和实践,我们一定能够掌握FPGA技术,并将其应用到实际工程中。
让我们共同为FPGA技术的发展努力奋斗!。
fpga,学习心得体会
fpga,学习心得体会篇一:FPGa学习心得大报告《FPGa技术基础》学习报告--课程内容学习心得姓名:学号:年级专业:指导教师:瞿麟20XX10401128自动化101薛小军摘要从开始学FPGa到现在粗略算来的话,已经有3个多月了,就目前而言,我并不确定自己算不算高手们所说的入门了,FPGa学习总结。
但是不管现在的水平如何,现在就总结一下自己学习它的感受或一些认识吧。
关键词FPGadE2板Quartusii软件Verilog语言引言FPGa是什么?FPGa现状?怎样学习FPGa?FPGa是现场可编程门阵列的简称,FPGa的应用领域最初为通信领域,但目前,随着信息产业和微电子技术的发展,可编程逻辑嵌入式系统设计技术已经成为信息产业最热门的技术之一,应用范围遍及航空航天、医疗、通讯、网络通讯、安防、广播、汽车电子、工业、消费类市场、测量测试等多个热门领域。
并随着工艺的进步和技术的发展,向更多、更广泛的应用领域扩展。
越来越多的设计也开始以aSic 转向FPGa,FPGa正以各种电子产品的形式进入了我们日常生活的各个角落。
正文(1)掌握FPGa的编程语言在学习一门技术之前我们往往从它的编程语言开始,如同学习单片机一样,我们从c语言开始入门,当掌握了c语言之后,开发单片机应用程序也就不是什么难事了。
学习FPGa也是如此,FPGa的编程语言有两种:VHdL和Verilog,这两种语言都适合用于FPGa的编程。
(2)FPGa实验尤为重要除了学习编程语言以外,更重要的是实践,将自己设计的程序能够在真正的FPGa里运行起来,这时我们需要选一块板子进行实验,我们选择使用dE2板才进行试验。
初识dE2开发板dE2的资源dE2的资源非常丰富,包括1.核心的FPGa芯片-cycloneii2c35F672c6,从名称可以看出,它包含有35千个LE,在altera的芯片系列中,不算最多,但也绝对够用。
altera下载控制芯片-EPcS16以及USB-Blaste对Jtag的支持。
听一位行业老兵介绍FPGA学习经验,受益良多啊!
听一位行业老兵介绍FPGA学习经验,受益良多啊!相信很多刚接触FPGA的初学者们都对它一知半解,不知道它真正的优势在哪里。
当然,这对于初学者来说,确实不需要太过于深入了解,也了解不了那么多。
对于初学者们,有一些过来人的建议,小编觉得还是非常有用的,希望拿出来和大家分享一下。
1.数电知识想学好FPGA,数电知识要过关。
很多工程师在刚接触FPGA的时候,把它当做单片机使用,跑跑流水灯什么的。
但作为一个优秀的FPGA工程师,我们要对数电知识有深入的理解,具体要深入到什么程度呢,这里就不再详细描述了,大家尽自己最大努力去钻研吧。
2.编程代码的掌握FPGA是可编程逻辑器件,是可以编程的。
Verilog和VHDL硬件语言是主流。
注意,这里说的是硬件语言,它虽然和C语言看似有点共通之处,但是实现的思路与C语言有很大区别。
从个人角度来看,推荐先学习Verilog。
等你积累一定开发经验之后,可以考虑再看一下VHDL。
因为有可能在实际项目里,一些模块是Verilog写的,另外一些事VHDL写的。
所以就算写的不溜,也需要能看懂用VHDL写的设计。
对于Verilog掌握比较熟练的朋友,推荐转向SystemVerilog。
很多业界的大公司其实都在使用SystemVerilog 作为主要的开发语言。
SystemVerilog可以看成是Verilog的超集,但不太推荐初学者自学SystemVerilog。
3.仿真的重要性很多刚接触FPGA的工程师,由于刚开始尝试的都是一些简单的例子,往往会忽略仿真,直接写好上板子看效果,不行就修改。
这种行为习惯很不好。
我们要养成一个仿真的习惯,不管工程大小,要多仿真。
有些初学者可能会觉得浪费时间,其实恰恰相反,建立一个好的仿真模型,能节省很多开发调试的时间。
在进行FPGA开发的时候,我们要加强自己的仿真建模能力。
4.代码阅读量不管是学FPGA还是C语言,任何一种代码的学习都离不开大量的代码阅读。
fpga书籍阅读体会
fpga书籍阅读体会在阅读FPGA(Field Programmable Gate Array)书籍时,我深刻意识到这项技术对于电子设计和嵌入式系统的进步具有重要意义。
FPGA是一种可编程逻辑设备,它可以被重新配置和编程,使得电子设计师能够根据特定需求实现定制化的硬件功能。
首先,我学习了FPGA的基本结构和工作原理。
FPGA由可编程逻辑单元(PLU)和可编程互连资源(PIR)组成。
PLU由触发器、多工器、查找表等组件构成,可以实现逻辑运算和状态存储。
PIR则提供了互连电路,用于将PLU连接起来,实现不同模块之间的数据传输。
其次,我深入了解了FPGA的编程方法。
FPGA可以使用硬件描述语言(HDL)进行编程,常用的HDL包括VHDL和Verilog。
通过编写HDL代码,我们可以描述出所需的逻辑电路功能,并将其烧录到FPGA中。
这种灵活的编程方式使得FPGA适用于各种应用场景,包括数字信号处理、嵌入式系统和通信等领域。
在学习的过程中,我还了解到了FPGA在硬件加速和并行计算中的应用。
由于FPGA具有可并行运算的能力,它可以在诸如图像处理、密码学和机器学习等领域中发挥重要作用。
与传统的通用处理器相比,FPGA可以提供更高的性能和能效,从而加速计算过程。
此外,我也了解到了FPGA在嵌入式系统设计中的应用。
由于FPGA可以根据具体需求重新配置和编程,它在嵌入式系统设计中具有灵活性和可定制化的优势。
FPGA可以用于控制系统、数据采集和信号处理等方面,为嵌入式系统的开发提供了更多的可能性。
总的来说,通过阅读FPGA书籍,我对这项技术有了更深入的了解和认识。
FPGA的可编程特性使其成为了电子设计和嵌入式系统的重要工具,它在硬件加速、并行计算和嵌入式系统设计等领域都有广泛的应用。
我相信FPGA技术的不断发展将为我们带来更多创新和突破。
fpga个人心得体会
fpga个人心得体会FPGA(Field-Programmable Gate Array)是一种可编程逻辑器件,它可以根据用户的需要重新进行编程,以实现不同的功能。
在我个人使用FPGA的过程中,我深刻地体会到了它的优势和魅力。
首先,FPGA具有灵活性和可重构性。
相较于传统的专用集成电路(ASIC),FPGA可以在设计完成后进行现场编程,而无需重新设计和制造芯片。
这意味着我可以根据具体的需求对FPGA进行修改和优化,使其更适合特定的应用场景。
无论是改变设计逻辑、增加新的功能,还是优化性能和功耗,FPGA都可以随时进行调整,极大地提高了开发的灵活性和效率。
其次,FPGA具有并行计算能力。
相对于传统的通用处理器,FPGA可以通过配置并行计算单元实现更高的运算速度。
这对于需要高性能计算的应用非常重要,例如图像处理、信号处理和机器学习等。
我曾经使用FPGA进行图像处理的项目,通过合理地设计硬件架构和并行计算的布局,显著提升了处理速度和实时性。
这使我意识到FPGA在数据密集型应用中的巨大潜力。
此外,FPGA还具有较低的功耗和高效能。
FPGA的逻辑元件采用可编程的查找表(Look-Up Table)实现,相对于ASIC的固定逻辑电路,FPGA能够根据具体的需求进行灵活布局,减少了功耗的浪费。
在一些对功耗要求较高的应用中,FPGA能够提供更好的性能-功耗比,降低了系统的能源消耗。
与此同时,FPGA的设计流程也给我提供了很多的挑战和机会。
由于FPGA的可编程特性,需要我充分理解硬件描述语言(HDL)和硬件设计流程,掌握相关的设计工具和开发环境。
在这个过程中,我不仅提高了自己的技术能力,还学到了如何进行良好的工程管理和调试。
这些宝贵的经验对于今后的工作和学习都将会带来很大的帮助。
然而,FPGA的使用也存在一些挑战和限制。
首先,相较于通用处理器,FPGA的开发成本较高。
设计FPGA的逻辑电路需要耗费大量的人力、时间和资源。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
回想起自己学FPGA,已经有一段时间了,从开始的茫然,到后来的疯狂看书,设计开发板,调电路,练习各种FPGA实例,到最后能独立完成项目,一路走来,感受颇多,拿出来和大家分享,顺便介绍下自己的一点经验所得,希望对初学者有所帮助。
废话不说了,下面进入正题,学习FPGA我主要经历了这么几个阶段:①、Verilog语言的学习,熟悉Verilog语言的各种语法。
②、FPGA的学习,熟悉QuartusII软件的各种功能,各种逻辑算法设计,接口模块(RS232,LCD,VGA,SPI,I2c等)的设计,时序分析,硬件优化等,自己开始设计简单的FPGA 板子。
③、NiosII的学习,熟悉NiosII的开发流程,熟悉开发软件(SOPC,NiosII IDE),了解NiosII 的基本结构,设计NiosII开发板,编写NiosII C语言程序,调试板子各模块功能。
先来说说第一个阶段,现在主要的硬件描述语言有VHDL,Verilog两种,在本科时老师一般教VHDL,不过现在Verilog用的人越来越多,其更容易上手(与C语言语法比较类似),也更灵活,现在的IC设计基本都用Verilog。
像systemC,systemVerilog之类的应该还在萌芽阶段,以后可能会有较大发展。
鉴于以上原因我选择了Verilog作为我学习的硬件描述语言。
其实有C语言的基础,学起Verilog的语言很简单,关键要有并行的概念,所有的module,assign,always都是并行的,这一点与软件语言有明显不同。
这里推荐几本评价比较好的学习Verilog的书籍:①、《verilog 数字系统设计教程》,这本书对于入门是一本很好的书,通俗易懂,让人很快上手,它里面的例子也不错。
但本书对于资源优化方面的编程没有多少涉及到。
②、《设计与验证Verilog HDL》,这本书虽然比较薄,但是相当精辟,讲解的也很深入,很多概念看了这本书有种豁然开朗的感觉,呵呵。
学习Verilog其实不用看很多书,基本的语法部分大家都一样,关键是要自己会灵活应用,多做练习。
Verilog语言学了一段时间,感觉自己可以编点东西,希望自己编的程序在板子上运行看看结果,下面就介绍我学习的第二个阶段。
刚开始我拿了实验室一块CPLD的开发板做练习,熟悉QuartusII的各种功能,比如IP的调用,各种约束设置,时序分析,Logiclock设计方法等,不过做到后面发现CPLD 的资源不太够(没有内嵌的RAM、不能用SignalTapII,LE太少等),而实验室没有FPGA开发板,所以就萌生了自己做FPGA开发板的意图,刚好Cadence我也学的差不多了,就花了几天时间主要研究了FPGA配置电路的设计,在板子上做了Jtag和AS下载口,在做了几个用户按键和LED,其他的口全部引出作为IO口,电路比较简单,板子焊好后一调就通了(心里那个爽啊...)。
我选的FPGA是cycloneII系列的EP2C5,资源比以前的FPGA多了好几倍,还有PLL,内嵌的RAM,可以试试SignalTapII,用内嵌的逻辑分析仪测试引脚波形,对于FPGA的调试,逻辑分析仪是至关重要的。
利用这块板子我完成了项目中的几个主要功能:RS232通信,指令译码,配置DDS,AD数据高速缓存,电子开关状态设置等,在实践中学习起来真的比平时快很多,用到什么学什么动力更大。
这个时候我主要看的数据有这几本感觉比较好:①、《Altera FPGA/CPLD 设计(基础篇)》:讲解一些基本的FPGA设计技术,以及QuartusII中各个工具的用法(IP,RTL,SignalProbe,SignalTapII,Timing Closure Floorplan,chip Editor等),对于入门非常好。
②、《Altera FPGA/CPLD 设计(高级篇)》:讲解了一些高级工具的应用,LogicLock,时序约束很分析,设计优化,也讲述了一些硬件编程的思想,作为提高用。
③、《FPGA设计指南--器件,工具和流程》:这本书看了他的目录忍不住就买了,这本书讲述了FPGA设计的各个方面,虽然每个方面都是点到为止,但能让你有个整体的概念,了解FPGA的所有设计功能,了解FPGA开发的整个流程。
④、在这里也推荐几个学习FPGA比较好的论坛/bbs/⑤、其实最好的学习网站莫过于Altera的官方网站,不过很多人一看到英语就不想看,其实上面的英文很简单,很多时候不敢看是因为对自己没信心或心静不下来看。
不过官方网站上资料很多,刚开始可能会觉得资料安排的有点乱,不方便查找,以后有时间我列个资料的链接目录,整理一下,方便大家查找。
到这里,自己最FPGA的学习有一段时间了,练习了很多实例,自己也编写了不少程序,也有了一些项目经验,算是对FPGA有些了解了。
在不断的学习中发现FPGA不仅可以做逻辑设计,算法设计等,还能做嵌入式开发,altera先后开发了Nios,NiosII两款FPGA的嵌入式软核,并有配套的软件,刚开始看到这些我真是心中突然豁然开朗,学习真的是无止境,又一个全新的领域摆在我面前,我决定学习NiosII,要学就要学最好。
刚开始入门是很痛苦的,嵌入式设计需要从硬件到驱动到软件全部熟悉,硬件系统问题还不是很大(以前做过单片机,DSP等MCU),处理器的架构心里还有点数,对于驱动和软件工程,刚开始学习真的很头痛。
NiosII应该还算比较新的内容(应该是2004年出的),国内的书籍不算很多,网上这方面的资料也比较零碎,所以我就开始将Altera网站上这方面的资料系统的看一边,这里推荐几本网站上的handbook:①、Embedded Design Handbook②、Nios II Processor Reference Handbook③、Nios II Software Developer's Handbook④、Quartus II Handbook, V olume 4: SOPC Builder⑤、Quartus II Handbook, V olume 5: Embedded Peripherals看完这些handbook,总算基本明白整个架构,软硬件设计方法,驱动的编写等,感觉自己可以编一些嵌入式的程序了,不过虽然前面做的那块ep2c5的板子支持NiosII系统,不过对于嵌入式设计来说还是显得单薄了一点,没有SDRAM,Flash这两个比较基本的模块,Ep2C5内嵌的RAM太小,程序写不大,而且每次总要绞尽脑汁优化程序代码大小,很多时候优化了后函数功能会受到限制,不利于初学者,也不利于调试。
所以到这里我有产生了自己做一块Nios开发板的想法(直接买比较贵,自己做便宜,而且还能锻炼自己,一举两得),通过借鉴其他开发板,选择自己开发板上需要包含什么模块,确定各个模块使用什么芯片,阅读各个芯片的datasheet,画出原理图并做出PCB图,这块板子我选的是Ep2c8Q208,比上一块资源又将近多了一倍,板子上还有以下模块:SDRAM,Flash,EPCS4,RS232,USB,VGA,PS2,AD,DA,LCD等,满足了一般开发板的配置要求。
板子回来以后调试了四五天,(flash工作了,LCD显示了,RS232通了,USB通了,AD,DA工作了,SDRAM正常了...),真是每天都有惊喜,每个模块都编写了NiosII软件测试程序,调试硬件的时候对软件的运行也更熟悉了。
在这次调试的过程中真的学到了很多,为此专门写了好几页调试笔记,下次拿出来和大家一起分享。
现在硬件平台有了,NiosII也了解的差不多了,终于可以自己编写一些规模大一点的程序了。
学FPGA的一点心得从去年开始学FPGA,以前一直做DSP,但因为项目的需要,在一个应用中只有FPGA才能解决问题,所以硬着头皮上FPGA,又因为结项目的时间比较紧,所以主要以解决问题为目的,说真的,项目做下来写了四千多行的代码,达到了设计目标,但对FPGA学习还不够系统,也正进一步的学习中.因为我是单干,没有团队,遇到问题只能在网上找资料,其难度可想而知,幸好以前用过CPLD,有一点基础,用的编程语言是AHDL,感觉AHDL写一点小程序还可以,但做复杂程序就有点费力了(应该是我的AHDL没学好),所以在做FPGA程序时我选择了比较简单的verilog语言。
由于没人指导,所以买了一个简单的FPGA开发板,是Cyclone的,开发板就是好,送了较多学习资料,用了一个星期的时间,学习了NIOSII的基本应用,当然,我的需要就是知道如何在NIOS里控制一个信号的高低电平变化就够了,其它全是C语言的东西,主要是熟悉了Quartus的开发平台,并用NIOS程序把要实现的主要代码用C写了一遍,通过了,但速度上不去。
有这些知识做铺垫后,就开始了项目的设计。
项目要求将外部高速数据(40MB/s)进行存盘,并可以将存盘的数据在适当的时候原路返回(速度不变)。
所以在硬件的设计上FPGA选择了EP2C35F484C8N,外部有128M的SDRAM做为数据的缓冲。
所以FPGA的主要程序集中在ATAHOST控制器(实现UDMA读写)、SDRAM控制器(大容量循环缓冲)上,当然还包括一些其它的控制,如实时时钟,USB2.0芯片控制,RS232的通信及相应的通信协议。
硬件完成后,大部分的时间都在写程序,感觉verilog跟C差不多,就将原来写成的C代码翻译了一下,每写一段代码就测试一下。
起初并不知道在Quartus里还有逻辑分析仪的功能,所以程序出了问题只能使劲的分析代码,猜想问题可能出在哪里,万不得已时才做一下仿真(后来看很多有做程序都先做仿真,仿真通过后再下载到目标板里运行测试,但到现在我的仿真关还没过),所以做得很累。
我感到这样做下去到时间结点肯定结了不了项目,就找FPGA的QQ群向高手们请教经验,知道了可以Quartus的逻辑分析仪来观察信号,哈哈,爽了(感谢感谢)。
后面的程序找问题就容易多了,按照ATA协议、SDRAM手册、及各外围芯片手册一步步写下去,当然其中也遇到了各种各样的问题,但很快得到解决。
一直到项目结束,都是用逻辑分析仪来找问题,没做过仿真(所以现在仿真关还没过)。
今年又用FPGA做了一些项目。
简单说一下体会吧,归结起来就三个字:做、想、问。
书读千遍,不如做一遍;看别人做百次,不如自己做一次;就是要实践。
实践的动力一方面来自兴趣,别一方面来自己压力,我个人觉得后者更重要。
有需求会容易形成压力,也就是说最好能在实际的项目开发中锻炼,而不是为了学习而学习。
在做的过程中要多想,多想想问题出现的原因,问题解决后要多问几个为什么,这也是经验积累的过程,最好要写项目日志,把问题及原因、解决的办法都写进去。