FPGA烧写问题.docx
《FPGA烧写问题.docx》由会员分享,可在线阅读,更多相关《FPGA烧写问题.docx(22页珍藏版)》请在冰豆网上搜索。
FPGA烧写问题
alteracyclone器件告别AS下载模式,直接用JTAG配置器件进行编程
看CYCLONEII的器件手册时,看到一段关于配置器件的描述:
可以通过JTAG接口对串行配置器件进行编程,可是里面没有详细的使用方法,在altera的网站上找到了一些关于这个的资料
先介绍一下SFL:
SerialFlashLoader,它是通过JTAG接口在系统编程(isp)串行配置器件。
这种方法主要是通过FPGA作为一个JTAG与串行配置器件之间的桥梁,优点是能通过一个JTAG接口对器件进行配置,缺点是慢,因为在编程前要对FPGA进行配置。
废话少说,首先编译生成SOF文件,也就是JTAG方式下的下载文件,然后
1在“文件”里选择“ConvertProgrammingFiles”,出现对话框后
2在programmingfiletype里选.jic
3在configurationdevice里选择相应的串行配置器件
4filename选择转换文件
5选sofdata,单击addfile选择sof文件
6flashloader单击adddevice选择FPGA器件
然后OK生成JIC文件,后面的事情跟JTAG下下载一样,只是将文件类型选为JIC文件,可惜我转换的时候选EPCS1时,老提示容量不够,选EPCS4就没有问题了,大家可以试试。
cyclone器件,jtag和as下载模式
JTAG是直接烧到FPGA里面的,由于是SRAM,所以断电后要重烧;
AS是烧到FPGA的配置芯片里保存的,每次上电就写到FPGA里;
pof文件可以通过as方式下载(保证byteblasterII/usbblaster连接正确);
sof文件或者转换的jic可以通过jtag方式下载;
这两种下载模式使用的接口外形是完全一样的,要注意区分!
使用FlashLoader(JTAG模式)下载EPCS器件
一般来说Altera公司Cyclone或者CycloneII系列FPGA相应的配置器件会选择EPCS系列串行FLASH。
一般使用AS模式下载EPCS系列器件。
但有时候可能遇到AS模式不能成功下载的案例,原理图以及PCB板都是按照推荐电路设计,这时候我们可以通过FlashLoader检验EPCS器件是否良好。
即通过JTAG方式下载EPCS系列器件。
如果这种方式还是不能进行正确的AS模式的下载的话,可能EPCS器件本身已经不能正常工作了,此时可以建议客户更换配置芯片了。
:
)
使用FlashLoader(JTAG下载模式)下载EPCS器件的步骤如下:
1.把需要下载的工程文件生成xx.sof。
2.点击File菜单,选择ConvertProgrammingFiles…如图一所示。
图一:
File选项
3.在执行完第2步后跳出图二所示的界面。
鼠标左键点击Programmingfiletype栏目的下拉箭头,选择JTAGIndirectconfigurationFile(.jic)项。
图二:
ConvertProgrammingFiles界面
图三:
选择相应的JTAG下载文件界面
4.完成步骤3后选中Inputfilestoconvert栏目中的SOFData,左键点击AddFile按钮。
找到生成的相应的sof文件并打开,此时相应的sof下载文件出现在相应的界面中。
图四:
添加相应的SOF文件
5.选中FlashLoader,左键点击AddDevice…按钮
图五:
选择FlashLoader并添加器件
6.在跳出的SelectDevices界面下选择相应的器件。
(这里以EP2C5为例)点击ok器件选择完毕。
图六:
SelectDevices界面
7.完成以上步骤后就可以转换生成相应的下载文件了。
图七:
Generate文件界面
顺便提醒一下,不要忘记把Configurationdevice选为您所使用的EPCS4或者EPCS1.
8.以下的下载步骤与我们普通的JTAG下载过程基本一致了,但需要注意的是这里下载文件必须选择所生成的jic文件。
打开Programmer窗口,如图八所示。
图八:
Programmer窗口说明
9.按照图九所提示AddFile找到并打开生成的jic文件。
最后左键点击Start按钮大功告成!
编程与配置FPGA---Jtag&AS
可以通过两种模式配置FPGA,一种是JTAG模式,通过下载线直接配置FPGA,掉电后FPGA的配置内容会丢失,再次上电时需要用电脑对FPGA重新配置;另一种模式是AS模式,通过下载线对串行配置器件EPCS进行编程,板子上电后,EPCS器件自动配置FPGA。
前者使用sof文件,后者使用pof文件。
sof是SRAMObjectFile,下载到FPGA中,断电丢失。
pof是ProgrammerObjectFile,下载到配置芯片EPCS中,上电重新配置FPGA
FPGA烧写问题
比如说AlteraFPGA,对于大部分芯片都可以同时采用2种编程方法,即AS+配置芯片方式以及JTAG方式,下载电缆都可以通用,比如ByteBlasterII;
用AS+配置芯片方式,就是可以将程序下载到配置芯片中,配置芯片(如EPCS系列)就是一块EPROM,它可以在每次系统上电的时候,都自动将程序烧写到FPGA中,这样一来FPGA就用不着每次上电都重新烧写了,跟使用CPLD时是一样的。
这种方式下采用的下载文件是POF文件。
用JTAG方式的话,就是直接将程序下载到FPGA中,由于FPGA中是基于SRAM结构的,所以每次断电之后程序就没有了,所以必须每次上电都重新下载。
用JTAG方式的好处在于便于调试,比如我们可以用QuartusII中的SignalTapII嵌入式逻辑分析仪进行FPGAI/0引脚上信号的实时观测,非常的方便。
这种方式下采用的下载文件时SOF文件。
另外,如果使用了某些没有License的IPCore资源的话,那么必须在JTAG方式下,把下载线连在FPGA上才能使用,而且通常有时间限制,超过时限之后,就需要重新编译程序,产生新的SOF下载文件。
如果以上2种方式同时使用,需要2跟接线柱,一根下载线,一套配置成AS方式,一套配置成JTAG方式。
前期使用JTAG方式调试,待FPGA功能成型之后,就可以用AS方式将程序固化到配置芯片中去,以后就不用每次上电都重新下载了。
2种方式具体的连接图,看看Altera官方发布的配置手册就可以了,很简单的
alteraaltera对JTAG电缆、器件上电有顺序要求!
另外,按照参考手册,jtag都是2.5V供电。
你的jtag电缆是否支持2.5V?
还有,你的程序里面双向IO口有没有可能没控制好,和外面的ASIC发生冲突造成短路?
以前用过ep3c80,插拔电缆时很容易把jtag口烧掉,那次运气,只是jtag坏掉了,芯片没烧
PHY芯片的MII接口(发往FPGA)的差分信号线上没有限流电阻,因为FPGA的IO口电流范围为10uA,而PHY的输出电路为微安级mA的,这在长时间情况下会不会造成FPGA芯片损坏?
Altera术语翻译对照
3rdPartyEDASynthesis
第三方EDA综合工具
3rdPartyFormalVerification
第三方一致性验证
A
ActiveParallel(AP)
主动并行配置(AP)
ALM
自适应逻辑模块(ALM)
AlteraCompleteDesignSuite
Altera完整设计开发包
AlteraInstaller
Altera安装工具
AlteraLicenseSetup
Altera授权设置
AN522version2.0
AN522版本2.0
Analysis&Synthesis
分析与综合
Archives
归档
AssignmentEditor
约束编辑器
B
BaseAddressRegister
基址寄存器(BAR)
BoardDesignandLayout
板级设计及布板
BoardTest,DesignandLayout
板级测试,设计及布板
bursttransfers
突发传输
C
Cache
高速缓存
ChipEditor
芯片编辑器
Comm,Interface&Peripherals
通讯,接口及外设
Compile
编译
Component
元件/组件/器件
Configuration(FPGA)
配置(FPGA)
Cyclone®IIIautomotivegradedevices
Cyclone®III汽车级器件
D
Dataaccess
数据访问
datapath
数据通路
DCFIFO
异步FIFO(DCFIFO)
DDR
DDR(外部存储器接口)
DDRcontroller
DDR控制器
DemonstrationDesign
示例设计
DesignEntry/Planning
设计输入/规划
DesignPartition
设计分区
designsecurity
设计安全
DigitalSignalProcessing(DSP)
数字信号处理
DLL
延时锁相环(DLL)
downtraining
下行训练
downloadmanager
下载管理器
DSPBlock/MultiplierBlock
DSP块/乘法器块
DSPcapabilities
DSP功能
dual-purposepins
多功能复用管脚
DynamicOn-ChipTermination(OCT)
动态片内匹配(OCT)
Dynamicparalleltermination
动态并行匹配
DynamicReconfiguration
动态重配置
Dynamicseriestermination
动态串行匹配
E
ErrorMessage
错误信息
Ethernet
以太网
ExternalMemoryInterfaces
外部存储器接口(IP)
F
FastPassiveParallel(FPP)
快速被动并行配置(FPP)
Fitter
布局布线器
FunctionalBlocks
功能模块
G
GeneralArchitecture(NonI/O)
通用架构(非I/O)
generator
生成器
gerberfile
光绘文件
GigabitTransceiver
千兆速率收发器
GUI
图形界面(GUI)
H
HardIP
硬核IP
Highfunctionality/highperformance
高性能
I
IFF
敌我识别(IFF)
implement
实现
incrementalcompilation
增量式编译
InstructionSet
指令集
In-System/CircuitProgramming
在系统编程
IntegratedSynthesis
集成综合器
InternalError
内部错误(InternalError)
InterruptServiceRoutine
中断服务程序
InterruptsorReset
中断或复位
IOE
I/O单元
IPSpecandProtocol
IP规格及协议
K
knownissue
已知问题
L
latchinferencewarnings
锁存器推断告警
license/licensing
许可
linktraining
链路训练
Logicelement
逻辑单元
LUT
查找表/查找表模块(LUT)
M
Memory
存储器
Memory/DSPBlocksInference
存储器/DSP块的推断
metadata/meta-data
元数据
modules
模块
N
NiosIIIDE
NiosII集成开发环境
O
offset
偏置/偏移量
On-ChipDebug
On-Chip调试
on-chipmemory
片内存储器
P
ParallelFlashLoader
并行Flash加载
ParallelSynthesis
并行综合
PassiveSerial(PS)
被动串行配置(PS)
patch
补丁
PCIExpress-to-DDR2referencedesign
PCIExpress到DDR2SDRAM参考设计
Physicalcodingsublayer(PCS)
物理编码子层(PCS)
Physicalmediaattachment(PMA)
物理介质附加子层(PMA)
PhysicalSynthesis
物理综合
PinPlanning/Management
管脚分配/管理
placeandroutealgorithms
布局及布线算法
PlacementRequirements
布局要求
PLLReconfiguration
锁相环重配置
PowerAnalysis/Management
功耗分析及管理
PowerSupplyDesign
电源设计(功耗)
prefetchable
可预取的
Programming(CPLD/ConfigDev)
编程(CPLD/配置器件)
Q
QIIClassicTimingAnalysis
QII早期的TAN时序分析器
QuartusIIProjects/Revisions
QuartusII工程/版本管理
QuartusIIStand-AloneProgrammer
QuartusII独立编程器
R
ReferenceDesign
参考设计
referencedesignpack
参考设计包
Rootport
root端口
S
SCFIFO
同步FIFO(SCFIFO)(synchronous)
Schematic
原理图
SerialFlashLoader(SFL)
串行闪存加载器(SFL)
Serialprotocol
串行协议
Setup/hold
建立/保持(时间)
Setup/hold
建立/保持(时间)
SignalIntegrity
型号完整性(I/O)
slave
从(端/设备)
Synthesis&NetlistViewers
综合/网表检查
SystemConsole(Emb)
系统控制台(嵌入式)
T
testbench
测试平台/文件/向量
timinganalyzer
时序分析器
Timingclosure
时序收敛
Transceiver
收发器
V
viewfullsize
查看大图
W
WarningMessage
告警信息
DDRAM
严格的说DDR应该叫DDRSDRAM,人们习惯称为DDR,部分初学者也常看到DDRSDRAM,就认为是SDRAM。
DDRSDRAM是DoubleDataRateSDRAM的缩写,是双倍速率同步动态随机存储器的意思。
DDR内存是在SDRAM内存基础上发展而来的,仍然沿用SDRAM生产体系,因此对于内存厂商而言,只需对制造普通SDRAM的设备稍加改进,即可实现DDR内存的生产,可有效的降低成本。
SDRAM在一个时钟周期内只传输一次数据,它是在时钟的上升期进行数据传输;而DDR内存则是一个时钟周期内传输两次次数据,它能够在时钟的上升期和下降期各传输一次数据,因此称为双倍速率同步动态随机存储器。
DDR内存可以在与SDRAM相同的总线频率下达到更高的数据传输率。
与SDRAM相比:
DDR运用了更先进的同步电路,使指定地址、数据的输送和输出主要步骤既独立执行,又保持与CPU完全同步;DDR使用DLL(DelayLockedLoop,延时锁定回路提供一个数据滤波信号)技术,当数据有效时,存储控制器可使用这个数据滤波信号来精确定位数据,每16次输出一次,并重新同步来自不同存储器模块的数据。
DDR本质上不需要提高时钟频率就能加倍提高SDRAM的速度,它允许在时钟脉冲的上升沿和下降沿读出数据,因而其速度是标准SDRA的两倍。
从外形体积上DDR与SDRAM相比差别并不大,他们具有同样的尺寸和同样的针脚距离。
但DDR为184针脚,比SDRAM多出了16个针脚,主要包含了新的控制、时钟、电源和接地等信号。
DDR内存采用的是支持2.5V电压的SSTL2标准,而不是SDRAM使用的3.3V电压的LVTTL标准。
DDR内存的频率可以用工作频率和等效频率两种方式表示,工作频率是内存颗粒实际的工作频率,但是由于DDR内存可以在脉冲的上升和下降沿都传输数据,因此传输数据的等效频率是工作频率的两倍。
液晶显示中的DDRAM、CGROM和CGRAM的作用
DDRAM:
显示用ram,直接和屏幕上的点相对应.屏幕上的一个点和ddram中的一个位对应,字符屏的ddram和图形屏的ddram有一点点区别。
CGROM:
字模存储用空间。
你要显示某个ascii字符时,要显示字符的字模就存在这里。
(存储字模的方式,请打开windows的画笔,在里面写个A字,然后放大8倍,你就知道了)
对于字符屏,要显示某个字符时,往ddram里写字符的索引(一般都是ascii码)就可以完成显示。
比如你写0x38,则显示为数字8。
字符屏的ddram一般和ic能显示的最大字符数相同。
有的ic可以控制显示80个字符,但屏幕只显示20个字符
对于图形屏,往ddram里写什么样的数据,屏幕上就会显示什么样的点,比如你写0x38,则显示00111000。
图形屏的ddram一般都会比屏幕显示大个2倍以上,为的是简化翻屏,以及实现其他特殊显示效果。
CGRAM是用户自建字模区,有时ascii码表不能满足个人对字符的要求,则需要在这里写入字模。
字模的方式和cgrom中的一样。
一般写入到这里的字模,其索引值为(0x00~0x07),建立好字模后,往ddram中写索引0x00,新建的字符就会显示出来。
不管你是一名逻辑设计师、硬件工程师或系统工程师,甚或拥有所有这些头衔,只要你在任何一种高速和多协议的复杂系统中使用了FPGA,你就很可能需要努力解决好器件配置、电源管理、IP集成、信号完整性和其他的一些关键设计问题。
不过,你不必独自面对这些挑战,因为在当前业内领先的FPGA公司里工作的应用工程师每天都会面对这些问题,而且他们已经提出了一些将令你的设计工作变得更轻松的设计指导原则和解决方案。
FPGA设计需注意的方方面面
I/O信号分配
可提供最多的多功能引脚、I/O标准、端接方案和差分对的FPGA在信号分配方面也具有最复杂的设计指导原则。
尽管Altera的FPGA器件没有设计指导原则(因为它实现起来比较容易),但赛灵思的FPGA设计指导原则却很复杂。
但不管是哪一种情况,在为I/O引脚分配信号时,都有一些需要牢记的共同步骤:
1.使用一个电子数据表列出所有计划的信号分配,以及它们的重要属性,例如I/O标准、电压、需要的端接方法和相关的时钟。
2.检查制造商的块/区域兼容性准则。
3.考虑使用第二个电子数据表制订FPGA的布局,以确定哪些管脚是通用的、哪些是专用的、哪些支持差分信号对和全局及局部时钟、哪些需要参考电压。
4.利用以上两个电子数据表的信息和区域兼容性准则,先分配受限制程度最大的信号到引脚上,最后分配受限制最小的。
例如,你可能需要先分配串行总线和时钟信号,因为它们通常只分配到一些特定引脚。
5.按照受限制程度重新分配信号总线。
在这个阶段,可能需要仔细权衡同时开关输出(SSO)和不兼容I/O标准等设计问题,尤其是当你具有很多个高速输出或使用了好几个不同的I/O标准时。
如果你的设计需要局部/区域时钟,你将可能需要使用高速总线附近的管脚,最好提前记住这个要求,以免最后无法为其安排最合适的引脚。
如果某个特定块所选择的I/O标准需要参考电压信号,记住先不要分配这些引脚。
差分信号的分配始终要先于单端信号。
如果某个FPGA提供了片内端接,那么它也可能适用于其他兼容性规则。
6.在合适的地方分配剩余的信号。
在这个阶段,考虑写一个只包含端口分配的HDL文件。
然后通过使用供应商提供的工具或使用一个文本编辑器手动创建一个限制文件,为I/O标准和SSO等增加必要的支持信息。
准备好这些基本文件后,你可以运行布局布线工具来确认是否忽视了一些准则或者做了一个错误的分配。
这将使你在设计的初始阶段就和布局工程师一起工作,共同规划PCB的走线、冗余规划、散热问题和信号完整性。
FPGA工具可能可以在这些方面提供帮助,并协助你解决这些问题,因此你必须确保了解你的工具包的功能。
你咨询一位布局专家的时间越晚,你就越有可能需要去处理一些复杂的问题和设计反复,而这些可能可以通过一些前期分析加以避免。
一旦你实现了满意的信号分配,你就要用限制文件锁定它们。
图:
(a)未采用Fusion架构的典型系统板结构;(b)采用Fusion架构的典型系统板结构。
信号完整性
大多数先进FPGA能够处理速度为数百兆赫兹的并行总线和具有工作在千兆赫兹范围的串行接口。
以这么快的速度工作时,你需要了解信号完整性的原理,因为高频信号的处理会给我们精确简单的数字世界带来一连串模拟设计问题。
安排一些时间阅读FPGA供应商提供的文献。
即使你对某个器件或者供应商的信息已经烂熟于心,也有必要参考其他供应商提供的文档,因为不同公司的文档往往有不同的见解。
你将会发现在很多问题上不同的供应商拥有不同的观点,如什么会产生高速信号、切换信号之间可以存在多少时延而仍然可以认为它们是同时的等等。
FPGA供应商的工具通常可以很好地执行一些基本的信号完整性分析,因此你必须完全了解你所获得的工具包的所有潜能。
此外,目前市场上有几百种关于信号完整性和降噪的书。
如果你是个新手或者需要一个进修课程,你可以考虑阅读DouglasBrooks编写的“信号完整性问题和PCB设计”。
如果需要进行更深入的探讨,可以阅读HowardJohnson编写的“高速数字设计”。
FPGA可能会由于太多的高速SSO而对系统中的信号(或其它FPGA信号)带来严重破坏,因为这会导致称为同时切换噪声(SSN)的噪声。
SSN也叫做地反弹或VCC反弹,对于单端标准,SSN是在输出由低到高时提供瞬态电流和由高到低时吸收瞬态电流的过程中,由多个输出驱动器同时切换和导致器件电压与系统电压之间的变化而引起的。
在高到低的转换引起地反弹时,由低到高转换也会导致VCC下降。
由于电容通常安放在VCC和接地层之间,因此SSN典型地存在于这两个地方。
由低到高转变时地反弹也有可能出现。
于是,SSO变成了干扰信号,它会产生可能耦合到邻近信号的噪声。
对于某个区域而言太多SSO