fpga学习定制哪个品牌好?求推荐

求推荐FPGA学习有什么好的书和方法 - FPGA|CPLD|ASIC论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
求推荐FPGA学习有什么好的书和方法
16:52:01  
& && & 楼主大四学生,之前学过一下FPGA,都是看视频学的,还有也看了一本书的建模篇,做过几个小的项目(按照资料上的框图写代码之类的)。由于我的专业和FPGA不怎么搭边,在技术课内也很多功课,所以就一直断断续续的学着,进步很慢。
& && & 现在大四保研了,研究生时准备跟导师做FPGA方面的项目,应用FPGA内核比较多的,也和导师沟通好了,现在有了比较充足的时间学习FPGA,初步计划是先纯粹学半年在接手项目吧,导师的意思是先让我自己学一段时间。
& && &问一下各位前辈,我该怎么学(计划都是自学为主),夏宇闻老师那本书也看了一部分了,再选一些什么书比较好?或者还有什么更好的方法来学?谢谢
高级工程师
18:43:31  
要学习verilog语言的话,就看北航出的书吧。一本是夏宇闻的,还有一本叫做《Verilog FPGA 芯片设计》
08:57:47  
PCB在线计价下单
板子大小:
板子数量:
PCB 在线计价
明德扬点拨FPGA基础视频,和配套电子书
助理工程师
14:36:49  
学vhdl的话,就潘松老师的
Powered by
供应链服务
版权所有 (C) 深圳华强聚丰电子科技有限公司资深工程师分享学习fpga的一些经验 | 我爱电子网
资深工程师分享学习fpga的一些经验
从大学时代第一次接触FPGA至今已有10多年的时间,至今记得当初第一次在EDA实验平台上完成数字秒表、抢答器、密码锁等实验时那个兴奋劲。当时由于没有接触到HDL硬件描述语言,设计都是在MAX+plus II原理图环境下用74系列逻辑器件搭建起来的。后来读研究生,工作陆陆续续也用过Quartus II、FoundaTIon、ISE、Libero,并且学习了verilogHDL语言,学习的过程中也慢慢体会到verilog的妙用,原来一小段语言就能完成复杂的原理图设计,而且语言的移植性可操作性比原理图设计强很多。
在学习一门技术之前我们往往从它的编程语言入手,比如学习单片机时,我们往往从汇编或者C语言入门。所以不少开始接触FPGA的开发人员,往往是从VHDL或者Verilog开始入手学习的。但我个人认为,若能先结合《数字电路基础》系统学习各种74系列逻辑电路,深刻理解逻辑功能,对于学习HDL语言大有裨益,往往会起到事半功倍的效果。
当然,任何编程语言的学习都不是一朝一夕的事,经验技巧的积累都是在点滴中完成,FPGA设计也无例外。下面就以我的切身体会,谈谈FPGA设计的经验技巧。
我们先谈一下FPGA基本知识:
1.硬件设计基本原则
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
速度与面积平衡和互换原则:
一个设计如果时序余量较大,所能跑的频率远高于设计要求,能可以通过模块复用来减少整个设计消耗的芯片面积,这就是用速度优势换面积的节约;反之,如果一个设计的时序要求很高,普通方法达不到设计频率,那么可以通过数据流串并转换,并行复制多个操作模块,对整个设计采用“乒乓操作”和“串并转换”的思想进行处理,在芯片输出模块处再对数据进行“并串转换”。从而实现了用面积复制换取速度的提高。
硬件原则:理解HDL本质。
系统原则:整体把握。
同步设计原则:设计时序稳定的基本原则。
2.Verilog作为一种HDL语言,对系统行为的建模方式是分层次的
比较重要的层次有系统级、算法级、寄存器传输级、逻辑级、门级、电路开关级。
3.实际工作中,除了描述仿真测试激励时使用for循环语句外,极少在RTL级编码中使用for循环
这是因为for循环会被综合器展开为所有变量情况的执行语句,每个变量独立占用寄存器资源,不能有效的复用硬件逻辑资源,造成巨大的浪费。一般常用case语句代替。
4. if…else…和case在嵌套描述时是有很大区别的
if…else…是有优先级的,一般来说,第一个if的优先级最高,最后一个else的优先级最低。而case语句是平行语句,它是没有优先级的,而建立优先级结构需要耗费大量的逻辑资源,所以能用case的地方就不要用if…else…语句。
补充:1.也可以用if…; if…; if…;描述不带优先级的“平行”语句。
5.FPGA一般触发器资源比较丰富,而CPLD组合逻辑资源更丰富
6.FPGA和CPLD的组成
FPGA基本有可编程I/O单元、基本可编程逻辑单元、嵌入式块RAM、丰富的布线资源、底层嵌入功能单元和内嵌专用硬核等6部分组成。
CPLD的结构相对比较简单,主要由可编程I/O单元、基本逻辑单元、布线池和其他辅助功能模块组成。
7.Block RAM
3种块RAM结构,M512 RAM(512bit)、M4K RAM(4Kbit)、M-RAM(64Kbit)。
M512 RAM:适合做一些小的Buffer、FIFO、DPRAM、SPRAM、ROM等;
M4K RAM: 适用于一般的需求;
M-RAM: 适合做大块数据的缓冲区。
Xlinx 和 LatTIce FPGA的LUT可以灵活配置成小的RAM、ROM、FIFO等存储结构,这种技术被称为分布式RAM。
补充:但是在一般的设计中,不提倡用FPGA/CPLD的片内资源配置成大量的存储器,这是处于成本的考虑。所以尽量采用外接存储器。
8.善用芯片内部的PLL或DLL资源完成时钟的分频、倍频率、移相等操作
不仅简化了设计,并且能有效地提高系统的精度和工作稳定性。
9.异步电路和同步时序电路的区别
异步电路:
电路核心逻辑有用组合电路实现;
异步时序电路的最大缺点是容易产生毛刺;
不利于器件移植;
不利于静态时序分析(STA)、验证设计时序性能。
同步时序电路:
电路核心逻辑是用各种触发器实现;
电路主要信号、输出信号等都是在某个时钟沿驱动触发器产生的;
同步时序电路可以很好的避免毛刺;
利于器件移植;
利于静态时序分析(STA)、验证设计时序性能。
10.同步设计中,稳定可靠的数据采样必须遵从以下两个基本原则:
(1)在有效时钟沿到达前,数据输入至少已经稳定了采样寄存器的Setup时间之久,这条原则简称满足Setup时间原则;
(2)在有效时钟沿到达后,数据输入至少还将稳定保持采样寄存器的Hold时钟之久,这条原则简称满足Hold时间原则。
11.同步时序设计注意事项
异步时钟域的数据转换。
组合逻辑电路的设计方法。
同步时序电路的时钟设计。
同步时序电路的延迟。同步时序电路的延迟最常用的设计方法是用分频或者倍频的时钟或者同步计数器完成所需的延迟,对比较大的和特殊定时要求的延时,一般用高速时钟产生一个计数器,根据计数产生延迟;对于比较小的延迟,可以用D触发器打一下,这样不仅可以使信号延时了一个时钟周期,而且完成了信号与时钟的初次同步。在输入信号采样和增加时序约束余量中使用。
另外,还有用行为级方法描述延迟,如“#5 a《=4’0101;”这种常用于仿真测试激励,但是在电路综合时会被忽略,并不能起到延迟作用。
Verilog 定义的reg型,不一定综合成寄存器。在Verilog代码中最常用的两种数据类型是wire和reg型,一般来说,wire型指定的数据和网线通过组合逻辑实现,而reg型指定的数据不一定就是用寄存器实现。
12.常用设计思想与技巧
(1)乒乓操作;
(2)串并转换;
(3)流水线操作;
(4)异步时钟域数据同步。是指如何在两个时钟不同步的数据域之间可靠地进行数据交换的问题。数据时钟域不同步主要有两种情况:
①两个域的时钟频率相同,但是相差不固定,或者相差固定但是不可测,简称为同频异相问题。
②两个时钟频率根本不同,简称异频问题。
两种不推荐的异步时钟域操作方法:一种是通过增加Buffer或者其他门延时来调整采样;另一种是盲目使用时钟正负沿调整数据采样。
13.模块划分基本原则
(1)对每个同步时序设计的子模块的输出使用寄存器(用寄存器分割同步时序模块原则)。
(2)将相关逻辑和可以复用的逻辑划分在同一模块内(呼应系统原则)。
(3)将不同优化目标的逻辑分开。
(4)将送约束的逻辑归到同一模块。
(5)将存储逻辑独立划分成模块。
(6)合适的模块规模。
(7)顶层模块最好不进行逻辑设计。
14.组合逻辑的注意事项
(1)避免组合逻辑反馈环路(容易毛刺、振荡、时序违规等)。
解决:A.牢记任何反馈回路必须包含寄存器;B.检查综合、实现报告的warning信息,发现反馈回路(combinaTIonal loops)后进行相应修改。
(2)替换延迟链。
解决:用倍频、分频或者同步计数器完成。
(3)替换异步脉冲产生单元(毛刺生成器)。
解决:用同步时序设计脉冲电路。
(4)慎用锁存器。
解决方式:
A、使用完备的if…else语句;
B、检查设计中是否含有组合逻辑反馈环路;
C、对每个输入条件,设计输出操作,对case语句设置default 操作。特别是在状态机设计中,最好有一个default的状态转移,而且每个状态最好也有一个default的操作。
D、如果使用case语句时,特别是在设计状态机时,尽量附加综合约束属性,综合为完全条件case语句。
小技巧:仔细检查综合器的综合报告,目前大多数的综合器对所综合出的latch都会报“warning”,通过综合报告可以较为方便地找出无意中生成的latch。
15.时钟设计的注意事项
同步时序电路推荐的时钟设计方法:时钟经全局时钟输入引脚输入,通过FPGA内部专用的PLL或DLL进行分频/倍频、移相等调整与运算,然后经FPGA内部全局时钟布线资源驱动到达芯片内所有寄存器和其他模块的时钟输入端。
FPGA设计者的5项基本功:仿真、综合、时序分析、调试、验证。
对于FPGA设计者来说,练好这5项基本功,与用好相应的EDA工具是同一过程,对应关系如下:
1. 仿真:Modelsim, Quartus II(Simulator Tool)
2. 综合:Quartus II (Compiler Tool, RTL Viewer, Technology Map Viewer, Chip Planner)
3. 时序:Quartus II (TImeQuest Timing Analyzer, Technology Map Viewer, Chip Planner)
4. 调试:Quartus II (SignalTap II Logic Analyzer, Virtual JTAG, Assignment Editor)
5. 验证:Modelsim, Quartus II(Test Bench Template Writer)
掌握HDL语言虽然不是FPGA设计的全部,但是HDL语言对FPGA设计的影响贯穿于整个FPGA设计流程中,与FPGA设计的5项基本功是相辅相成的。
对于FPGA设计者来说,用好“HDL语言的可综合子集”可以完成FPGA设计50%的工作——设计编码。
练好仿真、综合、时序分析这3项基本功,对于学习“HDL语言的可综合子集”有如下帮助:
通过仿真,可以观察HDL语言在FPGA中的逻辑行为。
通过综合,可以观察HDL语言在FPGA中的物理实现形式。
通过时序分析,可以分析HDL语言在FPGA中的物理实现特性。
对于FPGA设计者来说,用好“HDL语言的验证子集”,可以完成FPGA设计另外50%的工作——调试验证。
1. 搭建验证环境,通过仿真的手段可以检验FPGA设计的正确性。
2. 全面的仿真验证可以减少FPGA硬件调试的工作量。
3. 把硬件调试与仿真验证方法结合起来,用调试解决仿真未验证的问题,用仿真保证已经解决的问题不在调试中再现,可以建立一个回归验证流程,有助于FPGA设计项目的维护。
FPGA 设计者的这5项基本功不是孤立的,必须结合使用,才能完成一个完整的FPGA设计流程。反过来说,通过完成一个完整的设计流程,才能最有效地练习这5项基本功。对这5项基本功有了初步认识,就可以逐个深入学习一些,然后把学到的知识再次用于完整的设计流程。如此反复,就可以逐步提高设计水平。采用这样的循序渐进、螺旋式上升的方法,只要通过培训入了门,就可以自学自练,自我提高。
市面上出售的有关FPGA设计的书籍为了保证结构的完整性,对 FPGA设计的每一个方面分开介绍,每一方面虽然深入,但是由于缺少其他相关方面的支持,读者很难付诸实践,只有通读完全书才能对FPGA设计获得一个整体的认识。这样的书籍,作为工程培训指导书不行,可以作为某一个方面进阶的参考书。
对于新入职的员工来说,他们往往对FPGA的整体设计流程有了初步认识,5项基本功的某几个方面可能很扎实。但是由于某个或某几个方面能力的欠缺,限制了他们独自完成整个设计流程的能力。入职培训的目的就是帮助他们掌握整体设计流程,培养自我获取信息的能力,通过几个设计流程来回的训练,形成自我促进、自我发展的良性循环。在这一过程中,随着对工作涉及的知识的广度和深度的认识逐步清晰,新员工的自信心也会逐步增强,对个人的发展方向也会逐步明确,才能积极主动地参与到工程项目中来。
最后总结几点:
1)看代码,建模型
只有在脑海中建立了一个个逻辑模型,理解FPGA内部逻辑结构实现的基础,才能明白为什么写Verilog和写C整体思路是不一样的,才能理解顺序执行语言和并行执行语言的设计方法上的差异。在看到一段简单程序的时候应该想到是什么样的功能电路。
2)用数学思维来简化设计逻辑
学习FPGA不仅逻辑思维很重要,好的数学思维也能让你的设计化繁为简,所以啊,那些看见高数就头疼的童鞋需要重视一下这门课哦。举个简单的例子,比如有两个32bit的数据X[31:0]与Y[31:0]相乘。当然,无论Altera还是Xilinx都有现成的乘法器IP核可以调用,这也是最简单的方法,但是两个32bit的乘法器将耗费大量的资源。那么有没有节省资源,又不太复杂的方式来实现呢?我们可以稍做修改:
将X[31:0]拆成两部分X1[15:0]和X2[15:0],令X1[15:0]=X[31:16],X2[15:0]=X[15:0],则X1左移16位后与X2相加可以得到X;同样将Y[31:0]拆成两部分Y1[15:0]和Y2[15:0],令 Y1[15:0]=Y[31:16],Y2[15:0]=Y[15:0],则Y1左移16位后与Y2相加可以得到Y;则X与Y的相乘可以转化为X1和X2 分别与Y1和Y2相乘,这样一个32bit*32bit的乘法运算转换成了四个16bit*16bit的乘法运算和三个32bit的加法运算。转换后的占用资源将会减少很多,有兴趣的童鞋,不妨综合一下看看,看看两者差多少。
3)时钟与触发器的关系
“时钟是时序电路的控制者” 这句话太经典了,可以说是FPGA设计的圣言。FPGA的设计主要是以时序电路为主,因为组合逻辑电路再怎么复杂也变不出太多花样,理解起来也不没太多困难。但是时序电路就不同了,它的所有动作都是在时钟一拍一拍的节奏下转变触发,可以说时钟就是整个电路的控制者,控制不好,电路功能就会混乱。
打个比方,时钟就相当于人体的心脏,它每一次的跳动就是触发一个 CLK,向身体的各个器官供血,维持着机体的正常运作,每一个器官体统正常工作少不了组织细胞的构成,那么触发器就可以比作基本单元组织细胞。时序逻辑电路的时钟是控制时序逻辑电路状态转换的“发动机”,没有它时序逻辑电路就不能正常工作,因为时序逻辑电路主要是利用触发器存储电路的状态,而触发器状态变换需要时钟的上升或下降沿!由此可见时钟在时序电路中的核心作用!
最后简单说一下体会吧,归结起来就多实践、多思考、多问。实践出真知,看 100遍别人的方案不如自己去实践一下。实践的动力一方面来自兴趣,一方面来自压力,我个人觉得后者更重要。有需求会容易形成压力,也就是说最好能在实际的项目开发中锻炼,而不是为了学习而学习。
在实践的过程中要多思考,多想想问题出现的原因,问题解决后要多问几个为什么,这也是经验积累的过程,如果有写项目日志的习惯更好,把问题及原因、解决的办法都写进去。最后还要多问,遇到问题思索后还得不到解决就要问了,毕竟个人的力量是有限的,问同学同事、问搜索引擎、问网友都可以,一篇文章、朋友们的点拨都可能帮助自己快速解决问题。
<span class="tipso_style" id="tip-p" data-tipso='
您可以选择一种方式赞助本站
<span class="tipso_style" id="tip-w-j" data-tipso=''>
关于我们我们专业提供视听类电子产品及混合视频处理类产品的解决方案及开发与技术支持。
记住我的登录信息
输入用户名或电子邮箱地址,您会收到一封新密码链接的电子邮件。
用户名或电子邮件地址我想学习FPGA,想问问有没有好的FPGA培训班呢?_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
我想学习FPGA,想问问有没有好的FPGA培训班呢?
  从产品介绍到深入的设计技术,从高级设计到嵌入式处理器。第三方的培训公司也会提供各种定制的培训内容,基本是免费的。代理商基本都会定期不定期举办各种培训还是比较多的、SERDES的应用培训。  FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
