Altera的FPGA_常见问题汇总
FPGA设计中常见的时序收敛问题分析

FPGA设计中常见的时序收敛问题分析FPGA设计中常见的时序收敛问题是指在FPGA设计过程中出现的时序约束无法满足的情况。
时序约束是指设计中需要满足的时钟周期、时钟频率、数据传输延迟等时间要求。
时序收敛问题会导致设计无法工作正常,甚至无法通过时序分析和布局布线。
时序收敛问题的主要原因包括时钟频率过高、逻辑路径过长、时钟抖动、布线延迟不稳定等。
下面我们将分析常见的时序收敛问题及解决方法。
首先,时钟频率过高是导致时序收敛问题的常见原因之一。
当时钟频率过高时,逻辑电路需要更短的时间完成计算,容易产生时序违例。
解决方法包括优化逻辑电路、减小时钟分频比、增加集成电路的时钟域等。
其次,逻辑路径过长也会导致时序收敛问题。
逻辑路径过长会增加逻辑延迟,使得数据无法在规定的时间内到达目的地。
解决方法包括优化逻辑电路结构、增加缓冲器减小电路路径、合理分配信号路径等。
时钟抖动也是时序收敛问题的常见原因。
时钟抖动会导致时钟信号的不稳定,使得同步电路无法正常工作。
解决方法包括使用低抖动的时钟源、优化时钟分配网络、提高时钟质量等。
布线延迟不稳定也是导致时序收敛问题的原因之一。
不同的布线路径会导致不同的延迟,使得时序约束无法满足。
解决方法包括合理规划布线路径、优化布线约束、降低布线时钟偏移等。
总的来说,时序收敛问题在FPGA设计中是一个常见且重要的问题。
设计工程师需要综合考虑时钟频率、逻辑路径、时钟抖动和布线延迟等因素,合理设计电路结构,优化时序约束,确保设计能够满足时序要求。
只有充分理解和解决时序收敛问题,才能保证FPGA设计的稳定性和可靠性。
FPGA设计常犯错误大全,你中招了吗?

FPGA设计常犯错误大全,你中招了吗?FPGA的用处比我们平时想象的用处更广泛,原因在于其中集成的模块种类更多,而不仅仅是原来的简单逻辑单元(LE)。
现在的FPGA不仅包含以前的LE,RAM也更大更快更灵活,管教IOB也更加的复杂,支持的IO类型也更多,而且内部还集成了一些特殊功能单元,包括:DSP:实际上就是乘加器,FPGA内部可以集成多个乘加器,而一般的DSP芯片往往每个core只有一个。
换言之,FPGA可以更容易实现多个DSP core功能。
在某些需要大量乘加计算的场合,往往多个乘加器并行工作的速度可以远远超过一个高速乘加器。
SERDES:高速串行接口。
将来PCI-E、XAUI、HT、S-ATA等高速串行接口会越来越多。
有了SERDES模块,FPGA可以很容易将这些高速串行接口集成进来,无需再购买专门的接口芯片。
CPU core:分为2种,软core和硬core.软core是用逻辑代码写的CPU模块,可以在任何资源足够的FPGA中实现,使用非常灵活。
而且在大容量的FPGA中还可以集成多个软core,实现多核并行处理。
硬core是在特定的FPGA内部做好的CPU core,优点是速度快、性能好,缺点是不够灵活。
不过,FPGA还是有缺点。
对于某些高主频的应用,FPGA就无能为力了。
现在虽然理论上FPGA可以支持的500MHz,但在实际设计中,往往200MHz以上工作频率就很难实现了。
FPGA设计要点之一:时钟树对于FPGA来说,要尽可能避免异步设计,尽可能采用同步设计。
同步设计的第一个关键,也是关键中的关键,就是时钟树。
一个糟糕的时钟树,对FPGA设计来说,是一场无法弥补的灾难,是一个没有打好地基的大楼,崩溃是必然的。
具体一些的设计细则:1)尽可能采用单一时钟;2)如果有多个时钟域,一定要仔细划分,千万小心;3)跨时钟域的信号一定要做同步处理。
对于控制信号,可以采用双采样;对于数据信号,可以采用异步fifo.需要注意的是,异步fifo不是万能的,一个异步fifo也只能解决一定范围内的频差问题。
FPGA笔试题汇总

