0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于fpga编程flash芯片和配置数据技巧

电子设计 来源:互联网 作者:佚名 2017-12-13 13:58 次阅读

FPGA中实现在应用编程(In Application Pro—gramming,IAP)有两种方法:一种是,在电路板上加外电路。例如用MCUCPLD来接收配置数据,在被动串行(PS)模式下由外电路编程FPGA或是编程Flash器件(包括EPCS和Flash),然后控制FPGA的配置复位引脚来复位整个FPGA,最后FPGA采用主串方式进行自我配置。另一种是,通过FPGA中的Nios CPU或是专用IP来接收编程数据,并编程Flash芯片,然后通过外部简单电路将FPGA复位启动,以主动串行(AS)模式进行配置。

为了减小电路板面积,节约成本,提高可靠性,本设计采用第二种方法。本设计的要求是:硬件电路须配置为主动串行模式,即选择MSEL[1:O]为l:O;具备EPCS,或同时具备EPCS和Flash;具有与PC机通信的功能。FPGA接收更新数据,并将其存入Flash器件,然后复位Nios或FPGA对软硬件进行更新。

1 系统的硬件设计

系统主要由Cyclone FPGA、EPCS、Flash和串行通信等组成,硬件结构如图1所示。

硬件结构

点击看原图

EPCS采用Altera公司的EPCS4,容量达到4 Mb,引脚较少,成本低,支持3.3 V低电压操作。Flash芯片采用AMD公司的Am29LV640MH/L,支持3.O V低电压操作,具有低功耗特性,芯片容量为64 Mb,满足大容量数据的存储;并口操作,与Cyclone FPGA完全兼容,而且在SOPC中有与之对应的CFI_FLASH核,便于硬件电路的设计。

2 工作原理

2.1 几个概念

FPGA配置数据:是sof文件,将sof文件编程到Flash中,上电后FPGA可以从Flash中配置。sof文件是其他配置文件的基础,其他文件均可由sof文件转换得到。

软件数据:通过NiosII IDE创建elf文件,将用户程序编程到Flash中,允许复位后从F1ash中加载软件程序,从而启动NiosII CPU。

2.2 编程文件

编程文件为Flash格式的文件,即S—reeorld(简称“SREC”)格式。SREC格式是Motorola公司制定的一种烧写格式标准。SREC格式文件是由一组ASCII码组成,所有的十六进制数据均为大写形式,结构说明如下:

①起始代码。以S作为一个数据行的开始。

②记录类型。1个十进制数字(O~9),定义数据域的类型。

③字节数。1个字节,定义字节数之后除地址字节、校验字节之外其他字节的个数。

④地址。由4(或6、8)个字节组成,定义了第一个数据字节存储的位置。

⑤数据字节。由n个字节组成,数据字节为实际有效的编程信息

⑥校验字节。1个字节,作校验使用,所有十六进制字节相加后取8位,为0xFF。

2.3 AS配置模式

FPGA的配置数据存储在内部SRAM单元中。由于SRAM掉电后数据会丢失,因此每次上电时必须重新将配置数据写入SRAM中。这个过程称为“FPGA的配置”。由此可见,FPGA的配置信息是存储在FPGA内部RAM当中的。可知在主动串行模式下,FPGA将配置数据从EPGS中读取,然后存入内部RAM中。

AS配置模式支持StratixII和Cyclone系列的FPGA,通过配置MSEL[1:O]为1:0,选择主动配置模式(除JTAG模式不受MSEL控制外,其他配置方式均由MSEL决定)。AS配置模式使用串行配置器件(EPCS1/EPCS4/EPCSl6/EPCS64)。在AS配置过程中,StratixlI和Cy—clone系列的FPGA是主设备,串行配置器件为从设备。如图2所示,在AS配置模式下,FPGA通过DATA0接收配置数据,配置数据和DCLK是同步的。每个时钟周期传输1位配置数据。通过控制nCONFIG、nSTATUS、CONF_DONE来表示配置过程。串行配置芯片在DCLK上升沿时锁存输入信号和控制信号,在下降沿时输出配置数据。Cyclone芯片在DCLK下降沿时输出控制信号,并锁存配置数据。

EPCS配置时序

点击看原图

3 工作流程

3.1 硬件配置的更新

如图3所示,FPGA的配置过程分为:复位、配置和初始化。

FPGA的配置过程

点击看原图

(1)复位FPGA

上电复位:在用户模式下,当nCONFIG引脚持续低电平40μs时,FPGA将进入复位状态。复位时,FP—GA采样MSEL引脚的电平值,以确定采用的配置方式;同时,nSTATUS和CONF_DONE引脚由FPGA置为低电平,所有I/0引脚为三态且FPGA内部配置寄存器被清空。

FPGA复位的2种方法:

①外加RC复位电路或者复位芯片,自动产生上电复位脉冲。

②参考芯片手册。如果芯片提供了上电复位脉冲(一般是全局复位信号),则使用它作为复位信号;若没有提供,则查找芯片是否给出了寄存单元上电默认值(一般是O),利用该特性复位或者产生复位脉冲。

(2)配置FPGA

复位后,nCONFIG被外部上拉电阻拉高,进入配置阶段。此时,nSTATUS被FPGA释放并由外部上拉电阻拉为高电平后进入配置状态。Cyclone芯片通过将nCSO输出的信号置低来使能串行配置芯片,nCS0引脚连接配置芯片的片选段(nCS),用串行时钟(DCLK)和串行数据输出(ASDO)引脚来发送操作指令,及/或将地址信号读到串行配置芯片中。接着配置芯片将数据送到串行数据输出(DATA)引脚,DATA引脚连接Cyclone芯片的DATA0输入脚。配置数据在DCLK时钟的上升沿载入FPGA。当接收完所有的配置位后(CRC校验无误),Cyclone芯片悬空CONF_DONE引脚,该引脚由外部10 kΩ电阻拉高;同时,停止驱动DCLK信号。只有当CONF_DONE到达一定的逻辑高电平后,初始化才开始。

(3)初始化阶段

在Cyclone芯片中,初始时钟源是Cyclone芯片的lOMHz(典型的)内部晶振,或者是可供选择的CLKUSR引脚。内部晶振是默认的初始化时钟源。如果用了内部时钟,则Cyclone芯片为正确的初始化提供足够的时钟。使用内部时钟的好处在于,初始化时不需要从外部发送其他的时钟到CLKUSR引脚,而且可以把CLKUSR引脚当作I/O引脚。

(4)用户模式

初始化结束后,FPGA进入用户模式。在用户模式下,用户I/O引脚不再有弱上拉电阻,而是执行设计中分配的功能。Cyclone芯片可以通过将nCONFIG拉低而开始重新配置。nCONFIG低信号应该至少持续40μs。当nCONFIG被拉低时,Cyclone芯片被复位并进入复位阶段。Cyclone芯片也会把nSTATUS和CONF_DONE拉低,所有的I/O引脚处于三态。一旦nCONFIG回到逻辑高电平,Cyclone芯片将释放nSTATUS,重新开始配置。

(5)配置时出现的错误

如果在配置时出现错误,则Cyclone芯片将nSTA—TUS信号置低来表明一个数据帧错误,CONF_DONE信号为低。如果在Quartus软件的Device&Pin Options窗口的General项中,选中Auto—restart configuration aftererror选项,则Cyclone芯片通过激活nCSO来实现复位,在复位失效时间(40μs)后释放nSTATUS,并再次尝试配置。如果该选项未被选中,则外部系统必须监视nSTA—TUS信号以防出错,然后将nCONFIG信号拉低并持续至少40μs来重新配置。

计算机与目标板上的Nios程序建立连接,通过通信接口将Flash文件传输给FPGA;Nios程序判断出传输文件的针对目标后,将编程数据存放在EPCS或Flash中。接收到的数据首先暂存入SDRAM,而不是直接对EPCS和Flash进行操作。这样做的好处是,一旦传输失败或中止,不会破坏原有EPCS和Flash中的数据。

通过sof2Flash命令来生成Flash文件时,可以通过SOPC Builder打开NioslI command shell,使用“sof2 Flash—epcs-input=<输入文件名.sof>一output=<输出文件名.Flash>”命令,生成的Flash文件存在于工程目录下。也可以将sof文件复制到“〈quartus安装目录〉\kits\nios2_60\examples”下,直接打开NiosII command shell,使用“sof2Flash-epcs—input=<输入文件名.sof>一output=<输出文件名.Flash>”,生成的Flash文件存在于“〈quartus安装目录〉\kits\nios2_60\examples”下。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1602

    文章

    21320

    浏览量

    593158
收藏 人收藏

    评论

    相关推荐

    FPGA芯片配置方式及常见配置方法

    广义的来说,FPGA配置包括直接使用下载电缆对FPGA器件进行编程、对外部EEPROM和FLASH进行
    发表于 10-26 10:58 9538次阅读

    FPGA的开发过程中如何实现在应用编程应用功能

    或是专用IP来接收编程数据,并编程Flash芯片,然后通过外部简单电路将FPGA复位启动,以主动
    发表于 07-22 16:41 1757次阅读
    在<b class='flag-5'>FPGA</b>的开发过程中如何实现在应用<b class='flag-5'>编程</b>应用功能

    FPGA中SPI复用配置编程方法

    FPGA中SPI复用配置编程方法SPI(Serial Peripheral InteRFace,串行外围设备接口)是一种高速、全 双工、同步的通信总线,在芯片的引脚上只占用4根线,不
    发表于 08-12 11:56

    FPGA配置电路

    ,SRAM数据丢失,FPGA则一片空白,无法继续运行任何既定功能。因此,FPGA通常需要外挂一个用于保存当前配置数据流的PROM或
    发表于 01-30 02:34

    CYCLONE IV FPGA想用JTAG口编程FLASH,提问关于MSEL的BANK区为1.8V时的配置问题

    CYCLONE IV FPGA 想用JTAG口编程FLASH,MSEL所在BANK被用于DDR,IO电压为1.8V,手册的配置方案表中AS模式的配置
    发表于 03-21 10:24

    采用Flash和JTAG接口实现FPGA配置系统设计

    写缓冲编程写入Flash存储器的数据小于一帧配置码流的大小,因此接收到写命令后,烧写控制模块会配合写命令和对应的操作地址,将缓冲区中一帧配置
    发表于 05-30 05:00

    怎么解决平台flash prom无法配置FPGA问题?

    ]设置为000。在对xcf04s进行编程之后,iMPACT说它已成功编程。但是当我按下PROG按钮配置spartan-3e时,DONE指示灯不亮,平台闪存中的数据似乎没有加载到
    发表于 06-20 09:02

    使用高速SPI Nor FlashFPGA配置

    NOR闪存广泛用作FPGA配置设备。FPGA在工业和通信及汽车ADAS应用中的使用取决于NOR Flash的低延迟和高数据吞吐量特性。快速
    发表于 09-18 15:18

    FPGA配置Flash编程教材

    本章将首先介绍FPGA配置方式和配置过程,然后简单介绍了配置芯片配置文件的种类以及
    发表于 03-22 10:53 801次下载
    <b class='flag-5'>FPGA</b><b class='flag-5'>配置</b>和<b class='flag-5'>Flash</b><b class='flag-5'>编程</b>教材

    SPI方式FPGA配置和SPI flash编程

    SPI方式FPGA配置和SPI flash编程
    发表于 05-16 18:01 164次下载
    SPI方式<b class='flag-5'>FPGA</b><b class='flag-5'>配置</b>和SPI <b class='flag-5'>flash</b><b class='flag-5'>编程</b>

    C2837x入门:Flash编程配置设计

    C2837x入门指南(十七)—系统设计之Flash编程配置
    的头像 发表于 08-23 00:02 2801次阅读

    FPGA_ASIC-DSP和FPGA共用FLASH进行配置的方法

    FPGA_ASIC-DSP和FPGA共用FLASH进行配置的方法(哪些专业适合嵌入式开发)-该文档为FPGA_ASIC-DSP和
    发表于 07-30 11:16 21次下载
    <b class='flag-5'>FPGA</b>_ASIC-DSP和<b class='flag-5'>FPGA</b>共用<b class='flag-5'>FLASH</b>进行<b class='flag-5'>配置</b>的方法

    FPGA芯片配置分类及配置方式

    广义的来说,FPGA配置包括直接使用下载电缆对FPGA器件进行编程、对外部EEPROM和FLASH进行
    的头像 发表于 09-06 09:41 6126次阅读

    FPGA数据配置模式解析

    芯片设计工程师根据功能,完成RTL设计,添加各种约束,完成综合、Place Route等一系列工作之后,还需要一些配置数据,完成寄存器初始化等内容,才能开始工作。 今天我们一起来聊一聊FPGA
    的头像 发表于 11-21 21:45 998次阅读

    fpga配置flash怎么用来存储数据

    FPGA(现场可编程门阵列)是一种高度灵活的硬件设备,可以根据特定的需求进行重新配置FPGA通常用于处理大量数据和实时计算。然而,
    的头像 发表于 12-15 15:42 761次阅读