⑴ FPGA如何入门,看了Xilinx开发教程还是觉得很吃力
给你一条思路。首先FPGA的特点是易上手,不可能精通。很多搞了十几年的FPGA工程师还不是遇到项目就卡壳。我见过一个华为工作了七年的做FPGA的,项目搞不出来辞职的(现在是我的顶头上司),所以想搞FPGA还得沉得住心,吃得了苦。然后自学就刚开始学语法,学个两周足以,语法实在太简单了。然后开始买开发板,跟着例程跑程序,这个阶段至少掌握整个FPGA开发流程和熟悉软件,尤其是在线调试,建议VIVADO,因为这玩意还是有点复杂的,工作中要是让你调接口你连这软件怎么抓信号都不会那可就尴尬了。至于SOC这些就不要学了,学了也没用,工作中基本上用不到。然后软件熟悉的差不多就开始自己写代码,这个阶段最主要是注意形成自己的代码风格,多看代码多写代码多仿真,要是有实际项目的代码就更好了,学习人家高手的代码风格(建议别用开发板的代码学习,写的太搓了),然后多搜一些异步设计的规范等等资料,等你知道给个你几个时钟你该用哪个时钟写哪个代码的时候开始玩一些实际项目的东西,这个时候开始有选择了,一般FPGA就是两个方向-接口与算法。这个阶段出去找工作吧,剩下的都是工作中才会理解的东西。算法门槛高,我就写过中频采集板的代码,其他的也不懂,接口的话开始按照人家招聘公司的要求学习,一般要求你要懂PCIE,DDR这些高速接口,高速接口无非是IP核例化和控制,看起来难实则也难(不过是工作中难,要是学习这玩意是啥的话还是不那么难的)。FPGA这玩意最忌讳的是手低眼高,也是很多学FPGA最容易犯的错,觉得这玩意就那么一回事。剩下的路就该你自己走了,FPGA是一个相对比较偏的行业,网上资源不太好搜集,信息收集也是一个需要学会的,但一般都是从人家赛家的官网下载的,所以英语底子得扎实。至于数电就不用再看了,本科基础足够了,心中有电路可不是指的是那种触发器堆的电路,而是指的是数据流的传输与时钟布局的大局观以及整个项目的大局观,所以看数电是没用滴。不过对于信号处理的有些基础知识,至少要知道啥是奈奎斯特采样,啥是中频采样,啥是FIR,FFT,DDC,UDC。
⑵ 基于fpga的浮点运算可能出现的问题有哪些
基于 FPGA 的浮点运算在实现贺袜明上可能会遇到以下问题:
精度问题:FPGA 上的浮点运算通常使用定点数或浮点数模拟实现,由于 FPGA 上的浮点单元通常是有限的,因此在进行浮点运算时可能会存在精度损失的问题。这种精度问题可能会导致计算结果出现误差,影响系统的正确性和稳定性。
吞吐量问题:FPGA 上的浮点单元通常比较少,因此在进行大量浮点计算时,可能会出现运算速度较慢的问题。这种吞吐量问题可能会影响系统的实时性和性能。
资源消耗问题:由于 FPGA 上的资源是有限的,进行浮点计算可能需要消耗大量的 FPGA 资源,包括 LUT、DSP、BRAM 等。好早这种资源消耗问题可能会影响系统的可扩展性和可靠性。
浮点标准问题:不同的浮点标准可能会导致不同的实现和结果。例如,IEEE 754 标准和 IBM 浮点格式之间的差异可能会导致不同的精度和结果。在 FPGA 上进行浮点计算时,需要选择合适的浮点标准,并保证在实现和结果方面与其他系统的兼容性。
因此,在进行基于 FPGA 的浮点运算时,需要仔细考虑上述问题禅告,并采取相应的优化措施来确保系统的正确性、稳定性和性能。
⑶ 关于FPGA的有关介绍
FPGA 是英文Field Programmable Gate Array 的缩写,即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC) 领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。它是当今数字系统设计的主要硬件平台,其主要特点就是完全由用户通过软件进行配置和编程,从而完成某种特定的功能,且可以反复擦写。在修改和升级时,不需额外地改变PCB 电路板,只是在计算机上修改和更新程序,使硬件设计工作成为软件开发工作,缩短了系统设计的周期,提高了实现的灵活性并降低了成本,因此获得了广大硬件工程师的青睐。
1984 年,在硅谷工作的Bernie Vonderschmitt、Ross Freeman 和 Jim Barnett 共同构建了一个设想,他们梦想创立一家不同于一般的公司。他们希望创建一家在整个新领域内开发和推出先进技术的公司。并且,他们还希望以这种方式领导它:在这里工作的人们热爱他们的工作、享受工作的乐趣,并对他们所从事的工作着迷。
创造性地推出了“无晶圆半导体”公司的概念。2009 年2 月18 日,Ross Freeman 因他的这项发明——现场可编程门阵列 (FPGA) 而荣登2009 美国发明家名人堂。Freeman 先生的发明是一块全部由“开放式门”组成的计算机芯片,其专利号为 4,870,302。采用这种芯片,工程师可以根据需要进行编程,添加新的功能,满足不断发展的标准或规范要求,并可在设计的最后阶段进行修改。
对PROM、EPROM、E2PROM 熟悉的人都知道这些可编程器件的可编程原理是通过加高压或紫外线导致三极管或MOS 管内部的载流子密度发生变化,实现所谓的可编程,但是这些器件或只能实现单次可编程或编程状态难以稳定。FPGA 则不同,它采用了逻辑单元阵列LCA(Logic Cell Array) 这样一个新概念,内部包括可
配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block) 和内部连线(Interconnect)三个部分。
FPGA 的可编程实际上是改变了CLB 和IOB 的触发器状态,这样,可以实现多次重复的编程由于FPGA 需要被反复烧写,它实现组合逻辑的基本结构不可能像ASIC 那样通过固定的与非门来完成,而只能采用一种易于反复配置的结构。查找表可以很好地满足这一要求,目前主流FPGA 都采用了基于SRAM 工艺的查找表结构,也有一些军品和宇航级FPGA 采用Flash 或者熔丝与反熔丝工艺的查找表结构。通过烧写文件改变查找表内容的方法来实现对FPGA 的重复配置。
根据数字电路的基本知识可以知道,对于一个n 输入的逻辑运算,不管是与或非运算还是异或运算等等,最多只可能存在2n 种结果。所以如果事先将相应的结果存放于一个存贮单元,就相当于实现了与非门电路的功能。FPGA 的原理也是如此,它通过烧写文件去配置查找表的内容,从而在相同的电路情况下实现了不同的逻辑功能。
查找表(Look-Up-Table) 简称为LUT,LUT 本质上就是一个RAM。目前FPGA 中多使用4 输入的LUT,所以每一个LUT 可以看成一个有4 位地址线的 的RAM。 当用户通过原理图或HDL 语言描述了一个逻辑电路以后,PLD/FPGA 开发软件会自动计算逻辑电路的所有可能结果,并把真值表( 即结果) 事先写入RAM,这样,
每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。
从表中可以看到,LUT 具有和逻辑电路相同的功能。实际上,LUT 具有更快的执行速度和更大的规模。由于基于LUT 的FPGA 具有很高的集成度,其器件密度从数万门到数千万门不等,可以完成极其复杂的时序与逻辑组合逻辑电路功能,所以适用于高速、高密度的高端数字逻辑电路设计领域。其组成部分主要有可编
程输入/ 输出单元、基本可编程逻辑单元、内嵌SRAM、丰富的布线资源、底层嵌入功能单元、内嵌专用单元等,主要设计和生产厂家有赛灵思、Altera、Lattice、Actel、Atmel 和QuickLogic 等公司,其中最大的是美国赛灵
思公司,占有可编程市场50% 以上的市场份额,比其他所有竞争对手市场份额的总和还多。
FPGA 是由存放在片内RAM 中的程序来设置其工作状态的,因此,工作时需要对片内的RAM 进行编程。用户可以根据不同的配置模式,采用不同的编程方式。加电时,FPGA 芯片将EPROM 中数据读入片内编程RAM 中,配置完成后,FPGA 进入工作状态。掉电后,FPGA 恢复成白片,内部逻辑关系消失,因此,FPGA 能够反复使用。FPGA 的编程无须专用的FPGA 编程器,只须用通用的EPROM、PROM 编程器即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。
因此,FPGA 的使用非常灵活。如前所述,FPGA 是由存放在片内的RAM 来设置其工作状态的,因此工作时需要对片内RAM 进行编程。用户可根据不同的配置模式,采用不同的编程方式。Xilinx FPGA 的常用配置模式有5 类:主串模式、从串模式、elect MAP 模式、Desktop 配置和直接SPI 配置。
目前,FPGA 市场占有率最高的两大公司赛灵思公司和Altera 生产的FPGA 都是基于SRAM 工艺的,需要在使用时外接一个片外存储器以保存程序。上电时,FPGA 将外部存储器中的数据读入片内RAM,完成配置后,进入工作状态;掉电后FPGA 恢复为白片,内部逻辑消失。这样FPGA 不仅能反复使用,还无需专门的FPGA编程器,只需通用的EPROM、PROM 编程器即可。Actel、QuickLogic 等公司还提供反熔丝技术的FPGA,具有抗辐射、耐高低温、低功耗和速度快等优点,在军品和航空航天领域中应用较多,但这种FPGA 不能重复擦写,开发初期比较麻烦,费用也比较昂贵。Lattice 是ISP 技术的发明者,在小规模PLD 应用上有一定的特色。早期的赛灵思公司产品一般不涉及军品和宇航级市场,但目前已经有多款产品进入该类领域。
FPGA 芯片结构目前主流的FPGA 仍是基于查找表技术的,已经远远超出了先前版本的基本性能,并且整合了常用功能( 如RAM、时钟管理和DSP) 的硬核(ASIC 型) 模块。实际上每一个系列的FPGA 都有其相应的内部结构),FPGA 芯片主要由6 部分完成,分别为:可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块。
⑷ 基于QuartusⅡ的FPGA\CPLD数字系统设计实例(第2版)
基于FPGA/CPLD设计交通控制器的设计
我们做过这个课题了
可以和我们交流下.........
设计任务
(一)有一条主干道和一条支干道的汇合点形成十字交叉路口,主干道为东西向,支干道为南北向。为确保车辆安全,迅速地通行,在交叉道口的每个入口处设置了红,绿,黄3色信号灯。
(二)要求:
(1)主干道绿灯亮时,支干道红灯亮,反之亦然,两者交替允许通行,主干道每次放行55s,支干道每次放行25s。每次由绿灯变为红灯的过程中,黄灯亮5s作为过渡。
(2)能实现正常的倒计时显示功能。
(3)能实现总体清零功能:计数器由初始状态开始计数,对应状态的指示灯亮。
(4)能实现特殊状态的功能显示:进入特殊状态时,东西、南北路口均显示红灯状态。
Verilog HDL作为一种规范的硬件描述语言,被广泛应用于电路的设计中。利用Verilog的设计描述可被不同的工具(包括验证仿真、时序分析、测试分析以及综合)所支持,可用不同器件来实现。而可编程器件的广泛应用,为数字系统的设计带来了极大的灵活性。由于可编程器件可以通过软件编程对硬件的结构和工作方式进行重构,使得硬件的设计可以如同软件设计那样快捷方便。
本文用Verilog HDL设计了一个交通灯控制系统,主干道交通灯按绿-黄-红变化,支干道交通灯按红-绿-黄变化。设计采用了自顶向下的设计方法,首先根据功能将电路分为div(包括div1和div2)、counter、controller、Fenwei(包括Fenwei1和Fenwei2)、demx模块,然后针对每个模块进行开发。利用QuartusII6.0中的仿真工具对每个模块进行仿真,保证功能正确。在此基础上,将所有模块连接起来,形成完整的设计,并用QuartusII6.0中的仿真工具再次仿真。仿真结果表明功能正确,符合设计要求。最后利用QuartusII6.0将程序下载到Altera FPGA芯片EP1C3T144C8中,实际结果表明电路工作正常,满足了设计要求。