FPGA在线烧程序方法(用MCU直接配置FPGA)

上传人:小** 文档编号:50495911 上传时间:2022-01-20 格式:DOC 页数:16 大小:732KB
返回 下载 相关 举报
FPGA在线烧程序方法(用MCU直接配置FPGA)_第1页
第1页 / 共16页
FPGA在线烧程序方法(用MCU直接配置FPGA)_第2页
第2页 / 共16页
FPGA在线烧程序方法(用MCU直接配置FPGA)_第3页
第3页 / 共16页
点击查看更多>>
资源描述
用CPU配置Altera 公司的FPGA概述目前很多产品都广泛用了 FPG A虽然品种不同,但编程方式几乎都一样:利用专用的 EPRO对FPGA进行配置。专用的EPRO价格不便宜,且大不跟上都是一次性 OPT方式 编程。一旦更改FPGA设计,代价不小。 为了进一步降低产品的成本和升级成本,可 以考虑利用板上现有CPU子系统中空闲的ROM空间存放FPGA勺配置数据,并由CPU 模拟专用EPRO对FPGA进行配置。本文将以PowerPC860和EP1K3C为例,讲解如何 利用CPU来配置FPGACPU配置FPGA勺优点与 Configuration EPROM 方式相比本设计有如下优点:1. 降低硬件成本一一省去了 FPGA专用EPROM的成本,而几乎不增加其他成本。以A LTERA勺10K系列为例,板上至少要配一片以上的EPC1每片EPC啲价格要几十元, 容量1M位。提供1Mb的存储空间,对于大部分单板来说(如 860系统的单板),是 不需要增加硬件的。即使增加1Mb存储空间,通用存储器也会比FPGA专用EPROI便 宜。2. 可多次编程 FPGA专用EPROML乎都是OTP 旦更换FPGA版本,旧版本的 并不便宜的EPRO只能丢弃。如果使用本设计对 FPGA配置,选用可擦除的通用存储 器保存FPGA勺编程数据,更换FPGA版本,无须付出任何硬件代价。这也是降低硬件 成本的一个方面。3. 实现真正现场可编程-FPGA的特点就是现场可编程,只有使用CPU对FPGA 编程才能体现这一特点。如果设计周全的话,单板上的FPG/可以做到在线升级。4. 减少生产工序-省去了对FPGA专用EPROM烧结的工序,对提高生产率,降低生 产成本等均有好处。对于双面再流焊的单板,更可省去手工补焊 DIP 器件的工序。当然,与 Configuration EPROM 方式相比也有一些需要注意的的地方: 1.需要CPU提供5根I/O线-一般来说,这并不困难。对于 MPC86一类的CPU来 说,区区 5根 I/O 线是不成问题的。 即使是某些设计中实在没有多余的 I/O 供配置使 用,也可通过板上的PLD扩展。虽然这样做可能会增加成本,但获得的真正 现场可 编程的功能是非常宝贵的。2. CPU的Boot应不依赖于FPGA-这在单板设计时需要特别考虑的。由于 CPU对FP GA进行配置所需的资源很少,这一点比较容易做到。设计摘要本设计严格按照FPGA勺PS配置流程进行,并在配置过程中始终监测工作状态, 在完 善的软件配合下,可纠正如上电次序导致配置不正常等错误。因此,采用此方法对 FPGA进行配置,性能将优于 Configuration EPROM方式。本设计是利用板上现有 CPU子系统中空闲的ROM间存放FPGA勺配置数据,并由CP U模拟专用EPRO对FPGA进行配置,以降低硬件成本并实现 FPGA勺在线升级。本设计已在MPC86C和EP1K30环境下完成验证,适用于有 5个多余I/O的CPU对Alt era FPGA的配置。参考资料ALTERA:AN-116 Configuring SRAM-Based LUT Devices ALTERA: ACEX 1K Programmable Logic Device Family二 . 硬件设计1. 配置基本原理RAM-Based FPGA 由于 SRAM 工艺的特点,掉电后数据会消失。因此,每次系统上电后,均需对 FPGA 进行配 置。对于 Altera 的 FPGA,配置方法可分为:专用的 EPROM ( Configuration EPROM )、PS (Passive serial 无 源串行)、 PPS( Passive parallel synchronous 无源同步并行)、 PPA( Passive parallel asynchronous 无源异步并行)、JTAG (不是所有器件都支持) 1 LrLFLFLrL I-! i1LJ* X X X Hgh-Z Hioh-ZX initialization *X Usn,本设计采用PS方式对FPGA进行配置,是基于如下几个方面的考虑:1. PS方式连线最简单2. 与Configuration EPROM方式可以兼容(MSEL0、1设置不变)nCONFIG nSTATUS CONH DONE DCLK ATA3. 与并行配置相比,误操作的几率小,可靠性高L -L_m_TTrlpljtnjj I CC 4 X 偽)C J、只需利用CPU的5个I/O线,就可按图 2所指示的时序对FPGA进行PS方式的配置。2. 配置电路的连接CPU仅需要利用5个I/O脚与FPGA相连,就实现了 PS方式的硬件连接,具体信号见下表(信号方向从CPU侧看):信号名I/O说明Data0Oconfiguration dataDCLKOconfiguration clockn CONFIGOdevice reset (a low to high transition starts the con figurati on with in the device)Conf_doneIStatus bit (gets checked after configuration, will be high if configuration complete)nSTATUSIStatus bit indicating an error during configuration if lowMicroprocessorMSElLI-CONI- DONEMSELDnSJA7US-nCEnCEQ-DATAD-nCONF IG-DCLKAPEX IL APEX 20KACEX 1K. Mercury orFLEX 10K DeviceGND NC图3 PS配置单片FPGA的硬件连接图4 PS配置多片FPGA的硬件连接3. 配置操作过程CPU按下列步骤操作I/O 口线,即可完成对FPGA的配置:1. nCONFIG=0、DCLK=O,保持 2gS以上。2. 检测nSTATUS,如果为0,表明FPGA已响应配置要求,可开始进行配置。否则报错。正常情况下,nCO NFIG=0后 1 gS 内 nSTATUS 将为0。3. nCONFIG=1,并等待 5 gSo4. Data0 上放置数据(LSB first),DCLK=1,延时。5. DCLK=0,并检测nSTATUS,若为0,则报错并重新开始。6. 准备下一位数据,并重复执行步骤4、5,直到所有数据送岀为止。7. 此时Conf_done应变成1,表明FPGA的配置已完成。如果所有数据送出后,Conf_done不为1,必须重新 配置(从步骤1开始)。8 配置完成后,再送出10个周期的DCLK,以使FPGA完成初始化。注意事项:1. DCLK时钟频率的上限对不同器件是不一样的,具体限制见下表:型号最咼频率ACEX1K FLEX10KE APEX20K33MHzFLEX10K16MHzAPEXII、APEX20KE APEX20KC57MHzMercury50MHz2. 步骤7中FPGA完成初始化所需要的 10个周期的DCLK是针对 ACEX 1K和FLEX 10KE的。如果是 APEX 20K,则需要40个周期。3. 在配置过程中,如果检测到 nSTATUS为0,表明FPGA配置有错误,则应回到步骤 1重新开始图5操作流程框图4. 实现在线升级采用本模块的最大优点是可以实现单板FPGA的在线升级。要实现在线升级,单板设计必须考虑以下几个问题:1. CPU的启动必须不依赖于 FPGA ,即CPU子系统应在FPGA被配置前可独立运行并访问所需资源。CPU对FPGA进行配置所需的资源很少,一般来说,仅RAM和BootROM的访问而已。2. FPGA配置前(或配置过程中)必须保证控制的设备处于非工作态或不影响其他设备工作的稳定态。3. 为了实现FPGA的在线升级,存放 FPGA配置数据的存储器器必须是 CPU可重写的,且此存储器应是非易 失性的,以保证单板断电后,FPGA数据不需从后台重新获得。具体过程结合图6的实例,对FPGA在线升级作一具体描述。图6 FPGA在线升级1. 使用编译和连接工具,将 FPGA的第一个版本与 MPC860的工作程序连接在一起,分别占用地址为0x70000 -0X7FFFF 和 0x00000-0x6FFFF 的存储空间。2. 单板启动时,MPC860自动将0x70000-0x7FFFF的数据下载到 FPGA中,完成FPGA配置。3. 当FPGA需升级时,将新的 RBF配置文件放在后台计算机中。4. MPC860把BOOTROM的0x70000-0x7FFFF空间当作普通数据存储区,通过后台将新的RBF配置文件放在 0x70000-0x7FFFF 中。5. MPC860调用BOOTROM中的FPGA配置子程序,对 FPGA从新下载数据,完成 FPGA升级。以MPC860和Altera EP1K30为例,电原理图如下:软件编程文件格式的转换MAX+plusll或Quartusll生成的SOF或POF文件不能直接用于 CPU配置FPGA中,需要进行数据转换才能得到软件可用的配置数据。在 MaxplusIl中的具体步骤如下:1.进入数据转换对话框图1进入数据转换对话框2选择需要转换的SOF文件,对于配置多个FPGA的场合,应选择所有的SOF文件并排好次序。输岀文件的格式 我们选则二进制的rbf(Sequential)。(也可以选择其他格式,如HEX等,在CPU软件编写上会与本文例子略有区别,关于不同文件格式的区别,在altera的AN116号文档上有详细解释)图2选择相应的输岀数据格式在 QuartusII 软件的 file 菜单下,同样可以找到类似菜单进行格式转化。CPU 程序设计以 MPC860 为例,我们可以将转换完成的 RBF 文件作为二进制文件,直接写到 MPC860 系统的某一 ROM/Flash 区域。由于这段数据的起始地址和长度都是已知的,相应的软件编写是很方便的。本设计的 CPU 源程序void InitPORT(void) / 初始化 PB 口相应位:/ PB24-输出,PB25-输入,PB26-输出,PB27-输入,PB28-输出IMMR-pip_pbpar=0x00000000;IMMR-pip_pbdir=0xFFFFF5AF;IMMR-pip_pbodr=0x00000000;IMMR-pip_pbdat=0xffffff57;UBYTE Fpga_DownLoad(void) / FPGA 配置UBYTE *Bootaddr;UWORD CountNum=0x0;UBYTE FpgaBuffer, i;/ 获得 Boot 区首地址Bootaddr=(UBYTE *)(IMMR-memc_or0 & IMMR-memc_br0 & 0xFFFF8000);Set_nCONFIG(0); / nCONFIG=0 ,使 FPGA 进入配置状态Set_DCLK(0);DELAY5us();if (Read_nSTATUS() = 1) / 检测 nSTATUS ,如果为 0 ,表明 FPGA 已响应配置要求,可开始进行配置。否则报错Err_LED(1);return 0;Set_nCONFIG(1);DELAY5us();/ 开始输出配置数据:while(CountNum = 0x0e74e)FpgaBuffer= *(Bootaddr+0x70000+CountNum);for (i=0; i1 ,使 FPGA 读入数据FpgaBuffer = 1; / 准备下一位数据if (Read_nSTATUS() = 0) / 检测 nSTATUS ,如果为 0 ,表明 FPGA 配置出错 Err_LED(1);return 0;Set_DCLK(0);CountNum+;/ FPGA 初始化:/ ACEX 1K 和 FLEX 10KE 需要 10 个周期, APEX 20K 需要 40 个周期 for(i=0; ipip_pbdat |= 0x00000080;else IMMR-pio_pbdat &= 0xFFFFFF7F;/ 读 nSTATUS 状态UBYTE Read_nSTATUS(void) / PB25if (IMMR-pio_pbdat & 0x00000040) return 1;else return 0;/设置nCONFIG电平void Set_nCONFIG(UBYTE setting) / PB26if (setting) IMMR-pip_pbdat |= 0x00000020;else IMMR-pio_pbdat &= 0xFFFFFFDF;/ 读 nCONF_Done 状态UBYTE Read_nCONF_Done(void) / PB27if (IMMR-pio_pbdat & 0x00000010) return 1;else return 0;/输出DCLKvoid Set_DCLK(UBYTE setting) / PB28if (setting) IMMR-pio_pbdat |= 0x00000008;else IMMR-pio_pbdat &= 0xFFFFFFF7;/结束我们已在某单板上实现了该设计。现以该单板为例,说明如何实现CPU对FPGA的配置。在该单板上是使用 MPC860作CPU,BootROM 采用SST39VF040,一片FPGA型号EP1K30QC208-3。我们在 MCP860的PB 口选5根线与EP1K30连接成PS配置方式,硬件连接参考第二章,Data0也由MPC860输出,信号定义见下表:MPC86引脚I/O信号名称EP1K3C引 1 脚PB24ODATA0156PB25InSTATUS52PB26On CONFIG105PB27ICONF_DONE2PB28ODCLK155EP1K30所需要的配置数据为 58kB (准确的长度参见生成的 RBF文件),由于BootROM比较空,我们将配置数 据安排在BootROM的0x700000X7FFFF区间内。第一次的配置数据可利用编程器将 RBF文件当作二进制文件写到BootROM的起始地址为0x70000的区域,也可以通过 860仿真器把数据写到指定位置。 具体软件操作参见第二章。FPGA在线更改配置为检验FPGA在线升级的可能性,我们在CPU的BootROM中放置了不同逻辑的 FPGA配置数据。CPU正常运行 时,测试软件随意更换 FPGA的配置数据。在每次配置完成后,FPGA均能实现相应的逻辑功能。如果和系统软件配合,在线更改 EPROM中的配置数据,FPGA的在线升级是完全可以实现的。为了便于调试和实际生产,我们将 FPGA的初始配置数据放置在 BootROM中。如某些单板 BootROM的写功能 必须禁止,此时FPGA配置数据可放在其它存储器中,如存放应用程序的FLASH中,升级FPGA配置数据可以和升级应用程序一并完成。电缆下载为了提高调试进度,通常会采用电缆下载的方式。在单板上兼容这两种配置方式有多种办法,我们采用了比较简 单又便于生产的0欧姆电阻连接方式。电气连接的示意图如下:图1兼容电缆下载在最初调试FPGA时,R1R5不焊,直接用电缆下载。同时, MPC860的程序中跳过FPGA配置的代码。等FPGA设计定型后(相当于准备使用EPC1时),焊上R1R5,利用CPU配置FPGA。当然,R1R5也可改用跳线或拨动开关。这两种连接方式在开发调试中比0欧姆电阻方便,但实际使用中可靠性0欧姆电阻连接方式最0欧姆电阻连接方式。不如0欧姆电阻高,如跳线会出现短路块脱落、拨动开关会出现接触不良等现象。而且, 便于生产,价格也最低。建议开发阶段的单板可以用跳线或拨动开关,转产时采用在使用下载电缆时需要注意电源的选择。由于Altera以前的Byteblaster下载电缆是5V供电的,有不少设计都把下载电缆插座接到5V电源上,这种5V供电的下载电缆可能导致不能忍受 5V信号的CPU损坏。因此,使用本 模块时,下载电缆应使用低电压版本的ByteblasterMV,下载插座的电源接 3.3V。使用、调试、维护说明如果使用本模块岀现配置岀错,有如下可能:错误原因解决方法配置数据有错重新生成配置数据,并检查生成过程是否正确CPU输岀信号频率太高控制DCLK频率,具体数据参见“错误!未找到引用源。” 相关章节CPU与FPGA连接有误检查硬件连线下载电缆影响拔去下载电缆CPU的I/O 口故障用示波器检查PB24PB28信号波形FPGA故障更换FPGA经验教训本模块在设计过程中有如下几个要点,请使用者注意:1. CPU的启动必须不依赖于 FPGA,这在单板设计时需要特别考虑的。即CPU子系统应在FPGA被配置前可独立运行并访问所需资源。CPU对FPGA进行配置所需的资源很少,一般来说,仅RAM和BootROM的访问而已。当然,其他挂在 CPU总线上的设备必须处于非访问态,FPGA所控制的设备也应处于非工作态或不影响其他设备工作的稳定态。2. 为了实现FPGA的在线升级,存放 FPGA配置数据的区域必须是 CPU可重写的利用CPU配置FPGA,在使用者的主观感觉上会觉得 FPGA起来得比较慢。这是因为 FPGA的配置要等CPU 启动完成后才进行。因此,应充分考虑FPGA 所控制的设备在 FPGA 被配置完成前处于非工作态或不影响其他设备工作的稳定态。4 关于配置数据占用空间的问题。对于 Altera 的 FPGA 来说,每个确定型号的器件,配置数据的长度是一定的 (和设计逻辑无关)。因此,一旦确定了 FPGA 的型号,配置数据占用 EPROM 的空间也可以在设计中确定。5 在使用中请保留下载电缆插座,以加快调试进度。6 下载成功后,软件应有指示,便于维护7 要从系统的角度考虑现场升级,保护好 FPGA 数据8 单板调试时电缆下载的问题。为了兼容两种下载方式,需要电缆下载时,可在CPU 程序中跳过配置程序。9 如果单板有可能使用电缆下载,必须考虑CPU 的 I/O 能否忍受下载电缆信号电平
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!