=====================第1章FPGA基础知识=================== FPGA设计工程师努力的方向SOPC,高速串行I/O,低功耗,可靠性,可测试性和设计验证流程的优化等方面。
随着芯片工艺的提高,芯片容量、集成度都在增加,FPGA 设计也朝着高速、高度集成、低功耗、高可靠性、高可测、可验证性发展。
芯片可测、可验证,正在成为复杂设计所必备的条件,尽量在上板之前查出bug,将发现bug的时间提前,这也是一些公司花大力气设计仿真平台的原因。
另外随着单板功能的提高、成本的压力,低功耗也逐渐进入FPGA设计者的考虑范围,完成相同的功能下,考虑如何能够使芯片的功耗最低。
高速串行IO的应用,也丰富了FPGA 的应用范围,象xilinx的v2pro中的高速链路也逐渐被应用。
总之,学无止境,当掌握一定概念、方法之后,就要开始考虑FPGA其它方面的问题了。
简述FPGA等可编程逻辑器件设计流程系统设计电路构思,设计说明与设计划分,电路设计与输入(HDL代码、原理图),功能仿真与测试,逻辑综合,门级综合,逻辑验证与测试(综合后仿真),布局布线,时序仿真,板级验证与仿真,加载配置,在线调试。
常用开发工具(AlteraFPGA)HDL语言输入:TextEditor(HDL语言输入),还可以使用UltraEdit原理图输入:SchematicEditorIPCore输入:MegaWinzad综合工具:Synplify/SynplifyPro,QaustusII内嵌综合工具仿真工具:ModelSim实现与优化工具:QuartusII集成的实现工具有AssignmentEditor(约束编辑器)、LogicLock(逻辑锁定工具)、PowerFitFitter(布局布线器)、TimingAnalyzer(时序分析器,STA分析工具)、FloorplanEditor(布局规划器)、ChipEditor(底层编辑器)、DesignSpaceExplorer(设计空间管理器)、DesignAssistant(检查设计可靠性)等。
AlteraFPGA配置注意事项

AlteraFPGA配置注意事项Altera FPGA 配置注意事项(1) DATA0:输入;单片机串行的配置数据输入口。
(2)DCLK:输入;为外部数据源提供时钟。
(3)nCONFIG:输入;配置控制输入。
低电平使ACEX1K器件复位,在由低到高的跳变过程中启动配置。
(4)nSTATUS:双向漏极开路(需接上拉电阻);上电后,ACEX1K立即驱动该引脚到低电平,然后在100ms内释放掉它。
nSTATUS必须经过1K电阻上拉到VCC,如果配置中发生错误,ACEX1K将其拉低。
(5)CONF_DONE:双向漏极开路(需接上拉电阻);状态输出。
在配置期间,ACEX1K将其驱动为低电平。
所有配置数据无误差接收后,由于有上拉电阻,所以将其变为高电平,表示配置成功。
CONF_DONE必须经过1K电阻上拉到VCC。
其中在配置中还有另外几个引脚需要注意:(1)nCE:输入;ACEX1K器件使能输入;nCE为低电平时使能配置过程,为单片配置时,nCE必须始终为低。
(2)nCEO:输出(专用于多片器件);ACEX1K配置完成后,输出为低电平。
在多片级联配置时,驱动下一片的nCE端,从而实现多片FPGA的配置。
在AS模式下如果出现如下错误Error: Can't recognize silicon ID for device 11。
确认你的QII中选择的配置芯片是否和电路板中的芯片一致2。
检查你的下载线是否损坏,据说下载线长不应该超过30CM 但是我自己做的大概有50CM也可以正常使用3。
确定你的配置芯片是否损坏,可以使用JTAG烧写配置芯片测试下,如果可写那就可以排除该错误4。
检查你的电路中的AS模式中的上拉电阻和下拉电阻是否虚焊,还有MSEL0与MSEL1是否选择正确和nSTATUS是否接上拉电阻等。
FPGA常用错误

