基于mpmc的高速存储器接口ip核的数据交换系统的制作方法

文档序号:6368223阅读:210来源:国知局
专利名称:基于mpmc的高速存储器接口ip核的数据交换系统的制作方法
技术领域
本发明涉及一种数据交换系统,特别涉及基于MPMC的高速存储器接口 IP核的数据交换系统。
背景技术
在数据交换系统中,优良的片外存储器访问与控制的设计,可以提高系统的性能及开发速度。使用专用存储器控制器IPdntellectual Property)核完成对片外存储器的访问,是FPGA应用设计中的常见手段,如Altera的DDR Controller IP核以及Xilinx的MPMC (Multi-Port Memory Controller,多端口内存控制器)IP 核等。MPMC IP 核具有较高的通用性,支持多种用户接口,在NPI (Native Port Interface)总线接口下,具有多种效率不同的传输模式,造成其在不同模式对突发传输长度及地址均有不同的限制要求,增加了用户设计难度。因此,与MPMC IP核通信的接口 IP核成为系统设计的关键。MPMC IP核是一种常用的实现片外存储器访问的IP核。目前设计的数据交换系统中的MPMC IP核有AHB (Advanced High performance Bus)总线接口的 MPMC IP 核,该 IP 核通过 AHB 总线与用户逻辑通信,并可以连接SoC (System on Chip)。还有直接使用Xilinx提供的MPMC IP核,实现对片外存储器的访问。但上述方法只能采用单一且固定的数据读写或传输模式进行数据通信,因而资源利用率和数据吞吐率相对较低。

发明内容
本发明的目的是为了解决目前的数据交换系统实现片外存储器访问的IP核资源利用率和数据吞吐率相对较低的问题,提供一种基于MPMC的高速存储器接口 IP核的数据交换系统。本发明的基于MPMC的高速存储器接口 IP核的数据交换系统,它包括用户逻辑模块、MPMC IP核模块和接口 IP核模块;用户逻辑模块的控制总线通过自定义UBus总线与接口 IP核模块的第一控制总线连接,接口 IP核模块的第二控制总线通过NPI总线与MPMC IP核模块的第一控制总线连接,MPMC IP核模块的第二控制总线与片外存储器连接;接口 IP核模块包括读控制模块、选择模块和写控制模块,读控制模块的第一控制总线和写控制模块的第一控制总线分别与自定义UBus总线连接,读控制模块的第二控制总线与选择模块的第一控制总线连接,写控制模块的第二控制总线与选择模块的第二控制总线连接;读控制模块的第三控制总线和写控制模块的第三控制总线分别与NPI总线连接。本发明的接口 IP核将对用户逻辑的数据进行缓存,并处理来自用户逻辑的命令,根据缓存的状态、传输地址及NPI总线协议,动态组合传输模式完成与MPMC IP核的通信。本发明的优点在于通过用户逻辑和MPMC IP核之间通信,进而实现用户逻辑对片外存储器的高速通信,具有数据突发传输和地址传送功能的自定义总线UBus从而降低用户对MPMCIP核的访问难度,并通过缓存读写数据及对读写数据地址的判断,在线选择NPI接口传输模式,提高对片外存储器的访问速率,实现对任意地址任意长度的数据读写,在数据块大于640Byte时,数据吞吐率提高了 400MB/s ;在传输块为IWord条件下,吞吐率提高了 29. 6MB/s ;资源利用率提高了 30% ;从而本发明提高了资源利用率和数据吞吐率。


图1是本发明的整体结构示意图。图2是本发明的接口 IP核模块的结构示意图。图3是本发明的接口IP核模块中的读控制模块结构示意图。图4是本发明的接口 IP核模块中写控制模块结构示意图。图5是本发明的接口IP核模块中的读模式及请求控制模块的工作状态转换示意图。图6是本发明的接口IP核模块中的写启动及写模式判断模块的工作状态转换示意图。图7是本发明的接口IP核模块中的写时序控制模块的工作状态转换示意图。图8是本发明在不同的块起始地址下的起始传输模式数据吞吐率测试结果,其中4表示传输块为4Word时的数据吞吐率,16表示传输块为16Word时的数据吞吐率,32表示传输块为32Word时的数据吞吐率,64表示传输块为64Word时的数据吞吐率。
具体实施例方式具体实施方式
一结合图I和图2说明本实施方式,本发明的基于MPMC的高速存储器接口 IP核的数据交换系统,它包括用户逻辑模块I、MPMC IP核模块2和接口 IP核模块3 ;用户逻辑模块I的控制总线通过自定义UBus总线4与接口 IP核模块3的第一控制总线连接,接口 IP核模块3的第二控制总线通过NPI总线5与MPMC IP核模块2的第一控制总线连接,MPMC IP核模块2的第二控制总线与片外存储器连接;接口 IP核模块3包括读控制模块3-1、选择模块3-2和写控制模块3-3,读控制模块3-1的第一控制总线和写控制模块3-3的第一控制总线分别与自定义UBus总线4连接,读控制模块3-1的第二控制总线与选择模块3-2的第一控制总线连接,写控制模块3-3的第二控制总线与选择模块3-2的第二控制总线连接;读控制模块3-1的第三控制总线和写控制模块3-3的第三控制总线分别与NPI总线5连接。在FPGA应用设计中,用户逻辑通过图I中自定义的UBus总线,完成与接口 IP核的通信,进而完成对片外存储器数据访问。接口 IP核将对用户逻辑的数据进行缓存,并处理来自用户逻辑的命令,根据缓存的状态、传输地址及NPI总线协议,动态组合传输模式完成与MPMC IP核的通信。MPMC IP核实现对片外存储器的PHY层(Physical Layer)控制及数据访问。写控制模块3-3负责完成将用户逻辑的数据写入MPMC IP核。读控制模块3-1完成从MPMC IP核读取数据,并通过UBus传输给用户逻辑。选择模块3-2通过对地址及控制信号的选择,实现读控制模块3-1及写控制模块3-3与MPMC IP核的通信,并避免读写冲突。
具体实施方式
二 结合图3说明本实施方式,本实施方式与具体实施方式
一不同的是,它的读控制模块3-1包括读数据FIFO模块3-1-1、读数据模块3-1-2、读模式及请求控制模块3-1-3、选择开关模块3-1-4和地址发生器3-1-5 ;读数据FIFO模块3-1-1将读接口的数据总线信号Rd_data发送给自定义UBus总线4的读接口的数据总线信号输入端;自定义UBus总线4将读使能信号Rd_en发送给读数据FIFO模块3_1_1的读使能信号的输入端;读数据FIFO模块3-1-1将读接口数据有效信号R_valid发送给自定义UBus总线4的读接口数据有效信号的输入端;读数据FIFO模块3-1-1将读数据FIFO中剩余的数据的个数的信号Num发送给读模式及请求控制模块3-1-3的的读数据FIFO中剩余的数据的个数的信号的输入端;

