fpga芯片的初始化电路和初始化方法
技术领域
1.本发明涉及半导体技术领域,尤其涉及fpga芯片及初始化方法。
背景技术:
2.对于现场可编程逻辑门阵列(field programmable gate array,fpga)芯片来说,fpga芯片中的嵌入式存储器(emb)是很重要的一个模块。一般来说,嵌入式存储器(emb)的核心是静态随机存储器(sram),sram外部会有很多的选择器(mux)来配置sram的工作模式,包括位宽、位深、时钟(clock)选择、输出寄存选择等功能。
3.fpga芯片上电之后需要配置嵌入式存储器(emb)的初始值。通常做法是将嵌入式存储器(emb)的初始值存储至非易失存储器,上电之后,fpga读取非易失存储器的初始值,将其写入所述嵌入式存储器(emb)中完成初始化。
4.但是,通常采用的初始化电路会额外增加硬件开销。
技术实现要素:
5.本发明提供了一种fpga芯片的初始化电路和初始化方法,通过复用嵌入式存储器的配置存储器存储数据,使得嵌入式存储器基于该数据完成初始化,无需额外硬件存储数据,减少了硬件开销。另外,由于嵌入式存储器基于数据自动进行初始化,因此可以较为灵活的选择嵌入式存储器的初始化地址。
6.第一方面,本发明提供了一种fpga芯片的初始化电路,包括:数据通路、输入输出模块、配置存储器和嵌入式存储器;
7.所述数据通路用于接收数据;
8.所述输入输出模块用于将所述数据中所述嵌入式存储器对应的数据传输至所述配置存储器进行存储,并可将所述嵌入式存储器中存储的数据传输至片外输出;
9.所述配置存储器用于存储所述输入输出模块传输的数据的区域包括第一区域、第二区域、第三区域和第四区域,所述第一区域、第二区域、第三区域和第四区域分别与所述嵌入式存储器的数据输入端、地址输入端、片选使能端、写使能端一一对应连接;
10.所述嵌入式存储器用于基于所述第一区域、第二区域、第三区域和第四区域分别存储的数据进行动作;
11.在第一初始化阶段,通过所述数据通路、所述输入输出模块、所述第一区域、第二区域、第三区域和第四区域,将所述嵌入式存储器的初始数据、初始化地址、片选命令、写命令分别传输至对应的所述嵌入式存储器的数据输入端、地址输入端、片选使能端及写使能端;
12.在第二初始化阶段,所述嵌入式存储器将所述初始数据写入所述初始化地址对应的多个存储单元以实现初始化。
13.第二方面,本发明提供了一种fpga芯片的初始化方法,应用于数据通路、输入输出模块、配置存储器和嵌入式存储器;其中,所述输入输出模块用于将所述数据通路接收的数
据中所述嵌入式存储器对应的数据传输至所述配置存储器进行存储;所述配置存储器存储所述输入输出模块传输的数据的区域包括:第一区域、第二区域、第三区域和第四区域,所述第一区域、第二区域、第三区域和第四区域分别与所述嵌入式存储器的数据输入端、地址输入端、片选使能端、写使能端一一对应连接;所述方法包括:
14.通过所述数据通路、所述输入输出模块、所述第一区域将所述嵌入式存储器的初始数据传输至所述嵌入式存储器的数据输入端;
15.通过所述数据通路、所述输入输出模块、所述第二区域将所述嵌入式存储器的初始化地址传输至所述嵌入式存储器的地址输入端;
16.通过所述数据通路、所述输入输出模块、所述第三区域将所述嵌入式存储器的片选命令传输至所述嵌入式存储器的片选使能端;
17.通过所述数据通路、所述输入输出模块、所述第四区域将所述嵌入式存储器的写命令传输至所述嵌入式存储器的写使能端;
18.所述嵌入式存储器基于所述第一区域、第二区域、第三区域和第四区域存储的数据将所述初始数据写入所述初始化地址对应的多个存储单元以实现初始化。
19.本发明提供了一种fpga芯片的初始化电路和初始化方法,该初始化电路包括配置存储器、输入输出模块、嵌入式存储器和数据通路;其中,数据通路用于接收并传输数据;输入输出模块用于将数据中嵌入式存储器对应的数据传输至配置存储器存储,读出配置存储器存储的数据,并可将嵌入式存储器中存储的数据传输至片外输出;配置存储器用于存储输入输出模块传输的数据的区域包括第一区域、第二区域、第三区域和第四区域,第一区域、第二区域、第三区域和第四区域分别与嵌入式存储器的数据输入端、地址输入端、片选使能端、写使能端一一对应连接;嵌入式存储器用于基于第一区域、第二区域、第三区域和第四区域分别存储的数据进行动作;在第一初始化阶段,通过数据通路、输入输出模块、第一区域、第二区域、第三区域和第四区域,将嵌入式存储器的初始数据、初始化地址、片选命令、写命令分别传输至对应的嵌入式存储器的数据输入端、地址输入端、片选使能端及写使能端;在第二初始化阶段,嵌入式存储器将初始数据写入初始化地址对应的多个存储单元以实现初始化。综上所述,通过本发明的技术方案,可复用嵌入式存储器的配置存储器,使得嵌入式存储器基于该数据完成初始化,无需额外硬件存储数据,减少了硬件开销。另外,由于嵌入式存储器基于数据自动进行初始化,因此可以较为灵活的选择嵌入式存储器的初始化地址。
20.上述的非惯用的优选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
21.为了更清楚地说明本实施例或现有的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
22.图1为本实施例提供的一种fpga芯片的初始化电路的结构示意图;
23.图2为图1提供的输入输出模块(cfg mem i/o)的写入操作的时序图;
24.图3为图1提供的块存储器(block ram)的结构示意图;
25.图4为图3示出的块存储器(block ram)的写入操作的时序图;
26.图5为本实施例提供的一种fpga芯片的初始化回读电路的结构示意图;
27.图6为图5提供的输入输出模块(cfg mem i/o)和输出移存器的回读操作的时序图;
28.图7为本实施例提供的一种fpga芯片的结构示意图。
具体实施方式
29.为使本发明的目的、技术方案和优点更加清楚,下面将结合具体实施例及相应的附图对本发明的技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
30.图1为本实施例提供的一种fpga芯片的初始化电路,图3为本实施例提供的嵌入式存储器emb的结构示意图。如图1和图3所示,fpga芯片包括配置存储器(cfc memory)、输入输出模块(cfg mem i/o)、嵌入式存储器emb和数据通路(cfgin_global);其中,数据通路(cfgin_global)用于接收数据;输入输出模块(cfg mem i/o)用于将数据中嵌入式存储器emb对应的数据传输至配置存储器(cfc memory)进行存储;配置存储器(cfc memory)用于存储输入输出模块(cfg mem i/o)传输的数据的区域包括第一区域、第二区域、第三区域和第四区域,第一区域、第二区域、第三区域和第四区域分别与嵌入式存储器emb的数据输入端di、地址输入端adr、片选使能端ce、读/写使能端we一一对应连接;嵌入式存储器emb用于基于第一区域、第二区域、第三区域和第四区域分别存储的数据进行动作。其中,在第一初始化阶段,通过数据通路(cfgin_global)、输入输出模块(cfg mem i/o)、第一区域、第二区域、第三区域和第四区域,将嵌入式存储器emb的初始数据、初始化地址、片选命令(用于控制嵌入式存储器进行工作)和写命令(用于控制嵌入式存储器进行写操作)分别传输至对应的嵌入式存储器emb的数据输入端di、地址输入端adr、片选使能端ce、读/写使能端we。在第二初始化阶段,嵌入式存储器emb将初始数据写入初始化地址对应的多个存储单元以实现初始化。
31.本实施例中,通过复用嵌入式存储器emb的配置存储器(cfc memory)存储数据,使得嵌入式存储器基于该数据完成初始化,无需额外硬件存储数据,减少了硬件开销。另外,由于嵌入式存储器emb基于数据自动进行初始化,因此可以较为灵活的选择嵌入式存储器emb的初始化地址。
32.应当理解,嵌入式存储器emb的初始化地址指示了初始数据需要写入的嵌入式存储器emb中多个存储单元的位置。初始数据包括多个存储单元各自的初始设置值。
33.需要说明的是,数据通路可能会接收大量数据,对应的,输入输出模块(cfg mem i/o)可以从数据通路接收的数据中选择出嵌入式存储器emb对应的数据传输至配置存储器(cfc memory)进行存储。为了便于描述了区域,下文将数据通路接收的数据中嵌入式存储器emb对应的数据称为目标数据。示例地,在初始化阶段,目标数据包括初始数据、初始化地址、片选命令和写命令;示例地,在回读阶段,目标数据包括回读地址和读命令(用于控制嵌入式存储器emb的读操作)。其中,初始化地址对应的多个存储单元包括回读地址对应的多
个存储单元,比如,初始化地址对应的多个存储单元和回读地址对应的多个存储单元相同,具体需要结合实际需求确定,此次不做过多限定。
34.需要说明的是,读使能端和写使能端设置在一起,称为读/写使能端we。示例地,通过写命令实现写操作,对应的,传输写命令的信号可以理解为使能信号;通过非写命令实现读操作,对应的,传输非写命令的信号可以理解为使能信号,应当理解,非写命令也可以理解为读命令。进一步的,片段使能端ce和读/写使能端we可以设置为一个端口,为了便于描述和区分可以称为片选/读写使能端口ce/we;比如,片段使能端ce的信号为高电平,使能端we为低电平,嵌入式存储器emb进行读操作;片段使能端ce和使能端we均为高电平,嵌入式存储器emb进行写操作;下文以片选/读写使能端口ce/we为例进行描述,对应的,第三区域和第四区域可以理解为同一区域。为了便于描述和区分,下文将第一区域称为数据存储区域,用于存储数据;第二区域称为地址存储区域,用于存储地址;第三区域和第四区域统称为片选/读写命令存储区域,用于存储命令。值得注意,如果片段使能端ce和读/写使能端we设置在不同端口,则第三区域和第四区域是不同的。本实施例以读使能端和写使能端设置在一起进行描述。当然,在一些可能的情况,读使能端和写使能端可以设置在不同端口;对应的,嵌入式存储器emb设置有读使能端和写使能端,则第四区域连接嵌入式存储器emb的写使能端,嵌入式存储器emb的写命令存储在第四区域以传输至嵌入式存储器emb的写使能端。
35.在实际应用中,配置存储器(cfc memory)的数据存储区域还可以用于存储嵌入式存储器emb的工作模式的配置数据。需要说明的是,嵌入式存储器emb包括多个存储单元,嵌入式存储器emb的工作模式的配置数据用于对嵌入式存储器emb中的多个存储单元进行配置,比如,选择嵌入式存储器emb中的第一列存储单元进行存储。
36.示例地,嵌入式存储器emb可以有多个,多个嵌入式存储器emb可以排成一列。图1示出了4个嵌入式存储器emb排成一列。图3示出了块存储器block ram。如图3和图1所示,4个emb排成一列可以形成块存储器block ram。
37.在一种可行的实现方式中,嵌入式存储器emb设置有数据选择器mux,可以选择数据输入端di的信号来源是初始化的电路或者正常用户功能的电路。
38.示例地,图3示出了4个嵌入式存储器emb,在嵌入式存储器emb设置有数据选择器mux,当cfg_init_en选择为1时,表示进入初始化的工作模式,则端口信号都从cfg_*输入,即配置存储器(cfc memory)输出的信号,比如,di[m:0](表示数据存储区域传输的初始数据的信号),adr[n:0](表示地址存储区域传输的初始化地址的信号)、we/ce(表示片选/读写命令存储区域传输的片选命令和写命令的信号);[m:0]表示数据线的数量,例如4个嵌入式存储器emb各自有18条数据线,则m可以为71,[m:0]表示72条数据线;对应的,[n:0]表示地址线的数量,例如4个嵌入式存储器emb各自有9条地址线,则n可以为35,[n:0]表示36条地址线。当cfg_init_en选择为0时,表示进入正常用户功能模式,则端口信号都从fp_*输入,即正常用户功能的电路输入的信号。
[0039]
在一种可行的实现方式中,将嵌入式存储器emb的初始数据写入配置存储器(cfc memory)的数据存储区域后将其传输到嵌入式存储器emb的数据输入端口di;将嵌入式存储器emb的初始化地址写入配置存储器(cfc memory)的地址存储区域后将其传输到嵌入式存储器emb的地址输入端口adr;将嵌入式存储器emb的片选命令和写命令写入配置存储器
(cfc memory)的片选/读写命令存储区域后将其传输到嵌入式存储器emb的片选/读写使能端口ce/we。
[0040]
在实际应用中,首先,将输入输出模块(cfg mem i/o)传输的目标数据写入配置存储器(cfc memory)中。这里,目标数据包括初始数据、初始化地址、片选命令和写命令。
[0041]
示例地,图2为图1示出的输入输出模块(cfg mem i/o)的写入操作的时序图。其中,写入操作采用先shfit数据再写入的方式。
[0042]
如图2和图1所示,输入输出模块(cfc mem i/o)在时钟信号cclk下工作。
[0043]
在时间t1a,处于高电平的复位信号cfgmem_por,使得配置存储器(cfc memory)上电。需要说明的是,在时间t1a,配置存储器(cfc memory)在上电的过程同时实现复位。当然,在一些可能的情况,也可仅上电不做复位。
[0044]
高电平有效的控制信号cfgmem_iniall_cmc传输至输入输出模块(cfc mem i/o),控制输入输出模块(cfc mem i/o)完成配置存储器(cfc memory)的初始化,比如,将配置存储器(cfc memory)存储的值全部变成0(低电平),cfgin[y:0]信号保持初始状态initial stage,即未接收到数据。其中,[y:0]表示位线的数量,比如,配置存储器(cfc memory)的位线有8条,则y可以为7。
[0045]
在时间t2a,cfgmem_addr[x:0]信号传输配置存储器(cfc memory)的地址0至配置存储器(cfc memory)的译码器cfg mem dec,译码器cfg mem dec选通配置存储器(cfc memory)中地址0对应的若干个存储单元。其中,[x:0]表示地址线的数量,比如,配置存储器(cfc memory)的字线有10条,则x可以为9。
[0046]
cfgin[y:0]信号可以用于传输power gating and iso of emb(用于控制嵌入式存储器emb的功率门控,使得嵌入式存储器emb在低功耗下工作)至输入输出模块(cfc mem i/o)的数据输入端口cfgin。
[0047]
高电平有效的控制信号emb_seam_init_en、cshift和cwrite依次传输至输入输出模块(cfc mem i/o),使得输入输出模块(cfc mem i/o)通过通过位线bl/blb先将power gating and iso of emb写入配置存储器(cfc memory)中地址0对应的若干个存储单元。
[0048]
在时间t3a,包括多次写入操作,每次写入操作的过程类型,以第一次写入操作为例进行描述。
[0049]
cfgmem_addr[x:0]信号传输配置存储器(cfc memory)的地址addr0至配置存储器(cfc memory)的译码器cfg mem dec,译码器cfg mem dec选通配置存储器(cfc memory)中addr0对应的若干个存储单元。
[0050]
cfgin[y:0]信号传输data1至输入输出模块(cfc mem i/o)的数据输入端口cfgin。示例地,data1可以为address、we,di(即嵌入式存储器emb的初始化地址、写命令、初始数据)中的任意一种。
[0051]
高电平有效的控制信号emb_seam_init_en、cshift和cwrite依次传输至输入输出模块(cfc mem i/o),使得输入输出模块(cfc mem i/o)通过位线bl/blb将dada1写入配置存储器(cfc memory)中addr0对应的若干个存储单元。
[0052]
需要说明的是,通过多次写入操作,将address、we,di of emb(即嵌入式存储器emb的初始数据、初始化地址、写命令)分别写入配置存储器(cfc memory)对应的数据存储区域、地址存储区域、片选/读写命令区域,即数据存储区域存储初始数据,地址存储区域存
储初始化地址,片选/读写命令区域存储写命令。
[0053]
在时间t4a,包括多次写入操作,每次写入操作的过程类型,以第一次写入操作为例进行描述。
[0054]
cfgmem_addr[x:0]信号传输配置存储器(cfc memory)的地址addrn配置存储器(cfc memory)的译码器cfg mem dec,译码器cfg mem dec选通配置存储器(cfc memory)中addrn对应的若干个存储单元。
[0055]
cfgin[y:0]信号传输datan至输入输出模块(cfc mem i/o)的数据输入端口cfgin。示例地,dadan可以为ce(即嵌入式存储器emb的片选命令)。
[0056]
高电平有效的控制信号emb_seam_init_en、cshift和cwrite依次传输至输入输出模块(cfc mem i/o),使得输入输出模块(cfc mem i/o)通过位线bl/blb将datan写入配置存储器(cfc memory)中addrn对应的若干个存储单元。
[0057]
需要说明的是,通过多次写入操作,将ce of emb(即嵌入式存储器emb的片选命令)写入配置存储器(cfc memory)中的片选/读写命令区域。
[0058]
在一些可能的实现方式中,在时间t3a,将address、ce,di(即嵌入式存储器emb的地址、片选命令、初始数据)分别写入配置存储器(cfc memory)中对应的数据存储区域、地址存储区域、片选/读写命令区域;在时间t4a,将we of emb(即嵌入式存储器emb的写命令)写入配置存储器(cfc memory)对应的片选/读写命令区域。
[0059]
其中,emb_seam_init_en信号用于控制跳过其他配置存储器(cfc memory)的输入输出模块(cfc mem i/o),保证cshift信号只经过嵌入式存储器emb的初始化所需要的配置存储器(cfc memory)的输入输出模块(cfc mem i/o)。
[0060]
示例地,图4为图3示出的块存储器(block ram)的写入操作的时序图。
[0061]
如图4和图1所示,在配置存储器(cfc memory)的输入输出模块(cfc mem i/o)在时钟信号cclk下工作。
[0062]
在时间t1b,输入输出模块(cfc mem i/o)依次接收高电平的cwrite信号和cshift信号。
[0063]
配置存储器(cfc memory)中数据存储区域传输di[m:0]信号至嵌入式存储器emb的数据输入端口,di[m:0]信号用于传输初始数据,从而将初始数据传输至嵌入式存储器emb的数据输入端口。
[0064]
在时间t2b至t4b类似,此次不做过多赘述。
[0065]
在时间t6b,输入输出模块(cfc mem i/o)依次接收高电平的cwrite信号和cshift信号。
[0066]
配置存储器(cfc memory)中地址存储区域传输addr[n:0]信号传输至嵌入式存储器emb的地址端口,addr[n:0]信号用于传输初始化地址,从而将初始化地址传输至嵌入式存储器emb的地址输入端口。
[0067]
在时间t8b,输入输出模块(cfc mem i/o)依次接收高电平的cwrite信号和cshift信号。
[0068]
配置存储器(cfc memory)中片选/读写命令存储区域传输we/ce信号至嵌入式存储器emb的we/ce端口,we/ce信号用于传输片选命令和写命令,从而使得嵌入式存储器emb将初始数据写入初始化地址对应的若干个存储单元。
[0069]
如图1所示,在一种可行的实现方式中,通过数据通路(cfgin_global)传输数据至配置存储器(cfc memory)的输入输出模块(cfc mem i/o)的数据输入端cfgin。
[0070]
在一个例子中,fpga芯片还包括:第一选通器g1,连接输入输出模块(cfc mem i/o)的数据输入端cfgin和数据通路(cfgin_global),用于在初始化阶段,选通输入输出模块(cfc mem i/o)的数据输入,以使输入输出模块(cfc mem i/o)将数据通路(cfgin_global)接收的数据中嵌入式存储器emb对应的数据(目标数据)传输至配置存储器(cfc memory)进行存储,跳过之外的其他配置存储器(cfc memory)的输入输出模块(cfc mem i/o)的数据输入。
[0071]
示例地,如图1所示,第一选通器g1可以设置在输入输出模块(cfc mem i/o)的数据输入端cfgin和数据通路(cfgin_global)连接的线路上。
[0072]
需要说明的,其他配置存储器(cfc memory)用于存储嵌入式存储器emb之外的其他器件的配置数据,其他配置存储器(cfc memory)的输入输出模块(cfc mem i/o)用于实现其他配置存储器(cfc memory)的配置逻辑,通过第一选通器g1可以保证只经过嵌入式存储器emb的初始化所需要的配置存储器(cfc memory)的输入输出模块(cfc mem i/o),无需对其他配置存储器(cfc memory)的输入输出模块(cfc mem i/o)进行数据写入的操作,从而能极大的提高数据写入的效率。
[0073]
在实际应用中,在对嵌入式存储器emb进行初始化时,选通第一选通器g1,之后,数据通路(cfgin_global)传输数据至输入输出模块(cfc mem i/o)的数据输入端cfgin;输入输出模块(cfc mem i/o)通过位线bl/blb将数据中目标数据传输至配置存储器(cfc memory)进行存储。当需要对其他配置存储器(cfc memory)进行配置数据写入操作时,截止第一选通器g1,使配置存储器(cfc memory)的输入输出模块(cfc mem i/o)与其他配置存储器(cfc memory)的输入输出模块(cfc mem i/o)一起配置。需要说明的是,cfgin block信号用于确定是否选通嵌入式存储器emb的输入输出模块(cfc mem i/o)。示例地,处于高电平的emb_seam_init_en信号和cfgin_block选通第一选通器g1,处于低电平的emb_seam_init_en信号和cfgin_block截止第一选通器g1。
[0074]
在一种可行的实现方式中,配置存储器存储输入输出模块传输的数据的区域还包括第五区域,第五区域连接嵌入式存储器的读使能端;嵌入式存储器还用于基于第二区域(地址存储区域)和第五区域存储的数据进行动作;在第一回读阶段,通过数据通路(cfgin_global)、输入输出模块(cfg mem i/o)、配置存储器(cfc memory)、第二区域(地址存储区域)、第五区域,将嵌入式存储器emb的回读地址、读命令分别传输至对应的嵌入式存储器emb的地址输入端、读使能端;输入输出模块(cfc mem i/o)传输的数据还包括第二初始化数据和读命令;其中,初始化地址对应的多个存储单元包括回读地址对应的多个存储单元;在第二回读阶段,嵌入式存储器读出回读地址对应的多个存储单元存储的数据以输出初始化后数据。
[0075]
在一个例子中,初始化地址对应的多个存储单元包括回读地址对应的多个存储单元相同。
[0076]
需要说明的是,关于回读地址和读命令的写入操作参见上文描述,此次不做过多赘述。
[0077]
值得注意,本实施例以片段使能端ce、读使能端、写使能端设置为一个端口,即片
选/读写使能端口ce/we,因此,第三区域、第四区域和第五区域可以理解为同一区域。若片选使能端ce、读使能端、写使能端设置在不同端口,则第三区域、第四区域和第五区域是不同的。
[0078]
在实际应用中,通过位线bl/blb将嵌入式存储器emb的回读地址写入配置存储器(cfc memory)的地址存储区域后将其传输到嵌入式存储器emb的地址输入端口adr;通过位线bl/blb将嵌入式存储器emb的读命令写入配置存储器(cfc memory)的片选/读写命令存储区域后将其传输到嵌入式存储器emb的片选/读写使能端口ce/we,以使嵌入式存储器emb在接收到读命令后读出初始化地址对应的多个存储单元存储的数据以输出初始化后数据。
[0079]
进一步的,输入输出模块(cfc mem i/o)还用于读出配置存储器(cfc memory)存储的数据。
[0080]
在一个例子中,配置存储器(cfc memory),还用于存储嵌入式存储器emb输出的初始化后数据;输入输出模块(cfc mem i/o),还用于通过位线bl/blb读出配置存储器(cfc memory)存储的初始化后数据至数据输出端cfgout;数据通路(cfgin_global),还用于接收输入输出模块(cfc mem i/o)的数据输出端cfgout输出的初始化后数据,由数据通路(cfgin_global)将初始化后数据送回芯片配置模块,由芯片配置模块验证初始化是否准确。
[0081]
需要说明的是,配置存储器(cfc memory)中的数据存储区域存储初始化后数据。
[0082]
应当理解,由于初始化后数据仅仅包括回读地址对应的多个存储单元存储的数据,在实际应用中,输入输出模块(cfc mem i/o)的数据输出端cfgout还会输出嵌入式存储器emb的标识符等表示初始化后数据来源的内容,另外,若存在其他的嵌入式存储器emb的初始化后数据,输入输出模块(cfc mem i/o)的数据输出端cfgout输出的数据还包括其他的嵌入式存储器emb的初始化后数据。
[0083]
如图1所示,进一步地,fpga芯片还包括:第二选通器g2,连接配置存储器(cfc memory)的输入输出模块(cfc mem i/o)的数据输出端cfgout和数据通路(cfgin_global)。
[0084]
如图1所示,示例地,第二选通器g2位于数据通路(cfgin_global)上。
[0085]
在实际应用,在回读阶段,配置存储器(cfc memory)用于存储初始化后数据,并将初始化后数据通过位线bl/blb读出至输入输出模块(cfc mem i/o)的数据输出端cfgout,由于第二选通器g2被选通,输入输出模块(cfc mem i/o)的数据输出端cfgout输出的初始化后数据能够被选通至数据通路(cfgin_global)上。
[0086]
在一个例子中,fpga芯片还包括:输出移存器,连接嵌入式存储器的数据输出端、数据通路(cfgin_global)和输入输出模块(cfc mem i/o)的数据输出端cfgout,用于将输入输出模块(cfc mem i/o)的数据输出端cfgout输出的数据以及嵌入式存储器emb输出的初始化后数据移存至数据通路(cfgin_global)。
[0087]
这里,输入输出模块(cfc mem i/o)的数据输出端cfgout输出的数据主要用于说明初始化后数据的来源,通常为嵌入式存储器emb的标识符。另外,若存在其他的嵌入式存储器emb的初始化后数据,输入输出模块(cfc mem i/o)的数据输出端cfgout输出的数据还包括其他的嵌入式存储器emb的初始化后数据。
[0088]
如图5所示,进一步地,fpga芯片还包括:第三选通器g3,连接数据通路(cfgin_global)和输出移存器的数据输出端,用于将输出移存器移存的初始化后数据和输入输出
模块(cfc mem i/o)的数据输出端cfgout输出的数据选通至数据通路(cfgin_global)上。示例地,第三选通器g3可以位于数据通路(cfgin_global)上。
[0089]
在实际应用中,把嵌入式存储器emb的初始化后数据shift到输出移存器,在第三选通器被选通的情况下,将输出移存器移存的初始化后数据选通至数据通路(cfgin_global)中。
[0090]
应当理解的,输出移存器相当于嵌入式存储器emb的数据输出链路。
[0091]
如图5所示,第三选通器连接有控制器p,用于在回读时选通该选通器,以使数据移存到数据通路(cfgin_global)中。
[0092]
示例地,图6为图5提供的输入输出模块(cfg mem i/o)和输出移存器的回读操作的时序图。
[0093]
如图5和图6所示,输入输出模块(cfc mem i/o)在cclk时钟信号下工作。
[0094]
在时间t1c,输入输出模块(cfc mem i/o)依次接收高电平的cwrite信号和cshift信号。
[0095]
输入输出模块(cfc mem i/o)将嵌入式存储器emb的回读地址传输至地址存储区域,地址存储区域将其传输至嵌入式存储器emb的地址输入端。
[0096]
在时间t2c至t5c类似。可能是地址存储区域将存储的回读地址传输至嵌入式存储器emb的地址输入端,也可能是片选/读写命令存储区域将存储的读指令传输至嵌入式存储器emb的片选/读写使能端ce/we。
[0097]
应当理解,在时间t1c至t5c,地址存储区域将存储的回读地址传输至嵌入式存储器emb的地址输入端,片选/读写命令存储区域将存储的读指令传输至嵌入式存储器emb的片选/读写使能端ce/we。
[0098]
在时间t6c,处于高电平的cread信号传输至输入输出模块(cfc mem i/o),输入输出模块(cfc mem i/o)的数据输出端cfgout输出数据至输出移存器。
[0099]
处于高电平的cread信号和处于低电平的cshift信号传输至第三选通器g3的控制器p,控制器p输出高电平的emb_readback信号,高电平的emb_readback信号选通第三选通器g3。
[0100]
在时间t7c,处于高电平的cshift信号通过逻辑gate产生高电平的cf_read_shift信号。
[0101]
处于高电平的cf_read_shift信号,使得输出移存器读出输入输出模块(cfc mem i/o)的数据输出端cfgout输出的数据和嵌入式存储器emb输出初始化后数据至输出移存器的输出端。
[0102]
在时间t8c,处于高电平的emb_readback信号选通第三选通器g3,输出移存器的数据输出端cfgout输出的数据传输至数据通路(cfgin_global)。
[0103]
在时间t9c至t12c与时间t8c类似,直到将嵌入式存储器emb的初始化后数据和输入输出模块(cfc mem i/o)的数据输出端cfgout输出的数据全部移存至数据通路(cfgin_global)。
[0104]
如图7所示,在一种可行的实现方式中,由于复用了配置存储器(cfc memory)的读写逻辑即输入输出模块(cfc mem i/o),则其额外带来的开销不大,容易进行多模块的扩展。
[0105]
在一个例子中,fpga芯片可以包括多个初始化电路,数据通路连接每个初始化电路,每个初始化电路均包括输入输出模块、配置存储器和嵌入式存储器。
[0106]
进一步地,每个初始化电路还可以包括第一选通器g1和第二选通器g2。详细内容参见上文,此次不做过多赘述。需要说明的是,数据通路(cfgin_global)通过第一选通器g1和第二选通器g2跳过其他的配置存储器的输入输出模块。
[0107]
在一些可能的情况,还可以包括第三选通器g3。
[0108]
进一步地,每个初始化电路还可以包括块配置存储器译码控制(block control cfg mem decoder)以及块控制(block control)。其中,块配置存储器译码控制(block control cfg mem decoder)可以实现初始化电路中的配置存储器(cfc memory)的选通,可以对排成一行的多个初始化电路进行选择,比如,选通一行的多个初始化电路中的任意一个或多个。块控制(block control)用于对初始化电路中的多个配置存储器(cfc memory)各自的输入输出模块进行选择,比如,可以控制嵌入式存储器emb的配置存储器(cfc memory)的选通,跳过其他的配置存储器(cfc memory)。应当理解的,cfgin_block信号用于控制初始化电路中的多个配置存储器(cfc memory)各自的输入输出模块的选通。
[0109]
本实施例提供了一种fpga芯片的初始化方法,应用于上述任一实施例所述的初始化电路;所述方法包括:
[0110]
1)通过数据通路(cfgin_global)、输入输出模块(cfg mem i/o)、数据存储区域将嵌入式存储器emb的初始数据传输至嵌入式存储器emb的数据输入端di;
[0111]
2)通过数据通路(cfgin_global)、输入输出模块(cfg mem i/o)、地址存储区域将嵌入式存储器emb的初始化地址传输至嵌入式存储器emb的地址输入端adr;
[0112]
3)通过数据通路(cfgin_global)、输入输出模块(cfg mem i/o)、片选命令存储区域将嵌入式存储器emb的片选命令传输至嵌入式存储器emb的片选使能端ce;
[0113]
4)通过数据通路(cfgin_global)、输入输出模块(cfg mem i/o)、读/写命令存储区域将嵌入式存储器emb的写命令传输至嵌入式存储器emb的读/写使能端we;
[0114]
5)嵌入式存储器emb基于数据存储区域、地址存储区域、片选命令存储区域和读/写命令存储区域存储的数据将初始数据写入初始化地址对应的多个存储单元以实现初始化。
[0115]
需要说明的是,片选命令存储区域和读/写命令存储区域可以为同一区域,即上述片选/读写命令存储区域。当然,在一些可能的情况,片选命令存储区域和读/写命令存储区域可以为不同区域,具体需要结合嵌入式存储器emb的端口确定。
[0116]
详细内容参见上文和图1至图4,此处不做过多赘述。
[0117]
进一步的,在初始化的回读阶段,具体可通过如下实现方式实现回读:
[0118]
1)通过数据通路(cfgin_global)、输入输出模块(cfg mem i/o)、地址存储区域将嵌入式存储器emb的回读地址传输至嵌入式存储器emb的地址输入端di;其中,初始化地址对应的多个存储单元包括回读地址对应的多个存储单元;
[0119]
2)通过数据通路(cfgin_global)、输入输出模块(cfg mem i/o)、读/写命令存储区域将嵌入式存储器emb的读命令传输至嵌入式存储器emb的读/写使能端we;
[0120]
3)嵌入式存储器emb基于地址存储区域、读/写命令存储区域存储的数据将初始数据写入初始化地址对应的多个存储单元以实现初始化;
[0121]
4)通过配置存储器(cfc memory)、输入输出模块(cfg mem i/o)将初始化后数据传输至数据通路(cfgin_global);或者,通过输出移存器将初始化后数据传输至数据通路(cfgin_global);
[0122]
5)数据通路(cfgin_global)传输初始化后数据传输到芯片配置模块,以使芯片配置模块进行初始化是否正确的分析。
[0123]
详细内容参见上文和图1至图6,此处不做过多赘述。
[0124]
需要说明的是,读/写命令存储区域用于存储读命令和写命令。当然,在一些可能的情况,读命令和写命令可以通过不同区域存储,具体需要结合嵌入式存储器emb的端口确定。
[0125]
值得注意的是,初始化数据可以通过数据存储区域进行存储,还可以通过配置存储器(cfc memory)的其他区域存储,对应的,存储初始化后数据的区域连接嵌入式存储器emb的数据输出端。
[0126]
本发明中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
[0127]
以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
技术特征:
1.一种fpga芯片的初始化电路,其特征在于,包括:数据通路、输入输出模块、配置存储器和嵌入式存储器;所述数据通路用于接收数据;所述输入输出模块用于将所述数据中所述嵌入式存储器对应的数据传输至所述配置存储器进行存储,并可将所述嵌入式存储器中存储的数据传输至片外输出;所述配置存储器用于存储所述输入输出模块传输的数据的区域包括第一区域、第二区域、第三区域和第四区域,所述第一区域、第二区域、第三区域和第四区域分别与所述嵌入式存储器的数据输入端、地址输入端、片选使能端、写使能端一一对应连接;所述嵌入式存储器用于基于所述第一区域、第二区域、第三区域和第四区域分别存储的数据进行动作;在第一初始化阶段,通过所述数据通路、所述输入输出模块、所述第一区域、第二区域、第三区域和第四区域,将所述嵌入式存储器的初始数据、初始化地址、片选命令、写命令分别传输至对应的所述嵌入式存储器的数据输入端、地址输入端、片选使能端及写使能端;在第二初始化阶段,所述嵌入式存储器将所述初始数据写入所述初始化地址对应的多个存储单元以实现初始化。2.根据权利要求1所述的初始化电路,其特征在于,所述初始化电路还包括:第一选通器,连接所述数据通路和所述输入输出模块的数据输入端,用于在初始化阶段将所述数据选通至所述输入输出模块的数据输入端,以使所述输入输出模块将所述数据中所述嵌入式存储器对应的数据传输至所述配置存储器进行存储,跳过所述配置存储器之外的其他配置存储器的输入输出模块。3.根据权利要求1所述的初始化电路,其特征在于,所述配置存储器存储所述输入输出模块传输的数据的区域还包括第五区域,所述第五区域连接所述嵌入式存储器的读使能端;所述嵌入式存储器还用于基于所述第二区域和第五区域存储的数据进行动作;在第一回读阶段,通过所述数据通路、所述输入输出模块、所述第二区域、所述第五区域,将所述嵌入式存储器的回读地址、读命令分别传输至对应的所述嵌入式存储器的地址输入端、读使能端;其中,所述初始化地址对应的多个存储单元包括所述回读地址对应的多个存储单元;在第二回读阶段,所述嵌入式存储器读出所述回读地址对应的多个存储单元存储的数据以输出初始化后数据。4.根据权利要求3所述的初始化电路,其特征在于,所述配置存储器,还用于存储所述嵌入式存储器输出的所述初始化后数据;所述输入输出模块,还用于读出所述配置存储器存储的所述初始化后数据;所述数据通路,还用于接收所述输入输出模块输出的所述初始化后数据。5.根据权利要求4所述的fpga芯片,其特征在于,所述fpga芯片还包括:第二选通器,连接所述数据通路和所述输入输出模块的数据输出端,用于在回读阶段将所述输入输出模块的数据输出端输出的所述初始化后数据选通至所述数据通路。6.根据权利要求3所述的初始化电路,其特征在于,所述初始化电路还包括:输出移存器,连接所述嵌入式存储器的数据输出端和数据通路,用于将所述嵌入式存
储器的数据输出端输出的初始化后数据输出至所述数据通路。7.根据权利要求6所述的fpga芯片,其特征在于,所述fpga芯片还包括:第三选通器,连接所述数据通路和所述输出移存器的数据输出端,用于将所述输出移存器的数据输出端输出的所述第二数据选通至所述数据通路上。8.一种fpga芯片的初始化方法,其特征在于,应用于数据通路、输入输出模块、配置存储器和嵌入式存储器;其中,所述输入输出模块用于将所述数据通路接收的数据中所述嵌入式存储器对应的数据传输至所述配置存储器进行存储;所述配置存储器存储所述输入输出模块传输的数据的区域包括:第一区域、第二区域、第三区域和第四区域,所述第一区域、第二区域、第三区域和第四区域分别与所述嵌入式存储器的数据输入端、地址输入端、片选使能端、写使能端一一对应连接;所述方法包括:通过所述数据通路、所述输入输出模块、所述第一区域将所述嵌入式存储器的初始数据传输至所述嵌入式存储器的数据输入端;通过所述数据通路、所述输入输出模块、所述第二区域将所述嵌入式存储器的初始化地址传输至所述嵌入式存储器的地址输入端;通过所述数据通路、所述输入输出模块、所述第三区域将所述嵌入式存储器的片选命令传输至所述嵌入式存储器的片选使能端;通过所述数据通路、所述输入输出模块、所述第四区域将所述嵌入式存储器的写命令传输至所述嵌入式存储器的写使能端;所述嵌入式存储器基于所述第一区域、第二区域、第三区域和第四区域存储的数据将所述初始数据写入所述初始化地址对应的多个存储单元以实现初始化。9.根据权利要求8所述的初始化方法,其特征在于,所述配置存储器还包括:第五区域,所述第五区域与所述嵌入式存储器的读使能端连接;还包括:通过所述数据通路、所述输入输出模块、所述第二区域将所述嵌入式存储器的回读地址传输至所述嵌入式存储器的地址输入端;其中,所述初始化地址对应的多个存储单元包括所述回读地址对应的多个存储单元;通过所述数据通路、所述输入输出模块、所述第五区域将所述嵌入式存储器的读命令传输至所述嵌入式存储器的读使能端;所述嵌入式存储器基于所述第二区域、第五区域存储的数据读出所述回读地址对应的多个存储单元存储的数据以输出初始化后数据;通过所述配置存储器、所述输入输出模块将所述初始化后数据传输至所述数据通路;或者,通过输出移存器将所述初始化后数据传输至所述数据通路;其中,所述数据通路用于将所述初始化后数据传输到芯片配置模块,以使所述芯片配置模块进行初始化是否正确的分析。
技术总结
本申请涉及半导体技术领域,提供了一种FPGA芯片的初始化电路和初始化方法,初始化电路包括:配置存储器、输入输出模块、嵌入式存储器和数据通路;输入输出模块用于将数据通路接收的数据中嵌入式存储器对应的数据传输至配置存储器进行存储;配置存储器用于存储输入输出模块传输的数据的区域包括第一区域、第二区域、第三区域和第四区域,分别与嵌入式存储器的数据输入端、地址输入端、片选使能端、写使能端一一对应连接;嵌入式存储器基于第一区域、第二区域、第三区域和第四区域分别存储的数据将初始数据写入初始化地址对应的多个存储单元实现初始化。本申请提供的技术方案,可复用嵌入式存储器的配置存储器存储数据,减少了硬件开销。件开销。件开销。
技术研发人员:薛庆华 王海力
受保护的技术使用者:京微齐力(北京)科技有限公司
技术研发日:2021.11.26
技术公布日:2022/3/8