说明:本文内容来自网络1.Error (10028): Can't resolve multiple constant drivers for net ……解析:不能在两个以上always内对同一变量赋值,这个细节一般看书看资料会看到,但是编程时,就是没想到。
2.Error (10158): Verilog HDL Module Declaration error at clkseg.v(1): port "XXXX" is not declared as port解析:大意了,端口类型还没定义啊!3.Error (10110): variable "en" has mixed blocking and nonblocking Procedural Assignments -- must be all blocking or all nonblocking assignments解析:en在程序中有时用非阻塞赋值,有时用阻塞赋值,这是禁止的。
在初学的时候,可能分得不是很清楚,所以在检查时,一定要一步步观察慢慢来。
4.Error (10161): Verilog HDL error at clkseg.v(36): object "count" is not declared解析:这个错误应该很明显啦,只要能读得懂。
5.Error (10170): Verilog HDL syntax error at clkseg.v(37) near text "***"; expecting ";"解析:意思应该也很简单,就是检查的时候要细心点。
6.Error (10171): Verilog HDL syntax error at ir_ctrl.v(149) near end of file ; expecting an identifier, or "endmodule", or a parallel statement解析:最后上了endmodule。
FPGA基础知识问答500问连载 (二)

FPGA基础知识问答500问连载(二)Q16:FPGA设计中对时钟的使用?(例如分频等)FPGA芯片有固定的时钟路由,这些路由能有减少时钟抖动和偏差。
需要对时钟进行相位移动或变频的时候,一般不允许对时钟进行逻辑操作,这样不仅会增加时钟的偏差和抖动,还会使时钟带上毛刺。
一般的处理方法是采用FPGA芯片自带的时钟管理器如PLL,DLL或DCM,或者把逻辑转换到触发器的D输入(这些也是对时钟逻辑操作的替代方案)。
Q17:FPGA设计中如何实现同步时序电路的延时?首先说说异步电路的延时实现:异步电路一半是通过加buffer、两级与非门等(我还没用过所以也不是很清楚),但这是不适合同步电路实现延时的。
在同步电路中,对于比较大的和特殊要求的延时,一半通过高速时钟产生计数器,通过计数器来控制延时;对于比较小的延时,可以通过触发器打一拍,不过这样只能延迟一个时钟周期。
Q18:FPGA中可以综合实现为RAM/ROM/CAM的三种资源及其注意事项?三种资源:block ram;触发器(FF),查找表(LUT);注意事项:1:在生成RAM等存储单元时,应该首选block ram 资源;其原因有二:第一:使用block ram等资源,可以节约更多的FF和4-LUT等底层可编程单元。
使用block ram 可以说是“不用白不用”,是最大程度发挥器件效能,节约成本的一种体现;第二:block ram是一种可以配置的硬件结构,其可靠性和速度与用LUT和register构建的存储器更有优势。
2:弄清FPGA的硬件结构,合理使用block ram资源;3:分析block ram容量,高效使用block ram资源;4:分布式ram资源(distribute ram)Q19:Xilinx中与全局时钟资源和DLL相关的硬件原语:常用的与全局时钟资源相关的Xilinx器件原语包括:IBUFG,IBUFGDS,BUFG,BUFGP,BUFGCE,BUFGMUX,BUFGDLL,DCM等。
FPGA烧写问题

altera cyclone器件告别AS下载模式,直接用JTAG配置器件进行编程看CYCLONE II的器件手册时,看到一段关于配置器件的描述:可以通过JTAG接口对串行配置器件进行编程,可是里面没有详细的使用方法,在altera的网站上找到了一些关于这个的资料先介绍一下SFL:Serial Flash Loader,它是通过JTAG接口在系统编程(isp)串行配置器件。
这种方法主要是通过FPGA作为一个JTAG与串行配置器件之间的桥梁,优点是能通过一个JTAG接口对器件进行配置,缺点是慢,因为在编程前要对FPGA进行配置。
废话少说,首先编译生成SOF文件,也就是JTAG方式下的下载文件,然后1 在“文件”里选择“Convert Programming Files”,出现对话框后2 在programming file type里选.jic3 在configuration device里选择相应的串行配置器件4 file name选择转换文件5 选sof data,单击add file选择sof文件6 flash loader单击add device选择FPGA器件然后OK生成JIC文件,后面的事情跟JTAG下下载一样,只是将文件类型选为JIC文件,可惜我转换的时候选EPCS1时,老提示容量不够,选EPCS4就没有问题了,大家可以试试。
cyclone器件, jtag和as下载模式JTAG是直接烧到FPGA里面的,由于是SRAM,所以断电后要重烧;AS是烧到FPGA的配置芯片里保存的,每次上电就写到FPGA里;pof文件可以通过as方式下载(保证byteblasterII/usb blaster连接正确);sof文件或者转换的jic可以通过jtag方式下载;这两种下载模式使用的接口外形是完全一样的,要注意区分!使用Flash Loader(JTAG模式)下载EPCS器件一般来说Altera公司Cyclone或者CycloneII系列FPGA相应的配置器件会选择EPCS系列串行FLASH。
Altera的FPGA下载常见问题经验小结

