CN103019779B - 一种fpga/dsp嵌入式***的程序更新方法 - Google Patents
一种fpga/dsp嵌入式***的程序更新方法 Download PDFInfo
- Publication number
- CN103019779B CN103019779B CN201210509014.7A CN201210509014A CN103019779B CN 103019779 B CN103019779 B CN 103019779B CN 201210509014 A CN201210509014 A CN 201210509014A CN 103019779 B CN103019779 B CN 103019779B
- Authority
- CN
- China
- Prior art keywords
- fpga
- dsp
- chip
- niosii
- core processor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Stored Programmes (AREA)
Abstract
一种FPGA/DSP嵌入式***的程序更新方法,基于一种FPGA专用的主动串行配置芯片EPCS,通过嵌入式软核处理器NIOS?II和上位机建立通信,控制完成用户FPGA硬件配置数据和DSP应用程序数据的更新。相对于传统的FPGA/DSP+FLASH结构的嵌入式***,本发明降低了FPGA/DSP嵌入式***的板级PCB布线复杂度和***体积的同时,满足了此类产品装配完成后JTAG接口不可见时,更新FPGA硬件配置数据和DSP应用程序数据的需求。
Description
技术领域
本发明涉及一种FPGA/DSP架构的嵌入式***的程序更新方法,属于FPGA/DSP架构的嵌入式***的软硬件设计技术领域。
背景技术
FPGA/DSP架构的嵌入式***作为一种典型的嵌入式***,具有较强的逻辑控制能力和计算能力,在军事、医疗、工业等诸多场合下都有应用。通常,FPGA作为***控制核心,控制***数据的采集,处理以及实现各种通信协议,DSP为***的计算核心,负责实现***的核心算法,其通过EMIF和FPGA进行数据传递。
通常,FPGA的硬件配置数据和DSP的应用程序数据都可通过JTAG接口烧写到外部FLASH芯片中,但是,有些特定场合的产品在装配生产完毕后,JTAG接口对用户是不可见的,此时只能借助产品固有的通信接口来完成这两部分程序数据的更新。另外,一般的并行FLASH芯片,体积偏大,而且地址线和数据线占据较多的PCB布局布线资源,因此,这种FPGA/DSP+FLASH结构的嵌入式***不太适合一些对体积要求比较严格的应用场合。
发明内容
本发明所解决的问题是:针对传统的FPGA/DSP+FLASH架构的嵌入式***不足,提出一种FPGA/DSP+EPCS架构的嵌入式硬件平台,并给出FPGA硬件配置数据和DSP应用程序数据的更新方法。
本发明的技术解决方案是:
一种FPGA/DSP嵌入式***的程序更新方法,所述FPGA/DSP嵌入式***包括FPGA芯片、DSP芯片和EPCS芯片,
所述程序更新方法步骤如下:
(1)将所述FPGA芯片设置为主动配置模式,并使能远程配置功能;
(2)在FPGA芯片中实现NIOSII嵌入式软核处理器***;
(3)所述FPGA/DSP嵌入式***上电之后,FPGA芯片通过主动配置模式完成自身配置,所述NIOSII嵌入式软核处理器***开始运行,等待接收上位机发送的程序更新指令;
(4)如果所述NIOSII嵌入式软核处理器***没有收到程序更新指令,NIOSII嵌入式软核处理器***完成正常***启动;如果收到程序更新指令,则NIOSII嵌入式软核处理器***与上位机建立通信,将更新的用户FPGA配置数据或者是DSP芯片应用程序数据写入EPCS芯片,即完成了FPGA/DSP嵌入式***的程序更新。
所述NIOSII嵌入式软核处理器***与上位机建立通信可以通过RS232接口、USB接口或者以太网接口进行。
所述步骤(4)中NIOSII嵌入式软核处理器***完成正常***启动通过如下步骤进行:
(2.1)设置DSP为从SPI启动模式,
(2.2)所述NIOSII嵌入式软核处理器***通过SPI接口与DSP芯片建立通信;
(2.3)NIOSII嵌入式软核处理器***读取EPCS芯片中原有的DSP应用程序数据并且写入DSP芯片的RAM中,之后控制DSP芯片启动;
(2.4)DSP芯片启动之后,NIOSII嵌入式软核处理器***发起FPGA芯片重新配置命令,FPGA芯片通过EPCS芯片中原有的用户FPGA配置数据完成第二次配置,即NIOSII嵌入式软核处理器***完成正常***启动。
本发明与现有技术相比的有益效果是:
相对于传统FPGA/DSP+FLASH架构的嵌入式硬件平台,发明用FPGA专用串行配置芯片EPCS芯片代替并行FLASH芯片,串行配置芯片EPCS相比并行FLASH芯片,体积小,引脚数量少,降低了板级PCB布线时的复杂度和产品的体积。发明充分运用FPGA的重配置特性,通过嵌入式软核处理器NIOSII完成FPGA硬件配置数据和DSP应用程序数据的更新,解决了FPGA/DSP架构的嵌入式***只能靠JTAG接口完成程序更新的局限性。
附图说明
图1为***硬件结构框图
图2为EPCS中的程序地址分配图
图3为NIOSII程序流程图
图4为NIOSII与上位机的通信流程图
图5为本发明方法流程图
具体实施方式
下面结合附图对本发明的具体实施方式进行进一步的详细描述。
图1为本发明嵌入式***的硬件结构。***包括FPGA芯片、DSP芯片和EPCS芯片,本发明选用ALTERA公司的cycloneIII系列FPGA芯片,该系列FPGA支持远程配置技术。选用TI公司的C67XX系列DSP芯片。FPGA专用配置芯片选用EPCS16,用来存储FPGA硬件配置数据和DSP应用程序数据,其具有16Mbit的存储空间。FPGA外挂一片通讯接口芯片,可作为用户通信接口,也用来和上位机的通信,实现程序的更新。
如图5所示,本发明提供了一种FPGA/DSP嵌入式***的程序更新方法,步骤如下:
(1)将所述FPGA芯片设置为主动配置模式,并使能远程配置功能;
(2)在FPGA芯片中实现NIOSII嵌入式软核处理器***;
(3)所述FPGA/DSP嵌入式***上电之后,FPGA芯片通过主动配置模式完成自身配置,所述NIOSII嵌入式软核处理器***开始运行,等待接收上位机发送的程序更新指令;
(4)如果所述NIOSII嵌入式软核处理器***没有收到程序更新指令,NIOSII嵌入式软核处理器***完成正常***启动;如果收到程序更新指令,则NIOSII嵌入式软核处理器***与上位机建立通信,将更新的用户FPGA配置数据或者是DSP芯片应用程序数据写入EPCS芯片,即完成了FPGA/DSP嵌入式***的程序更新。
NIOSII嵌入式软核处理器***完成正常***启动通过如下步骤进行:
(4.1)设置DSP为从SPI启动模式,
(4.2)所述NIOSII嵌入式软核处理器***通过SPI接口与DSP芯片建立通信;
(4.3)NIOSII嵌入式软核处理器***读取EPCS芯片中原有的DSP应用程序数据并且写入DSP芯片的RAM中,之后控制DSP芯片启动;
(4.4)DSP芯片启动之后,NIOSII嵌入式软核处理器***发起FPGA芯片重新配置命令,FPGA芯片通过EPCS芯片中原有的用户FPGA配置数据完成第二次配置,即NIOSII嵌入式软核处理器***完成正常***启动。
NIOSII嵌入式软核处理器***与上位机建立通信可以通过RS232接口、USB接口或者以太网接口进行。
基于QuartusII提供的SOPCbuilder构建NIOSII嵌入式软核处理器***,如下表所示,
组件名称 | 描述 |
cpu_0 | NIOS II Processor |
jtag_uart_0 | JTAG UART |
onchip_ram | On-chip Memory(RAM or ROM) |
epcs_flash_controller | EPCS Serial Flash Controller |
remote_update_cyclone III | Remote U pdate Controller(cyclone III) |
uart | UART(RS-232Serial Port) |
spi | SPI(3Wire Serial) |
sysid | System ID Peripheral |
cpu_0为NIOSII处理器。jtag_uart_0为NIOSII的调试JTAG口。onchip_ram为48K的FPGA片上RAM,其为NIOSII的运行空间。epcs_flash_controller为EPCS控制器,用来访问EPCS16,NIOSII提供访问接口函数。remote_update_cycloneiii为CYCLONEIII系列FPGA的远程配置控制器,用来实现FPGA的远程重配置。uart实现NIOSII和上位机的通信,控制用户应用程序数据的更新过程。SPI实现NIOSII和DSP的通信。受制于FPGA片上RAM的大小,所以要对定制的NIOSII***做一定程度的简化,以控制整个NIOSII程序数据及其运行空间的大小。
图2为EPCS16中各种程序的地址分配图,其中FPGA_BOOT为NIOSII***的硬件配置数据,NIOSII_BOOT为NIOSII程序数据。这两部分数据可通过NIOSII自带的FLASHProgrammer工具下载至EPCS16的基地址处。本发明所选用的NIOSII***的硬件配置数据大小为200Kbyte左右,NIOSII程序数据也不会很大,所以预留384Kbyte的空间存储这两部分数据。0X060000-0X100000空闲不用。从0X100000起开始存放用户FPGA配置数据FPGA_APP,这部分数据大小也为200Kbyte左右,预留384Kbyte空间。从0x160000开始,最大有640Kbyte的空间,可用来存放DSP的用户应用程序。
图3为NIOSII程序流程图,***上电后,通过主动串行配置模式(AS),FPGA用FPGA_BOOT完成的自身的第一次配置。然后epcs_flash_controller中的一小段bootloader把NIOSII_BOOT从EPCS16中复制到NIOSII的运行空间onchip_ram中,完成NIOSII***的加载启动。NIOSII程序开始运行后,首先循环等待上位机的升级(程序更新)指令,如果没有升级指令,NIOSII完成正常的***启动过程。
如果NIOSII收到上位机的升级指令,其将完成用户应用程序的更新过程。NIOSII和上位机的通信过程如图4,上位机负责对DSP的应用程序文件(.out文件)和FPGA的硬件配置数据文件(.rbf文件)进行解析,生成对应的二进制文件(.bin文件),并按照既定的数据包格式,通过RS232接口传递给NIOSII。NIOSII接收数据包,并进行校验,校验通过后写入EPCS16的程序对应地址处。通信过程中,上位机发给NIOSII三种数据包,格式依次为:
①程序识别包,共8个字节,格式如下:
<0xEB><0x90><程序标识><0x00><0x00><0x00><0x00><校验和>
其中,程序标识=0x01时,表示更新DSP_APP数据;
程序标识=0x02时,表示更新FPGA_APP数据;
校验和为它前面所有字节的累加和(取后8位,下同)。
②二进制文件(.bin文件)文件长度包,共8个字节,格式如下:
<0xEB><0x90><0x03><文件长度(4字节,低字节在前)><校验和>
③二进制文件(.bin文件)数据包,共1028个字节,格式如下:
<0xEB><0x90><0x04><文件数据共1024个字节><校验和>
本发明说明书中未作详细描述的内容属于本领域技术人员的公知技术。
Claims (2)
1.一种FPGA/DSP嵌入式***的程序更新方法,其特征在于:所述FPGA/DSP嵌入式***包括FPGA芯片、DSP芯片和EPCS芯片,
所述程序更新方法步骤如下:
(1)将所述FPGA芯片设置为主动串行配置模式,使能远程配置功能;
(2)在FPGA芯片中实现NIOSII嵌入式软核处理器***;
(3)所述FPGA/DSP嵌入式***上电之后,FPGA芯片通过主动串行配置模式完成自身配置,所述NIOSII嵌入式软核处理器***开始运行,等待接收上位机发送的程序更新指令;
(4)如果所述NIOSII嵌入式软核处理器***没有收到程序更新指令,NIOSII嵌入式软核处理器***完成正常***启动;如果收到程序更新指令,则NIOSII嵌入式软核处理器***与上位机建立通信,将更新的用户FPGA配置数据或者是DSP应用程序数据写入EPCS芯片,即完成了FPGA/DSP嵌入式***的程序更新;
NIOSII嵌入式软核处理器***完成正常***启动通过如下步骤进行:
(4.1)设置DSP芯片为从SPI启动模式,
(4.2)所述NIOSII嵌入式软核处理器***通过SPI接口与DSP芯片建立通信;
(4.3)NIOSII嵌入式软核处理器***读取EPCS芯片中原有的DSP应用程序数据并且写入DSP芯片的RAM中,之后控制DSP芯片启动;
(4.4)DSP芯片启动之后,NIOSII嵌入式软核处理器***发起FPGA芯片重新配置命令,FPGA芯片通过EPCS芯片中原有的用户FPGA配置数据完成第二次配置,即NIOSII嵌入式软核处理器***完成正常***启动。
2.根据权利要求1所述的一种FPGA/DSP嵌入式***的程序更新方法,其特征在于:所述NIOSII嵌入式软核处理器***与上位机建立通信可以通过RS232接口、USB接口或者以太网接口进行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210509014.7A CN103019779B (zh) | 2012-11-30 | 2012-11-30 | 一种fpga/dsp嵌入式***的程序更新方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210509014.7A CN103019779B (zh) | 2012-11-30 | 2012-11-30 | 一种fpga/dsp嵌入式***的程序更新方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103019779A CN103019779A (zh) | 2013-04-03 |
CN103019779B true CN103019779B (zh) | 2015-11-25 |
Family
ID=47968413
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210509014.7A Active CN103019779B (zh) | 2012-11-30 | 2012-11-30 | 一种fpga/dsp嵌入式***的程序更新方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103019779B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104239084A (zh) * | 2013-06-24 | 2014-12-24 | 南京南瑞继保电气有限公司 | 一种dsp程序自动加载的实现方法 |
CN103580975A (zh) * | 2013-11-22 | 2014-02-12 | 北京机械设备研究所 | 一种在线可重配置的通用化总线数据转换方法 |
CN104881666B (zh) * | 2014-02-27 | 2018-01-16 | 王磊 | 一种基于fpga的实时二值图像连通域标记实现方法 |
CN105467921A (zh) * | 2014-09-11 | 2016-04-06 | 沈阳机床(集团)设计研究院有限公司上海分公司 | 一种软plc模块的远程在线数据更新***及方法 |
CN105573789B (zh) * | 2015-09-07 | 2017-08-08 | 武汉精测电子技术股份有限公司 | 基于软核处理器的fpga多镜像升级加载方法及装置 |
CN105446770A (zh) * | 2015-11-13 | 2016-03-30 | 邦彦技术股份有限公司 | 一种可节省存储芯片的集中存储方法及多功能模块*** |
CN106020860A (zh) * | 2016-05-04 | 2016-10-12 | 桥弘数控科技(上海)有限公司 | 一种fpga的更新方法、装置及*** |
CN106444488B (zh) * | 2016-08-31 | 2019-12-24 | 许继电气股份有限公司 | 直流输电工程中冗余装置的配置方法和配置装置 |
CN106843918B (zh) * | 2016-11-17 | 2020-07-31 | 北京京东乾石科技有限公司 | 对嵌入式***进行程序更新的方法 |
CN106843959A (zh) * | 2017-01-18 | 2017-06-13 | 株洲变流技术国家工程研究中心有限公司 | 一种fpga远程更新装置及方法 |
CN106909425B (zh) * | 2017-03-03 | 2020-05-08 | 中国电子科技集团公司第五十四研究所 | 一种dsp和fpga***在线升级方法 |
CN107273170B (zh) * | 2017-07-03 | 2018-07-27 | 西南交通大学 | 一种SoPC程序远程更新***及方法 |
CN108037943B (zh) * | 2017-12-08 | 2021-11-09 | 成都华力创通科技有限公司 | 一种基于nios ii的fpga在线升级方法 |
CN108182079B (zh) * | 2017-12-21 | 2020-09-01 | 中国船舶重工集团公司第七0七研究所 | 一种基于串口的tms320c6748程序加载方法 |
CN110737452A (zh) * | 2019-09-30 | 2020-01-31 | 清能德创电气技术(北京)有限公司 | 一种fpga固件在线升级方法及*** |
CN110750792A (zh) * | 2019-10-23 | 2020-02-04 | 天津市英贝特航天科技有限公司 | 一种基于dsp flash的安全启动方法 |
CN112148341B (zh) * | 2020-10-29 | 2023-11-21 | 合肥埃科光电科技股份有限公司 | 一种基于NiosII软核的FPGA在线升级方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030064039A (ko) * | 2002-01-25 | 2003-07-31 | 삼성전자주식회사 | 원격 에프피지에이 프로그램 업그레이드 방법 |
CN201174706Y (zh) * | 2007-11-26 | 2008-12-31 | 重庆大学 | 基于fpga技术的以太网串口转换器 |
CN102393656A (zh) * | 2011-11-29 | 2012-03-28 | 北京邮电大学 | 一种基于fpga的模块化机器人嵌入式多核主控制器 |
-
2012
- 2012-11-30 CN CN201210509014.7A patent/CN103019779B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20030064039A (ko) * | 2002-01-25 | 2003-07-31 | 삼성전자주식회사 | 원격 에프피지에이 프로그램 업그레이드 방법 |
CN201174706Y (zh) * | 2007-11-26 | 2008-12-31 | 重庆大学 | 基于fpga技术的以太网串口转换器 |
CN102393656A (zh) * | 2011-11-29 | 2012-03-28 | 北京邮电大学 | 一种基于fpga的模块化机器人嵌入式多核主控制器 |
Non-Patent Citations (3)
Title |
---|
一种远程在线更新FPGA程序的方法;刘金福等;《单片机与嵌入式***应用》;20120229(第2期);第76-77,81页 * |
从单个flash启动DSP与FPGA的方法;马运鹏等;《Proceedings of 2010 International Conference on Management Science and Engineering》;20101017;第5卷;第342-345页 * |
基于EPCS Flash配置的Altera SOPC启动及更新研究;杨钊等;《中国西部科技》;20090313;第8卷(第1期);第1-3页 * |
Also Published As
Publication number | Publication date |
---|---|
CN103019779A (zh) | 2013-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103019779B (zh) | 一种fpga/dsp嵌入式***的程序更新方法 | |
CN102609286B (zh) | 一种基于处理器控制的fpga配置程序远程更新***及其方法 | |
CN106502960A (zh) | 一种基于sip封装的无线通信芯片 | |
CN107465539A (zh) | 固件的升级方法、终端及固件的升级*** | |
CN107402776A (zh) | 一种基于蓝牙4的手机无线升级stm32单片机控制器固件方法 | |
CN106707848A (zh) | 一种控制***的控制程序组织结构和下载方法 | |
CN105320531A (zh) | 一种基于MicroBlaze软核的FPGA软件在线升级方法 | |
CN106874054A (zh) | 一种直放站内模块程序在线升级方法与*** | |
CN103116939B (zh) | 一种射频卡手机在线充值***及方法 | |
CN108664264A (zh) | 一种基于cpu通过jtag方式远程更新fpga的装置和方法 | |
CN107122219A (zh) | 安装文件的获取方法和装置 | |
CN102253844B (zh) | 一种启动处理器的方法和设备 | |
CN105630559B (zh) | 板卡固件烧录方法及其*** | |
CN103678187A (zh) | 一种微控制单元及其控制方法 | |
CN103106088A (zh) | 硬件固件独立升级***及方法 | |
CN104461660A (zh) | 一种异构***的多模式动态加载方法 | |
CN109408924A (zh) | 基于dsp芯片的fpga配置方法 | |
CN102999363B (zh) | 一种fpga/dsp嵌入式***的启动方法 | |
CN107622027A (zh) | 一种多合一Flash控制器及制卡方法 | |
CN104428751A (zh) | 程序数据的更新方法及设备 | |
CN110515635A (zh) | 主板vr固件升级方法、装置、服务器及可读存储介质 | |
CN110225139A (zh) | 一种服务器固件升级包处理方法及装置 | |
CN106951277A (zh) | 多芯片固件程序更新方法及多芯片固件程序更新*** | |
CN102880479B (zh) | 一种远程修改bios属性参数的方法及装置 | |
CN111414182A (zh) | 一种基于spi的fpga远程升级方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |