CN111984563B - 基于fpga的ddr3读写控制器及矩阵转置实现方法 - Google Patents
基于fpga的ddr3读写控制器及矩阵转置实现方法 Download PDFInfo
- Publication number
- CN111984563B CN111984563B CN202010989033.9A CN202010989033A CN111984563B CN 111984563 B CN111984563 B CN 111984563B CN 202010989033 A CN202010989033 A CN 202010989033A CN 111984563 B CN111984563 B CN 111984563B
- Authority
- CN
- China
- Prior art keywords
- read
- address
- write
- data
- matrix
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Static Random-Access Memory (AREA)
Abstract
本发明属于雷达信号处理技术领域,公开了一种基于FPGA的DDR3读写控制器及矩阵转置实现方法,在DDR3 IP的基础上,优化用户接口的控制,提出DDR3的读写控制器设计方案。然后结合DDR3内部实际地址与用户接口地址的映射关系,总结实现矩阵转置操作需要的地址控制逻辑,进一步通过对矩阵的分块操作,使得矩阵转置时的读写速率得到均衡。通过尽量少的跳行读写,提升系统整体的效率。本发明采用FPGA和DDR3的处理结构,根据矩阵转置的寻址特点,结合DDR3器件特性,设计读写控制器优化底层控制逻辑;通过实际地址与用户接口地址的映射,采用分块矩阵均衡读写,从而提高系统整体的矩阵转置效率。
Description
技术领域
本发明涉及雷达信号处理技术领域,具体涉及一种基于FPGA的DDR3读写控制器及矩阵转置实现方法。
背景技术
随着雷达技术的发展,超高速和宽带信号实时采样已经成为了基本需求,为了与高数据率相匹配,需要设计合适的数据缓存结构,使用DDR SDRAM配合FPGA是一种高效的解决方案,能够很好的满足实时信号处理系统中高速,大量数据缓存的需求。
DDR(Double Date Rate SDRAM)是双倍速率同步动态随机存储器,双倍速率的含义是在时钟的上升沿和下降沿都会采样数据,相当于把数据采样频率提高了一倍。DDR3通过“Fly-By”结构和动态片上匹配技术,对于信号完整性的改善效果明显。在对DDR3进行顺序读写的情况下,数据传输速率为系统时钟频率的8倍,降低了系统功耗的同时也提高了整体的性能。镁光的MT41J256M16系列存储芯片,单片数据位宽16bit,地址空间有256M。包含8个Bank,每个Bank内部包括15行,10列,32M个存储单元。将两片拼接进行数据位宽的扩展,寻址指令会同时操作两片MT41J256M16的相同地址,传输的数据由单片时的16bit变为32bit,提升了系统整体的缓存能力,此时可以缓存的数据量扩展为单片时的两倍,而读写地址的控制仍可以按照单片进行操作。Xilinx官方提供的接口解决方案,控制信号和时序要求比较复杂,需要在此基础上重新定制以简化用户端的读写控制。
在雷达信号处理的过程中经常涉及到矩阵转置的运算,受限于FPGA内部的逻辑资源,需要外接DDR3存储器用于数据的缓存,但由于DDR3内部的行激活和预充电操作的存在,导致DDR3在跳行地址读写的时候效率很低,与DDR3的数据交互成为了制约二维矩阵转置运算的关键。如何根据二维矩阵寻址的特点,结合DDR3的器件特性,合理设计读写控制逻辑,减少因跳行操作带来的性能损失,成为提高系统整体工作效率的难点和关键。
发明内容
针对现有技术中存在的问题,本发明的目的在于提供一种基于FPGA的DDR3读写控制器及矩阵转置实现方法,在Xilinx提供的DDR3 IP的基础上,优化用户接口的控制,设计了DDR3的读写控制器,简化用户端的读写控制;同时结合DDR3内部实际地址与用户接口地址的映射关系,设计了矩阵转置操作的地址控制逻辑,通过对矩阵的分块操作,使得矩阵转置时的读写速率得到均衡,通过尽量少的跳行读写,提升系统整体的效率。
为了达到上述目的,本发明采用以下技术方案予以实现。
(一)基于FPGA的DDR3读写控制器,DDR3的读写控制通过FPGA实现,该控制器包括写入数据/指令缓冲FIFO模块、读出指令缓冲FIFO模块、读出数据缓冲FIFO模块和DDR3 IP核;
所述写入数据/指令缓冲FIFO模块,用于接收跨时钟域接收到的写入数据和写入指令,将写入数据和写入指令集成于该模块,使两者的时序约束保持一致,输出信号对应连接到DDR3 IP核的用户接口上;
所述读出指令缓冲FIFO模块,向DDR3 IP核发送读取数据的指令,跨时钟域的读取数据指令通过读出指令缓冲FIFO进行缓冲,同时向DDR3 IP核发送读指令和读地址,经过若干个时钟周期后从DDR3存储器中读取出数据;
所述读出数据缓冲FIFO模块:用于缓存DDR3 IP核跨时钟域传输的输出数据;
所述DDR3 IP核:在例化时确定用户接口和物理层的时钟,且物理层与用户接口的读写数据位宽比例是物理层与用户接口时钟比例的两倍。
进一步地,所述DDR3读写控制器具有读写控制状态机,其包含空闲状态、连续写状态和连续读状态,且写入操作优先级高于读取操作优先级,同时设置反馈控制信号,确保在单次读取指令被读出之后,才能进行下一次的读取操作。
进一步地,所述DDR3读写控制器的输入地址包含DDR3中的实际Bank地址、行地址和列地址;在生成DDR3 IP时,物理层地址与用户接口地址的映射关系为:用户接口地址信号是DDR3中的实际Bank地址、行地址和列地址三块地址位宽的拼接。
(二)一种矩阵转置实现方法,包括以下步骤:
步骤1,将DDR3的存储区域划分为若干个Bank,将连续数据帧顺序输入DDR3中,每个数据帧写入一个Bank内;在单次参与矩阵转置的数据写入完成后切换到下一个Bank进行下一帧数据的写入,同时变序读取前一个Bank内的数据进行矩阵转置;依次循环,顺序完成矩阵的多次转置运算;
步骤2,每个Bank内的矩阵转置运算过程为:设参与单次矩阵转置运算的数据有M×N个,将待转置矩阵的每行N个元素分解为R×C的分块矩阵,得到M个R×C的分块矩阵;
步骤3,在写操作过程中,不同分块矩阵之间按时间顺序写入;每个分块矩阵内部按行顺序写入,不同行之间跳行写入;
步骤4,在读操作过程中,从第一个分块矩阵的第一个地址起,读取所有分块矩阵相同位置的数据,依次类推,直到读取所有分块矩阵的最后一个地址为止,完成所有数据的读取,即完成单次矩阵转置运算。
进一步地,在写操作过程中,写地址的产生过程为:
对于第一个分块矩阵内部,写入地址的产生逻辑按照行、列计数值拼接实现;第n个分块矩阵的写入地址为将第一个分块矩阵内部行、列计数值加上第n个分块矩阵带来的行地址偏移量Δ1=n-n%16和列地址偏移量Δ2=((n%16)-1)×8;其中,写入地址为读写控制器的用户接口的写地址。
进一步地,在读操作过程中,读地址的产生过程为:
从第一个分块矩阵的起始地址开始,依次读取M个分块矩阵的相同位置处的地址,第2至第M个分块矩阵的地址相对于第一个分块矩阵起始地址的行地址偏移量分别为Δ1=n-n%16,列地址偏移量分别为Δ2=((n%16)-1)×8;M次之后跳转到第一个分块矩阵的第二个地址,随后依次读取M个分块矩阵内部的第二个地址,在这个过程中,每个地址相对于第一个分块矩阵的行地址偏移量Δ1和列地址的偏移量Δ2;依此类推循环M次,遍历所有分块矩阵内部的所有地址,实现单次矩阵转置操作。
与现有技术相比,本发明的有益效果为:
本发明基于DDR3的工作原理,针对频繁跳行读写造成性能损失的问题,设计优化了用户接口的控制,提出DDR3的读写控制器设计方案。然后结合DDR3内部实际地址与用户接口地址的映射关系,实现矩阵转置操作需要的读写地址控制逻辑,在此基础上进一步对矩阵进行分块操作,使矩阵转置时的读写速率得到均衡,通过尽量少的跳行读写,提升整体的效率。
附图说明
下面结合附图和具体实施例对本发明做进一步详细说明。
图1是本发明中的DDR3读写控制器设计结构示意图;
图2是本发明实施例中的7系列FPGA内存控制器接口示意图;
图3本发明中读写控制器接口与现有官方控制器接口的对比图及本发明接口设置参数;其中,(a)为本发明与现有官方接口的对比图,(b)为本发明的接口具体设置参数示意图;
图4是本发明中DDR3读写控制状态转换示意图;
图5是本发明中用户接口地址和实际地址的映射关系图;
图6是本发明中实现bank切换操作的示意图;
图7现有矩阵转置操作中的用户接口写地址wraddr生成示意图;
图8现有矩阵转置操作中的用户接口读地址rdaddr生成示意图;
图9本发明中矩阵分块原理图;
图10本发明中分块矩阵的写入顺序示意图;
图11是本发明中分块矩阵的读取顺序示意图;
图12是本发明中分块矩阵的用户接口读写地址产生示意图。
具体实施方式
下面将结合实施例对本发明的实施方案进行详细描述,但是本领域的技术人员将会理解,下列实施例仅用于说明本发明,而不应视为限制本发明的范围。
参考图1,本发明提供的基于FPGA的DDR3读写控制器,DDR3的读写控制通过FPGA实现,该控制器包括写入数据/指令缓冲FIFO模块、读出指令缓冲FIFO模块、读出数据缓冲FIFO模块和DDR3 IP核;
所述写入数据/指令缓冲FIFO模块,用于接收跨时钟域接收到的写入数据和写入指令,将写入数据和写入指令集成于该模块,使两者的时序约束保持一致,输出信号对应连接到DDR3 IP核的用户接口上;
所述读出指令缓冲FIFO模块,向DDR3 IP核发送读取数据的指令,跨时钟域的读取数据指令通过读出指令缓冲FIFO进行缓冲,同时向DDR3 IP核发送读指令和读地址,经过若干个时钟周期后从DDR3存储器中读取出数据;
所述读出数据缓冲FIFO模块:用于缓存DDR3 IP核跨时钟域传输的输出数据;
所述DDR3 IP核:在例化时确定用户接口和物理层的时钟,且物理层与用户接口的读写数据位宽比例是物理层与用户接口时钟比例的两倍。
进一步地,所述DDR3读写控制器具有读写控制状态机,其包含空闲状态、连续写状态和连续读状态,且写入操作优先级高于读取操作优先级,同时设置反馈控制信号,确保在单次读取指令被读出之后,才能进行下一次的读取操作。
进一步地,所述DDR3读写控制器的输入地址包含DDR3中的实际Bank地址、行地址和列地址;在生成DDR3 IP时,物理层地址与用户接口地址的映射关系为:用户接口地址信号是DDR3中的实际Bank地址、行地址和列地址三块地址位宽的拼接。
通常情况下,使用Xilinx MIG IP核,通过配置页面对DDR3芯片型号、总线位宽、速度等级、引脚分配等参数进行设置;如图2所示,设置完成后得到DDR3控制器接口方案实现。该系统方案由用户控制模块(User FPGA Logic)、用户接口模块(User Interface Block)、内存控制模块(Memory Controller)和物理层接口(Physicial Layer)模块4部分组成。
使用时,需要设计DDR3的用户控制模块即可通过IP核对DDR3进行读写操作。
IP核正常启动以后会把init_calib_complete信号拉高,此后才能借助时钟信号clk进行逻辑控制,进行读写操作时需要一直判断app_rdy的电平,为高表明IP核可以接收控制命令,在写入时还需要一直判断app_wdf_rdy电平,为高表示IP核可以接收写入数据。此后用户拉高app_en、app_cmd和app_addr的使能信号,同时提供:
(1)控制命令app_cmd[2:0];写命令:3’b000,读命令:3’b001。
(2)地址app_addr[ADDR_WIDTH-1:0];地址信号宽度ADDR_WIDTH为硬件rank+bank+row+column的值,在配置IP核时,选择DDR器件以后可以看到bank、row和column的值。
(3)数据app_wdf_data[APP_DATA_WIDTH-1:0];数据宽度APP_DATA_WIDTH与突发长度有关。
(4)数据屏蔽app_wdf_mask[APP_MASK_WIDTH-1:0];数据屏蔽信号app_wdf_mask用于屏蔽不想进行读写的数据位,置1屏蔽。由硬件架构,每8bits的DQ信号有1bit的屏蔽位DQM。
(5)数据使能app_wdf_wren、app_wdf_end;进行写数据的同时要拉高作为使能。在读取操作时需要在app_rdy为高时,同时提供app_en,app_cmd,app_addr,经过一段时间后输出app_rd_data,app_rd_data_valid。
本发明为便于DDR3用户接口模块与其他模块的连接,简化模块间的信号连接和读写操作,对用户接口模块进行接口封装,整个模块结构框图如图1所示。封装后的DDR3模块外部接口与BLOCK RAM的读写操作非常相似,提高了开发效率。具体的接口封装前后对比如图3所示,图3(a)为官方接口与本发明封装后接口的接口对比,3(b)为本发明的接口具体设置参数;从图3可以看出本发明的接口封装方案。
本发明DDR3读写控制器是由写入数据/指令缓冲FIFO模块、读出指令缓冲FIFO模块、读出数据缓冲FIFO模块、DDR3 IP核4部分组成。受限于DDR3的数据位宽,为了保证读写接口位宽匹配,需要设置好数据读取和写入的位宽,保证数据的吞吐率一致。
(1)写入数据/指令缓冲FIFO模块:用来接收跨时钟域接收到的写入数据和写入指令,由于DDR3IP提供的用户接口,写指令(地址)和写数据是两套独立的系统,各自遵循着指令和时序的要求,通过此模块将写入数据和写入地址的操作简化,在时序约束上保持一致,输出的信号连接到经过修改的DDR3 IP的用户接口上。
(2)读出指令缓冲FIFO模块:向DDR3 IP核发送数据读取的指令,跨时钟域操作通过FIFO进行缓冲,同时向DDR3 IP模块发送读指令和读地址,在初始化成功以后,经过一段时间会从DDR3存储器中读取出数据。
(3)读出数据缓冲FIFO模块:DDR3 IP的数据输出会在读出指令经过若干个时钟周期之后,通过此模块解决输出的数据跨时钟域传输的情况。
(4)DDR3 IP:在例化时确定用户接口和物理层的时钟,由于DDR3的上升沿和下降沿同时采样,用户接口和物理层的数据位宽的比例要扩大一倍。DDR3物理层时钟工作在400MHZ,物理层和用户接口时钟比例4∶1,那么用户接口的时钟频率为100MHz,物理层和用户接口的读写数据位宽比为8∶1。
DDR3读写控制器的读写控制状态机共有3种状态,IDLE状态下不进行读写操作,Write状态下进行连续写操作,Read状态下进行连续读操作。为保证较高的读写效率就要避免频繁的读写切换。并且,若写FIFO满,则数据会丢失,而读FIFO满只会使数据在DDR3内缓存,因此,写操作的优先级要高于读操作,保证写状态不会被读状态打断,状态转换如图4所示:设置写入操作优先级比读取操作优先级高,在读写操作同时进行时,读取操作不断被写入操作打断,长时间如此会导致用于缓冲读出指令的FIFO存满溢出,为了避免这种情况,内部引入反馈控制信号,避免连续的读操作,确保单次读出指令从FIFO中取出后,才能进行下一次读出指令的写入。
如图5所示,采用BANK+ROW+COLUMN的地址映射方案,读写控制器模块的写入地址wraddr和读取地址rdaddr是由Bank地址、行地址、列地址三块地址拼接得到。
实施例2
一种矩阵转置实现方法,包括以下步骤:
步骤1,将DDR3的存储区域划分为若干个Bank,将连续数据帧顺序输入DDR3中,每个数据帧写入一个Bank内;在单次参与矩阵转置的数据写入完成后切换到下一个Bank进行下一帧数据的写入,同时变序读取前一个Bank内的数据进行矩阵转置;依次循环,顺序完成矩阵的多次转置运算;
本发明中采用两片镁光的MT41J256M16系列存储芯片,单片数据位宽16bit,地址空间有256M。包含8个Bank,每个Bank内部包括15行,10列,32M个存储单元。两片拼接实现数据位宽的扩展,提升了系统整体的缓存能力。
如图5所示,使用用户接口中BANK地址中的4bit,将整个DDR3的存储区域分成8个Bank(Bank0-Bank7),对应着8个数据存储区域。不仅能减少数据跨实际Bank导致的读写效率下降,也能实现对输入数据流的连续处理,满足实时性和高准确率的需求。
具体地,如图6所示,数据先存放在Bank0内,此时用户接口写地址wraddr中BANK对应的值为0。在单次参与矩阵转置的数据写入完成后切换到Bank1写入,写入时用户接口写地址wraddr中BANK对应的值为1,同时变序读取Bank0内数据实现矩阵转置,读取时用户接口rdaddr中BANK对应的值为0。依次进行连续的数据写入与读取。当Bank7中的数据写入完成后,则切换到Bank0写入,同时进行Bank7的变序读取即矩阵转置。依次循环处理,对连续输入的数据实现多次矩阵转置。
如图6所示,单个Bank内的数据对应的BANK地址是相同的,按照地址映射关系,产生读写控制器接口的写地址wraddr和读地址rdaddr的关键在于生成ROW对应的行地址和COLOWN对应的列地址。
步骤2,每个Bank内的矩阵转置运算过程为:设参与单次矩阵转置运算的数据有M×N个,将待转置矩阵的每行N个元素分解为R×C的分块矩阵,得到M个R×C的分块矩阵;
假设完成单次矩阵转置的数据共有128×128个,单个数据的位宽为256bit。
首先分析现有矩阵转置的实现过程:
如图7所示,数据到来之前,行、列计数值均为0。随着数据输入,列计数值从0开始,记到127(矩阵的列数)后,向行计数值进位,直至把单次的共128×128数据写入完毕。如图8所示,实现矩阵转置的变序读取,是行计数先变化。行计数值从0开始,记到127(矩阵的行数)后,向列计数值进位,直到把参与运算的128×128个数据全部读出。
用于实现矩阵转置的行,列计数值按照用户接口地址的映射关系,分别对应着用户接口wraddr和rdaddr中的行地址和列地址。这里产生的读写地址是连续的,由于DDR3内部的突发读写机制,用户接口连续读写地址,DDR3内部会自动读取8个地址。因此,在向用户接口传递时,需要将生成的连续地址再乘上8(在二级制表示下左移3位)。
由以上可以看出,现有矩阵转置过程中,行维数据写入的时候是在同一行,本发明采用矩阵分块,就是将在原先同一行写入的数据,分割成几次写入到不同行当中,这样把原始矩阵在行维上就进行了分割,读取时就可以在同一行多次读取,减少一直跳行读导致的性能损失。
以M×N的矩阵为例进行分析,对矩阵做行维分解,每行N个元素分解为R×C的小矩阵,这样的矩阵总共有M个,这样就把原先的矩阵分成多个维数较小的矩阵,如图9所示。
步骤3,在写操作过程中,不同分块矩阵之间按行顺序写入;每个分块矩阵内部按行顺序写入,不同行之间跳行写入;
分块矩阵写入顺序如图10所示,分块矩阵的用户接口读写地址产生:根据参与单次矩阵转置的数据规模,确定原始存取方案需要的行数和列数(在DDR3 SRAM中需要占用的存储空间),在此基础上确定矩阵分块实现方案,包括分块矩阵的维度和个数。然后按照用户接口映射关系,设计数据读写时对应的行列地址产生逻辑。
在写操作过程中,写地址的产生过程为:
如图12所示,对于第一个分块矩阵内部,写入地址的产生逻辑按照行、列计数值拼接实现;第n个分块矩阵的写入地址为将第一个分块矩阵内部行、列计数值加上第n个分块矩阵带来的行地址偏移量Δ1=n-n%16和列地址偏移量Δ2=((n%16)-1)×8;其中,写入地址为读写控制器的用户接口的写地址。
步骤4,在读操作过程中,从第一个分块矩阵的第一个地址起,读取所有分块矩阵相同位置的数据,依次类推,直到读取所有分块矩阵的最后一个地址为止,完成所有数据的读取,即完成单次矩阵转置运算。
分块矩阵读取顺序如图11所示:在读操作过程中,读地址的产生过程为:
如图12所示,从第一个分块矩阵的起始地址开始,依次读取M个分块矩阵的相同位置处的地址,第2至第M个分块矩阵的地址相对于第一个分块矩阵起始地址的行地址偏移量分别为Δ1=n-n%16,列地址偏移量分别为Δ2=((n%16)-1)×8;M次之后跳转到第一个分块矩阵的第二个地址,随后依次读取M个分块矩阵内部的第二个地址,在这个过程中,每个地址相对于第一个分块矩阵的行地址偏移量Δ1和列地址的偏移量Δ2;依此类推循环M次,遍历所有分块矩阵内部的所有地址,实现单次矩阵转置操作。
矩阵转置的实现,就是通过控制写入地址wraddr和读取地址的rdaddr,数据顺序写入,变序读出。
对比现有的未分块矩阵转置和本发明的分块矩阵转置过程,可以看出:
未分块时:写入为按行写入,每一行之间都是顺序写入,不同行之间跳行写入,将全部数据写入需要M次跳行操作。读取为按列读取,每读取一个数据就要进行跳行操作,共需要跳行M×N次。
分块时:写入为将原始的行维数据分解成R×C的矩阵,每个分块矩阵内部需要R次跳行写,共需要M×R次跳行写。读取时,分块矩阵在连续读取R个地址时,不需要跳行操作,有M×N个数据,需要跳行(M×N)/R次。具体对比如表1所示。
表1分块前后矩阵运算的性能对比
写入跳行次数 | 读出跳行次数 | 系统的整体效率 | |
原始矩阵 | M | MN | 1/(MN) |
分块矩阵 | MR | (M*N)/R或MC | 1/(max(MR,MC)) |
max(MR,MC)表示M*R,M*C两个值之间较大的一个
通过对比可以看出,分块矩阵的写入跳行次数比原始矩阵增加了R倍,读出跳行次数减少为原始矩阵的1/R。这样使得原始矩阵当中严重不匹配的读写速率得到了均衡,提高了系统的整体工作效率。合理的选择分块矩阵的行(R)和列(C),可以进一步提升整体的效率。
实际上,DDR3在顺序读写时的效率最高,而换行读写效率却非常低。按照最差的情况,每写入一个Burst长度的数据,就进行换行操作,如果采取顺序写入,跳行读出,即使写入的数据有很高的效率,但是读出的效率非常低同样,如果采取跳行写入,顺序读出,即使数据能够很快的读出,但是数据输入的效率非常低,造成输出一直在等待,严重影响了整体的效率。因此,想要提高读写的效率,不仅要合理的设计读写的方式,尽可能减少换行读写操作,还要均衡读写两端的效率,只有这样才可以真正提高与DDR3进行数据交互的效率。
虽然,本说明书中已经用一般性说明及具体实施方案对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。
Claims (6)
1.基于FPGA的DDR3读写控制器,其特征在于,DDR3的读写控制通过FPGA实现,所述DDR3读写控制器包括写入数据/指令缓冲FIFO模块、读出指令缓冲FIFO模块、读出数据缓冲FIFO模块和DDR3 IP核;
所述写入数据/指令缓冲FIFO模块,用于接收跨时钟域接收到的写入数据和写入指令,将写入数据和写入指令集成于该模块,使两者的时序约束保持一致,输出信号对应连接到DDR3 IP核的用户接口上;
所述读出指令缓冲FIFO模块,向DDR3 IP核发送读取数据的指令,跨时钟域的读取数据指令通过读出指令缓冲FIFO进行缓冲,同时向DDR3 IP核发送读指令和读地址,经过若干个时钟周期后从DDR3存储器中读取出数据;
所述读出数据缓冲FIFO模块:用于缓存DDR3 IP核跨时钟域传输的输出数据;
所述DDR3 IP核:在例化时确定用户接口和物理层的时钟,且物理层与用户接口的读写数据位宽比例是物理层与用户接口时钟比例的两倍。
2.根据权利要求1所述的基于FPGA的DDR3读写控制器,其特征在于,所述DDR3读写控制器具有读写控制状态机,其包含空闲状态、连续写状态和连续读状态,且写入操作优先级高于读取操作优先级,同时设置反馈控制信号,确保在单次读取指令被读出之后,才能进行下一次的读取操作。
3.根据权利要求1所述的基于FPGA的DDR3读写控制器,其特征在于,所述DDR3读写控制器的输入地址包含DDR3中的实际Bank地址、行地址和列地址;在生成DDR3 IP时,物理层地址与用户接口地址的映射关系为:用户接口地址信号是DDR3中的实际Bank地址、行地址和列地址三块地址位宽的拼接。
4.一种基于权利要求1所述的基于FPGA的DDR3读写控制器的矩阵转置实现方法,其特征在于,包括以下步骤:
步骤1,将DDR3的存储区域划分为若干个Bank,将连续数据帧顺序输入DDR3中,每个数据帧写入一个Bank内;在单次参与矩阵转置的数据写入完成后切换到下一个Bank进行下一帧数据的写入,同时变序读取前一个Bank内的数据进行矩阵转置;依次循环,顺序完成矩阵的多次转置运算;
步骤2,每个Bank内的矩阵转置运算过程为:设参与单次矩阵转置运算的数据有M×N个,将待转置矩阵的每行N个元素分解为R×C的分块矩阵,得到M个R×C的分块矩阵;
步骤3,在写操作过程中,不同分块矩阵之间按时间顺序写入;每个分块矩阵内部按行顺序写入,不同行之间跳行写入;
步骤4,在读操作过程中,从第一个分块矩阵的第一个地址起,读取所有分块矩阵相同位置的数据,依次类推,直到读取所有分块矩阵的最后一个地址为止,完成所有数据的读取,即完成单次矩阵转置运算。
5.根据权利要求4所述的矩阵转置实现方法,其特征在于,在写操作过程中,写地址的产生过程为:
DDR3中数据帧到来之前,初始的行、列计数值分别为0,对于第一个分块矩阵内部,写入地址的产生逻辑按照行、列计数值拼接实现;第n个分块矩阵的写入地址为将第一个分块矩阵内部行、列计数值加上第n个分块矩阵带来的行地址偏移量Δ1=n-n%16和列地址偏移量Δ2=((n%16)-1)×8;其中,写入地址为读写控制器的用户接口的写地址。
6.根据权利要求4所述的矩阵转置实现方法,其特征在于,在读操作过程中,读地址的产生过程为:
从第一个分块矩阵的起始地址开始,依次读取M个分块矩阵的相同位置处的地址,第2至第M个分块矩阵的地址相对于第一个分块矩阵起始地址的行地址偏移量分别为Δ1=n-n%16,列地址偏移量分别为Δ2=((n%16)-1)×8;M次之后跳转到第一个分块矩阵的第二个地址,随后依次读取M个分块矩阵内部的第二个地址,在这个过程中,每个地址相对于第一个分块矩阵的行地址偏移量Δ1和列地址的偏移量Δ2;依此类推循环M次,遍历所有分块矩阵内部的所有地址,实现单次矩阵转置操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010989033.9A CN111984563B (zh) | 2020-09-18 | 2020-09-18 | 基于fpga的ddr3读写控制器及矩阵转置实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010989033.9A CN111984563B (zh) | 2020-09-18 | 2020-09-18 | 基于fpga的ddr3读写控制器及矩阵转置实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111984563A CN111984563A (zh) | 2020-11-24 |
CN111984563B true CN111984563B (zh) | 2022-08-02 |
Family
ID=73450834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010989033.9A Active CN111984563B (zh) | 2020-09-18 | 2020-09-18 | 基于fpga的ddr3读写控制器及矩阵转置实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111984563B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463218B (zh) * | 2020-11-27 | 2022-12-09 | 成都海光微电子技术有限公司 | 指令发射控制方法及电路、数据处理方法及电路 |
CN114218136B (zh) * | 2021-12-17 | 2024-08-02 | 中国人民解放军国防科技大学 | 一种面向脉动阵列的面积友好存储地址映射方法 |
CN114490466B (zh) * | 2021-12-28 | 2024-04-30 | 深圳市紫光同创电子有限公司 | 一种实现数据连续存储的ddr ip核架构及方法 |
CN115206255B (zh) * | 2022-06-17 | 2024-04-19 | 中航华东光电有限公司 | 航空显示器控制系统及方法 |
CN115185859B (zh) * | 2022-09-13 | 2023-06-27 | 北京天地一格科技有限公司 | 一种雷达信号处理系统及低延迟矩阵转置处理装置和方法 |
CN116028423A (zh) * | 2022-12-16 | 2023-04-28 | 无锡中微亿芯有限公司 | 一种通过内置边缘模块实现数据传送的fpga |
CN116662254B (zh) * | 2023-07-31 | 2024-02-23 | 广州中基国威电子科技有限公司 | 片上高速总线架构、数据传输方法及嵌入式微处理器 |
CN117440273B (zh) * | 2023-12-18 | 2024-03-22 | 厦门鹏芯半导体有限公司 | 一种xgspon olt上行数据拼包的系统及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103760525A (zh) * | 2014-01-06 | 2014-04-30 | 合肥工业大学 | 一种补齐式原地矩阵转置方法 |
CN108053855A (zh) * | 2017-11-29 | 2018-05-18 | 北京时代民芯科技有限公司 | 一种基于sdram芯片的矩阵转置方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN209842608U (zh) * | 2019-06-13 | 2019-12-24 | 成都汇蓉国科微系统技术有限公司 | 一种基于fpga fifo模块的ddr3存储器控制 |
CN110781447B (zh) * | 2019-10-19 | 2023-04-07 | 天津大学 | 一种基于ddr的高效率矩阵转置处理方法 |
CN111581132B (zh) * | 2020-04-27 | 2022-03-25 | 武汉中科牛津波谱技术有限公司 | 一种基于fpga的可扩展的多端口ddr3控制器 |
-
2020
- 2020-09-18 CN CN202010989033.9A patent/CN111984563B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103760525A (zh) * | 2014-01-06 | 2014-04-30 | 合肥工业大学 | 一种补齐式原地矩阵转置方法 |
CN108053855A (zh) * | 2017-11-29 | 2018-05-18 | 北京时代民芯科技有限公司 | 一种基于sdram芯片的矩阵转置方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111984563A (zh) | 2020-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111984563B (zh) | 基于fpga的ddr3读写控制器及矩阵转置实现方法 | |
US7911862B2 (en) | Latency control circuit and method thereof and an auto-precharge control circuit and method thereof | |
US8185711B2 (en) | Memory module, a memory system including a memory controller and a memory module and methods thereof | |
US6636446B2 (en) | Semiconductor memory device having write latency operation and method thereof | |
JP4579304B2 (ja) | デバイスのタイミングを補償する装置及び方法 | |
US8125847B2 (en) | Semiconductor memory device and access method thereof | |
JP4618758B2 (ja) | クワッドデータレートシンクロナス半導体メモリ装置の駆動方法 | |
KR100224769B1 (ko) | 고속 버스트 리드/라이트 동작에 적합한 데이타 버스 라인 구조를 갖는 반도체 메모리 장치 | |
US6848040B2 (en) | Column address path circuit and method for memory devices having a burst access mode | |
JP5038657B2 (ja) | 半導体集積回路装置 | |
US6396747B2 (en) | Semiconductor memory device capable of high speed input/output of wide bandwidth data by improving usage efficiency of external data bus | |
US11467965B2 (en) | Processing-in-memory (PIM) device | |
US6564287B1 (en) | Semiconductor memory device having a fixed CAS latency and/or burst length | |
US6708255B2 (en) | Variable input/output control device in synchronous semiconductor device | |
JP4827399B2 (ja) | 半導体記憶装置 | |
US8520460B2 (en) | Semiconductor memory device and access method | |
US20230178138A1 (en) | Read clock start and stop for synchronous memories | |
US7196962B2 (en) | Packet addressing programmable dual port memory devices and related methods | |
JP2002237184A (ja) | 半導体記憶装置 | |
KR100361862B1 (ko) | 반도체 메모리장치 및 이의 센싱전류 감소방법 | |
JPS61113184A (ja) | ダイナミツクランダムアクセス半導体メモリ | |
CN115344203A (zh) | 一种sar成像系统的数据存储交换方法及架构 | |
KR20090030406A (ko) | 반도체 메모리 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20221205 Address after: Room A601, National Digital Publishing Base, No. 996, Tiangu Seventh Road, High-tech Zone, Xi'an City, Shaanxi Province 710000 Patentee after: XI'AN THUNDER DRIVEN ELECTRONIC TECHNOLOGY CO.,LTD. Address before: 710071 Taibai South Road, Yanta District, Xi'an, Shaanxi Province, No. 2 Patentee before: XIDIAN University |
|
TR01 | Transfer of patent right |