Altera的FPGA下载常见问题经验小结软件部分:对于QUARTUS II 4.0版本软件,在安装完成后,需要做如下设置,软件才能够正常工作。
第一:设置license。
第二:安装驱动:Win2000/XP:1、打开控制面板(开始->设置->控制面板)2、双击“添加/删除硬件”图标,启动添加/删除硬件向导,然后按下一步继续。
3、在“选择一个硬件任务”面板上,选择“添加/排除设备故障”,然后按下一步继续。
WIN2000将会在新的硬件检测窗口里搜索新的即插即用设备。
4、在“选择一个硬件设备”面板上,选择“添加新设备”。
按下一步继续。
5、在“查找新硬件”面板上,选择“否,我想从列表选择硬件“。
按下一步继续。
6、在”硬件类型“面板上,选择”声音、视频和游戏控制器“。
按下一步继续。
7、在”选择一个设备驱动程序“窗口,点击”从磁盘安装“按钮。
8、指定win2000.inf文件的完整路径(例如安装目录>\drivers\win2000)。
按下一步继续。
9、在“没有找到数字签名”窗口,点击“是”按钮。
10、在“选择一个设备驱动程序”窗口,如果您使用ByteblasterMV或AlteraByteBlasterII,请安装相应驱动。
11、在“开始硬件安装”窗口,点击下一步继续。
12、在“没有找到数字签名”窗口,点击“是”按钮,继续安装。
13、在“完成添加/删除硬件向导”窗口,点击“完成”按钮14、在弹出的系统对话选择是否重新启动计算机。
驱动程序要在重新启动后才能使用。
重新启动后,即可在quartusII里进行program了。
第三:programer设置。
点击桌面图标Quartus II 4.0启动软件。
A)在tools菜单下,执行Programer命令。
B)点击hardware setup,点击select hardware,选择Byteblaster,---→add hardware---→close.C)完成后,在Hardware setup 右侧出ByteBlaster[LPT1],mode 的下拉菜单有JTAG,Passive Serial,Active Serial programing为设置正确的标志。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
常见问题汇总1. alt2gxb模块的每个发送端都需要一个高速的pll_inclk时钟(至少100M以上),请问这个时钟一定要从FPGA外面引进来吗?通常情况下一定要从FPGA外面引进来,首选是GXB模块的专用时钟引脚,或上下BANK 的专用时钟输入脚。
时钟是至少60M以上。
2. 如果我一个FPGA里面有多个alt2gxb模块,是否能共用一个这样的输入时钟?可以。
3. gxb模块里面的Calibration clk 是干嘛用的,能不能不用它?校准内部匹配电阻用。
此时钟可以内部提供,频率在10M到125M都可以,如果外部时钟不合适的话,甚至可以用逻辑来分频(比如参考钟是156M,内部触发器作个2分频就可以用了。
4. 用到gxb模块的bank的参考电压是否必须接1.5V?因为我看到资料上有3.3V的CML和LVDS电平(附件里面的截图)gxb用1.5V 或 1.2V, 推荐客户用1.5V. 3.3v是用在别的普通bank的。
5. gxb模块的输入端如果平时不需要传数据,是否置0?还是需要我们在数据线上发送别的数据,是否gxb模块能自动发送同步码?平时可以置0,但在上电后,你必须首先发送对端接收侧的word aligner码型(通常用k28.5), 这是需要手工控制的。
6. LVDS模块没有同步码,做接收时好像没办法数据对其,比如8比特数据容易错开2、3位,我们现在是另外加逻辑把它调整过来的,请问有别的好的同步的方法吗通常需要逻辑去进行word aligner操作,如同GXB一样。
某些特定情况下可以预先知道边界。
这个问题讨论过好多次了,所谓的特定情况你可以看STRATIX II手册(不是Stratix II GX 手册),搜索“Differential I/O Bit Position”7.请问在alt2gxb模块,有两个时钟:pll_inclk和cali_clk,手册上说cali_clk要求不是很高,可以用计数器产生,那么输入的并行数据txdata_in应该用哪个时钟锁存呢?cali_clk仅用于校准内部匹配电阻用的状态机,跟业务是完全独立的。
txdata_in应该用tx_clkout锁存。
8.pll_inclk可不可以用内部锁相环产生,然后输出经过一个差分时钟驱动,再送到gxb所在bank的REFCLK引脚?或者直接内部锁相环产生,直接送给gxb模块使用?出于时钟质量考虑,我们不推荐用FPGA内部的锁相环来提供GXB的参考时钟,尤其是2SGX工作在3Gbps以上时。
速率低时如果客户一定要用PLL级联,在quartus.ini文件(注意该文件不是自动产生的,需要用户自己创建,放在当前工程根目录下)中包含下面这句话,如你描述的通过外部走线绕一下提供参考时钟没有必要。
siigx_allow_pll_cascade_to_tx_pll=on9.在仿真时我直接加入激励数据给发送模块,它的串行输出再直接复制给接收模块,可是没有任何结果,请问有没有一种有效的仿真方法来仿真alt2gxb模块?仿真时你需要激励一下powerdown信号,起始给高电平,过一会儿拉低。
同时提供准确频率的参考时钟。
10.如果某个bank用到了LVDS模块,是不是这个bank的参考电压应该接2.5V,而IO电压仍然3.3V?对lvds, IO电压是3.3V,参考电压不需要提供11. 我在130 II gx里面放了几个GXB模块,设置的是100M输入时钟,数据率4G,线宽是32位,这样模块就没有rx_outclk这个信号线了,那么receiver的输出数据靠哪个时钟来锁呢?你把rate matcher那个功能取消掉就可以由rx_outclk的输出了12. 还有综合的时候报错说:CRU output frequency 2398.1M of the receiver PLL of GXB receiver channel atom .... must be in the frequency range of 310.9M to 1564.9M请问这个问题怎么解决?因为客户选的是C5,Transceiver速率到不了4G。
详见IIGX Handbook Table 6-6和Table 6-713、如果GXB的引脚硬件上p\n画反了怎么办?在软件中设置下面管脚可以控制p\n的极性。
14、GXB输出电平是什么标准?跟光收发器怎么接?GXB输出为1.5V PCML电平,与LVPECL不同,LVPECL支持速度一般不高,<2Gbps,CML适用于高速场合。
通过交流耦合,可以和LVDS、LVPECL、3.3V PCML接口相连。
跟光收发器间需要加交流耦合,跟距离无关,主要是隔直流,使得GXB和光收发器可以独立供电;对光收发器接口没有特殊要求。
15、IIGX设计时,电源用多大的合适?客户用EP2SGX90EF1152C5,核电压和IO电压分别用3A线性电源供电,不过他只用了一路光纤,逻辑资源也用的不是很多。
用EP2SGX130GF1508C5时,7路光纤3.125Gbps,资源按80%,EPE估算结果为7W 多,客户按10W设计。
详细数据见“D:\资料\Altera\datasheet\总结\功耗估算”。
16、仿真时是否可以设置字节对齐字符为任意字符?可以,不过需要选择Flip word alignment pattern bits。
如果选择了8B/10B编码还是建议选择标准K码。
17、数据8bits,速率2Gbps,那加了8B/10B后速率是多少呢?速率还是2Gbps,但是效率变为80%,因为加了2bits的开销。
18、使用GXB时,发送数据前是不是必须发Control Pattern,应该发多少个?Yes. It's depend on how many frequency offset (sucha as +/-100ppm or +/-300ppm) you want to compensate, this is included in the protocol specification.19、Skip pattern和Control pattern有何区别?You can refer to data sheet for details. In following picture, K28.5 is control pattern and K28.0 is skip pattern.20、接收时,PLL和参考时钟何时匹配?详见IIGX Transceiver User Guide 2-6321、用语言调用GXB,Fit始终报下面错误:Error: Can't place input pin "rx_datain_1" in Pin_E1 because the pin is not connected to GXB Transceiver logic but the location is GXB Receiver pin.Error: The node "rx_datain_1" is connected to or is part of a gigabit transceiver that must be placed into region "CUSTOM_REGION_X62_Y0_X62_Y37". However, your location assignment "PIN E1" is incompatible.Error: Can't place input pin "rx_datain_1" in Pin_E1 because the pin is not connected to GXB Transceiver logic but the location is GXB Receiver pin.Error: Can't fit design in deviceYou don't use any output of the GXB receiver side, so the receiver is synthesized off. Please use virtual pin or STP file to reserve the GXB receiver.22、导致 rx_pll_locked=0的是输入时钟不好还是电路板上没有串行数据输入(或串行输入数据不好)?注意gx器件的rx pll和rx cru是共用一个VCO的。
在正常情况下(自动模式),上电后,VCO会先锁定参考时钟,rx_pll_locked变高之后,VCO会切换到锁输入数据状态,此时rx_freqlocked会变高。
当VCO锁定在输入数据时,也就是rx_freqlocked信号是高电平时,VCO的频率跟本地参考时钟的频率没有本质关系了,所以rx_pll_locked失去了意义了,无论高或低不代表任何含义。
用户只需要关心rx_freqlocked信号能否稳定在高电平,稳定在高电平表示输入数据能够正确锁定,如果rx_freqlocked在高低变化,说明输入数据还没有锁定,可能时没有串行数据输入或者数据不好。
rx_pll_locked通常情况下不需要去关心,只有rx_freqlocked无法稳定在高电平,用户又认为输入数据是好的的情况下,可以采用手动模式,强行把vco锁定在参考时钟上,来观察rx_pll_locked信号,作为一种问题定位的辅助手段。
23、 GXB的复位信号应该如何给?24、EP2SGX90EF1152和EP2SGX60EF1152在QII7.2做Migration时,显示如下(IIGX90在前),L9竟然是NC。
查阅pin定义后发现,从06-08-10的1.3版本开始,IIGX90已经将L9更改为VCCA了,并有注释(3):Prior designs using the F1152 packages which assign L9 or W12 as NCs do not require any modification to the board. Assigning VCCA to L9 and W12 is required for future designs with the need for vertical migration。
说明QII7.2中L9显示的有问题,需要特别注意!25.请问是否有预加重和均衡的参数调试指导手册?或者对通常应用的经验值参考?The settings of preemphasis and equalization are depended on the channel attenuation. No common setting for individual case.You must use scope to adjust the preemphais, or simulate it to get the right preemphasis and equalization value.Altera just released the "Plug & Play Signal Integrity" which enable the ADCE in SIIGX, then the customer doesn't need to set the equalization manually. You can refer to webpage:/technology/signal/ppsi/sgl-plug-and-play-si.html(08年后新的技术问题)26、关于JIC文件的加载:由于JIC文件可以通过JTAG口加载到EPCS中,可以省掉AS 插座,对于电路板面积比较紧张的工程很有帮助。