雷达信号处理机及其程序烧写和加载方法与流程

文档序号:17396701发布日期:2019-04-13 00:52阅读:261来源:国知局
雷达信号处理机及其程序烧写和加载方法与流程

本发明涉及信息技术领域,尤其涉及一种雷达信号处理机及其程序烧写和加载方法。



背景技术:

随着现代雷达体制越来越丰富,雷达性能指标越来越高,复杂的雷达信号处理机形成了以fpga+dsp为核心的主流架构。

如图1所示,传统信号处理平台中,2片fpga和2片dsp各自拥有flash程序存储器,烧写方式为jtag总线方式。各个fpga和dsp通过独立的rs422总线与上位机通信。fpga和dsp均主要以jtag总线作为调试和烧写方式,jtag总线作为普通单端io总线,在长距离、强干扰条件下的数据传输可靠性差,例如,当雷达信号处理机装入雷达整机后,jtag总线通常不会引出,即使引出也存在通信误码率高甚至无法通信的问题,因此不能作为雷达整机的外部烧写总线。此外,fpga和dsp的加载通常使用各自的flash程序存储器,不仅需要更多的flash芯片,占用更多的pcb布局空间,也无法对烧写和加载过程进行统一的监控,不适用于一些需要高可靠烧写和加载的场合。



技术实现要素:

本发明提供一种雷达信号处理机及其程序烧写和加载方法,利用现有的数据通信总线,各fpga模块和dsp模块通过划分存储空间的方法共用一个flash程序存储器,采用程序回滚(fallback)机制和多种“烧写和加载程序”保护机制实现fpga和dsp可靠烧写和加载。

为了达到上述目的,本发明提供一种雷达信号处理机,包含:

核心fpga模块,其通过数据通信总线连接上位机;

第二fpga模块,其通过加载总线连接核心fpga模块,并通过数据通信总线连接上位机;

第一dsp模块,其通过加载总线连接核心fpga模块,并通过数据通信总线连接上位机;

第二dsp模块,其通过加载总线连接核心fpga模块,并通过数据通信总线连接上位机;

flash程序存储器,其通过加载总线连接核心fpga模块;

所述的flash程序存储器的存储空间包含:用于存放核心fpga模块的“烧写和加载程序”的空间、用于存放核心fpga模块的“正式程序”的空间、用于存放第二fpga模块的“正式程序”的空间、用于存放第一dsp模块的“正式程序”的空间、用于存放第二dsp模块的“正式程序”的空间、用于存放第二fpga模块的“回滚程序”的空间、用于存放第一dsp模块的“回滚程序”的空间、用于存放第二dsp模块的“回滚程序”的空间;

所述的“烧写和加载程序”用于烧写和加载各fpga模块和dsp模块的“正式程序”;

所述的“正式程序”是上位机发送的用于实现各fpga模块和dsp模块功能的数据;

所述的“回滚程序”是能够实现各fpga模块和dsp模块基本功能的数据。

所述的“烧写和加载程序”存储在flash程序存储器中从0x0地址开始的存储空间中。

本发明还提供一种雷达信号处理机的程序烧写和加载方法,包含以下步骤:

核心fpga模块加载flash程序存储器中的“烧写和加载程序”并运行;

如果在规定时间内核心fpga模块收到上位机通过数据通信总线发来的“烧写开始”命令,则进入程序烧写流程,核心fpga模块接收上位机发送的不同模块对应的“正式程序”的数据帧,并将数据帧中的数据烧写至flash程序存储器中对应的空间,程序烧写流程结束后,进入程序加载流程;

如果在规定时间内核心fpga模块没有收到上位机通过数据通信总线发来的“烧写开始”命令,则直接进入程序加载流程,核心fpga模块将flash程序存储器中存放的不同模块对应的“正式程序”分别加载至第二fpga模块、第一dsp模块、第二dsp模块和核心fpga模块。

所述的核心fpga模块在运行“加载和烧写程序”时,禁止任何数据帧擦除或写入flash程序存储器中用于存放“烧写和加载程序”的空间。

所述的程序烧写流程包含以下步骤:

核心fpga模块接收上位机发送的“正式程序”的数据帧,解析数据帧以提取数据、数据烧写地址和数据长度,将数据帧中的数据烧写至flash程序存储器中对应的空间。

核心fpga模块将数据帧中的数据烧写至flash程序存储器之前,根据数据烧写地址和数据长度判断flash程序存储器中对应的空间是否已经擦除,如果没有擦除,则核心fpga模块对flash程序存储器中对应的空间进行擦除处理。

