FPGA中SPI复用配置的编程方法_第1页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、fpga中spi复用配置的编程方法spi(serial peripheral interface,串行外围设备接口)是一种高速、全双工、同步的通信,在芯片的引脚上只占用4根线,不仅节省了芯片的引脚,同时在的布局上还节约空间。正是出于这种容易、易用的特性,现在越来越多的芯片集成了这种通信协议。1 spi配置介绍11 spantan-3e spi配置流程spi方式是通过符合spi接口时序的第三方spi flash对举行加载。它适合作为fpga硬件结构的bit文件保存介质,假如应用软件工程编译后的代码较小,保存在同一片spi flash中(即复用spi flash)无疑是可行的最便宜计划。因为本没计

2、软件工程规模较小,所以利用此复用spi flash方式对fpga举行配置,既保存fpga配置的bit文件,也保存应用软件工程的bit文件。系统在上电或向prog_b引脚发出低脉冲后,fpga芯片经过一个初始化序列清空内部fpga配置存储器。此序列开头时,done和init_b引脚均转为低。初始化完成后,init_b引脚转为高,并采样芯片的配置模式及变量挑选引脚。spi模式下,fpga对变量挑选(vs2:0)引脚采样,以确定发出哪个spi指令序列。当时始化之后发出init_b信号时,模式引脚和变量挑选引脚都必需处在正确的规律级,以确保正确采样。在变量挑选引脚挑选spi指令集之后,fpga将cso

3、_b挑选信号置为低,并且开头通过fpga的cclk引脚对spi flash存储器举行时钟控制。接着发出8位读指令后跟24位起始地址0x000000和目标指令集的适量虚拟字节。fpga从地址0开头读取spi flash存储器阵列,直到读完所需的配置位数。假如从存储器件读取到有效比特流,则发done信号,以指示fpga配置胜利。图1为spi配置方式的时序。图2是at45db161d spi flash的配置接口。这种配置方式只占用了fpga芯片的4个引脚,而且配置胜利之后,全部spi引脚都成为可用的用户io引脚,这就节约了fpga的引脚资源。12 spi flash存储器的复用复用spi flas

4、h是指既用它来保存硬件配置文件、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(at45

5、db161d),通过bootloader软件程序实现从spi flash中复制用户应用程序到sdram中,然后在sdram中运行。但是,boot-loader在系统上电时会通过fp-ga芯片的配置引脚首先加载到bram中运行,这样就可以实现上电自动加载启动程序。2 bootloader引导程序的设计在工程代码编写之前要求对硬件器件有所了解,主要需要了解fpga所需要的配置文件空间,还有flash存储结构。例如:xc3s500e配置文件空间为2 270 208位,所以要按照它计算存储应用程序的基地址。at45db161d是串行接口的闪存芯片,它包含有17 301 504位,被组织为4 096页,

6、每页512528字节。除了主存储器,at45db161d还包括2个sram数据缓冲区,每个缓冲区512528字节。在主存储器正在编程时,缓冲区是允许接收数据的,并且支持数据流式写入。(此处为528字节页)at45db161d的存储器阵列分为3个级别的粒度,分离为扇区、块与页。图4对各个级别举行了分析,具体解释了每个扇区与块的页数。全部的编程操作都是针对页的。擦除操作可以作用于芯片、扇区、块或页。最后利用定义的空函数int(*boot_app_jump) (void);”将地址指针指向内存的应用程序基地址,使其从今处开头运行程序。将目的地址赋给跳转函数boot_app_jump=(int(*)(

7、void)destination_ad-dr;运行跳转函数,使其在该函数地址开头运行程序boot_app_jump();3 spi flash软件引导过程及spi flash编程本试验用法容易的应用程序(打印hello_world),即工程“hello_world”。工程serial_flash_bootloader就是上面设计的引导程序。31 编译用户应用程序的二进制文件因为应用程序要在外部sdram中运行,所以不需要初始化bram存储器,5所示。为了指明程序的开头地址和应用程序的可执行文件的产生路径,需要在编译选项中设置。右键“应用程序工程”,set compiler options在ou

8、tput elf file中挑选可执行文件的产生路径,如xc3s500ehello_worldhello_worldelf,在program start address中键入程序执行的起始地址(这里是sdram的基地址:0x90000000)。接下来编译应用程序工程,编译完成后就会在xc3s500ehello_world文件夹中产生hello_worldelf。为了后面向spi flash编程的需要,应将elf改变成二进制形式的文件。这就需要利用cygwin shell窗口指令来完成,这个脚本提供了一个容易的指令实现这个目的。利用mb-objcopy-o binaryoptionself fi

9、le inputbi-nary file to output指令就可以将elf改变成二进制形式的文件(b文件)。例如:mb-objcopy-o binary hello worldhelloworldelfhello_worldhello_worldb用来在工程名目下hello_world文件夹创建工程的一个hello_worldb的二进制文件。生成的文件hello_worldb大约2 kb左右。32 bootloader引导程序与硬件配置文件的生成serial_flash_bootloader要初始化到bram中(即在“工程”上右键bram initialization and unmark

10、 a11)。这样做的意义是在编译bootloader程序时就将它编译后的执行文件(elf文件)加入到硬件systembit中生成一个downloadbit。这个文件既包含了系统硬件配置信息,又包括了bootloader程序执行文件。因为设置了初始化到bram中,所以在系统上电时才干使bootloader程序自动加载到片内bram中运行,实现程序的引导功能。只要利用edk用软件中download bitstram功能就可以实现上述功能。33 编写spi prom文件本部分提供为spi flash存储器创建prom文件的指导原则。在将生成bitstrambit比特流转换成spi格式prom文件之前

11、,设计人员必需确认该比特流是用bitg-en-g startupclk:cclk选项生成的。此选项使启动挨次与spartan-3e内部时钟同步,从而确保fpga功能正常。将硬件配置和serial_flash_bootloader引导程序的bitstrembit转换为mcs格式文件。将前面得到的应用程序的二进制文件(hello_worldb)转换为mcs格式文件。将以上得到了2个mcs文件合成1个mcs文件。编程spi flash芯片。以上过程,除了以外,公司的impact编程软件都可以实现。要由dos指令完成。所以下面都是以dos指令来完成编程的全过程。再用法dos指令完成格式化和编程之前,要

12、对down-loadbit、应用程序、spipartnam和spi_offset参数举行设置,以便xspi软件程序能对用户要求加以识别。如下:set bitstream=implementationdownloadbitset application="hello"_worldset spipartname="at45db161d"spi flash器件的名称set spi_offset=0x63000hello_world的应用程序就会从flash中0x63000地址向上存放,引导程序也是从这里开头加载到sdram中的接下来就是执行转换的指令。第1步:

13、rem step 1convert downloadbit to mcsimpact convert_bits_to_mcscmd此指令将硬件配置和serial_flash_bootloader引导程序的bitstrembit转换为mcs格式文件。第2步:rem step 2convert binary application tomcsxmcsutil-accept_notice-iapplicationb-oappli-cationmcs-29完成了应用程序(hello_world)的二进制文件(hello_worldb)转换为mcs格式文件。第3步:rem step 3combine a

14、pplication mcs withbitstream mcsxmcsutil-accept_notice-i bitstreammcsapplica-tionmcs-o combinedmcs-16-segaddr 0x00spi_off-set-usedataaddr-padff这个指令将以上得到了的mcs文件合成一个mcs文件。第4步:rem step 4program the at45db161dxip-accept_notice-skip_syncword_check-mcs-spi_epv-icombinedmcs-o verifytxt-select_cable 1完成对spi flash芯片编程。此指令用法轮询擦除spi内容,然后对spi器件的内容举行编程和验证。任何验证不匹配项都记录在resultout文件中。默认状况下,xspi认定数据是hex格式。假如输入文件是hex格式,则去除-mcs选项。xilinx软件工具impact从spartan-3e比特流生成spi格式prom文件。spi存储器件首先串行输出数据的msb字节,而xilinx prom则首先输出数据的lsb。与标准xilinx prom文件相比,spi格式prom文件在每字节内有位反转,因此,需要在promgen

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论