当前位置:首页 > EDA > 电子设计自动化
[导读]1 概述现场可编程门阵列(Field Programmable Gate Array,FPGA)器件具有高密度、低功耗、高速、高可靠性等优点,在航空航天、通信、工业控制等方面得到了大量应用。FPGA的处理器分为软核和硬核,并且软核处理器具有

1 概述

现场可编程门阵列(Field Programmable Gate Array,FPGA)器件具有高密度、低功耗、高速、高可靠性等优点,在航空航天、通信、工业控制等方面得到了大量应用。FPGA的处理器分为软核和硬核,并且软核处理器具有高度的灵活性和可配置性。

由于FPGA器件采用的是SRAM工艺,在断电的情况下FPGA内的配置数据将丢失,所以需要非易失的存储器来结合FPGA完成嵌入式系统的设计。EPCS(Erasable Programmable Configurable Serial)Flash属于串行接口Flash,具有接口简单、体积小、配置方便的特点,通常用来存储FPGA的配置文件和Nios II的软件可执行代码。在经过合理的配置后,系统在上电后就可以从EPCS Flash中读取这些文件来启动整个系统。

为了能使系统得到更灵活的应用,充分发挥FPGA的灵活性、高效性,FPGA的软硬件程序都需要方便的更新和升级功能;而当形成产品后,通过JTAG和Nios II IDE工具来联合完成对EPCS Flash的更新烧写很不方便。为此,本文结合Altera公司提供的工具,提出了一种远程在线更新FPGA配置文件和Nios II程序文件的方法。

2 系统硬件结构

系统硬件结构如图1所示。

 

 

图1 系统硬件结构图

系统主要有上位机系统、FPGA系统、EPCS Flash三个主体部分。上位机系统提供人机交互的部分,FPGA系统包括Nios II处理器、EPCS控制器、网络及串行接口和其他外部接口,EPCS Flash主要用于存储FPGA的配置文件和Nios程序映像文件。上位机系统通过FPGA集成的网络及串行接口来完成通信工作。

FPGA采用Altera公司的Cyclone III系统的EP3C40F484I7N芯片。它具有低功耗、高集成度、易于使用的特性。EPCS Flash采用Altera公司的EPCS16SI16N芯片,它支持多种可配置的时钟源,最高支持100 MHz的外部时钟源,具有16 Mb的存储空间,足够满足一般的FPGA配置文件和Nios程序文件的存储需要。

3 更新程序处理流程

更新FPGA的配置文件和Nios II的应用程序的流程如图2所示。

 

 

图2 更新程序处理流程

本方法把由Nios II IDE生成的FPGA配置文件和Nios II程序文件合并,并编程为一个可以直接执行的、包含FPGA配置文件和Nios II程序文件的二进制BIN文件。然后把该文件通过Xmodem协议由上位机系统传输给Nios II的应用程序。Nios II的应用程序接收到完整的BIN文件后,把该BIN文件写入到EPCS Flash中。最后,Nios II的应用程序停止看门狗,程序重新启动,即完成了FPGA的远程在线更新程序的过程。

4 合并程序文件

Nios II的启动要经历两个过程:

① FPGA器件本身的配置过程。如果内部逻辑中使用了Nios II,则配置完成的FPGA中包含有Nios II软核CPU。

② Nios II本身的应用过程。一旦FPGA配置成功后,Nios II就被逻辑中的复位电路复位,从reset地址开始执行代码。

Nios II IDE将FPGA的配置文件(.sof文件)和应用程序(.elf文件)转成flash格式文件,转换后的flash格式文件是一种SRecord格式数据,包含如下区域:

[6]。各字段的意思分别如下:表示记录的类型;表示数据的长度;

表示数据写入的起始地址,该字段的长度取决于的取值;表示存储的数据;表示校验位。

配置文件和应用程序可能有多个段,每个段前面都插有一个“程序记录”。一个“程序记录”由2个32位的数据构成,一个是32位的整数,另一个是32位的地址,分别表示程序段本身的长度和程序段的运行时地址。其存储布局如图3所示。

 

 

图3 Flash文件存储布局

为了在更新程序时把FPGA配置文件和Nios II应用程序一起更新,把FPGA配置文件和Nios II应用程序合并成一个文件,并且把合并后的Flash格式的文件转换成不需要地址解码就能直接执行的二进制BIN文件。具体处理流程如图4所示。

 

 

图4 合并程序文件流程

在合并程序的过程中,去掉了flash文件中的长度、目的地址等用于解析程序的信息,并且把程序映像由字符格式转换为二进制格式。合并后的BIN文件包含FPGA配置文件和Nios II应用程序,并且Nios II应用程序紧挨在FPGA配置文件的后面,其存储布局如图5所示。

程序文件第n个程序段映像

Len1~Len1+L2程序文件第1个程序段映像

配置文件第n个程序段映像

0~L1配置文件第1个程序段映像

 

 

图5 BIN文件存储布局

5 Nios II更新程序模块处理

Nios II程序中的更新程序模块主要负责从上位机接收合并后的可执行BIN文件,并把该BIN文件写入EPCS Flash,处理流程如图6所示。

5.1 程序文件的传输

Nios II应用程序中的更新程序模块和上位机系统采用Xmodem协议传输程序文件,Xmodem协议是一种网口和串口通信中广泛用到的异步传输协议。

如果在程序传输过程中出现错误,更新程序模块能够通过设置超时来退出更新程序的状态。

5.2 对EPCS Flash的读写

由于EPCS Flash的串行配置器件定义了特殊的读写协议,所以Nios II程序只能通过Altera提供的HAL API(Application Program Interface,应用程序接口)来完成读写Flash。打开、关闭Flash设备的API为:alt_flash_open_dev()和alt_flash_close_dev()。操作Flash读写的API为:alt_read_flash()和alt_write_flash_block()。清除Flash的API为alt_erase_falsh_block()。

结语

本文以提高FPGA远程更新程序的方便性为目标,提出了一种基于EPCS Flash的远程在线更新FPGA程序的方法,从而在应用中能够使基于FPGA的产品更加方便地维护升级。

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

本文根据完整的基准测试,将Achronix Semiconductor公司推出的Speedster7t FPGA与GPU解决方案进行比较,在运行同一个Llama2 70B参数模型时,该项基于FPGA的解决方案实现了超越性...

关键字: 大模型 FPGA LLM

在这篇文章中,小编将为大家带来FPGA三段式状态机设计的相关内容。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: FPGA 状态机

本文中,小编将对FPGA不复位的代码实现予以介绍

关键字: FPGA 复位

本文中,小编将对OV7670 驱动设计予以详细介绍,如果你想对它的详细情况有所认识,或者想要增进对设计方案的了解程度,不妨请看以下内容哦。

关键字: OV7670 驱动设计 FPGA 开发板

一直以来,AD转换都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来FPGA Verilog HDL实现AD转换的实例设计的相关介绍,详细内容请看下文。

关键字: FPGA AD Verilog

在这篇文章中,小编将对FPGA中的定点数处理方法的相关内容和情况加以介绍以帮助大家增进对它的了解程度,和小编一起来阅读以下内容吧。

关键字: FPGA 定点数

在这篇文章中,小编将为大家带来FPGA电源排序方案的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: FPGA 电源 电源排序

以下内容中,小编将对FPGA跨时钟域处理技术方法进行着重介绍和阐述

关键字: FPGA 跨时钟域

在下述的内容中,小编将会基于FPGA开发板去点亮LED灯

关键字: FPGA LED 开发板

FPGA奇偶校验设计和代码实现将是下述内容的主要介绍内容,通过这篇文章,小编希望大家可以对FPGA奇偶校验的相关情况以及信息有所认识和了解,详细内容如下。

关键字: FPGA 奇偶校验
关闭
关闭