FPGA中SPI Flash存储器的复用编程方法的实现

最新更新时间:2012-04-03来源: 互联网关键字:FPGA  SPI  Flash  存储器  复用编程 手机看文章 扫描二维码
随时随地手机看文章

SPI(Serial Peripheral Interface,串行外围设备接口)是一种高速、全双工、同步的通信总线,在芯片的引脚上只占用4根线,不仅节约了芯片的引脚,同时在PCB的布局上还节省空间。正是出于这种简单、易用的特性,现在越来越多的芯片集成了这种通信协议。 

1 SPI配置介绍 

1.1 Spantan-3E SPI配置流程 

SPI方式是通过符合SPI接口时序的第三方SPI Flash对FPGA进行加载。它适合作为FPGA硬件结构的bit文件保存介质,如果应用软件工程编译后的代码较小,保存在同一片SPI FLash中(即复用SPI Flash)无疑是可行的最廉价方案。 

由于本没计软件工程规模较小,所以利用此复用SPI Flash方式对FPGA进行配置,既保存FPGA配置的bit文件,也保存应用软件工程的bit文件。系统在上电或向PROG_B引脚发出低脉冲后,FPGA芯片经过一个初始化序列清空内部FPGA配置存储器。此序列开始时,DONE和INIT_B引脚均转为低。初始化完成后,INIT_B引脚转为高,并采样芯片的配置模式及变量选择引脚。 

SPI模式下,FPGA对变量选择(VS[2:0])引脚采样,以确定发出哪个SPI命令序列。当初始化之后发出INIT_B信号时,模式引脚和变量选择引脚都必须处在正确的逻辑级,以确保正确采样。

在变量选择引脚选择SPI命令集之后,FPGA将CSO_B选择信号置为低,并且开始通过FPGA的CCLK引脚对SPI Flash存储器进行时钟控制。接着发出8位读命令后跟24位起始地址0x000000和目标命令集的适量虚拟字节。FPGA从地址0开始读取SPI Flash存储器阵列,直到读完所需的配置位数。如果从存储器件读取到有效比特流,则发DONE信号,以指示FPGA配置成功。图1为SPI配置方式的时序。 

SPI配置方式的时序 www.elecfans.com



图2是AT45DB161D SPI Flash的配置接口。这种配置方式只占用了FPGA芯片的4个引脚,而且配置成功之后,所有SPI引脚都成为可用的用户I/O引脚,这就节省了FPGA的引脚资源。 

AT45DB161D SPI Flash的配置接口 www.elecfans.com



1.2 SPI Flash存储器的复用 

复用SPI Flash是指既用它来保存硬件配置文件、Bootloader引导程序还用来保存用户应用程序。在加载阶段,FPGA自动从SPI Flash中读取硬件配置bit文件及Bootloader程序进行配置到片内BRAM中运行。当完成加载后,FPGA内部逻辑启动,通过运行的Bootloader程序读取SPI Flash中的用户应用程序,并写到外部SDRAM的相应位置,最后Bootloader程序切换指令指针到SDRAM指定位置,在外部的SDRAM中开始执行应用程序。 

图3给出了本系统中复用SPI Flash嵌入式系统结构图,用EDK中的opb_sdram连接外部SDRAM,用opb_spi连接SPI Flash(AT45DB161D),通过Bootloader软件程序实现从SPI Flash中复制用户应用程序到SDRAM中,然后在SDRAM中运行。但是,Boot-loader在系统上电时会通过FP-GA芯片的配置引脚首先加载到BRAM中运行,这样就可以实现上电自动加载启动程序。 

复用SPI Flash嵌入式系统结构图 www.elecfans.com



2 Bootloader引导程序的设计 

在工程代码编写之前要求对硬件器件有所了解,主要需要了解FPGA所需要的配置文件空间,还有Flash存储结构。例如:XC3S500E配置文件空间为2 270 208位,所以要根据它计算存储应用程序的基地址。AT45DB161D是串行接口的闪存芯片,它包含有17 301 504位,被组织为4 096页,每页512/528字节。除了主存储器,AT45DB161D还包括2个SRAM数据缓冲区,每个缓冲区512/528字节。在主存储器正在编程时,缓冲区是允许接收数据的,并且支持数据流式写入。(此处为528字节/页) 

