当前位置:首页 > EDA > 电子设计自动化
[导读]SPI(SerialPeripheralInterface,串行外围设备接口)是一种高速、全双工、同步的通信总线,在芯片的引脚上只占用4根线,不仅节约了芯片的引脚,同时在PCB的布局上还节省空间。正是出于这种简单、易用的特性,现在越来

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

1SPI配置介绍

1.1Spantan-3ESPI配置流程

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

由于本没计软件工程规模较小,所以利用此复用SPIFlash方式对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引脚对SPIFlash存储器进行时钟控制。接着发出8位读命令后跟24位起始地址0x000000和目标命令集的适量虚拟字节。FPGA从地址0开始读取SPIFlash存储器阵列,直到读完所需的配置位数。如果从存储器件读取到有效比特流,则发DONE信号,以指示FPGA配置成功。图1为SPI配置方式的时序。

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


1.2SPIFlash存储器的复用

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

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


2Bootloader引导程序的设计

在工程代码编写之前要求对硬件器件有所了解,主要需要了解FPGA所需要的配置文件空间,还有Flash存储结构。例如:XC3S500E配置文件空间为2270208位,所以要根据它计算存储应用程序的基地址。AT45DB161D是串行接口的闪存芯片,它包含有17301504位,被组织为4096页,每页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();

3SPIFlash软件引导过程及SPIFlash编程

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

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

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

为了指明程序的开始地址和应用程序的可执行文件的产生路径,需要在编译选项中设置。右键“应用程序工程”,SetCompilerOptions在OutputELFfile中选择可执行文件的产生路径,如XC3S500E\hello_world\hello_world.elf,在ProgramStartAddress中键入程序执行的起始地址(这里是SDRAM的基地址:0x90000000)。接下来编译应用程序工程,编译完成后就会在XC3S500E\hello_world文件夹中产生hello_world.elf。为了后面对SPIFlash编程的需要,应将elf转变成二进制形式的文件。这就需要利用cygwinshell窗口命令来完成,这个脚本提供了一个简单的命令实现这个目的。利用mb-objcopy-Obinary<options><ELFfileinput><bi-naryfiletooutput>命令就可以将elf转变成二进制形式的文件(.b文件)。

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

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

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

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

3.3编写SPIPROM文件

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

①将硬件配置和serial_Flash_bootloader引导程序的bitstrem.bit转换为MCS格式文件。
②将前面得到的应用程序的二进制文件(hello_world.b)转换为MCS格式文件。
③将以上得到了2个MCS文件合成1个MCS文件。
④编程SPIFlash芯片。

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

再使用DOS命令完成格式化和编程之前,要对down-load.bit、应用程序、spiPartNam和spi_offset参数进行设置,以便XSPI软件程序能对用户要求加以识别。如下:
setbitstream=../implementation/download.bit
setapplication=hello_world
setspiPartName=AT45DB161D//SPIFlash器件的名称
setspi_offset=0x63000//hello_world的应用程序就会从
//Flash中0x63000地址向上存放,引导程序也是从这里开始加载
//到SDRAM中的

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

第1步:REMStep1.Convertdownload.bittomcsimpactconvert_bits_to_mcs.cmd

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

第2步:REMStep2.Convertbinaryapplicationtomcs

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

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

第3步:REMStep3.combineapplicationmcswithbitstreammcs

xmcsutil-accept_notice-ibitstream.mcs%applica-tion%.mcs-ocombined.mcs-16-segaddr0x00%spi_off-set%-usedataaddr-padff

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

第4步:REMStep4.ProgramtheAT45DB161D

xip-accept_notice-skip_syncword_check-mcs-spi_epv-icombined.mcs-overify.txt-select_cable1

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

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

结语

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

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

多数受访粉丝认为,AI驱动的功能会对他们观看体育赛事的方式产生重大影响 超过半数的受访者希望通过AI技术获得对过去、现在和未来体育赛事的评论和分析 移动体育应用...

关键字: IBM AI 应用程序 移动

在数字化浪潮席卷全球的今天,FPGA技术正成为驱动创新的核心引擎。2025年8月21日,深圳将迎来一场聚焦FPGA技术与产业应用的盛会——2025安路科技FPGA技术沙龙。本次沙龙以“定制未来 共建生态”为主题,汇聚行业...

关键字: FPGA 核心板 开发板

在现代电子系统中,现场可编程门阵列(FPGA)凭借其开发时间短、成本效益高以及灵活的现场重配置与升级等诸多优点,被广泛应用于各种产品领域。从通信设备到工业控制,从汽车电子到航空航天,FPGA 的身影无处不在。为了充分发挥...

关键字: 可编程门阵列 FPGA 数字电源

2025年8月4日 – 提供超丰富半导体和电子元器件™的业界知名新品引入 (NPI) 代理商贸泽电子 (Mouser Electronics) 即日起开售Altera®的Agilex™ 3 FPGA C系列开发套件。此开...

关键字: FPGA 边缘计算 嵌入式应用

内窥镜泛指经自然腔道或人工孔道进入体内,并对体内器官或结构进行直接观察和对疾病进行诊断的医疗设备,一般由光学镜头、冷光源、光导纤维、图像传感器以及机械装置等构成。文章介绍了一款基于两片图像传感器和FPGA组成的微型3D内...

关键字: 微创 3D内窥镜 OV6946 FPGA

运用单片机和FPGA芯片作为主控制器件 , 单片机接收从PC机上传过来的显示内容和显示控制命令 , 通过命令解释和数据转换 , 生成LED显示屏所需要的数据信号和同步的控制信号— 数据、时钟、行同步和面同步 。FPGA芯...

关键字: 单片机 FPGA LED显示屏

在异构计算系统中,ARM与FPGA的协同工作已成为高性能计算的关键架构。本文基于FSPI(Fast Serial Peripheral Interface)四线模式,在150MHz时钟频率下实现10.5MB/s的可靠数据...

关键字: ARM FPGA FSPI

在全球FPGA市场被Xilinx(AMD)与Intel垄断的格局下,国产FPGA厂商高云半导体通过构建自主IP核生态与智能时序约束引擎,走出差异化高端化路径。本文深入解析高云半导体FPGA工具链的两大核心技术——全栈IP...

关键字: FPGA 高云半导体

2025年6月12日,由安路科技主办的2025 FPGA技术沙龙在南京正式召开,深圳市米尔电子有限公司(简称:米尔电子)作为国产FPGA的代表企业出席此次活动。米尔电子发表演讲,并展出米尔基于安路飞龙派的核心板和解决方案...

关键字: FPGA 核心板 开发板

高 I/O、低功耗及先进的安全功能,适用于成本敏感型边缘应用

关键字: FPGA I/O 机器视觉
关闭