具有逻辑运算和数据存储功能的可编程功能产生单元的利记博彩app
【专利摘要】本发明公开了一种FPGA电路中的k输入可编程功能产生单元。该功能产生单元由写操作控制模块、MC阵列、读操作控制模块构成。其中,写操作控制模块在细粒度RAM写操作时实现地址译码、写使能及时钟同步等功能。MC阵列中采用了一种能够存储不同来源数据的MC结构,在功能产生单元实现用户逻辑运算功能或细粒度ROM功能时,MC中的存储数据来自FPGA的配置控制器;在功能产生单元实现细粒度RAM功能时,MC中的存储数据来自用户电路。读操作控制模块在细粒度RAM或ROM的读操作时实现对MC阵列中所存储数据的读取操作,在用户逻辑运算时与MC阵列配合实现查找表(LUT)的功能。
【专利说明】具有逻辑运算和数据存储功能的可编程功能产生单元
【技术领域】
[0001]本发明涉及数字集成电路中现场可编程门阵列(FPGA)设计【技术领域】,具体涉及一种具有逻辑运算和数据存储功能的可编程功能产生单元。
【背景技术】
[0002]FPGA是一种通用的逻辑电路,具有灵活性高、开发风险低的优点,已广泛应用于工业控制、航空航天、通信、汽车电子等领域,并且占据着越来越多的市场份额。目前主流的FPGA产品均采用SRAM来对用户设计进行编程。FPGA中的最基本单元是基本逻辑单元(Basic Logic Element,BLE),它能够独立完成一定的组合、时序逻辑功能,为数字系统设计提供最基本的逻辑运算操作和数据存储功能。BLE通常由功能产生单元、寄存器以及其他一些逻辑电路构成。功能产生单元是BLE中最核心的单元,可以通过配置来执行组合逻辑、细粒度存储、算术运算等功能。
[0003]随着FPGA的应用领域逐步扩大,对片内存储资源的需要越来越大,形式也越来越灵活。根据不同的应用需求,FPGA中除了需要不同容量的粗粒度存储器块外,还需要能提供更加灵活的细粒度存储单元。
[0004]目前主流的商用FPGA器件,主要包括Altera公司的Stratix系列芯片(StratixII到Stratix V)和Xilinx公司的Virtex系列芯片(Virtex-2到Virtex-7)。现有芯片中所采用的功能产生单元,有些基于查找表(Look Up Table,LUT)结构,仅能实现逻辑运算功能而无法实现细粒度存储功能;有些需要几个功能产生单元配合,再利用一些额外的电路,才能够实现细粒度存储功能,逻辑资源利用率较低,且配置不够灵活;有些需要使用数据译码模块作为控制模块,电路结构较为复杂。
【发明内容】
[0005]针对这些问题,本发明提出了一种既可实现用户逻辑运算功能,又可实现用户细粒度RAM读/写功能以及细粒度ROM读/写功能的k输入功能产生单元。
[0006]本发明公开了一种具有逻辑运算和数据存储功能的可编程功能产生单元,该功能产生单元可被配置成实现用户逻辑运算功能、细粒度RAM功能或细粒度ROM功能的用户电路,其包括:
[0007]写操作控制模块:其在用户电路实现细粒度RAM写操作时,控制MC阵列存储所述RAM中的用户数据;
[0008]MC阵列:其在用户电路实现用户逻辑运算以及细粒度ROM功能时,用于存储配置数据;在用户电路实现细粒度RAM写操作时,用于存储所述RAM中的用户数据;
[0009]读操作控制模块:其用于读出MC阵列中存储的数据。
[0010]本发明提出的功能产生单元,既能存储来自FPGA配置控制器的配置数据以实现用户逻辑运算操作,又能存储来自用户电路的数据并实现对其的读/写操作。提高了可编程芯片的资源利用效率。[0011]本发明提出的k输入功能产生单元,由于结构规整,因此能够方便快速的设计出k取不同值时对应的功能产生单元,减少了由于输入个数改变而带来的额外设计开销,具有良好的可扩展性。
【专利附图】
【附图说明】
[0012]图1是本发明中存储单元(MC)的结构框图;
[0013]图2是本发明中功能产生单元的结构框图;
[0014]图3是本发明中写操作控制模块的结构框图;
[0015]图4是本发明中时钟同步单元的时序关系图。
【具体实施方式】
[0016]为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。
[0017]本发明提出了一种现场可编程门阵列的基本逻辑单元中的功能产生单元,其包括:写操作控制模块、存储单元(MC)阵列和读操作控制模块。
[0018]图1示出了本发明中存储单元(MC)的结构框图。MC阵列包括多个MC,如图1所示,每个MC包括:4个NMOS管、两个反相器。其中,4个NMOS管为Ml、M2、M3和M4,两个反相器为INVl和INV2。配置地址输入端口 CADDR接NMOS管Ml和M3的栅极,用户地址输入端口 ADDR接NMOS管M2和M4的 栅极,配置数据输入端口 CDATA和CDATA分别接NMOS管Ml和M3的源极,用户数据输入端口 DATA和DATA分别接NMOS管M2和M4的源极,反相器INVl的输出端口 Q接反相器INV2的输入端口,反相器INV2的输出端口0接反相器INVl的输入端口,NMOS管Ml和M2的漏极均连接在^端,NMOS管M3和M4的漏极均连接在Q端。此MC结构能够实现不同来源数据的存储,具体说明如下:
[0019]I)当功能产生单元实现用户逻辑运算功能或细粒度ROM功能时,MC存储来自FPGA配置控制器的配置数据,此时用户地址输入端口 ADDR置为0,配置地址输入CADDR置为1,来自FPGA配置控制器的配置数据CDATA存储于MC的输出端口 Q中;
[0020]2)当功能产生单元实现细粒度RAM功能时,MC接收来自用户电路的用户存储数据,此时配置地址输入端口 CADDR置为0,用户地址输入端口 ADDR置为I,将来自用户电路的用户存储数据DATA存储于MC的输出端口 Q中。
[0021]图2示出了 k位输入的功能产生单元的结构框图。如图2所示,在该功能产生单元中,模式控制信号MODE、配置数据CDATA[2k-l: O]信号和CDATA[2k-l:0]信号均来自于FPGA的配置控制器,且MODE要先于CDATA[2k-l: O]和CDATA[2k-丨:0]信号完成配置;WL信
号来自于FPGA配置控制器的字线选择控制信号。数据DATA信号、存储器写使能WE信号、写时钟CLK信号、k位写地址信号WR[k-l:0]及k位读地址信号RD[k-l:0]来自于用户电路。
[0022]写操作控制模块接收存储器写使能信号WE、写时钟CLK、k位写地址信号WR[k-l:0]以及模式控制信号MODE作为输入;其输出的2k位地址信号ADDR[2k-l:0]分别连接到MC阵列中2k个MC模块的用户地址输入端口 ADDR。MC阵列中2k个MC模块的配置数据输入端口 CDATA分别连接2k位配置数据CDATA[2k-l:O];而FPGA配置控制器中与此2k位配置数据CDATA [2k-l: O]对应的2k位取反配置数据CDATA丨2k-1:0]则分别连接MC阵列中2k个MC模块的CDATA输入端;模式控制信号MODE经反相器INVl取反后,与字线选择控制信号WL —起,分别连接与门ANDl的两个输入端,ANDl的输出CADDR连接MC阵列中2k个MC模块的配置地址输入端CADDR ;来自用户的存储数据DATA连接MC阵列中2k个MC模块的用户数据输入端DATA ;而DATA信号经反相器INV2取反后的输出DATA则连接到MC阵列中2k个MC模块的DATA输入端。
[0023]读操作控制模块接收来自MC阵列中2k个MC模块的2k位输出信号Q[2k_l:0]以及来自用户电路的k位信号RD [k-Ι: O]作为输入,其输出信号RO即为整个功能产生单元的输出。
[0024]图3示出了本发明中写操作控制模块的结构框图。写操作控制模块在细粒度RAM写操作时实现地址译码、写使能及时钟同步等功能。如图3所示,该写操作控制模块由写地址译码单元、时钟同步单元以及2k个二输入与门构成。其中,2k个二输入与门为AND[2k-l:0]。写地址译码单元接收k位写地址信号WR[k-l:0]作为输入,输出为经译码后的2k位地址信号ADDR_I [2k-l: O]。针对每一组地址输入WR[k_l: O],输出的ADDR_I [2k_l: O]信号中仅有一位为1,其余2k-l位均为O。时钟同步单元接收存储器写使能信号WE、写时钟CLK以及模式控制信号MODE作为输入,其输出信号WE_I分别与ADDR_I [2k_l:O]连接到与门AND[2k-l:0]的两个输入端,输出2k位地址信号ADDR[2k-l:0]。时钟同步单元各信号间的时序关系如图4所示。当MODE信号为O时,时钟同步单元的输出WE_I为0,则ADDR[2k-l:0]均为O;当MODE信号为I时,时钟同步单元输出经CLK信号采样后的写使能信号WE_I,经过与门AND [2k-l: O],最终输出经地址译码、写使能及时钟同步后的2k位地址信号 ADDR[2k-l:0]。
[0025]MC阵列包含2k个MC,能够根据实际的应用需求,对来自FPGA配置控制器的配置数据或来自用户电路的用户存储数据进行存储。当模式控制信号MODE为O时,MC阵列对来自FPGA配置控制器的配置数据进行存储。此时2k个MC的ADDR端均为0,在字线选择控制信号WL为I时,2k个MC的CADDR端均为1,来自FPGA配置控制器的2k位配置数据
CDATA[2k-l:0]及其对应的2k位取反配置数据CDATA[2k-l:0:I分别存储至IJ 2k个MC中,通过MC阵列的输出端Q[2k-1:0]输出;当模式控制信号MODE为I时,MC阵列对来自用户电路的存储数据进行存储。2k个MC的CADDR端均为0,其ADDR端分别接写操作控制模块的2k位输出ADDR[2k-l:0],将用户的存储数据DATA存储到ADDR输入为I的那一个MC中,通过输出端Q[2k-1:0]输出。
[0026]读操作控制模块实现对MC阵列中所存储数据的异步读操作。其接收来自MC阵列中存储的2k位数据Q[2k-1:0]以及来自用户电路的k位信号RD[k-l:0]。其中,输入信号RD[k-l:0]作为读操作的地址信号,其信号来源由FPGA支持软件根据功能产生单元需要实现的具体功能来确定。当用户电路实现用户逻辑运算功能时,RD[k-l:0]来自于用户逻辑信号;当该模块实现细粒度RAM或ROM的读操作时,RD [k-1:0]来自于用户电路的存储器读地址信号。读操作控制模块根据RD[k-1:0]输入的读地址,选择Q[2k-1:0]中的对应位,将其值通过RO端输出。[0027]本发明提出的功能产生单元可以通过配置来实现独立的用户逻辑运算功能、独立的细粒度RAM读/写功能、独立的细粒度ROM读/写功能等,具体说明如下:
[0028]I)当实现用户逻辑运算功能时,模式控制信号MODE为0,此时写操作控制模块不工作,RD[k-l:0]信号接用户逻辑信号。在FPGA配置阶段,当字线选择控制信号WL为I时,来自FPGA配置控制器的2k位配置数据CDATA[2k-l:0]分别存储到MC阵列的2k个MC中。当配置阶段结束进入到用户电路工作阶段时,MC阵列和读操作控制模块一起,实现查找表(LUT)的功能;
[0029]2)当实现细粒度ROM功能时,模式控制信号MODE为0,此时写操作控制模块不工作,RD[k-l:0]信号接ROM的读地址信号。在FPGA配置阶段,与用户逻辑运算功能类似,ROM中存储的2k位数据通过FPGA的配置控制器写入到MC阵列的2k个MC中。当配置阶段结束进入到用户电路工作阶段时,根据读地址信号RD[k-l:0]的内容,相应MC中存储的数据通过RO读出;
[0030]3)当实现细粒度RAM功能时,模式控制信号MODE为1,此时写操作控制模块工作,DATA、WE、CLK、WR[k-1:0]信号分别接RAM的数据输入、写使能、写时钟、写地址信号,RD [k-1:0]信号接RAM的读地址信号。在FPGA配置阶段,功能产生单元不工作。当配置阶段结束进入到用户电路工作阶段时,RAM的写操作通过写操作控制模块和MC阵列一起来实现,而RAM的读操作则通过MC阵列和读操作控制模块一起来实现。
[0031]图3所示的写操作控制模块结构仅为对其实现功能的示意性说明,实际的电路设计中,只要能够正确实现本发明中所定义的功能,也可以选择其他的电路结构。
[0032]以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1. 一种具有逻辑运算和数据存储功能的可编程功能产生单元,该功能产生单元可被配置成实现用户逻辑运算功能、细粒度RAM功能或细粒度ROM功能的用户电路,其包括: 写操作控制模块:其在用户电路实现细粒度RAM写操作时,控制MC阵列存储所述RAM中的用户数据; MC阵列:其在用户电路实现用户逻辑运算以及细粒度ROM功能时,用于存储配置数据;在用户电路实现细粒度RAM写操作时,用于存储所述RAM中的用户数据; 读操作控制模块:其用于读出MC阵列中存储的数据。
2.如权利要求1所述的功能产生单元,其特征在于,所述MC阵列包括多个MC,每个MC包括:两个反相器和4个NMOS管,其中一个反相器的两端分别经一个NMOS管接配置数据输入端,而另一个反相器的两端分别经一个NMOS管接用户数据输入端;且两个反相器首尾相接。
3.如权利要求1所述的功能产生单元,其特征在于,所述写操作控制模块用于接收模式控制信号、存储器写使能信号、写地址信号和写时钟信号,其在模式控制信号、存储器写使能信号和写时钟信号的控制下,将所接收到的写地址信号译码成用户存储数据的地址后输出至MC阵列的用户数据的地址输入端。
4.如权利要求3所述的功能产生单元,其特征在于,所述写操作控制模块包括写地址译码单元和时钟同步单元,所述写地址译码单元用于接收写地址信号并对其进行译码,所述时钟同步单元接收模式控制信号、存储器写使能信号和写时钟信号,其用于在模式控制信号的控制下,利用写时钟信号对写使能信号进行时钟同步,其输出结果与所述写地址译码单元译出的地址经与门后,最终输出至MC阵列的用户数据的地址输入端。
5.如权利要求3所述的功能产生单元,其特征在于,所述模式控制信号用于控制所述写操作控制模块是否工作。
6.如权利要求2所述的功能产生单元,其特征在于,在用户电路被配置成实现细粒度RAM功能时,所述MC阵列中的每个MC接收写操作控制模块译码输出的用户数据的存储地址和来自用户电路的用户存储数据,并根据所述用户存储数据的地址存储来自用户电路的所述用户存储数据。
7.如权利要求2所述的功能产生单元,其特征在于,在用户电路被配置成实现用户逻辑运算功能或细粒度ROM功能时,所述MC阵列中的每个MC接收来自FPGA的配置地址和配置数据,并根据所述配置地址信号,存储所述配置数据。
8.如权利要求1所述的功能产生单元,其特征在于,所述读操作控制模块用于实现对MC阵列存储数据的异步读出操作;其接收来自MC阵列中存储的数据和来自用户电路的读操作地址信号,并根据所述读操作地址信号读出所述MC阵列中存储的数据;其中,在用户电路被配置成实现用户逻辑运算功能时,所述读操作地址信号来自于用户电路的用户逻辑信号;在用户电路被配置成实现细粒度ROM功能或细粒度RAM功能时,所述读操作地址信号来自于存储器读地址信号。
9.如权利要求1所述的功能产生单元,其特征在于,在用户电路被配置成实现用户逻辑运算功能时,在配置阶段,MC阵列接收并存储来自FPGA的配置数据和配置地址,而在用户电路工作阶段,MC阵列和读操作控制模块实现查找表LUT的功能。
10.如权利要求1所述的功能产生单元,其特征在于,在用户电路实现细粒度RAM功能时,写操作控制模块接收RAM的写地址信号,并将其进行译码后输出至MC阵列,MC阵列接收来自用户电路中用户存储数据和写操作控制模块的译码地址后,根据所述译码地址存储所述用户存储数据;读操作控制模块接收RAM读地址信号,并根据所述读地址信号从所述MC阵列中读出所存储的用户存储数据。
11.如权利要求1所述的功能产生单元,其特征在于,在实现细粒度ROM功能时,在配置阶段,MC阵列接收来自FPGA的配置地址和配置数据,并根据所述配置地址存储所述配置数据;而在用户电路工作阶段,所述读操作控制模块接收来自用户电路中ROM的读地址信号,并根据所述读地址信号从所述MC阵列中读出所存储的配置数据。
【文档编号】H03K19/177GK103633994SQ201310155817
【公开日】2014年3月12日 申请日期:2013年4月28日 优先权日:2013年4月28日
【发明者】杨海钢, 李威, 高丽江 申请人:中国科学院电子学研究所