AT45DB161D的存储器阵列分为3个级别的粒度,分别为扇区、块与页。图4对各个级别进行了分析,详细说明了每个扇区与块的页数。所有的编程操作都是针对页的。擦除操作可以作用于芯片、扇区、块或页。 



最后利用定义的空函数int(*boot_app_jump) (void);”将地址指针指向内存的应用程序基地址,使其从此处开始运行程序。 

//将目的地址赋给跳转函数 

boot_app_jump=(int(*)(void))DESTINATION_AD-DR; 

//运行跳转函数,使其在该函数地址开始运行程序boot_app_jump(); 

3 SPI Flash软件引导过程及SPI Flash编程 

本实验使用简单的应用程序(打印hello_world),即工程“hello_world”。工程serial_Flash_bootloader就是上面设计的引导程序。 

3.1 编译用户应用程序的二进制文件
 

由于应用程序要在外部SDRAM中运行,所以不需要初始化BRAM存储器,如图5所示。 



为了指明程序的开始地址和应用程序的可执行文件的产生路径,需要在编译选项中设置。右键“应用程序工程”,Set Compiler Options在Output ELF file中选择可执行文件的产生路径,如XC3S500E\hello_world\hello_world.elf,在Program Start Address中键入程序执行的起始地址(这里是SDRAM的基地址:0x90000000)。接下来编译应用程序工程,编译完成后就会在XC3S500E\hello_world文件夹中产生hello_world.elf。为了后面对SPI Flash编程的需要,应将elf转变成二进制形式的文件。这就需要利用cygwin shell窗口命令来完成,这个脚本提供了一个简单的命令实现这个目的。利用mb-objcopy-O binary<options><ELF file input><bi-nary file to output>命令就可以将elf转变成二进制形式的文件(.b文件)。 

例如:mb-objcopy-O binary ./hello world/helloworld.elf./hello_world/hello_world.b用来在工程目录下hello_world文件夹创建工程的一个hello_world.b的二进制文件。生成的文件hello_world.b大约2 KB左右。 

3.2 Bootloader引导程序与硬件配置文件的生成 

serial_Flash_bootloader要初始化到BRAM中(即在“工程”上右键→BRAM Initialization and unmark a11)。 

这样做的意义是在编译Bootloader程序时就将它编译后的执行文件(.elf文件)加入到硬件system.bit中生成一个download.bit。这个文件既包含了系统硬件配置信息,又包括了Bootloader程序执行文件。由于设置了初始化到BRAM中,所以在系统上电时才能使Bootloader程序自动加载到片内BRAM中运行,实现程序的引导功能。只要利用EDK用软件中download bitstram功能就可以实现上述功能。 

3.3 编写SPI PROM文件 

本部分提供为SPI Flash存储器创建PROM文件的指导原则。在将生成bitstram.bit比特流转换成SPI格式PROM文件之前,设计人员必须确认该比特流是用bitg-en-g StartupClk:Cclk选项生成的。此选项使启动顺序与Spartan-3E内部时钟同步,从而确保FPGA功能正常。 

①将硬件配置和serial_Flash_bootloader引导程序的bitstrem.bit转换为MCS格式文件。 

②将前面得到的应用程序的二进制文件(hello_world.b)转换为MCS格式文件。 

③将以上得到了2个MCS文件合成1个MCS文件。 

④编程SPI Flash芯片。 

以上过程,除了③以外,Xilinx公司的iMPACT编程软件都可以实现。③要由DOS命令完成。所以下面都是以DOS命令来完成编程的全过程。 

再使用DOS命令完成格式化和编程之前,要对down-load.bit、应用程序、spiPartNam和spi_offset参数进行设置,以便XSPI软件程序能对用户要求加以识别。如下: 

set bitstream=../implementation/download.bit 

set application="hello"_world 

set spiPartName="AT45DB161D"//SPI Flash器件的名称 

set spi_offset=0x63000//hello_world的应用程序就会从 

//Flash中0x63000地址向上存放,引导程序也是从这里开始加载 

//到SDRAM中的 

接下来就是执行转换的命令。 

第1步:REM Step 1.Convert download.bit to mcsimpact convert_bits_to_mcs.cmd 

此命令将硬件配置和serial_Flash_bootloader引导程序的bitstrem.bit转换为MCS格式文件。 

第2步:REM Step 2.Convert binary application tomcs

xmcsutil-accept_notice-i%application%.b-o%appli-cation%.mcs-29 

完成了应用程序(hello_world)的二进制文件(hello_world.b)转换为MCS格式文件。 

