专利名称:一种fpga两级流水线配置电路的制作方法
技术领域:
本发明属于FPGA器件技术领域,具体为一种高速高吞吐率的FPGA流水线配置电路。
背景技术:
FPGA (可编程逻辑门阵列)配置电路或者编程下载电路的功能是将配置位流下载到FPGA内部编程点。用户通过配置接口将配置位流按照一定的接口时序传输至配置电路, 配置电路再将这些数据按照一定的方式写入内部编程点。因此配置电路的结构很大程度上决定了位流下载的速率。流水线型的配置结构将数据下载通路和数据回读通路设计成流水线形式,数据按照单个方向进行传输,而且相应的控制信号也是沿着单方向传输,流水线的每一级负责专门的功能。FPGA配置电路包含多个寄存器,通常会把这些寄存器封装在一个寄存器组里, 这些寄存器的功能主要完成配置选项设置,全局功能设置等,这些寄存器里面只有DNLD_ DR (Download Data Register、下载数据寄存器,见图 1)禾Π RDBK_DR (Readback Data Register、回读数据寄存器,见图1)与配置数据下载和回读直接相关,如何实现数据的高速高吞吐率下载和回读,而且要与用户的工作时钟兼容成了本技术领域需要解决的一个难点,流水线可以提高数据传输速率,但是过多的反馈信号会降低流水线的效率,为了与用户的时钟频率兼容要求上游的数据量不能对下游造成拥塞。流水线的FPGA配置电路遵循无反馈的控制信号单向传递方式,这要求在数据的源端需要对数据的流速进行控制,既要保证整个电路具有最大的数据传输速率,即上游部分要以最大速率读取数据,又要保证下游部分电路有能力处理上游部分传输过来的数据。目前已有的结构并没用对配置数据通路做出严格要求,也没有对配置数据通路相应的控制信号进行规定,各个模块功能比较分散,没有流水线的架构理念。而采用流水线的结构每一级流水线负责专门的功能,主要完成数据的单向传输以及在其通路内的控制信号的产生,只接收上游的控制信号,并且产生传往下游的控制信号, 这种设计可以极大的提高数据传输的速率。
发明内容
本发明目的在于提供一种高速高吞吐率的FPGA配置电路。本发明提供的FPGA配置电路,其核心是采用两条流水线数据通道分别对FPGA进行下载和回读,其结构见图1所示。所述FPGA配置电路包括下载FIFO模块,回读FIFO模块,全局配置控制状态机,位流解析模块,配置地址及控制产生模块,全局操作寄存器(0PR, Operation Register),帧数据输入寄存器(DNLD_DR,Download Data Register),回读数据寄存器(RDBK_DR,Readback Data Register),地址寄存器(ADDR,Address Register),配置地址及控制产生模块包括回读配置地址及控制产生模块和下载配置地址及控制产生模块,以及地址选择器(MUX)。此外,整个FPGA配置电路还包括循环冗余校验(CRC,CyclicRedundancy Check)模块和帧错误检查和纠正(ECC,Error Correcting Code)模块。其中 下载数据通道(流水线1),第一级由下载FIFO模块传输至帧数据输入寄存器(DNLD_ DR),位流解析模块负责下载FIFO的读访问以及DNLD_DR_en (Download Data Register enable、下载数据寄存器使能,见图2)信号的产生。位流解析模块主要的功能包括访问下载FIFO内的数据,从读取的数据中解析数据头,对操作码,寄存器地址,下载数据长度等进行译码,并从解析出的数据头获取对下载数据流的实时控制;位流解析模块以最快的速率读取下载FIFO,保证了整个配置电路的高速率传输,同时对下载数据头进行解析以产生相应寄存器的控制使能信息。第二级由帧数据输入寄存器(DNLD_DR)传输至FPGA阵列,下载配置地址及控制产生模块主要功能是根据DNLD_DR_en(Download Data Register enable、 下载数据寄存器使能,见附图2)信号及地址寄存器(ADDR)的值进行下载配置地址的自动生成,把配置数据所对应的帧地址传输给FPGA阵列,FPGA阵列对配置地址产生模块生成的帧地址进行译码,以此来选中相应的帧进行数据的下载。下载配置地址及控制产生模块通过检测DNLD_DR_en信号来更新内部地址,因为DNLD_DR_en信号的长度代表了下载数据的有效个数,下载配置地址及控制产生模块更新地址的方式按照FPGA存储阵列的排列规律来执行,它除了产生配置地址外,还产生数据加载和地址有效等控制信号。回读数据通道(流水线2),控制信号由回读配置地址产生及控制模块传输至位流解析模块,第一级由FPGA阵列传输至回读数据寄存器(RDBK_DR),回读配置地址及控制产生模块负责对FPGA阵列的读访问及流速控制,生成回读所需要的帧地址以及回读时序以使数据从FPGA阵列的回读数据端口传输至RDBK_DR ;并通过记录有效回读数据个数来更新回读地址,其更新的方法和下载配置地址更新的方法是一致的,其产生的RDBK_DR_en (Readback Data Register enable、回读数据寄存器使能,见图2)信号传输给位流解析模块,标志着一个有效数据已经传输至回读数据寄存器(RDBK_DR)。第二级由回读数据寄存器 (RDBK_DR)传输至回读FIFO模块,位流解析部分对回读FIFO模块进行写控制,并通过检测 RDBK_DR_en信号记录有效回读数据的数量,以便在回读结束时跳出回读状态继续读取下载 FIFO。配置地址及控制产生模块(包括回读配置地址及控制产生模块和下载配置地址及控制产生模块)在初始情况下均以地址寄存器(ADDR)的值作为更新地址的起点,由全局配置控制状态机来选择下载配置地址及控制生成或回读配置地址及控制生成处于工作状态, 并且选择两者地址输出中的一个作为最终的地址输出。全局配置控制状态机通过全局操作寄存器(OPR)的值来实现对整个配置过程的控制,包括复位CRC (Cyclic Redundancy Check、循环冗余校验),启动,解同步等操作。整个配置电路通过CRC,帧ECC等电路实现对下载或回读数据的检错和纠错。本发明中,下载和回读数据通道均是在第一级对数据的流速控制,为了实现数据的高速下载或回读均以最快的速度读取数据。下载数据通道的源头是下载FIFO,目的地是 FPGA阵列;回读数据通道源头为FPGA阵列,目的地是回读FIFO。位流解析模块(下载通道第一级)可以实现对下载FIFO读取的有效控制,配置地址产生内部的回读配置地址及控制产生模块也能够对FPGA阵列回读进行有效控制,第一级模块在读取数据之后往后级传输,不用接收后级的反馈信号。本发明中,配置地址生成模块包括两部分下载配置地址及控制产生模块和回读配置地址及控制产生模块,由全局配置控制状态机选择那一部分处于工作状态,来自于位流解析模块的DNLD_DR_en信号控制下载配置地址及控制产生模块的地址累加,回读配置地址及控制产生模块的配置地址是自动累加的,两者均采用相同的累加算法。本发明中,下载数据通道和回读数据通道均采用两级流水线操作方式,在流水线的方向上,控制信号也是沿着一个方向传递,避免了反馈的产生,同时也保证了数据传输的稳定和可靠性,流水线的第一级以最快速度读取为FPGA的高速高吞吐率配置提供了保障。本发明采用流水线结构的FPGA配置电路因为其内部的数据处理能力较强,可以极大地提高FPGA配置数据的速率,增大FPGA的用户下载和回读时钟频率,缩短FPGA下载和回读时间。
图1为FPGA配置电路的全局结构视图,包含两条流水线数据通道,配置寄存器组,配置控制状态机,CRC32循环冗余校验),帧ECC错误检查和纠正)等模块。图2为图1中配置地址生成模块的详细图,主要包括下载配置地址及控制生成模块、回读配置地址及控制生成模块、地址选择器MUX等部分,地址产生均以ADDR(AddreSS Register、地址寄存器)的值作为起点,由全局配置控制状态机来选择哪一部分处于工作状态。
具体实施例方式FPGA的配置电路既要能够将配置数据从用户接口输入写入存储阵列的编程点,又要能够将编程点的内容读出并从用户接口输出。下载数据通道的作用就是将数据写入内部编程点,回读数据通道的作用是将数据从内部编程点读出。下面分别对两条数据通道的详细操作流程进行说明。下载数据通道
1、用户通过配置接口将配置位流写入下载FIFO。2、位流解析模块检测下载FIFO的读空标志,若非空便读取下载FIFO内数据。3、位流解析模块按照位流的组织格式(数据头+数据),从下载FIFO读出的数据头中解析出寄存器地址,读写操作,下载数据个数。4、位流解析模块根据寄存器地址,读写操作使相应的寄存器的使能信号有效,并将该DNLD_DR_en信号传输至下载配置地址生成模块。5、位流解析模块每读取下载FIFO里的一个有效数据之后都将下载数据计数器减 1,并产生一个时钟周期的DNLD_DR_en信号,直到读完该数据头所规定的数量。6、下载配置地址及控制产生模块在全局控制状态机发送的feite_Cfg_data (Write configuration data、写配置数据)有效情况下检测并记录DNLD_DR_en信号,每计数满一帧数据就更新下载配置地址以及相应的下载控制信号。7、配置结束时全局控制状态机撤销feite_Cfg_data信号,位流解析模块和配置地址产生模块均回到空闲状态,直到下载FIFO非空则继续重复步骤2-6。回读数据通道
1、用户通过配置接口将包含有回读命令的配置位流写入下载FIFO。
2、位流解析模块检测下载FIFO的读空标志,若非空便读取下载FIFO内数据。3、位流解析模块按照位流的组织格式(数据头+数据),从下载FIFO读出的数据头中解析出寄存器地址,读写操作,回读数据个数。4、回读配置地址及控制生成模块检测到全局配置控制状态机的Read_Cfg_data (Read configuration data、读配置数据)有效之后根据ADDR的值生成相应的配置地址。5、回读配置地址及控制生成模块检测回读FIFO的写满状态标志位。若回读FIFO 没有写满则从FPGA阵列中移出数据,如果遇到回读FIFO写满状态则暂停移出数据。6、回读配置地址及控制生成模块一边从FPGA阵列中移出数据一边更新配置地址,以便将整个FPGA阵列的地址遍历完整,以一帧数据读取完整为更新节点。7、位流解析模块通过检测并记录RDBK_DR_en有效信号来更新内部的回读个数计数器,直到为0则退出回读状态。8、回读结束后,全局配置控制状态机撤销Read_Cfg_data,回读配置地址及控制产生也就停止从FPGA阵列中移出数据,回到空闲状态,直到下载FIFO非空则继续重复步骤 2-7。
权利要求
1. 一种FPGA两级流水线配置电路,其特征在于采用两条流水线数据通道分别对FPGA 进行下载和回读,所述FPGA配置电路包括下载FIFO模块,回读FIFO模块,全局配置控制状态机,位流解析模块,配置地址产生模块,全局操作寄存器,帧数据输入寄存器,回读数据寄存器,地址寄存器,循环冗余校验模块和帧错误检查和纠正模块;所述配置地址产生模块包括回读配置地址及控制产生模块和下载配置地址及控制产生模块,以及地址选择器; 其中下载数据通道即流水线1,第一级由下载FIFO模块传输至帧数据输入寄存器,位流解析模块负责下载FIFO模块的读访问以及帧数据输入寄存器使能信号的产生;第二级由帧数据输入寄存器传输至FPGA阵列,下载配置地址及控制产生模块通过检测帧数据输入寄存器使能信号来更新内部地址,下载配置地址及控制产生模块更新地址的方式按照FPGA 存储阵列的排列规律执行,它除了产生配置地址外,还产生数据加载和地址有效等控制信号;回读数据通道即流水线2,控制信号由回读配置地址产生及控制模块传输至位流解析模块,第一级由FPGA阵列传输至回读数据寄存器,回读配置地址及控制产生模块负责对 FPGA阵列的读访问及流速控制,通过记录有效回读数据个数来更新回读地址,其更新的方法和下载配置地址更新的方法一致,其产生的回读数据寄存器使能信号传输给位流解析模块,标志着一个有效数据已经传输至回读数据寄存器;第二级由回读数据寄存器传输至回读FIFO模块,位流解析模块对回读FIFO模块进行写控制,并通过检测回读数据寄存器使能信号记录有效回读数据的数量,在回读结束时跳出回读状态继续读取下载FIFO ;配置地址及控制产生模块包括回读配置地址及控制产生模块和下载配置地址及控制产生模块,在初始情况下均以地址寄存器的值作为更新地址的起点,由全局配置控制状态机来选择下载配置地址及控制生成模块或回读配置地址及控制生成模块处于工作状态,并且选择两者地址输出中的一个作为最终的地址输出;全局配置控制状态机通过全局操作寄存器的值来实现对整个配置过程的控制; 整个配置电路通过CRC,帧ECC电路实现对下载或回读数据的检错和纠错。
全文摘要
本发明属于FPGA器件技术领域,具体为一种FPGA两级流水线配置电路。该电路由两块FIFO作为配置接口与配置控制逻辑之间的缓冲,配置控制逻辑由配置寄存器组、全局配置控制状态机、位流解析、配置地址产生、帧ECC电路、CRC32电路等组成。下载数据通路由下载FIFO经由下载数据寄存器送达FPGA配置阵列,回读数据通路由FPGA配置阵列经由回读数据寄存器送达回读FIFO。该结构采用两级流水线对数据的下载和回读进行控制,而且数据通路里不存在与数据流动方向相反的反馈握手信号,每条流水线的第一级均以最快速率读取数据,这种结构能够极大地提高数据下载回读的速度和吞吐率。
文档编号G06F9/38GK102566982SQ20121000582
公开日2012年7月11日 申请日期2012年1月10日 优先权日2012年1月10日
发明者周灏, 来金梅, 毛劲松, 王元 申请人:复旦大学