读模式及请求控制模块3-1-3将对读数据FIFO进行复位信号RST发送给读数据FIFO模块3-1-1的复位信号输入端;自定义UBus总线4将读完成信号End_rd发送给读模式及请求控制模块3_1_3的读完成信号输入端;读模式及请求控制模块3-1-3将读完成信号的响应信号EncLack发送给自定义UBus总线4的读完成信号的响应信号的输入端;自定义UBus总线4将读请求信号Rd_req发送给读模式及请求控制模块3_1_3的读请求信号的输入端;读模式及请求控制模块3-1-3将读请求信号的响应信号Rd_ack发送给自定义UBus总线4的读请求信号的响应信号;读模式及请求控制模块3-1-3将读模块繁忙信号R_busy发送给自定义UBus总线4的读模块繁忙信号的输入端;自定义UBus总线4将读请求的地址总线信号R_addr发送给选择开关模块3_1_4的读请求的地址总线信号的输入端;读模式及请求控制模块3-1-3将计算的读地址信号R_A发送给选择开关模块3-1-4的计算的读地址信号的输入端;选择开关模块3-1-4将开关信号发送给地址发生器3-1-5的开关信号输入端;读模式及请求控制模块3-1-3将地址发生器的使能信号A_EN发送给地址发生器3-1-5的地址发生器的使能信号的输入端;读模式及请求控制模块3-1-3将地址发生器的复位信号E_RST发送给地址发生器3-1-5的地址发生器的复位信号的输入端;地址发生器3-1-5将NPI接口的地址总线信号Addr发送给选择模块3_2的NPI接口的地址总线信号的输入端;NPI总线5将读接口的数据总线信号NPI_data发送给读数据FIFO模块3_1_1的NPI读接口的数据总线信号输入端;NPI总线5将MPMC IP核的读数据FIFO的空信号Empt_y发送给读数据模块3_1_2的读数据FIFO的空信号的输入端;读数据模块3-1-2将MPMC IP核的读数据FIFO的读信号POP发送给NPI总线5的MPMC IP核的读数据FIFO的读信号的输入端;NPI总线5将MPMC IP核的读数据FIFO的数据比读使能之后的周期数信号Lentacy发送给读数据模块3_1_2的MPMC IP核的读数据FIFO的数据比读使能之后的周期数信号的输入端;读数据模块3-1-2将MPMC IP核的读数据FIFO的清空信号Flush发送给NPI总线5的MPMC IP核的读数据FIFO的清空信号;读模式及请求控制模块3-1-3将NPI接口的单次数据传输的大小的信号Size发送给选择模块3-2的NPI接口的单次数据传输的大小的信号的输入端;读模式及请求控制模块3-1-3将NPI接口的地址请求信号Addr_req发送给选择模块3-2的NPI接口的地址请求信号的输入端;选择模块3-2将NPI接口的地址请求信号的响应信号Addr_ack发送给读模式及请求控制模块3-1-3的NPI接口的地址请求信号的响应信号的输入端;读模式及请求控制模块3-1-3将NPI接口的读写模式区分信号RdModWr发送给选择模块3-2的NPI接口的读写模式区分信号的输入端;选择模块3-2将写模块的繁忙信号W_busy发送给读模式及请求控制模块3_1_3的写模块的繁忙信号的输入端;读数据模块3-1-2将写内部读数据FIFO的写使能信号Wr_en发送给读数据FIFO模块3-1-1的写内部读数据FIFO的写使能信号的输入端和读模式及请求控制模块3-1-3的写内部读数据FIFO的写使能信号的输入端;读模式及请求控制模块3-1-3将读数据模块的复位信号E_RST发送给读数据模块3-1-2的复位信号输入端。
具体实施方式
三结合图4说明本实施方式,本实施方式与具体实施方式
一不同的是它的写控制模块3-3包括写数据FIFO模块3-2-1、写启动及写模式判断模块3-2-2、写时序控制模块3-2-3和写地址发生器3-2-4 ;自定义UBus总线4将写数据的写使能信号Wr_en发送给写数据FIFO模块3_2_1的写使能信号输入端;自定义UBus总线4将写数据的数据总线信号Wr_data发送给写数据FIFO模块3-2-1的数据总线信号输入端;写数据FIFO模块3-2-1将写数据的允许信号W_permit发送给自定义UBus总线4的写数据的允许信号输入端;自定义UBus总线4将写完成信号Fsh_wr发送给写启动及写模式判断模块3_2_2写完成信号输入端;写启动及写模式判断模块3-2-2将写完成信号的响应信号Fsh_ack发送给自定义UBus总线4的写完成信号的响应信号输入端;自定义UBus总线4将写请求信号Wr_req发送给写启动及写模式判断模块3_2_2的写请求信号输入端;写启动及写模式判断模块3-2-2将写请求信号的响应信号Wr_ack发送给自定义 UBus总线4的写请求信号的响应信号输入端;自定义UBus总线4将写请求的地址总线信号W_addr发送给写地址发生器3_2_4的写请求的地址总线信号输入端;写数据FIFO模块3-2-1将内部写数据FIFO模块的数据个数的信号NUM发送给写启动及写模式判断模块3-2-2的内部写数据FIFO模块的数据个数的信号输入端;写时序控制模块3-2-3将MPMC IP核内部FIFO的写数据使能信号Push发送给写数据FIFO模块3-2-1的MPMC IP核内部FIFO的写数据使能信号输入端和NPI总线5的内部FIFO的写数据使能信号输入端;NPI总线5将MPMC IP核内部FIFO的空信号M_Empty发送给写启动及写模式判断模块3-2-2的MPMC IP核内部FIFO的空信号输入端;写时序控制模块3-2-3将使用全I的常值信号BE发送给NPI总线5的使用全I的常值信号的输入端;
写时序控制模块3-2-3将写模块的繁忙信号W_busy发送给选择模块3_2的写模块的繁忙信号输入端;写时序控制模块3-2-3将NPI接口的地址请求信号Addr_req发送给选择模块3-2的NPI接口的地址请求信号输入端;选择模块3-2将NPI接口的地址请求信号的响应信号Addr_ack发送给写时序控制模块3-2-3的NPI接口的地址请求信号的响应信号输入端;写时序控制模块3-2-3将NPI接口的读写模式区分信号RdModWr发送给选择模块3-2的NPI接口的读写模式区分信号输入端;写启动及写模式判断模块3-2-2将NPI接口的单次数据传输的大小的信号Size发送给选择模块3-2的NPI接口的单次数据传输的大小的信号输入端;写地址发生器3-2-4将NPI接口的地址总线信号Addr发送给选择模块3_2的NPI接口的地址总线信号输入端;写启动及写模式判断模块3-2-2将对应于写模式的单次写数据的个数的信号B_num发送给写时序控制模块3-2-3的对应于写模式的单次写数据的个数的信号输入端;写启动及写模式判断模块3-2-2将写模式信号Bjnode发送给写时序控制模块3-2-3的写模式信号输入端;写启动及写模式判断模块3-2-2将单次突发写的启动信号S_wr发送给写时序控制模块3-2-3的单次突发写的启动信号输入端;写时序控制模块3-2-3将单次突发写的完成信号Wr_d0ne发送给写启动及写模式判断模块3-2-2的单次突发写的完成信号输入端; 写时序控制模块3-2-3将单次突发写的启动信号的响应信号S_ack发送给写启动及写模式判断模块3-2-2的单次突发写的启动信号的响应信号输入端;写时序控制模块3-2-3将地址发生器的使能信号A_EN发送给写启动及写模式判断模块3-2-2的地址发生器的使能信号输入端。
具体实施方式
四结合图5说明本实施方式,本实施方式与具体实施方式
一不同的是,它的读模式及请求控制模块3-1-3的状态转换包括Rd-idle状态,读空闲,等待用户发起读请求,在Rd-idle状态若收到自定义UBus总线4的读请求信号Rd_req信号后,进入Update-addr 状态,若收到自定义UBus总线4的读完成信号End_rd,则进入End-rd_rst状态;Update-addr状态,读取读数据的原始地址,
在Update-addr状态,获取读起始地址后,根据地址选择最长传输模式,若自定义UBus总线4的读请求信号Rd_req为O后,进入Wt-B_idle状态;在Wt-B-idle状态,若NPI总线5的写模块的繁忙信号W_busy为0,判断选择模块3-2空闲,同时将读模式及请求控制模块3-1-3的读模块繁忙信号R_busy置I等待总线空闲后,进入Cm-B-idle状态;在Cm-B-idle状态中,将读模式及请求控制模块3_1_3的读模块繁忙信号R_busy置I并再次判断选择模块3-2空闲则进入Addr-req状态,否则回到Wt-B-idle状态;在Addr-req状态中将地址、传输模式及读请求信号等发送到MPMC IP核同时将读 请求队列长度加I,并控制地址发生器3-1-5将根据传输模式计算下一次读地址;若读模式及请求控制模块3-1-3的NPI接口的地址请求信号Addr_req为1,进入Wt-data_rd状态;在Wt-data-rd状态中,等待用户逻辑模块I通过自定义UBus总线4读取读数据FIFO模块3-1-1中的数据,若自定义UBus总线4的读完成信号End_rd为0,读数据FIFO模块3-1-1的读FIFO中剩余的数据的个数的信号Num小于等于32,且读请求队列长度req_n为1,则回到Wt-B-idle状态;在机-(1&丨&1(1状态中,完成一次与NPI总线的突发传输后,将读请求队列长度req_n减I ;若自定义UBus总线4的读完成信号End_rd为I,进入Rd-idle状态;在Rd-idle状态,若自定义UBus总线4的读完成信号End_rd = I,则进入End-rd-rst 状态,在End-rd-rst状态,控制读数据模块3_1_2停止从MPMC读数据,并控制地址发生器3-1-5及读数据FIFO模块3-1-1等模块复位,等待下次读任务的启动,若计数的变量End_cnt 为 I,则进入 Wt-End-Rev 状态;在Wt-End-Rev状态,确定外部接收到读完成的响应信号,若自定义UBus总线4的读完成信号End_rd为0,则进入Rd-idle状态。由于通过NPI总线从MPMC IP核读取数据时,其数据传输延时由Latency信号控制,其值为O 3,设计读模式及请求控制模块3-1-3进行延时判断和时序控制,并控制读数据FIFO模块3-1-1完成将数据从MPMC IP核读回到RD_FIF0中。读控制模块3-1通过双端口 FIFO的使用和UBus完整的握手信号使用户逻辑可与接口 IP核工作在不同的频率下,并通过对地址末位的判断,实现动态选择最优NPI传输模式。读模式及请求控制模块3-1-3的是整个读控制模块3-1控制核心,其处理UBus上的读启动请求和读停止请求,并控制与MPMC IP核间的通信状态,同时控制读数据模块3-1-2从MPMC IP核读取数据,读数据模块3-1-2模块将读回的数据存入双端口的FIFO。使用较长的突发模式能达到较高的数据传输速率,读控制模块3-1的工作过程的控制均在读模式及请求控制模块3-1-3中完成。
具体实施方式
五结合图6说明本实施方式,本实施方式与具体实施方式
一不同的是,它的写启动及写模式判断模块3-2-2的工作状态转换如下Wait-req状态,检测与请求f目号,在Wait-req状态,,若自定义UBus总线4的写请求信号Wr_req为I,进入Req-ack状态,向用户逻辑模块I发送写启动及写模式判断模块3-2-2的写请求信号的响应信号Wr_ack同时向写时序控制模块3-2-3发送写启动及写模式判断模块3-2-2的单次突发写的启动信号S_wr和写模式信号B_mode ;Req-ack状态中,等待自定义UBus总线4的写请求信号Wr_req为O后,进入St-idle 状态;
在St-idle状态,等待用户逻辑模块I向写数据FIFO模块3-2-1中写入的数据,若写数据FIFO模块3-2-1的内部写数据FIFO模块的数据个数的信号NUM大于等于当前地址支持的最大突发传输长度L_Mode,进入Start-write状态;或当接收自定义UBus总线4的写完成信号Fsh_wr为I且写数据FIFO模块3_2_1的内部写数据FIFO模块的数据个数的信号NUM为不为0,进入Start-write状态;在Start-write状态中,向写启动及写模式判断模块3_2_2写入写时序控制模块3-2-3的单次突发写的启动信号的响应信号S_ack为1,进入Wt-wr-finsh状态;在Wt-wr-finsh状态中,若未接收到自定义UBus总线4的写完成信号Fsh_wr信号则回到St-idle状态等待启动下一次传输;若接收到自定义UBus总线4的写完成信号Fsh_wr信号和写数据FIFO模块3_2_1的内部写数据FIFO模块的数据个数的信号NUM为0,进入 Wait-f lush-ok 状态;在Wait-f lush-ok状态中,等待MPMC将所有的数据存入外部的存储器,当NPI总线5的MPMC IP核内部FIFO的空信号M_Empty为1,进入wait_no_flush状态,通过自定义UBus总线4向用户逻辑模块I发送写启动及写模式判断模块3-2-2写完成信号的响应信号Fsh_ack信号,完成整块的写传输。用双端口的FIFO作为数据缓存实现为用户提供独立的操作时钟;写启动及写模式判断模块3-2-2处理写请求和写完成信号并选择NPI传输模式及向写时序控制模块3-2-3发送启动信号及NPI突发传输模式。
具体实施方式
六结合图7说明本实施方式,本实施方式与具体实施方式
一不同的是,它的写时序控制模块3-2-3的工作状态转换如下在A-idle状态,若接收到写启动及写模式判断模块3-2-2的写请求信号的响应信号Wr_ack为1,控制写地址发生器3-2-4读取来自UBus的地址,进入Wr_idle状态;ffr-idle状态,等待写启动及写模式判断模块3_2_2的的写启动命令,写启动及写模式判断模块3-2-2的单次突发写的启动信号S_wr为1,读模块繁忙信号R_busy为0,将D_cnt赋值为本次突发传输数据个数,并将写时序控制模块3-2-3的单次突发写的启动信号的响应信号S_ack信号发送给写启动及写模式判断模块3-2-2,若写启动及写模式判断模块3-2-2的写模式信号Bjnode为Ι-Word,进入I-Addr-req状态,否则进入M-push-data状态,若写启动及写模式判断模块3-2-2写完成信号的响应信号Fsh_ack为1,则回到A-idle 状态;在进入M-push-data状态后,将写数据FIFO模块3_2_1中数据写入MPMC IP核,在写入每个数据时将D_cnt减I ;当D_cnt为2时,进入M_wr_busy状态中,发送给选择模块3-2写时序控制模块3-2-3的写模块的繁忙信号W_busy,保证写控制模块3_3对选择模块3-2的占用,之后进入M-Addr-req状态;
M-Addr-req状态,向NPI总线发送地址请求在M-Addr-req状态下,若选择模块3-2向MPMC IP核发送NPI接口的地址请求信号的响应信号Addr_ack为0,进入Μ-wait状态,若该信号为1,进入Miait-S状态;Μ-wait状态等待NPI总线的地址响应Addr_ack为I,M-wait状态中,若选择模块3-2向MPMC IP核发送NPI接口的地址请求信号的响应信号Addr_ack为I,进入M_wait_S状态;Miait-S状态等待的写启动及写模式判断模块3_2_2的的写启动命令的无效,在M-wait-S状态中,向写启动及写模式判断模块3_2_2发送写时序控制模块3-2-3的单次突发写的完成信号Wr_done,并判断写启动及写模式判断模块3-2-2的单次突发写的启动信号S_wr为0,则进入Wr-idle状态;Ι-Addr-req状态,发送单字的地址请求,若选择模块3_2向MPMC IP核发送NPI接口的地址请求信号的响应信号Addr_ack为I,则进入1-Push_data状态;Ι-Push-data状态,将内部FIFO中的数据写一个到MPMC IP核的FIFO中,若写启动及写模式判断模块3-2-2的单次突发写的启动信号S_wr为1,则进入I-Wait状态;I-Wait状态,若写启动及写模式判断模块3-2-2的单次突发写的启动信号S_wr为0,则进入Wr-idle状态。写时序控制模块3-2-3根据NPI接口的写时序,将数据写入MPMC并控制S_Module将地址及请求信号写入MPMC IP核。不同突发长度模式下,对送入MPMC地址与数据的先后顺序要求不同,因此写时序控制模块3-2-3的控制流程可以分为两类。单字模式的传输与多字突发控制流程不同在于先向MPMC写入地址及地址请求,然后写入待传输的数据。MPMC IP核是Xilinx公司提供的用于控制访问片外存储器的专用IP核,支持对DDR、DDR2、DDR3及LPDDR等存储器的访问及控制。同一 IP核提供多达8个访问接口,每个接口均可选择独立的接口类型,如XCL ( Xilinx CachLink)、SDMA (Soft DirectMemory Access)、PLB (Processor Local Bus)、NP I、MCB (Memory Controller Block)、PPC440MC(PowerPC 440 Memory Controller)及 VFBC(Vide。 Frame Buffer Controller)等的总线接口方式。其中,NPI是性能最高的通用接口。按单次传输长度,NPI接口支持多达7种读写模式,通过模式组合的方式可以将NPI接口扩展成专用的接口。应用NPI接口的设计需遵从以下特殊要求首先,接口 IP核与NPI总线通信的时钟须与MPMC IP核同样的运行在较高频率下,因此对接口逻辑的设计是一个挑战。其次,MPMC IP地址寄存器深度为4,因此NPI的读请求的等待队列长度不能超过
4。设计中为保证MPMC IP中数据不溢出,接口 IP核要根据MPMC中FIFO深度、总线位宽及请求等待队列长度,决定能否继续向MPMC发送请求。再次,数据传输模式最好与NPI上地址类型对齐。如传输模式为突发传输32字27个字节,地址最末7位应全为零。为完成对接口 IP核进行基于FPGA在不同地址和不同数据长度条件下的数据吞吐率测试。采用Xilinx的ML510嵌入式开发平台作为硬件平台,该平台FPGA为XC5VFX130T ;接口 IP核通过MPMC IP核访问外部存储器,其工作频率为200MHz。测试的固件环境以SoPC系统为基础,并设计用户逻辑对接口 IP核进行测试,用户逻辑同时设计PLB总线接口以方便测试过程的控制及结果读取。为测试接口 IP核在不同条件下数据吞吐率,用户逻辑以数据总量固定,每次传输块及块传输起始地址不同的方式访问接口 IP核。为测试接口 IP核的最大吞吐率,向接口 IP核发送高于其执行能力的传输请求,保证接口 IP核以最大负荷运行。对数据传输周期进行计数,并通过PLB总线读回测试结果,并通过串口发送到上位机显示,从而 完成对吞吐率的测试。数据总规模为D,值为4Myte,计数时钟F为200MHz ;因此数据吞吐率为计算式为THR = DXF/C(I)上式中THR表示数据传输的平均吞吐率,C表示数据传输占用的时钟周期。在不同的块起始地址下的起始传输模式,横坐标表示每次启动的传输块大小。由测试结果得到在不同的启动地址条件下,吞吐率区别不大。接口 IP核最高吞吐率可达742. 6MB/s,在传输块为32Word时,吞吐率仍可达到212MB/s,之后随着传输块变小吞吐率下降较明显,在传输块为IWord条件下,吞吐率仍可达到46. IMB/s。由测试结果得到在不同的启动地址条件下,吞吐率区别不大。接口 IP核最高吞吐率可达742. 6MB/s,在传输块为32Word时,吞吐率仍可达到212MB/s,之后随着传输块变小吞吐率下降较明显,在传输块为IWord条件下,吞吐率仍可达到46. IMB/s。总量相同的数据,使用较小数据块进行传输时,其启动次数要远多于使用大数据块进行的传输,其启动开销要占用更多的传输周期。使其吞吐率下降。实验表明,在数据块大于640Byte时,数据吞吐率超过600MB/s,最高达742. 6MB/s ;在传输块较小的情况下,吞吐率有明显的下降,在应用片外存储器的设计中,数据传输块均较大。本文设计的接口 IP核可以满足大部分对片外存储器的访问需求。在后续研究中,如何提高小传输块的吞吐率将是研究的主要方向。
权利要求
1.基于MPMC的高速存储器接口IP核的数据交换系统,它包括用户逻辑模块(I)、MPMCIP核模块(2)和接口 IP核模块(3);其特征在于用户逻辑模块(I)的控制总线通过自定义UBus总线(4)与接口 IP核模块(3)的第一控制总线连接,接口 IP核模块(3)的第二控制总线通过NPI总线(5)与MPMC IP核模块⑵的第一控制总线连接,MPMCIP核模块⑵的第二控制总线与片外存储器连接; 接口 IP核模块(3)包括读控制模块(3-1)、选择模块(3-2)和写控制模块(3-3),读控制模块(3-1)的第一控制总线和写控制模块 (3-3)的第一控制总线分别与自定义UBus总线(4)连接,读控制模块(3-1)的第二控制总线与选择模块(3-2)的第一控制总线连接,写控制模块(3-3)的第二控制总线与选择模块(3-2)的第二控制总线连接;读控制模块(3-1)的第三控制总线和写控制模块(3-3)的第三控制总线分别与NPI总线(5)连接。
2.根据权利要求I所述的基于MPMC的高速存储器接口IP核的数据交换系统,其特征在于它的读控制模块(3-1)包括读数据FIFO模块(3-1-1)、读数据模块(3-1-2)、读模式及请求控制模块(3-1-3)、选择开关模块(3-1-4)和地址发生器(3-1-5); 读数据FIFO模块(3-1-1)将读接口的数据总线信号Rd_data发送给自定义UBus总线(4)的读接口的数据总线信号输入端; 自定义UBus总线(4)将读使能信号Rd_en发送给读数据FIFO模块(3_1_1)的读使能信号的输入端; 读数据FIFO模块(3-1-1)将读接口数据有效信号1 _妨11(1发送给自定义UBus总线(4)的读接口数据有效信号的输入端; 读数据FIFO模块(3-1-1)将读数据FIFO中剩余的数据的个数的信号Num发送给读模式及请求控制模块(3-1-3)的的读数据FIFO中剩余的数据的个数的信号的输入端; 读模式及请求控制模块(3-1-3)将对读数据FIFO进行复位信号RST发送给读数据FIFO模块(3-1-1)的复位信号输入端; 自定义UBus总线(4)将读完成信号End_rd发送给读模式及请求控制模块(3_1_3)的读完成信号输入端; 读模式及请求控制模块(3-1-3)将读完成信号的响应信号EncLack发送给自定义UBus总线(4)的读完成信号的响应信号的输入端; 自定义UBus总线(4)将读请求信号Rd_req发送给读模式及请求控制模块(3_1_3)的读请求信号的输入端; 读模式及请求控制模块(3-1-3)将读请求信号的响应信号Rd_ack发送给自定义UBus总线(4)的读请求信号的响应信号; 读模式及请求控制模块(3-1-3)将读模块繁忙信号R_busy发送给自定义UBus总线(4)的读模块繁忙信号的输入端; 自定义UBus总线(4)将读请求的地址总线信号R_addr发送给选择开关模块(3_1_4)的读请求的地址总线信号的输入端; 读模式及请求控制模块(3-1-3)将计算的读地址信号R_A发送给选择开关模块(3-1-4)的计算的读地址信号的输入端; 选择开关模块(3-1-4)将开关信号发送给地址发生器(3-1-5)的开关信号输入端; 读模式及请求控制模块(3-1-3)将地址发生器的使能信号A_EN发送给地址发生器(3-1-5)的地址发生器的使能信号的输入端; 读模式及请求控制模块(3-1-3)将地址发生器的复位信号E_RST发送给地址发生器(3-1-5)的地址发生器的复位信号的输入端; 地址发生器(3-1-5)将NPI接口的地址总线信号Addr发送给选择模块(3-2)的NPI接口的地址总线信号的输入端; NPI总线(5)将读接口的数据总线信号NPI_data发送给读数据FIFO模块(3_1_1)的NPI读接口的数据总线信号输入端; NPI总线(5)将MPMC IP核的读数据FIFO的空信号Empt y发送给读数据模块(3_1_2)的读数据FIFO的空信号的输入端; 读数据模块(3-1-2)将MPMC IP核的读数据FIFO的读信号POP发送给NPI总线(5)的MPMC IP核的读数据FIFO的读信号的输入端; NPI总线(5)将MPMC IP核的读数据FIFO的数据比读使能之后的周期数信号Lentacy发送给读数据模块(3-1-2)的MPMC IP核的读数据FIFO的数据比读使能之后的周期数信号的输入端; 读数据模块(3-1-2)将MPMC IP核的读数据FIFO的清空信号Flush发送给NPI总线(5)的MPMC IP核的读数据FIFO的清空信号; 读模式及请求控制模块(3-1-3)将NPI接口的单次数据传输的大小的信号Size发送给选择模块(3-2)的NPI接口的单次数据传输的大小的信号的输入端; 读模式及请求控制模块(3-1-3)将NPI接口的地址请求信号Addr_req发送给选择模块(3-2)的NPI接口的地址请求信号的输入端; 选择模块(3-2)将NPI接口的地址请求信号的响应信号Addr_ack发送给读模式及请求控制模块(3-1-3)的NPI接口的地址请求信号的响应信号的输入端; 读模式及请求控制模块(3-1-3)将NPI接口的读写模式区分信号RdModWr发送给选择模块(3-2)的NPI接口的读写模式区分信号的输入端; 选择模块(3-2)将写模块的繁忙信号W_busy发送给读模式及请求控制模块(3-1-3)的写模块的繁忙信号的输入端; 读数据模块(3-1-2)将写内部读数据FIFO的写使能信号Wr_en发送给读数据FIFO模块(3-1-1)的写内部读数据FIFO的写使能信号的输入端和读模式及请求控制模块(3-1-3)的写内部读数据FIFO的写使能信号的输入端; 读模式及请求控制模块(3-1-3)将读数据模块的复位信号E_RST发送给读数据模块(3-1-2)的复位信号输入端。
3.根据权利要求I所述的基于MPMC的高速存储器接口 IP核的数据交换系统,其特征在于它的写控制模块(3-3)包括写数据FIFO模块(3-2-1)、写启动及写模式判断模块(3-2-2)、写时序控制模块(3-2-3)和写地址发生器(3-2-4); 自定义UBus总线(4)将写数据的写使能信号Wr_en发送给写数据FIFO模块(3_2_1)的写使能信号输入端; 自定义UBus总线(4)将写数据的数据总线信号Wr_data发送给写数据FIFO模块(3-2-1)的数据总线信号输入端; 写数据FIFO模块(3-2-1)将写数据的允许信号W_permit发送给自定义UBus总线(4)的写数据的允许信号输入端; 自定义UBus总线(4)将写完成信号Fsh_wr发送给写启动及写模式判断模块(3_2_2)写完成信号输入端; 写启动及写模式判断模块(3-2-2)将写完成信号的响应信号Fsh_ack发送给自定义UBus总线(4)的写完成信号的响应信号输入端; 自定义UBus总线(4)将写请求信号Wr_req发送给写启动及写模式判断模块(3_2_2)的写请求信号输入端; 写启动及写模式判断模块(3-2-2)将写请求信号的响应信号Wr_ack发送给自定义UBus总线(4)的写请求信号的响应信号输入端; 自定义UBus总线(4)将写请求的地址总线信号W_addr发送给写地址发生器(3_2_4)的写请求的地址总线信号输入端; 写数据FIFO模块(3-2-1)将内部写数据FIFO模块的数据个数的信号NUM发送给写启动及写模式判断模块(3-2-2)的内部写数据FIFO模块的数据个数的信号输入端; 写时序控制模块(3-2-3)将MPMC IP核内部FIFO的写数据使能信号Push发送给写数据FIFO模块(3-2-1)的MPMC IP核内部FIFO的写数据使能信号输入端和NPI总线(5)的内部FIFO的写数据使能信号输入端; NPI总线(5)将MPMC IP核内部FIFO的空信发送给写启动及写模式判断模块(3-2-2)的MPMC IP核内部FIFO的空信号输入端; 写时序控制模块(3-2-3)将使用全I的常值信号BE发送给NPI总线(5)的使用全I的常值信号的输入端; 写时序控制模块(3-2-3)将写模块的繁忙信号W_busy发送给选择模块(3-2)的写模块的繁忙信号输入端; 写时序控制模块(3-2-3)将NPI接口的地址请求信号Addr_req发送给选择模块(3_2)的NPI接口的地址请求信号输入端; 选择模块(3-2)将NPI接口的地址请求信号的响应信号Addr_ack发送给写时序控制模块(3-2-3)的NPI接口的地址请求信号的响应信号输入端; 写时序控制模块(3-2-3)将NPI接口的读写模式区分信号RdModWr发送给选择模块(3-2)的NPI接口的读写模式区分信号输入端; 写启动及写模式判断模块(3-2-2)将NPI接口的单次数据传输的大小的信号Size发送给选择模块(3-2)的NPI接口的单次数据传输的大小的信号输入端; 写地址发生器(3-2-4)将NPI接口的地址总线信号Addr发送给选择模块(3_2)的NPI接口的地址总线信号输入端; 写启动及写模式判断模块(3-2-2)将对应于写模式的单次写数据的个数的信号B_num发送给写时序控制模块(3-2-3)的对应于写模式的单次写数据的个数的信号输入端; 写启动及写模式判断模块(3-2-2)将写模式信号Bjnode发送给写时序控制模块(3-2-3)的写模式信号输入端; 写启动及写模式判断模块(3-2-2)将单次突发写的启动信号S_wr发送给写时序控制模块(3-2-3)的单次突发写的启动信号输入端; 写时序控制模块(3-2-3)将单次突发写的完成信号Wr_d0ne发送给写启动及写模式判断模块(3-2-2)的单次突发写的完成信号输入端; 写时序控制模块(3-2-3)将单次突发写的启动信号的响应信号3_&4发送给写启动及写模式判断模块(3-2-2)的单次突发写的启动信号的响应信号输入端; 写时序控制模块(3-2-3)将地址发生器的使能信号A_EN发送给写启动及写模式判断模块(3-2-2)的地址发生器的使能信号输入端。
4.根据权利要求I所述的基于MPMC的高速存储器接口IP核的数据交换系统,其特征在于它的读模式及请求控制模块(3-1-3)的状态转换包括 Rd-idle状态,读空闲,等待用户发起读请求, 在Rd-idle状态若收到自定义UBus总线⑷的读请求信号Rd_req信号后,进入Update-addr 状态, 若收到自定义UBus总线⑷的读完成信号End_rd,则进入End-rd_rst状态; Update-addr状态,读取读数据的原始地址, 在Update-addr状态,获取读起始地址后,根据地址选择最长传输模式,若自定义UBus总线(4)的读请求信号Rd_req为O后,进入Wt-B-idle状态; 在Wt-B-idle状态,若NPI总线(5)的写模块的繁忙信号W_busy为O,判断选择模块(3-2)空闲,同时将读模式及请求控制模块(3-1-3)的读模块繁忙信号R_busy置I等待总线空闲后,进入Cm-B-idle状态; 在Cm-B-idle状态中,将读模式及请求控制模块(3-1-3)的读模块繁忙信号R_busy置I并再次判断选择模块(3-2)空闲则进入Addr-req状态,否则回到Wt-B_idle状态; 在Addr-req状态中将地址、传输模式及读请求信号等发送到MPMC IP核同时将读请求队列长度加1,并控制地址发生器(3-1-5)将根据传输模式计算下一次读地址;若读模式及请求控制模块(3-1-3)的NPI接口的地址请求信号Addr_req为1,进入Wt-data_rd状态;在Wt-data-rd状态中,等待用户逻辑模块(I)通过自定义UBus总线(4)读取读数据FIFO模块(3-1-1)中的数据,若自定义UBus总线(4)的读完成信号End_rd为0,读数据FIFO模块(3-1-1)的读FIFO中剩余的数据的个数的信号Num小于等于32,且读请求队列长度req_nS 1,则回到Wt-B_idle状态;在Wt-data_rd状态中,完成一次与NPI总线的突发传输后,将读请求队列长度req_n减I ;若自定义UBus总线(4)的读完成信号End_rd为1,进入Rd-idle状态; 在Rd-idle状态,若自定义UBus总线⑷的读完成信号End_rd = 1,则进入End-rd-rst 状态, 在End-rd-rst状态,控制读数据模块(3_1_2)停止从MPMC读数据,并控制地址发生器(3-1-5)及读数据FIFO模块(3-1-1)等模块复位,等待下次读任务的启动,若计数的变量End_cnt 为 I,则进入 Wt-End-Rev 状态; 在Wt-End-Rev状态,确定外部接收到读完成的响应信号,若自定义UBus总线⑷的读完成信号End_rd为0,则进入Rd-idle状态。
5.根据权利要求I所述的基于MPMC的高速存储器接口IP核的数据交换系统,其特征在于它的写启动及写模式判断模块(3-2-2)的工作状态转换如下 ffait-req状态,检测写请求彳目号, 在Wait-req状态,,若自定义UBus总线(4)的写请求信号Wr_req为I,进入Req-ack状态,向用户逻辑模块(I)发送写启动及写模式判断模块(3-2-2)的写请求信号的响应信号Wr_ack同时向写时序控制模块(3-2-3)发送写启动及写模式判断模块(3_2_2)的单次突发写的启动信号S_wr和写模式信号Bjnode ; Req-ack状态中,等待自定义UBus总线(4)的写请求信号Wr_req为0后,进入St-idle状态; 在St-idle状态,等待用户逻辑模块(I)向写数据FIFO模块(3-2-1)中写入的数据,若写数据FIFO模块(3-2-1)的内部写数据FIFO模块的数据个数的信号NUM大于等于当前地址支持的最大突发传输长度L_Mode,进入Start-write状态;或当接收自定义UBus总线(4)的写完成信号Fsh_wr为I且写数据FIFO模块(3_2_1)的内部写数据FIFO模块的数据个数的信号NUM为不为0,进入Start-write状态; 在Startirite状态中,向写启动及写模式判断模块(3_2_2)写入写时序控制模块(3-2-3)的单次突发写的启动信号的响应信号S_ack为1,进入Wt-wr-finsh状态; 在Wt-wr-finsh状态中,若未接收到自定义UBus总线(4)的写完成信号Fsh_wr信号则回到St-idle状态等待启动下一次传输;若接收到自定义UBus总线(4)的写完成信号Fsh_wr信号和写数据FIFO模块(3_2_1)的内部写数据FIFO模块的数据个数的信号NUM为0,进入 Wait-f lush-ok 状态; 在Wait-flush-ok状态中,等待MPMC将所有的数据存入外部的存储器, 当NPI总线(5)的MPMC IP核内部FIFO的空信为1,进入wait_no_flush状态,通过自定义UBus总线(4)向用户逻辑模块(I)发送写启动及写模式判断模块(3-2-2)写完成信号的响应信号Fsh_ack信号,完成整块的写传输。
6.根据权利要求I所述的基于MPMC的高速存储器接口 IP核的数据交换系统,其特征在于它的写时序控制模块(3-2-3)的工作状态转换如下 在A-idle状态,若接收到写启动及写模式判断模块(3-2-2)的写请求信号的响应信号Wr_ack为1,控制写地址发生器(3-2-4)读取来自UBus的地址,进入Wr_idle状态;Wr-idle状态,等待写启动及写模式判断模块(3-2-2)的的写启动命令, 写启动及写模式判断模块(3-2-2)的单次突发写的启动信号S_wr为1,读模块繁忙信号 R_busy 为 0, 将0_(3社赋值为本次突发传输数据个数,并将写时序控制模块(3-2-3)的单次突发写的启动信号的响应信号S_ack信号发送给写启动及写模式判断模块(3-2-2), 若写启动及写模式判断模块(3-2-2)的写模式信号Bjnode为l_Word,进入I-Addr-req状态,否则进入M-push-data状态, 若写启动及写模式判断模块(3-2-2)写完成信号的响应信号Fsh_ack为1,则回到A-idle 状态; 在进入M-push-data状态后,将写数据FIFO模块(3_2_1)中数据写入MPMC IP核,在写入每个数据时将D_cnt减I ;当D_cnt为2时,进入M_wr_busy状态中,发送给选择模块(3-2)写时序控制模块(3-2-3)的写模块的繁忙信号W_busy,保证写控制模块(3_3)对选择模块(3-2)的占用,之后进入M-Addr-req状态; M-Addr-req状态,向NPI总线发送地址请求, 在M-Addr-req状态下,若选择模块(3_2)向MPMC IP核发送NPI接口的地址请求信号的响应信号Addr_ack为O,进入Miait状态,若该信号为1,进入Miait-S状态; M-wait状态等待NPI总线的地址响应Addr_ack为I, Miait状态中,若选择模块(3-2)向MPMC IP核发送NPI接口的地址请求信号的响应信号Addr_ack为I,进入M_wait_S状态; Miait-S状态等待的写启动及写模式判断模块(3-2-2)的的写启动命令的无效, 在Miait-S状态中,向写启动及写模式判断模块(3-2-2)发送写时序控制模块(3-2-3)的单次突发写的完成信号Wr_done,并判断写启动及写模式判断模块(3_2_2)的单次突发写的启动信号S_wr为O,则进入Wr-idle状态; .1-Addr-req状态,发送单字的地址请求,若选择模块(3-2)向MPMC IP核发送NPI接口的地址请求信号的响应信号Addr_ack为I,则进入1-Push_data状态; .1-Push-data状态,将内部FIFO中的数据写一个到MPMC IP核的FIFO中,若写启动及写模式判断模块(3-2-2)的单次突发写的启动信号S_wr为1,则进入I-Wait状态; .1-Wait状态,若写启动及写模式判断模块(3-2-2)的单次突发写的启动信号S_wr为.0,则进入Wr-idle状态。
全文摘要
基于MPMC的高速存储器接口IP核的数据交换系统,涉及一种数据交换系统,以解决数据交换系统实现片外存储器访问的IP核资源利用率和数据吞吐率较低的问题。用户逻辑模块控制总线通过自定义UBus总线与接口IP核通信,接口IP核通过NPI总线与MPMC IP核通信,MPMC IP核与片外存储器通信;接口IP核包括读控制、选择和写控制模块,读控制模块第一控制总线和写控制模块第一控制总线各与自定义UBus总线连接,读控制模块第二控制总线与选择模块第一控制总线连接,写控制模块第二控制总线与选择模块第二控制总线连接;读控制模块第三控制总线和写控制模块第三控制总线分别与NPI总线连接。用于与片外存储器数据交换。
文档编号G06F13/16GK102622319SQ20121011465
公开日2012年8月1日 申请日期2012年4月18日 优先权日2012年4月18日
发明者仲雪洁, 刘大同, 庞业勇, 彭宇, 王少军, 马宁 申请人:哈尔滨工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1