核心fpga模块收到上位机发送的“烧写结束”命令,结束程序烧写流程,进入程序加载流程。

所述的程序加载流程包含以下步骤:

核心fpga模块复位第二fpga模块,并将flash程序存储器中存放的第二fpga模块的“正式程序”加载至第二fpga模块,如果“正式程序”加载失败,则核心fpga模块复位第二fpga模块,并将flash程序存储器中存放的第二fpga模块的“回滚程序”加载至第二fpga模块;

核心fpga模块复位第一dsp模块,并将flash程序存储器中存放的第一dsp模块的“正式程序”加载至第一dsp模块,如果“正式程序”加载失败,则核心fpga模块复位第一dsp模块,并将flash程序存储器中存放的第一dsp模块的“回滚程序”加载至第一dsp模块;

核心fpga模块复位第二dsp模块,并将flash程序存储器中存放的第二dsp模块的“正式程序”加载至第二dsp模块,如果“正式程序”加载失败,则核心fpga模块复位第二dsp模块,并将flash程序存储器中存放的第二dsp模块的“回滚程序”加载至第二dsp模块;

核心fpga模块自身复位,并加载flash程序存储器中存放的核心fpga模块的“正式程序”。

各个fpga模块和dsp模块加载完成并工作正常后,通过各自与上位机相连的数据通信总线,向上位机发送“正常工作”信号;若fpga模块或dsp模块加载失败,则向上位机发送“基本工作”信号。

本发明具有以下有益效果:

1、在不拆开整机外壳的情况下,即可利用现有的数据通信总线,对所有fpga模块和dsp模块进行烧写;

2、在现有的雷达信号处理机的基础上,通过共用各fpga模块和dsp模块的flash程序存储器,减少了flash程序存储器的数量,简化了硬件平台,节约了成本,并能对烧写和加载过程进行统一监控;

3、核心fpga模块的“烧写和加载程序”与“正式程序”通过“时分复用”的方式依次加载到核心fpga模块,使得两个程序均能完全占用核心fpga模块的资源来实现更加复杂的功能;

4、采用回滚机制,保证烧写或加载过程中出现异常时,能够实现处理机的基本功能,且在烧写或加载过程中出现任何异常时,只需对处理机重新上电就可重新烧写或加载,不会发生无法通过数据通信总线重新烧写或加载fpga或dsp的情况,具有良好的恢复性。

附图说明

图1是背景技术中雷达信号处理机的结构示意图。

图2是本发明提供的一种雷达信号处理机的结构示意图。

图3是flash程序存储器存储空间划分示意图。

图4是pc28f00ap30tfa芯片存储空间划分示意图。

图5是本发明提供的一种雷达信号处理机的程序烧写和加载方法的流程图。

图6是数据帧结构与烧写示意图。

图7是程序加载流程图。

具体实施方式

以下根据图2~图7,具体说明本发明的较佳实施例。

如图2所示,本发明提供一种雷达信号处理机,包含:

核心fpga模块1,其通过数据通信总线连接上位机;

第二fpga模块2,其通过加载总线连接核心fpga模块1,并通过数据通信总线连接上位机;

第一dsp模块3,其通过加载总线连接核心fpga模块1,并通过数据通信总线连接上位机;

第二dsp模块4,其通过加载总线连接核心fpga模块1,并通过数据通信总线连接上位机;

flash程序存储器5,其通过加载总线连接核心fpga模块1。

在本实施例中,核心fpga模块1和第二fpga模块2采用xilinx公司的7k325t芯片,第一dsp模块3和第二dsp模块4采用ti公司的tms320c6678芯片,flash程序存储器5采用micron公司的pc28f00ap30tfa,数据通信总线为rs422总线,加载总线为flash总线。

第二fpga模块2、第一dsp模块3和第二dsp模块4的flash加载总线均连接到核心fpga模块1的通用io管脚,核心fpga模块1、第二fpga模块2、第一dsp模块3和第二dsp模块4依旧通过独立的rs422总线与上位机通信。

仅保留核心fpga模块1的flash程序存储器5作为所有fpga模块和dsp模块的共用程序存储器,如图3所示,对flash程序存储器5的存储空间进行段划分,分为“烧写和加载程序”、“正式程序”和“回滚程序”等共8个程序段,flash程序存储器5的存储空间具体包含:用于存放核心fpga模块的“烧写和加载程序”的空间、用于存放核心fpga模块的“正式程序”的空间、用于存放第二fpga模块的“正式程序”的空间、用于存放第一dsp模块的“正式程序”的空间、用于存放第二dsp模块的“正式程序”的空间、用于存放第二fpga模块的“回滚程序”的空间、用于存放第一dsp模块的“回滚程序”的空间、用于存放第二dsp模块的“回滚程序”的空间。

