首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
FPGA/CPLD可编程逻辑
» 7系列FPGA远程更新最新设计方案——QuickBoot
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
7系列FPGA远程更新最新设计方案——QuickBoot
发短消息
加为好友
pengpengpang
(pengpengpang)
当前离线
UID
1023229
帖子
6106
精华
0
积分
3055
阅读权限
90
来自
中国
在线时间
156 小时
注册时间
2013-12-20
最后登录
2016-7-3
论坛元老
UID
1023229
来自
中国
1
#
打印
字体大小:
t
T
pengpengpang
发表于 2014-7-29 23:14
|
显示全部帖子
7系列FPGA远程更新最新设计方案——QuickBoot
技术
,
电子产品
,
解决方案
感谢FPGA高级工程师曾海生先生的投稿。
一、概述
对于成熟的电子产品,高效稳定的工作是非常重要的一项指标。而一款刚推向市场的产品则需要研发人员或者技术维护人员进行必要的维护或者更新,以求达到更稳定的效果。对于FPGA的逻辑更新来说,因为它直接贴在板卡上,如果将板卡从产品中将拆卸下来是非常的不方便。QuickBoot 提供了FPGA逻辑远程更新近乎完美的解决方案。
二、QuickBoot原理
该方案是通过在FPGA内部增加额外的逻辑功能,无需改变硬件电路,只需要将原来的配置芯片的容量扩大(如果需要的话)。上位机可以通过以太网、PCIe、USB等将更新数据发送到FPGA,FPGA再通过配置接口将数据传输到Flash Memory。FPGA可以通过自动从Flash下载数据,从而完成逻辑远程更新,如果配置过程中发现配置出错,或者CRC校验失败,那么FPGA就会从存放正确位流区域(golden bitstream area)下载数据。
QuickBoot提供以下主要功能:
< 支持全部的7系列FPGA
< 基于HDL的flash programmer参考设计
< 远程更新代码最小化,更新位流和原设计位流大小基本一样
< 简单的可编程传输接口协议
< 内部远程错误自修复/自动返回golden 位流
< 快速的配置时间
< 可兼容多个配置方式:BPI/SPI/加密位流/多片FPGA菊花链配置
三、QuickBoot远程更新流程
QuickBoot远程更新流程框图如下图所示:
QuickBoot远程更新设计的关键有两点:
1、是如何通过FPGA实现自动更新Flash。
2、如果发现配置错误的话如何自动将原来golden 设计重新配置到FPGA。
为此QuickBoot制定了如下一套机制:
由于FPGA配置是从flash的0地址开始读取数据,所以将QuickBoot Header 放在0地址非常关键。QuickBoot Header包括两个部分,第一部分就是关键开关字,第二部分就是热启动跳转序列。
关键开关字,根据配置模式的不同而不同,如BPI模式就是0x00 00 00 BB,而SPI模式就是0x0xAA995566。
如果关键开关字是ON,那么就执行热启动跳转序列,热启动跳转序列包含了需要跳转的地址。然后就跳转到update bitstream area。并且将update bitstream下载下来。
如果关键开关字是OFF,那么就忽略热启动跳转序列,并且继续往下读取数据,这样就可以将golden bitstream area的数据下载到FPGA。
四、QuickBoot的实现
QuickBoot的实现主要包含以下几个关键点:
1、关键开关字的控制。
2、Flash 存储器与QuickBoot flash 模块的地址映射。
3、位流包的大小以及Flash 存储器大小的确定。
4、QuickBoot配置时间
5、QuickBoot验证update bitstream的正确性
一、关键开关字的控制
关键开关字为ON:就是关键开关字存储地址含有准确的、预先设置的值,对于BPI是0x000000BB,对于SPI是0xAA995566。
关键开关字为OFF:就是关键开关字存储地址不含有准确的、预先设置的值。
QuickBoot flash programmer Algorithm:
1、擦除存放关键开关字的块或者sector,使得关键开关字变成OFF。
2、擦除更新包存放的区域。
3、将update bitstream 写进到更新包区域。
4、验证update bitstream的正确性。
5、验证完成之后写开关关键字,使之变成ON。
所以在验证update bitstream正确之前不能将关键开关字设置为ON。验证完成之后需要将开关关键字设置为ON。
二、Flash 存储器与QuickBoot flash 模块的地址映射
我们以Micron N25Q flash memory为例说明Flash 存储器与QuickBoot flash 模块的地址映射关系,如下图所示
从0地址开始存放数据,因为一个地址是代表一个字节,所以对于一个32bit的数据需要4个地址来代表也就是地址的递增是以4为单位递增的。0x0000_0000~0x0000_0FFC对应的是QuickBoot Header PART1。0x0000_1000~0x0000_1020是QuickBoot Header PART2。紧接着 PART2存放的是golden bitstream。跳转地址是0x0020_0000,所以从这个地址开始存放的是update bitstrean,紧接着是update bitstrean的是0xffffffff填充字,最后32bit是CRC校验值。
三、位流包的大小以及Flash 存储器大小的确定
根据xilinx公司提供的
ug470_7series_config.pdf
page13 我们可以看到如下表
我们可以得到XC7K160T的bit文件大小是53Mbit.所以一般情况下存放该位流至少需要64Mbits的FLASH。如果作为远程更新用的存储芯片大概就需2x64Mbits=128Mbits。
依据上表我们可以算出我们所需flash大小:
L1=32768bit,L2=256bit,L3=53540576bit,L4=53573600bits。
L5=524288bit,L6=103blocks,L7=54001664bit,L8=52Mbit,L9=108003328bit,
L10=104Mb。
目前R-OTDR板使用的SPI FLASH是S25FL064P,所以应该选用一款PIN-TO-PIN完全兼容且容量为128Mbit大小的SPI flash。
四、QuickBoot配置时间
QuickBoot 配置时间将比标准的配置时间多一点点。从下表可以看出。
五、QuickBoot验证update bitstream的正确性
QuickBoot 将标准的bitstream转换成image的步骤如下:
1、生成标准的bitstream。
2、将填充字0xffff_ffff填充到剩下的update area。
3、将bitstream和填充字一起计算出CRC值,并且将它放在image的最后32bits上。
为了验证Update Image, the QuickBoot programming solution会去读取flash中 update area的值,以及最后的CRC值。然后在FPGA中计算出一个CRC值然后再和读回的CRC值进行比较。比较正确说明校验正确,反之则是校验错误。
作者:FPGA高级工程师--曾海生
QQ:331953872
电话:18813982726
邮箱:
zengzhiliang_1698@126.com
收藏
分享
评分
记录学习中的点点滴滴,让每一天过的更加有意义!
回复
引用
订阅
TOP
返回列表
嵌入式技术
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议