欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    CPLD FPGA 在线升级程序.docx

    • 资源ID:3060622       资源大小:42.96KB        全文页数:13页
    • 资源格式: DOCX        下载积分:6.99金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要6.99金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    CPLD FPGA 在线升级程序.docx

    CPLD FPGA 在线升级程序用CPU配置Altera公司的FPGA 一. 概 述 目前很多产品都广泛用了FPGA,虽然品种不同,但编程方式几乎都一样:利用专用的EPROM对FPGA进行配置。专用的EPROM价格不便宜,且大不跟上都是一次性OPT方式编程。一旦更改FPGA设计,代价不小。 为了进一步降低产品的成本和升级成本,可以考虑利用板上现有CPU子系统中空闲的ROM空间存放FPGA的配置数据,并由CPU模拟专用EPROM对FPGA进行配置。 本文将以PowerPC860和EP1K30为例,讲解如何利用CPU来配置FPGA。 CPU配置FPGA的优点 与Configuration EPROM方式相比本设计有如下优点: 1 降低硬件成本省去了FPGA专用EPROM的成本,而几乎不增加其他成本。以ALTERA的10K系列为例,板上至少要配一片以上的EPC1,每片EPC1的价格要几十元,容量1M位。提供1Mb的存储空间,对于大部分单板来说,是不需要增加硬件的。即使增加1Mb存储空间,通用存储器也会比FPGA专用EPROM便宜。 2 可多次编程FPGA专用EPROM几乎都是OTP,一旦更换FPGA版本,旧版本的并不便宜的EPROM只能丢弃。如果使用本设计对FPGA配置,选用可擦除的通用存储器保存FPGA的编程数据,更换FPGA版本,无须付出任何硬件代价。这也是降低硬件成本的一个方面。 3 实现真正"现场可编程"-FPGA的特点就是"现场可编程",只有使用CPU对FPGA编程才能体现这一特点。如果设计周全的话,单板上的FPGA可以做到在线升级。 4 减少生产工序-省去了对"FPGA专用EPROM"烧结的工序,对提高生产率,降低生产成本等均有好处。对于双面再流焊的单板,更可省去手工补焊DIP器件的工序。 当然,与Configuration EPROM方式相比也有一些需要注意的的地方: 1 需要CPU提供5根I/O线-一般来说,这并不困难。对于MPC860一类的CPU来说,区区5根I/O线是不成问题的。即使是某些设计中实在没有多余的I/O供配置使用,也可通过板上的PLD扩展。虽然这样做可能会增加成本,但获得的真正"现场可编程"的功能是非常宝贵的。 2 CPU的Boot应不依赖于FPGA-这在单板设计时需要特别考虑的。由于CPU对FPGA进行配置所需的资源很少,这一点比较容易做到。 设计摘要 本设计严格按照FPGA的PS配置流程进行,并在配置过程中始终监测工作状态,在完善的软件配合下,可纠正如上电次序导致配置不正常等错误。因此,采用此方法对FPGA进行配置,性能将优于Configuration EPROM方式。 本设计是利用板上现有CPU子系统中空闲的ROM空间存放FPGA的配置数据,并由CPU模拟专用EPROM对FPGA进行配置,以降低硬件成本并实现FPGA的在线升级。 本设计已在MPC860和EP1K30环境下完成验证,适用于有5个多余I/O的CPU对Altera 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 、PS、PPS、PPA、JTAG。 本设计采用PS方式对FPGA进行配置,是基于如下几个方面的考虑: 1 PS方式连线最简单 2 与Configuration EPROM方式可以兼容 3 与并行配置相比,误操作的几率小,可靠性高 只需利用CPU的5个I/O线,就可按图 2所指示的时序对FPGA 进行PS方式的配置。 2.配置电路的连接 CPU仅需要利用5个I/O脚与FPGA相连,就实现了PS方式的硬件连接,具体信号见下表: 信号名 Data0 DCLK nCONFIG I/O O 说明 configuration data O configuration clock O device reset (a low to high transition starts the configuration within the device) Conf_done I Status bit (gets checked after configuration, will be high if configuration complete) nSTATUS I Status bit indicating an error during configuration if low 图 3 PS配置单片FPGA的硬件连接 图 4 PS配置多片FPGA的硬件连接 3.配置操作过程 CPU按下列步骤操作I/O口线,即可完成对FPGA的配置: 1 nCONFIG="0"、DCLK="0",保持2S以上。 2 检测nSTATUS,如果为"0",表明FPGA已响应配置要求,可开始进行配置。否则报错。正常情况下,nCONFIG="0"后1S内nSTATUS将为"0"。 3 nCONFIG="1",并等待5S。 4 Data0上放置数据,DCLK="1",延时。 5 DCLK="0",并检测nSTATUS,若为"0",则报错并重新开始。 6 准备下一位数据,并重复执行步骤4、5,直到所有数据送出为止。 7 此时Conf_done应变成"1",表明FPGA的配置已完成。如果所有数据送出后,Conf_done不为"1",必须重新配置。 8 配置完成后,再送出10个周期的DCLK,以使FPGA完成初始化。 注意事项: 1 DCLK时钟频率的上限对不同器件是不一样的,具体限制见下表: 型号 ACEX1K、FLEX10KE、APEX20K FLEX10K APEXII、APEX20KE、APEX20KC Mercury 最高频率 33MHz 16MHz 57MHz 50MHz 2 步骤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为例,电原理图如下: 图7 电原理图 软件 编程文件格式的转换 MAX+plusII或QuartusII生成的SOF或POF文件不能直接用于CPU配置FPGA中,需要进行数据转换才能得到软件可用的配置数据。在MaxplusII中的具体步骤如下: 1 进入数据转换对话框 图1 进入数据转换对话框 2.选择需要转换的SOF文件,对于配置多个FPGA的场合,应选择所有的SOF文件并排好次序。输出文件的格式我们选则二进制的rbf(Sequential)。 图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; i<8; i+) / DCLK="0"时,在Data0上放置数据 Set_Data0(FpgaBuffer&0x01); Set_DCLK(1); / DCLK->"1",使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; i<10; i+) Set_DCLK(1); DELAY100us; Set_DCLK(0); DELAY100us; Set_Data0(0); if (Read_nCONF_Done = 0) / 检测nCONF_Done,如果为"0",表明FPGA配置未成功 Err_LED(1); return 0; return 1; / 成功返回 / Data0输出 void Set_Data0(UBYTE setting) / PB24 if (setting) IMMR->pip_pbdat |= 0x00000080; else IMMR->pio_pbdat &= 0xFFFFFF7F; / 读nSTATUS状态 UBYTE Read_nSTATUS(void) / PB25 if (IMMR->pio_pbdat & 0x00000040) return 1; else return 0; / 设置nCONFIG电平 void Set_nCONFIG(UBYTE setting) / PB26 if (setting) IMMR->pip_pbdat |= 0x00000020; else IMMR->pio_pbdat &= 0xFFFFFFDF; / 读nCONF_Done状态 UBYTE Read_nCONF_Done(void) / PB27 if (IMMR->pio_pbdat & 0x00000010) return 1; else return 0; / 输出DCLK void Set_DCLK(UBYTE setting) / PB28 if (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输出,信号定义见下表: MPC860引脚 I/O PB24 PB25 PB26 PB27 PB28 信号名称 DATA0 nSTATUS nCONFIG CONF_DONE DCLK EP1K30引脚 156 52 105 2 155 O I O I O EP1K30所需要的配置数据为58kB,由于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设计定型后,焊上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口故障 FPGA故障 检查硬件连线 拔去下载电缆 用示波器检查PB24PB28信号波形 更换FPGA 经验教训 本模块在设计过程中有如下几个要点,请使用者注意: 1 CPU的启动必须不依赖于FPGA,这在单板设计时需要特别考虑的。即CPU子系统应在FPGA被配置前可独立运行并访问所需资源。CPU对FPGA进行配置所需的资源很少,一般来说,仅RAM和BootROM的访问而已。当然,其他挂在CPU总线上的设备必须处于非访问态,FPGA所控制的设备也应处于非工作态或不影响其他设备工作的稳定态。 2 为了实现FPGA的在线升级,存放FPGA配置数据的区域必须是CPU可重写的 3 利用CPU配置FPGA,在使用者的主观感觉上会觉得FPGA"起来"得比较慢。这是因为FPGA的配置要等CPU启动完成后才进行。因此,应充分考虑FPGA所控制的设备在FPGA被配置完成前处于非工作态或不影响其他设备工作的稳定态。 4 关于配置数据占用空间的问题。对于Altera的FPGA来说,每个确定型号的器件,配置数据的长度是一定的。因此,一旦确定了FPGA的型号,配置数据占用EPROM的空间也可以在设计中确定。 5 在使用中请保留下载电缆插座,以加快调试进度。 6 下载成功后,软件应有指示,便于维护。 7 要从系统的角度考虑现场升级,保护好FPGA数据。 8 单板调试时电缆下载的问题。为了兼容两种下载方式,需要电缆下载时,可在CPU程序中跳过配置程序。 9 如果单板有可能使用电缆下载,必须考虑CPU的I/O能否忍受下载电缆信号电平

    注意事项

    本文(CPLD FPGA 在线升级程序.docx)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开