采纳率:95%
来自团队:
为什么不上数电的培训班呢?很多做FPGA的人连基本的卡诺图和状态机都不会。基本理论不通。使用FPGA的人主要分为2大类。后者(使用FPGA)的人居多,所以我就说说这个,自己看看语法就行了(我的verilog是7~8年前我的徒弟教的。所以学习FPGA目的也就是为了适应这些工作。FPGA的使用其实真的没有什么可以学的?FPGA是现代电子发展的结晶,作为电子工程师多少都要了解一些。学习FPGA有两个方向:1)研发FPGA,如果数字电路好。硬件参考图纸一堆,设计电路的时候看参考图纸就行了。软件代码编程多半使用verilog(建议你直接学习这个语言)作为从业15年的过来人,有责任回答您的问题。在回答前我会先问您2个问题:1)为什么学习FPGA?2)学FPGA学什么,花了2天的时间)。剩余的工作就是数字电路的知识了,如果数电好,什么培训班都用不上。如果数电不好;2)使用FPGA。如果是前者,那么培训班就算了:1)ASIC工作人员,使用FPGA做前期验证;2)研制板级产品的电子工程师
本回答被网友采纳
还是比较多的。代理商基本都会定期不定期举办各种培训,从产品介绍到深入的设计技术,基本是免费的。第三方的培训公司也会提供各种定制的培训内容,从高级设计到嵌入式处理器、SERDES的应用培训。
至芯科技!夏语闻老师的公司!国内fpga泰斗!他们的李凡老师也是经验老道的工程师
其他1条回答
为您推荐:
其他类似问题
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;请高手推荐一款小型的FPGA芯片,越小越好_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
请高手推荐一款小型的FPGA芯片,越小越好
我有更好的答案
采纳率:26%
为您推荐:
其他类似问题
您可能关注的内容
fpga的相关知识
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;相关文章推荐
需求说明:深度学习FPGA实现知识储备
来自:时间的诗
第一部分:博客大牛(深度学习方向)
1、http://blog.csdn.net/zouxy09
研究方向:机器学习、计算机视觉、...
1、不熟悉FPGA的内部结构,不了解可编程逻辑器件的基本原理。
FPGA为什么是可以编程的?恐怕很多菜鸟不知道,他们也不想知道。因为他们觉得这是无关紧要的。他们潜意识的认为可编程嘛,肯定就是像写软件...
经常会有初学者问,怎样学FPGA,有木有优秀教材推荐。问的人多了,一两句话又说不清楚,还是写篇博文吧。
一、入门首先要掌握HDL。
第一句话是:还没学数电的先学数电。然后你可以选择verilog或者V...
现在的FPGA算法的实现有下面几种方法: 1. Verilog/VHDL 语言的开发 ;
2. system G
3. ImpulsC 编译器实现从 C代码到 HDL 语言;...
原文地址:我总结的学习FPGA100个值得注意的要点作者:SUN_403
1.FPGA不是编程语言,而是一种可综合的硬件描述...
本文基于xilinx 的IP核设计,源于音频下采样这一需求。
创建vivado工程
1. 首先打开vivado,创建一个新的project(勾选create project subdirectory选...
转自:http://blog.csdn.net/angelbosj/article/details/
1、不熟悉FPGA的内部结构,不了解可编程逻辑器件的基本原理。
他的最新文章
讲师:Array
讲师:李志伟
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

 

随机推荐