一种对SRAM型FPGA进行配置、回读和刷新的电路和操作方法与流程

文档序号:29421578发布日期:2022-03-26 14:20阅读:1096来源:国知局
一种对SRAM型FPGA进行配置、回读和刷新的电路和操作方法与流程
一种对sram型fpga进行配置、回读和刷新的电路和操作方法
技术领域
1.本发明涉及集成电路技术领域,尤其是一种对sram型fpga进行配置、回读和刷新的电路和操作方法。


背景技术:

2.fpga即现场可编程门阵列,它是和cpu、dsp并列的一种通用集成电路。fpga片内包括时序逻辑、组合逻辑、布线资源、存储器阵列、运算逻辑阵列、时钟网络、io逻辑等资源,用户通过图形化设计方式、或者硬件描述语言(hdl)的设计输入方式,可以对fpga片内的资源进行调用、进而搭建出各种数字电路。
3.用户完成fpga功能开发设计之后,需要将电路设计转换为二进制码流,码流中只包含0、1数字组合,其不同的数字组合方式,决定了fpga片内的电路结构。由于fpga的功能是由码流所决定的,所以,如果希望fpga行使预期的功能,就要先将码流传输进fpga,这一过程称作“配置”(configuration)。
4.在fpga片内,有专门的存储器阵列,用于保存配置码流。多数fpga都采用sram阵列来保存配置,称为“配置sram”即configuration sram。也有一些fpga采用flash等非易失存储技术来保存码流,但这些fpga一般容量较小、用途受限。
5.在片内采用sram来保存配置的fpga,称为sram型fpga,其容量大、速度高,主流的高性能电路应用场景,均采用这一类型的fpga。但是,sram型fpga有个缺点:当fpga被应用于诸如辐照环境、人造卫星等严酷环境时,其configuration sram阵列中的sram存储单元易受带电粒子的影响、发生误翻转,0、1数据发生错误,进而导致fpga的用户电路功能出错。
6.对fpga进行配置的电路,是领域内的公知技术:其一种典型方法是jtag下载回读:从上位机,经过usb和jtag接口的下载线,通过jtag接口,将码流传输至fpga,并可进行回读比对。此方法能够实现对fpga的配置、回读,但缺点是,配置信息掉电即丢,只适用于调试,无法用于产品和设备的现场部署。另一种方法是:使用prom对fpga进行上电配置时的配置加载,其优点是prom可以对配置数据作非易失存储,并且由于工作状态下不需要上位机,所以可以部署于实际的产品中,但是其缺点是,只能对fpga进行上电配置的配置加载,无法对fpga配置进行回读、比对、刷新。
7.经检索,中国专利公开号cn202011191407.9公开了sram型fpga的配置数据动态刷新方法及装置,该专利存在以下缺陷:仅支持spi nor flash,功能固定单一、无法实时对芯片的工作模式进行调整设置。中国专利公开号cn202011420884.8公开了一种星载sram型fpga配置与刷新控制的ip核》,该专利存在以下缺陷:仅支持并口nor flash,功能固定单一、无法实时对芯片的工作模式进行调整设置。
8.综上所述,现有技术中,存在以下技术问题:
9.(1)sram型fpga的配置sram阵列易受空间粒子、宇宙射线、带电粒子的影响,进而发生误翻转。
10.(2)jtag配置方式无法进行产品的现场实际部署。
11.(2)prom方式无法进行回读刷新。


技术实现要素:

12.为了克服上述现有技术中的缺陷,本发明提供一种对sram型fpga进行配置、回读和刷新的电路,可以对sram型fpga片内的配码错误进行检测和更新,还采用串口模块可对芯片工作状态进行监测、对工作模式进行设置调整。
13.为实现上述目的,本发明采用以下技术方案,包括:
14.一种对sram型fpga进行配置、回读和刷新的电路,电路包括如下组件:存储控制器、串口模块、数据通路、fpga接口模块、状态机;
15.所述数据通路为存储控制器与fpga接口模块之间,存储控制器与串口模块之间,以及fpga接口模块与串口模块之间进行数据交互的双向数据传输通路;
16.所述存储控制器用于读取存储器中的数据并通过数据通路发送给串口模块或fpga接口模块;
17.所述串口模块与上位机之间双向通讯连接,用于向上位机发送数据,以及接收上位机所发送的信息,所接收的信息内容包括指令、地址、数据、控制信息、状态信息;所述串口模块通过数据通路将数据发送至对应的地址中;所述串口模块还与状态机相连接,将上位机所发送的指令、控制信息、状态信息发送至状态机;
18.所述fpga接口模块用于通过数据通路接收存储控制器所发送的数据即存储器中的数据,对fpga进行配置;所述fpga接口模块还用于通过数据通路接收串口模块所发送的数据,对fpga进行配置;
19.所述fpga接口模块用于对fpga进行回读,获取fpga的回读数据;所述fpga接口模块还用于通过数据通路向串口模块发送fpga的回读数据;
20.所述fpga接口模块用于对fpga的回读数据进行比对,即将fpga的回读数据与存储器中的数据或串口模块所发送的数据进行比对,若一致,则表示fpga功能正常,fpga的配置数据正确;若不一致,则fpga的配置数据错误;所述fpga接口模块还用于利用存储器中的数据或串口模块所发送的数据对fpga的配置数据进行刷新;
21.所述状态机分别与存储控制器以及电路中的其他各个组件相连接,所述状态机用于接收串口模块所发送的指令、控制信息、状态信息;所述状态机用于对电路中的各个组件进行控制;所述状态机用于获取电路中的各个组件的工作状态/参数。
22.进一步地,所述存储控制器还用于通过数据通路接收串口模块所发送的数据并写入对应的存储器中。
23.进一步地,所述存储控制器包括:spi flash控制器、并口nor flash控制器、prom控制器;
24.所述spi flash控制器用于通过数据通路接收串口模块所发送的数据并写入spi flash中;所述spi flash控制器还用于读取spi flash中的数据并通过数据通路发送给串口模块或fpga接口模块;所述spi flash控制器用于对spi flash进行读/写/擦操作;
25.所述并口nor flash控制器用于通过数据通路接收串口模块所发送的数据并写入nor flash中;所述nor flash控制器还用于读取nor flash中的数据并通过数据通路发送给串口模块或fpga接口模块;所述nor flash控制器用于对nor flash进行读/写/擦操作;
26.所述prom控制器用于读取prom中的数据并通过数据通路发送给串口模块或fpga接口模块;所述prom控制器用于对prom进行读操作;
27.所述fpga接口模块用于通过数据通路接收spi flash控制器/并口nor flash控制器/prom控制器所发送的数据,即spi flash/nor flash/prom中的数据,对fpga进行配置;
28.所述fpga接口模块对fpga的回读数据进行比对,即将fpga的回读数据与spi flash/nor flash/prom中的数据进行比对,若一致,则表示fpga功能正常,fpga的配置数据正确;若不一致,则fpga的配置数据错误;若fpga的配置数据错误,则所述fpga接口模块利用spi flash/nor flash/prom中的数据对fpga的配置数据进行刷新;
29.所述状态机分别与spi flash控制器、并口nor flash控制器、prom控制器相连接,所述状态机控制spi flash控制器对spi flash的读/写/擦操作;所述状态机控制nor flash控制器对nor flash的读/写/擦操作;所述状态机控制prom控制器对prom的读操作;所述状态机还分别获取spi flash控制器、并口nor flash控制器、prom控制器的工作状态/参数。
30.进一步地,电路还包括:配置寄存器;所述串口模块还与配置寄存器双向通讯连接;所述串口模块将上位机所发送的数据、控制信息、状态信息发送至配置寄存器;所述配置寄存器用于对电路中的各个组件的工作状态/参数进行控制;所述配置寄存器还用于获取电路中的各个组件的工作状态/参数。
31.进一步地,电路还包括:ecc译码模块;所述ecc译码模块与fpga接口模块相连接;
32.向存储器写入数据时,先对数据进行ecc编码,即加入纠错检错码,再将编码后的数据写入存储器中;
33.所述fpga接口模块通过数据通路接收存储器中的编码后的数据时,利用所述ecc译码模块对存储器中的编码后的数据进行检错和纠错。
34.进一步地,所述fpga接口模块还用于检测fpga中是否发生sefi故障,若检测到fpga中发生sefi故障,则fpga接口模块对fpga进行芯片复位;fpga接口模块对fpga进行芯片复位后,fpga接口模块重新接收spi flash/nor flash/prom中的数据,或重新接收串口模块所发送的数据,对fpga进行配置。
35.本发明还提供了一种对sram型fpga进行配置、回读和刷新的电路的操作方法,包括以下步骤:
36.s1,所述状态机等待串口模块发送的指令,判断是否收到串口模块发送的指令即上位机的指令信息,若收到指令,则执行步骤s2;若未收到指令,则执行步骤s3;
37.s2,所述状态机收到串口模块所发送的指令即上位机的指令信息后,对指令进行解析,并进行对应操作:
38.若指令解析内容为访问存储器,则根据控制信息控制存储控制器对存储器进行读/写/擦;
39.若指令解析内容为访问fpga,则根据控制信息控制fpga接口模块对fpga的配置/回读/刷新;
40.若指令解析内容为电路的状态/参数的设置,则根据状态信息对电路的状态/参数进行设置;
41.所述状态机根据指令解析内容完成对应操作后,跳转步骤s1;
42.s3,所述状态机未收到串口模块所发送的指令,状态机控制存储控制器读取存储器中的数据,并通过数据通路发送给fpga接口模块;
43.s4,所述fpga接口模块通过数据通路接收存储控制器所发送的数据即读取存储器中的数据,用于对fpga进行配置,即存储器中的数据作为fpga的配置数据;
44.s5,fpga进入用户模式;
45.s6,等待固定时长后,判断是否进行回读:
46.若进行回读,则执行步骤s7;
47.若不进行回读,则判断是否进行刷新,若进行刷新,则执行步骤s8,若不进行刷新,则跳转回步骤s6;
48.s7,fpga接口模块对fpga进行回读,获取fpga的回读数据;所述fpga接口模块用于对fpga的回读数据进行比对,即将fpga的回读数据与存储器中的数据进行比对,若一致,则表示配置数据正确,跳转回步骤s6,等待固定时长;若不一致,则表示配置数据错误,对配置数据进行刷新,执行步骤s8;
49.s8,所述fpga接口模块通过数据通路接收存储控制器所发送的数据即读取存储器中的数据,利用存储器中的数据对fpga的配置数据进行刷新即覆盖;刷新完成后,跳转回步骤s6。
50.进一步地,步骤s2中,
51.若指令解析内容为访问存储器,则状态机控制存储控制器通过数据通路接收串口模块所发送的数据并写入对应的存储器;或者状态机控制存储控制器读取存储器中的数据并通过数据通路发送给串口模块;或者状态机控制存储控制器对存储器中的数据进行擦除;
52.若指令解析内容为访问fpga,则状态机控制fpga接口模块通过数据通路接收串口模块所发送的数据,并对fpga进行配置,即串口模块所发送的数据作为fpga的配置数据;或者,状态机控制fpga接口模块对fpga进行回读,获取fpga的回读数据;fpga接口模块对fpga的回读数据进行比对,将fpga的回读数据与串口模块所发送的数据进行比对,若一致,则表示fpga功能正常,fpga的配置数据正确;若不一致,则fpga的配置数据错误;或者,状态机控制fpga接口模块利用串口模块所发送的数据对fpga的配置数据进行刷新;或者,状态机控制fpga接口模块对fpga进行回读,获取fpga的回读数据,fpga接口模块将fpga的回读数据通过串口模块发送给上位机。
53.进一步地,步骤s3中,所述状态机根据存储器的访问优先级,控制对应的存储控制器读取访问优先级高的存储器中的数据。
54.进一步地,步骤s5之后,还等待固定时长,判断是否进行sefi故障检测,若进行sefi故障检测,则fpga接口模块对fpga进行sefi故障检测,若检测到fpga中发生sefi故障,则fpga接口模块对fpga进行芯片复位;且fpga接口模块对fpga进行芯片复位后,fpga接口模块重新接收存储器中的数据,或重新接收串口模块所发送的数据,对fpga进行配置。
55.本发明的优点在于:
56.(1)通过配置、回读、刷新操作,可以对sram型fpga片内的配码错误进行检测和更新,增强了fpga对恶劣环境的适应性。
57.(2)与jtag配置模式相比,可以在无上位机的情况下工作,能够实现现场部署。
58.(3)与prom配置模式相比,能够实现fpga配码的回读、比对、刷新。
59.(4)与已有专利相比,能够支持并口nor flash、spi flash、prom等多种存储器芯片类型。
60.(5)与已有专利相比,克服了功能固定单一的缺点:既可以上电后按照默认的预定流程工作,也可以通过串口对芯片的工作模式进行实时的调整设置。
61.(6)配置回读刷新的电路,既可以通过1颗asic单芯片实现,也可以使用cpld或另一颗fpga来实现。
附图说明
62.图1为实施例1的电路结构图。
63.图2为实施例2的电路结构图。
64.图3为本发明提供一种对sram型fpga进行配置、回读和刷新的电路的操作方法流程图。
65.图4为实施例1中上位机通过串口模块4访问各存储器的示意图。
66.图5为实施例1中上位机通过串口模块4访问fpga的示意图。
67.图6为实施例1中上位机通过串口模块4访问配置寄存器9的示意图。
68.图7为实施例1中通过存储器中的数据对fpga进行配置操作的示意图。
69.图8为实施例1中通过存储器中的数据对fpga进行回读、刷新操作的示意图。
具体实施方式
70.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
71.实施例1
72.由图1所示,一种对sram型fpga进行配置、回读和刷新的电路,电路包括如下组件:spi flash控制器1、并口nor flash控制器2、prom控制器3、串口模块4、数据通路5、fpga接口模块6、状态机8、配置寄存器9。
73.所述spi flash控制器1、并口nor flash控制器2、prom控制器3均为存储控制器。
74.所述spi flash控制器1与数据通路5进行双向数据交互;所述spi flash控制器1通过数据通路5接收串口模块4所发送的数据并写给spi flash;所述spi flash控制器1读取spi flash中的数据并通过数据通路5发送给串口模块4或fpga接口模块6;所述spi flash控制器1接受状态机8的控制,在状态机8的控制下,对并口spi flash进行读写擦等操作。
75.所述并口nor flash控制器2与数据通路5进行双向数据交互;所述并口nor flash控制器2通过数据通路5接收串口模块4所发送的数据并写给nor flash;所述并口nor flash控制器2读取并口nor flash中的数据并通过数据通路5发送给串口模块4或fpga接口模块6;所述并口nor flash控制器2接受状态机8的控制,在状态机8的控制下,对并口nor flash进行读写擦等操作。
76.所述prom控制器3与数据通路5进行数据交互;所述prom控制器3读取prom中的数据并通过数据通路5发送给串口模块4或fpga接口模块6;所述prom控制器3接受状态机8的控制,在状态机8的控制下,对prom进行读取操作。由于prom一般都是只读的,因此在典型的场景中,prom控制器3只负责读取prom中的数据,不对prom进行读取和擦除的操作;本实施例中,对prom的编程/烧写,可由专门的接口及通路实现。
77.所述串口模块4与上位机之间双向通讯连接,接收上位机送来的指令、地址、数据、控制信息、状态信息等信息。
78.所述串口模块4还与状态机8相连接,将上位机的指令、控制信息、状态信息发送至状态机8,状态机8根据上位机的指令、控制信息、状态信息,控制spi flash控制器1/并口nor flash控制器2/prom控制器3对spi flash/并口nor flash/prom进行读/写/擦等操作;控制fpga接口模块6对fpga进行配置/回读/刷新等操作;控制spi flash控制器1/并口nor flash控制器2/prom控制器3将所读取的来自spi flash/nor/prom中的数据,通过串口模块4外送至上位机;控制fpga接口模块6将所回读的fpga的配置数据即fpga的回读数据,通过串口模块4外送至上位机。
79.所述串口模块4还与配置寄存器9相连接,将上位机的数据、控制信息、状态信息发送至配置寄存器9;即上位机通过串口模块4对配置寄存器9进行读写操作;所述配置寄存器9用于对电路中的各个组件的工作状态/参数进行控制;所述配置寄存器9还用于获取电路中的各个组件的工作状态/参数;配置寄存器9可以理解为电路内部的控制位,用于对电路的功能进行设定、控制等,相当于控制寄存器。
80.所述数据通路5作为spi flash控制器1、并口nor flash控制器2、prom控制器3、串口模块4、fpga接口模块6之间的双向数据传输通路;所述数据通路5接受状态机的控制;所述状态机8控制数据通路5对fpga、存储控制器的选择,以及控制数据通路5的数据流向。
81.所述fpga接口模块6接收spi flash控制器1/并口nor flash控制器2/prom控制器3所发送的数据,即spi flash/nor flash/prom中的数据,对fpga进行配置;所述fpga接口模块6接收串口模块4所发送的数据,对fpga进行配置;所述fpga接口模块6对fpga进行回读,接收fpga的回读数据;所述所述fpga接口模块6将fpga的回读数据与spi flash/nor flash/prom中的数据或与串口模块4所发送的数据进行比较:若一致,则表示fpga功能正常,fpga的配置数据正确;若不一致,则fpga的配置数据错误,说明fpga内的配置sram阵列出现了配置数据的误翻转,当fpga的配置数据错误时,fpga接口模块6对fpga进行刷新,刷新所用的配置数据来自spi flash/nor flash/prom中的数据之一,或者来自串口模块4所发送的数据。
82.所述fpga接口模块6还用于检测fpga中是否发生sefi故障,若检测到fpga中发生sefi故障,则fpga接口模块6对fpga进行芯片复位,芯片复位的具体方式为对fpga的prog_b或program_b管脚拉低,fpga接口模块6对fpga进行芯片复位后,需要重新获取spi flash/nor flash/prom中的数据或者重新获取串口模块4所发送的数据,即重新获取配置数据,对fpga进行配置。
83.其中,sefi故障包括:
84.目标fpga的done管脚信号值异常,说明出现por sefi;
85.目标fpga内部的far寄存器出错,说明出现了selectmap sefi;
flash/nor flash/prom进行读/写/擦;其中,读即读取是指:存储控制器读取存储器中的数据并通过数据通路5发送给串口模块4;写即写入是指:存储控制器接收串口模块4所发送的数据并写入对应的存储器;擦即擦除是指:控制存储控制器对存储器中的数据进行擦除;
102.若指令解析内容为访问fpga,则状态机8根据指令解析内容,控制fpga接口模块6对fpga的配置/回读/刷新;或者控制fpga接口模块6将fpga的回读数据通过串口模块发送给上位机;其中,配置是指:fpga接口模块6通过数据通路5接收串口模块4所发送的数据,用于对fpga进行配置,即串口模块4所发送的数据作为fpga的配置数据;回读是指:fpga接口模块6对fpga进行回读,获取fpga的回读数据,并发送给串口模块4;对fpga的回读数据进行比对,将fpga的回读数据与串口模块4所发送的数据进行比对,若一致,则表示fpga功能正常,fpga的配置数据正确;若不一致,则fpga的配置数据错误;刷新是指:fpga接口模块6利用串口模块4所发送的数据对fpga的配置数据进行刷新;
103.若指令解析内容为电路的状态/参数的设置,则根据状态信息对电路的状态/参数进行设置;
104.所述状态机8根据指令解析内容完成对应操作后,跳转步骤s1;
105.s3,所述状态机8未收到串口模块4所发送的指令,状态机8控制spi flash控制器1/并口nor flash控制器2/prom控制器3读取spi flash/nor flash/prom中的数据,并通过数据通路5发送给fpga接口模块6;
106.步骤s3中,spi flash、nor flash、prom之间存在访问优先级,状态机8根据各个存储器的访问优先级,控制对应的存储控制器读取访问优先级高的存储器中的数据;
107.s4,所述fpga接口模块6通过数据通路5接收存储控制器所发送的数据即读取存储器中的数据,用于对fpga进行配置,即存储器中的数据作为fpga的配置数据;
108.s5,fpga进入用户模式;
109.s6,等待固定时长后,判断是否进行回读:本发明中,是否进行回读,取决于串口模块4是否接收到上位机的关于回读的指令和控制信息,且关于回读的控制信息存储于配置寄存器9中,即fpga接口模块6是否进行回读受配置寄存器9的控制;
110.若进行回读,则执行步骤s7;
111.若不进行回读,则判断是否进行刷新,本发明中,fpga接口模块6是否进行刷新受配置寄存器9的控制,若进行刷新,则执行步骤s8,若不进行刷新,则跳转步骤s6;本发明中,是否进行刷新,取决于串口模块4是否接收到上位机的关于刷新的指令和控制信息,且关于刷新的控制信息存储于配置寄存器9中;
112.s7,fpga接口模块6对fpga进行回读,获取fpga的回读数据;所述fpga接口模块6用于对fpga的回读数据进行比对,即将fpga的回读数据与存储器中的数据进行比对,若一致,则表示配置数据正确,跳转步骤s6;若不一致,则表示配置数据错误,对配置数据进行刷新,执行步骤s8;
113.s8,所述fpga接口模块6通过数据通路5接收存储控制器所发送的数据即读取存储器中的数据,利用存储器中的数据对fpga的配置数据进行刷新即覆盖;刷新完成后,跳转步骤s6。
114.本实施例中,步骤s5之后,还可以等待固定时长,判断是否进行sefi故障检测,本发明中,fpga接口模块6是否进行sefi故障检测受配置寄存器9的控制,若进行sefi故障检
测,则fpga接口模块(6)对fpga进行sefi故障检测,若检测到fpga中发生sefi故障,则fpga接口模块(6)对fpga进行芯片复位;且fpga接口模块(6)对fpga进行芯片复位后,fpga接口模块(6)重新接收存储器中的数据,或重新接收串口模块(4)所发送的数据,对fpga进行配置。
115.基于上述实施例1、3所提供的对sram型fpga进行配置、回读和刷新的电路和操作方法,对电路中的数据流向做出如下说明:
116.从串口模块4接收指令、数据、地址等信息时,通过串口模块4访问各存储器,进行存储器的读写擦操作由图4所示。通过串口模块4对fpga进行配置、回读、刷新等操作由图5所示。通过串口模块4对片内的配置寄存器9进行读写操作由图6所示。从存储器中读取数据时,通过存储器中的数据对fpga进行配置操作由图7所示。通过存储器中的数据对fpga进行回读、刷新等操作由图8所示。
117.基于上述实施例1、2所提供的对sram型fpga进行配置、回读和刷新的电路,其中,所述串口模块4,具体而言可以是rs232、rs422、rs485;也可以更换为can总线、iic总线等总线接口。所述存储器包括spi flash、并口nor flash、prom这三种类型,在电路应用时,可以只放置1种,也可以放置2种或多种。spi、并口nor、prom,这三种是最常见且成熟的存储器,其一种等价替换形式是:也可以使用rram阻变存储器、fram铁电存储器、pcram相变存储器等新型存储器。电路所服务的fpga芯片,可以是1颗、2颗、3颗、4颗,电路可以修改升级为支持更多片fpga芯片。
118.以上仅为本发明创造的较佳实施例而已,并不用以限制本发明创造,凡在本发明创造的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明创造的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1