flash程序存储器5的读、写操作以存储位宽为单位,但擦除操作以硬件段(block)为单位。如图4所示,以pc28f00ap30tfa芯片为例,芯片从0x0地址开始,依次划分为1023个大小为64kword的block和4个大小为16kword的block。考虑到程序重新烧写前,需将flash芯片对应的硬件段擦除,故程序段的边界设计为硬件段的边界,即以数个连续的硬件段作为1个程序段。

本发明的核心是“烧写和加载程序”,“烧写和加载程序”主要用于各fpga模块和dsp模块的“正式程序”的烧写和加载。由于fpga模块5上电后,会从flash总线的0x0地址自动加载程序,故信号处理平台中,唯一与flash程序存储器5直连的核心fpga模块1的“烧写和加载程序”,必须放在flash程序存储器5中从0x0地址开始的数个连续的硬件段构成的程序段中。

核心fpga模块1除了实现原有的功能(“正式程序”)外,还需承担其它fpga模块和dsp模块的程序烧写和加载的功能(“烧写和加载程序”)。核心fpga模块1通过原有的数据通信总线(如rs422总线、usb总线、pci总线、网口等)与上位机通信,除了用于正常的命令和数据通信外,还用于实现烧写和加载相关命令的传输,以及接收上位机发送的、需要烧写到flash程序存储器5的各fpga模块和dsp模块的“正式程序”的功能。

如图5所示,本发明还提供一种雷达信号处理机的程序烧写和加载方法,包含以下步骤:

步骤s1、处理机上电;

步骤s2、核心fpga模块加载flash程序存储器中的“烧写和加载程序”并运行;

步骤s3、核心fpga模块判断在规定时间内是否收到上位机通过数据通信总线发来的“烧写开始”命令,若是,则进行步骤s4,否则,进行步骤s5;

步骤s4、进入程序烧写流程;

步骤s5、进入程序加载流程。

“烧写和加载程序”烧写进flash程序存储器并装入整机后,一旦被错误修改且运行,则雷达信号处理机的烧写和加载无法完成,也无法通过rs422总线重新烧写,只能拆开整机外壳从jtag总线重新烧写,因此“烧写和加载程序”的保护至关重要。本发明采取以下措施保护“烧写和加载程序”:

1、软件规划上:“加载和烧写程序”和“正式程序”均需加载到核心fpga模块运行,但二者进行了隔离处理,即在功能上完全独立、分属2个工程、烧写在flash程序存储器中的不同硬件段;

2、软件功能上:“加载和烧写程序”运行时,核心fpga模块接收上位机发送的“数据帧”,一旦发现有“数据帧”需要擦除或写入“加载和烧写程序”所在硬件段,则禁止并报错;

3、硬件结构上:flash程序存储器pc28f00ap30tfa芯片上电后,结合wp#管脚与lock_down命令可以彻底锁定相应硬件段,在不配合wp#管脚状态改变的情况下,无法通过软件命令来解锁相应硬件段,进而擦除和重新烧写“加载和烧写程序”,因此“加载和烧写程序”运行后,首先彻底锁定“加载和烧写程序”所在硬件段,并控制wp#管脚状态。

通过软件和硬件措施保护“烧写和加载程序”,使得存储在flash程序存储器中的“烧写和加载程序”不被修改,从而保证雷达信号处理机在烧写或加载出现任何异常的情况下都能通过数据通信总线重新烧写或加载。

如图5所示,所述的步骤s4中,程序烧写流程包含以下步骤:

步骤s4.1、核心fpga模块判断是否收到了上位机发送的“正式程序”的数据帧,若是,进行步骤s4.2,若否,进行步骤s4.6;

步骤s4.2、核心fpga模块解析数据帧从而提取数据、数据烧写地址和数据长度等信息;

步骤s4.3、核心fpga模块根据数据烧写地址和数据长度判断flash程序存储器中对应的空间是否已经擦除,若是,进行步骤s4.5,若否,进行步骤s4.4;

步骤s4.4、核心fpga模块对flash程序存储器中对应的空间进行擦除处理,进行步骤s4.5;

步骤s4.5、核心fpga模块将数据帧中的数据烧写至flash程序存储器中对应的空间,进行步骤s4.6;

步骤s4.6、核心fpga模块判断是否收到上位机发送的“烧写结束”命令,若是,则烧写流程完成,进行步骤s5,进入程序加载流程,若否,则进行步骤s4.1。

在本实施例中,上位机将在ise软件中编译得到的核心fpga模块和第二fpga模块的“正式程序”的.bit文件,通过impact软件转换得到bit-swap格式的.bin文件,最后分割成一定长度的数据段并打包成“数据帧”,上位机将在ccs软件中编译得到的第一dsp模块和第二dsp模块的“正式程序”的.out文件,依次通过ti官方格式转换软件hex6x.exe、b2ccs.exe、ccs2bin.exe等转换为.bin文件,最后分割成一定长度的数据段并打包成“数据帧”;核心fpga模块加载模式为“masterbpi”,故核心fpga模块上电后,通过flash总线加载事先烧写在flash程序存储器的0x0地址的“烧写和加载程序”并运行,如果在规定时间内(5s内)收到上位机发送的“烧写开始”命令后,继续等待上位机发送的“烧写结束”命令或数据帧;上位机将需要烧写的“正式程序”的数据帧通过rs422总线发送给核心fpga模块,由于flash程序存储器在写入数据前,必须对所在硬件段进行擦除,故“数据帧”需按照地址从低到高的顺序依次发送;核心fpga模块收到“正式程序”的数据帧后,解析数据帧从而提取数据、数据烧写地址和数据长度等信息,核心fpga模块根据数据烧写地址和数据长度,判断flash程序存储器中对应的烧写区域是否已擦除,若没有擦除,则先对该烧写区域所在的硬件段进行擦除处理,然后核心fpga模块将数据帧中的数据烧写至flash程序存储器中对应的烧写区域;核心fpga模块持续进行烧写流程,直至收到上位机发送的“烧写结束”命令,至此,烧写流程完成,进入加载流程。

如图6所示,数据帧包含:帧头、帧长度、帧流水号、数据基地址、数据偏移地址、数据长度、数据和校验位等。其中,数据基地址为该“数据帧”所属“正式程序”程序段的基地址,数据偏移地址为该“数据帧”中的数据相对所属“正式程序”程序段的地址偏移,数据基地址与数据偏移地址相加得到“数据帧”中的数据在flash程序存储器中的绝对地址的首地址,即,数据烧写地址的首地址=数据基地址+数据偏移地址,数据长度为“数据帧”中的数据总字节长度。

如图7所示,所述的步骤s5中,程序加载流程包含以下步骤:

步骤s5.1、核心fpga模块复位第二fpga模块,并将flash程序存储器中存放的第二fpga模块的“正式程序”加载至第二fpga模块;

步骤s5.2、核心fpga模块判断第二fpga模块的加载是否成功,若是,进行步骤s5.4,若否,进行步骤s5.3;

步骤s5.3、核心fpga模块复位第二fpga模块,并将flash程序存储器中存放的第二fpga模块的“回滚程序”加载至第二fpga模块,进行步骤s5.4;

步骤s5.4、核心fpga模块复位第一dsp模块,并将flash程序存储器中存放的第一dsp模块的“正式程序”加载至第一dsp模块;

步骤s5.5、核心fpga模块判断第一dsp模块的加载是否成功,若是,进行步骤s5.7,若否,进行步骤s5.6;

步骤s5.6、核心fpga模块复位第一dsp模块,并将flash程序存储器中存放的第一dsp模块的“回滚程序”加载至第一dsp模块,进行步骤s5.7;

步骤s5.7、核心fpga模块复位第二dsp模块,并将flash程序存储器中存放的第二dsp模块的“正式程序”加载至第二dsp模块;

步骤s5.8、核心fpga模块判断第二dsp模块的加载是否成功,若是,进行步骤s5.10,若否,进行步骤s5.9;

步骤s5.9、核心fpga模块复位第二dsp模块,并将flash程序存储器中存放的第二dsp模块的“回滚程序”加载至第二dsp模块,进行步骤s5.10;

步骤s5.10、核心fpga模块自身复位,并加载flash程序存储器中存放的核心fpga模块的“正式程序”。

各个fpga模块和dsp模块加载完成并工作正常后,通过各自与上位机相连的数据通信总线,向上位机发送“正常工作”信号;若fpga模块或dsp模块加载失败,则通过加载总线主动加载“回滚程序”并工作,同时向上位机发送“基本工作”信号。

在本实施例中,所有fpga模块和dsp模块通过相关配置管脚,均设置为从flash加载总线主动加载程序的模式,其中,dsp模块tms320c6678设置为“emifa16”模式,fpga模块7k325t设置为“masterbpi”模式;核心fpga模块上电后,通过flash总线加载事先烧写在flash程序存储器的0x0地址的“烧写和加载程序”并运行,如果在规定时间内未收到上位机发送的“烧写开始”命令,则开始各fpga模块和dsp模块的程序加载;核心fpga模块通过给第二fpga模块的program_b硬件复位管脚一个反向脉冲来复位第二fpga模块的加载逻辑,复位后,第二fpga模块从flash加载总线的0x0地址开始,从a地址加载程序,第二fpga模块的加载管脚与核心fpga模块的通用io管脚相连,核心fpga模块的通用io管脚通过模拟fpga的加载总线时序,将flash程序存储器中保存的第二fpga模块的“正式程序”加载至第二fpga模块,核心fpga模块用a地址加上flash程序存储器中第二fpga模块“正式程序”的首地址b得到实际加载地址c,并从c地址读取数据至第二fpga模块,第二fpga模块完成加载;若核心fpga模块在规定时间内未检测到第二fpga模块的init_b管脚被拉高,说明第二fpga模块的“正式程序”加载失败,则核心fpga模块复位第二fpga模块的program_b管脚,并通过flash总线加载事先烧写在flash程序存储器中的第二fpga模块的“回滚程序”至第二fpga模块,该回滚程序实现第二fpga模块的基本功能;核心fpga模块通过给第一dsp模块的reset_b复位管脚一个反向脉冲来复位第一dsp模块,复位后,第一dsp模块从flash加载总线的0x0地址开始,从d地址加载程序,核心fpga模块用d地址加上flash中第一dsp模块“正式程序”的首地址e得到实际加载地址f,并从f地址读取数据至第一dsp模块,第一dsp模块完成加载;若核心fpga模块在规定时间内未检测到第一dsp模块的bootcomplete管脚被拉高,说明第一dsp模块的“正式程序”加载失败,则核心fpga模块复位第一dsp模块的reset_b管脚,并通过flash总线加载事先烧写在flash程序存储器中的第一dsp模块的“回滚程序”至第一dsp模块,该回滚程序实现第一dsp模块的基本功能;核心fpga模块通过给第二dsp模块的reset_b复位管脚一个反向脉冲来复位第二dsp模块,复位后,第二dsp模块从flash加载总线的0x0地址开始,从d地址加载程序,核心fpga模块用d地址加上flash中第二dsp模块“正式程序”的首地址e得到实际加载地址f,并从f地址读取数据至第二dsp模块,第二dsp模块完成加载;若核心fpga模块在规定时间内未检测到第二dsp模块的bootcomplete管脚被拉高,说明第二dsp模块的“正式程序”加载失败,则核心fpga模块复位第二dsp模块的reset_b管脚,并通过flash总线加载事先烧写在flash程序存储器中的第二dsp模块的“回滚程序”至第二dsp模块,该回滚程序实现第二dsp模块的基本功能;核心fpga模块通过icap原语向片内寄存器wbstar的start_addr位置(start_addr位置用于存放fpga软件重新加载的首地址)写入flash中核心fpga模块“正式程序”的首地址g;核心fpga模块通过icap原语将片内寄存器bootsts的iprog标志位置“1”,触发软件重新加载,使得核心fpga模块从start_addr位置中保存的新加载地址g开始加载自身的“正式程序”,核心fpga模块完成“正式程序”加载。

本发明采用程序回滚机制,在“正式程序”加载失败时,自动重新加载经过验证的、能基本满足处理机工作需求的“回滚程序”,保证在不方便重新烧写“正式程序”的情况下,实现处理机基本功能。

本发明具有以下有益效果:

1、在不拆开整机外壳的情况下,即可利用现有的数据通信总线,对所有fpga模块和dsp模块进行烧写;

2、在现有的雷达信号处理机的基础上,通过共用各fpga模块和dsp模块的flash程序存储器,减少了flash程序存储器的数量,简化了硬件平台,节约了成本,并能对烧写和加载过程进行统一监控;

3、核心fpga模块的“烧写和加载程序”与“正式程序”通过“时分复用”的方式依次加载到核心fpga模块,使得两个程序均能完全占用核心fpga模块的资源来实现更加复杂的功能;

4、采用回滚机制,保证烧写或加载过程中出现异常时,能够实现处理机的基本功能,且在烧写或加载过程中出现任何异常时,只需对处理机重新上电就可重新烧写或加载,不会发生无法通过数据通信总线重新烧写或加载fpga或dsp的情况,具有良好的恢复性。

尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1