第3步:REM Step 3.combine application mcs withbitstream mcs 

xmcsutil-accept_notice-i bitstream.mcs%applica-tion%.mcs-o combined.mcs-16-segaddr 0x00%spi_off-set%-usedataaddr-padff 

这个命令将以上得到了的MCS文件合成一个MCS文件。 

第4步:REM Step 4.Program the AT45DB161D 

xip-accept_notice-skip_syncword_check-mcs-spi_epv-icombined.mcs-o verify.txt-select_cable 1 

完成对SPI Flash芯片编程。此命令使用轮询擦除SPI内容,然后对SPI器件的内容进行编程和验证。任何验证不匹配项都记录在result.out文件中。默认情况下,XSPI认定数据是HEX格式。如果输入文件是HEX格式,则去除-mcs选项。 

Xilinx软件工具iMPACT从Spartan-3E比特流生成SPI格式PROM文件。SPI存储器件首先串行输出数据的MSB字节,而Xilinx PROM则首先输出数据的LSB。与标准Xilinx PROM文件相比,SPI格式PROM文件在每字节内有位反转,因此,需要在PROMgen中使用-spi选项才能正确格式化。XSPI支持.hex和.mcs两种SPIPROM文件格式。以下所示为生成SPI格式.mcs文件的PROMGen命令行操作的示例。要生成SPI格式PROM文件.hex,请用-P hex替换-p mcs选项开关。 

结 语 

本文介绍的是SPI Flash存储器的复用编程方法的实现。在应用程序不是很大时,可以使用此方法复用SPI Flash存储器,减少外围电路,但是配置时间较长。在不要求配置时间的基础上,可以考虑使用SPI配置模式。

关键字:FPGA  SPI  Flash  存储器  复用编程 编辑:神话 引用地址:FPGA中SPI Flash存储器的复用编程方法的实现

上一篇:基于MAX97001设计的单片音频系统方案
下一篇:GIS数据库系统中OCI的应用

推荐阅读最新更新时间:2023-10-12 20:38

SPI接口的出错分析及其改进
  单片机(MCU)系统为了与SPI标准外围接口器件进行通信,必须使用SPI( Serial Peripheral Interface,串行外设接口)总线。SPI总线系统是Motorola提出的一种同步串行外设接口,有信号线少、协议简单、传输速度快的特点,因此有不少外围器件都采用SPI总线,如Flash RAM、A/ D转换器、LED显示器、MCU以及计算机网络等。MCU中的SPI接口通过配置可与各个厂家生产的多种标准外围器件直接连接。   对于那些没有SPI接口功能的MCU来说,SPI接口的功能靠软件控制MCU的I/O口的方法来模拟。不过,用软件来模拟SPI接口的功能,工作速度非常慢,并且需要主从器件的软件之间配合得非常
[单片机]
DDR3为存储器应用带来新的技术优势
主流存储器从FPM和EDO到SDR和DDR,再到DDR2 ,这种发展带来了先进的架构、更高的密度、更快的速度、更低的电源电压、更高的带宽和更低的功耗。 这些显著的技术进步提升了DRAM技术—尤其是将运算市场部分提高到更高的性能水平。 DRAM技术上取得的进步伴随着多内核处理器的出现、新的操作系统,以及跨多种不同运算平台和应用的越来越多的不同要求,包括服务器、工作站、海量存储系统、超级计算机、台式电脑和笔记本电脑和外设。存储器技术的每次转变,对存储器的考虑都变得越来越复杂,但是如果清楚了解了主流的存储器如何发展的,以及其中出现的一些折中,设计师就可以选择能很好地满足他们的平台、操作系统和应用的高性能存储器。 速度问题
[应用]
运用FPGA进行控制平面/数据平面视频处理
  嵌入式设计人员面临的最大挑战之一就是界定系统的性能需求。用以确定实际性能需求所需的信息要么无法获取,要么难以获得。最精确的估算有时也会因无法预料的计算负荷而失效。分析通常会指出,对于数据处理需求而言嵌入式处理系统的成本效益太低。因此,系统设计人员高度渴望拥有可扩展的能够适应性能需求潜在变化以及能够执行高性能数据处理的架构。而在FPGA内部实施的控制平面/数据平面处理架构就能够有效满足上述要求。    什么是控制平面/数据平面处理?为什么您的下一代嵌入式系统可能会需要它?   在无法用软件完成所有处理工作的系统中,设计人员可以通过多种途径来获得其他性能。他们可以采用对称或者非对称处理配置的多处理器;使用硬件协处理器;
[嵌入式]
运用<font color='red'>FPGA</font>进行控制平面/数据平面视频处理
武汉新芯携手乐鑫科技,将在物联网与存储器芯片领域合作
近期,武汉新芯宣布与乐鑫科技达成长期战略合作。 双方将围绕物联网应用市场领域,在物联网和存储器芯片产品与应用方案开发方面展开全方位的合作,助力创新产品开发,满足市场不断增长的新需求,为合作创造更大的商业价值。 武汉新芯官方消息显示,乐鑫科技CEO张瑞安表示,乐鑫科技与武汉新芯此次合作的产品将覆盖16/32/64/128Mbit SPI NOR,武汉新芯推出的50nm新产品支持低功耗宽电压工作,高温可达105℃,能满足乐鑫科技全系列物联网芯片,智能家居及工业模组的应用要求。 此外,武汉新芯运营副总裁孙鹏先生表示,武汉新芯此次推出的50nm高性能SPI NOR全系产品可提供小尺寸封装,KGD解决方案和RDL服务,能满足乐鑫科技定制
[手机便携]
基于STM32F407 HAL库的Flash编程操作
flash的初始化,解锁flash和清除一些flash的异常状态标识 uint16_t MEM_If_Init_FS(void) { HAL_FLASH_Unlock(); __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR); } uint16_t MEM_If_DeInit_FS(void) { HAL_FLASH_Lock(); } flash
[单片机]
鸿海拟携手西部数据抢东芝存储器
东芝半导体竞标案进入倒数计时,鸿海(2317)集团动作不断,先是董事长郭台铭证实携手苹果、亚马逊,现在夏普社长戴正吴指出,鸿海有意携手美国西部数据(WD),共同出资竞标东芝半导体事业,并让东芝总公司持股两成,鸿海放低姿态,甘愿持股少于美、日两方。 东芝总公司将于本月中旬决定半导体事业买家,日本每日新闻引述戴正吴说法,有意与美国西部数据合作,携手共同竞标东芝半导体事业,让该公司拥有部分股权;此外,如果能顺利标下东芝半导体事业,将共同经营东芝半导体位于日本三重县四日市的工厂。 戴正吴指出,鸿海阵营竞标东芝半导体事业,不会一定要主导权,出资比例可依照美国、日本及台湾的顺序。 戴正吴并强调,如果东芝总公司有意愿的话,将可以保留内存事业两成
[手机便携]
STM32 SPI 注意要点
觉得SPI很简单,所以从来没有去仔细去看就直接用了,这次在调一个芯片的时候出现了一个比较奇怪的问题,以为是程序逻辑的问题,浪费了好几天的时间都没有找到原因。今天乖乖查阅了一些手册,最后在《STM32不完全手册》里找到了线索,现在索性对SPI做个总结。首先说最近碰到的问题。 问题一:错以为SPI的读数据,直接读取SPIx- DR寄存器就可以完成。 这个问题我一直没注意,十分惭愧。原来SPI的时钟只有在往DR寄存器里面写数据的时候才会产生,读是不会产生的(暂时没有从哪个资料中得到确认,不过我猜就是这样)。所以要读取slave发过来的数据,master必须先发一个 DUMMY 数据,这个数据内容不重要
[单片机]
MAX5881直接RF合成DAC与FPGA的接口
摘要:本应用笔记讨论了4.3Gsps下行电缆直接RF合成DAC MAX5881与现场可编程门阵列( FPGA )的 接口 技术。讨论的重点是MAX5881高速数字输入与Xilinx® Virtex™-5 FPGA 的 接口 时序。这里讨论的技术同样适用于其它多种FPGA和定制ASIC。 介绍 由于MAX5881 4.3Gsps下行电缆直接RF合成DAC具有宽带特性,相比窄带DAC,它的数据接口需要更高的工作频率。通常,设计宽带数据接口时,需要注意确保其工作可靠、无误。 接口架构 FPGA功能可以有多种不同组合,有几种接口架构可供选择,其中之一如图1所示。这种架构可以支持较宽的工作频率范围,并且对处理过程、电压和温度(PVT
[模拟电子]
MAX5881直接RF合成DAC与<font color='red'>FPGA</font>的接口
小广播
最新模拟电子文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved