CN114490466B - 一种实现数据连续存储的ddr ip核架构及方法 - Google Patents
一种实现数据连续存储的ddr ip核架构及方法 Download PDFInfo
- Publication number
- CN114490466B CN114490466B CN202111632579.XA CN202111632579A CN114490466B CN 114490466 B CN114490466 B CN 114490466B CN 202111632579 A CN202111632579 A CN 202111632579A CN 114490466 B CN114490466 B CN 114490466B
- Authority
- CN
- China
- Prior art keywords
- data
- ddr
- read
- fifo
- fifo module
- 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
- 238000000034 method Methods 0.000 title claims description 16
- 238000013500 data storage Methods 0.000 title description 3
- 230000005540 biological transmission Effects 0.000 claims abstract description 12
- 238000006243 chemical reaction Methods 0.000 claims abstract description 9
- 238000012545 processing Methods 0.000 claims abstract description 6
- 230000015654 memory Effects 0.000 claims description 21
- 238000013507 mapping Methods 0.000 claims description 8
- 238000004891 communication Methods 0.000 claims description 3
- 230000007547 defect Effects 0.000 abstract 1
- 238000013461 design Methods 0.000 description 3
- 238000012549 training Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- QGVYYLZOAMMKAH-UHFFFAOYSA-N pegnivacogin Chemical compound COCCOC(=O)NCCCCC(NC(=O)OCCOC)C(=O)NCCCCCCOP(=O)(O)O QGVYYLZOAMMKAH-UHFFFAOYSA-N 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- 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/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0877—Cache access modes
- G06F12/0879—Burst mode
-
- 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/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- 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
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
Abstract
一种实现数据连续存取的DDR IP核架构,包括:数据输入接口模块,用于对输入的模拟数据进行模数转换,输出数字数据至前置FIFO模块;前置FIFO模块,用于写入所述数据输入接口模块传来的数字数据,当所述前置FIFO模块达到预设状态时,所述前置FIFO模块的读操作启动;DDR IP核,用于控制DDR实现数据的采集、处理以及传输;后置FIFO模块,用于写入输出数据FIFO模块读出来的数据,当所述后置FIFO模块达到预设状态时,所述后置FIFO模块的读操作启动;数据输出接口模块:用于输出所述后置FIFO模块读取的数据。本发明采用的技术方案,弥补了传统DDR控制器突发访问读写操作的缺点,实现DDR数据的连续缓存和访问。
Description
技术领域
本发明属于集成电路技术领域,具体涉及一种实现数据连续存储的DDR IP核架构及方法。
背景技术
现有技术中,在使用DDR作为数据缓存芯片的同时,还会使用FPGA芯片作为控制器,实现数据的采集、处理以及传输。DDR需要完成初始化、自刷新以及读写控制操作,这些操作对时序要求很高,通常用户会直接采用由FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)芯片厂商提供的DDR控制器(简称:DDR控制器或者DDR IP核)实现,如:紫光同创的HMIC_S。
然而,由于DDR控制器对DDR的读写访问采用的是突发长度的方式,且在进行读写操作时发送读写命令、读写地址、自刷新命令需要占用时间,两次读写操作之间会存在一段时间间隔,无法直接连续地读写DDR。同时,由于采样数据是源源不断输入的,因此,这种DDR控制器不可连续读写的特征会导致数据丢失。
还有一种DDR控制器采用“乒乓操作”的方式对DDR进行读写访问,需要不断地切换端口,如:在进行写操作的时候,先写DDR控制器的port1,将64个数据写入port1的数据FIFO,FIFO达到满状态以后,再切换到port2,将新的64个数据写入port2的数据FIFO(同时发送port1的写命令和写地址,将数据从DDR控制器的FIFO搬移到DDR中去),当FIFO达到满状态以后,再切换回到port1继续写。这种方式需要频繁地切换读写端口,逻辑设计比较复杂,且当数据速率非常高的时候,也容易造成数据丢失,给用户做设计带来了很多的不便。
发明内容
本发明所要解决的技术问题在于针对上述现有DDR控制器不可连续读写特征会导致数据丢失的问题,提供一种实现数据连续存取的DDR IP核架构及方法,其设计新颖合理,便于推广使用。
本发明提供一种实现数据连续存取的DDR IP核架构,包括:
数据输入接口模块,用于对输入的模拟数据进行模数转换,输出数字数据至前置FIFO模块;
前置FIFO模块,用于写入所述数据输入接口模块传来的数字数据,当所述前置FIFO模块达到预设状态时,所述前置FIFO模块的读操作启动;
DDR IP核,用于控制DDR实现数据的采集、处理以及传输;
后置FIFO模块,用于写入从所述DDR IP核读出来的数据,当所述后置FIFO模块达到预设状态时,所述后置FIFO模块的读操作启动;
数据输出接口模块:用于输出从所述后置FIFO模块读取的数据。
进一步地,所述DDR IP核包括:
输入数据FIFO模块,用于写入从所述前置FIFO模块读出来的数字数据,并将所述数字数据经数据传输通路传送给PHY物理层;
PHY物理层,用于在执行DDR写或读操作时,通过IO接口将数据写入DDR或将数据从DDR读出;
输出数据FIFO模块,用于写入从DDR读出来的数字数据,执行DDR读操作时,所述输出数据FIFO的读操作启动;
命令FIFO模块,用于接收通过命令总线传输的DDR写操作控制指令或者DDR读操作控制指令;
控制器,用于从所述命令FIFO模块读取指令进行解析,控制所述输入数据FIFO模块和所述输出数据FIFO模块进行读写操作。
进一步地,所述架构还包括前置读写控制模块以及后置读写控制模块,
所述前置读写控制模块,用于产生所述前置FIFO模块的读写控制时序以及所述输入数据FIFO模块和输出数据FIFO模块的写时序;
所述后置读写控制模块,用于产生所述后置FIFO的读写控制时序。
进一步地,执行DDR写或读操作时,每次写入或读取一个突发长度的数据。
进一步地,所述实现数据连续存取的DDR IP架构基于FPGA。
进一步地,所述数据输入接口模块包括:
SPI接口,用于配置数据采集芯片的寄存器并控制ADC芯片的工作;
ADC接口,用于传送ADC芯片输出的数字数据至所述前置FIFO模块,所述ADC接口为并行数据总线;
AXI接口,用于连续接收外部输入数据。
进一步地,所述数据输出接口模块包括:AXI接口和EMIF接口,所述AXI接口用于连续输出数据;所述EMIF接口用于FPGA与CPU/DSP之间的通讯。
本发明还提供一种实现数据连续存取的方法,执行DDR写操作时,该方法包括以下步骤:
S101.根据需求对FPGA进行配置;
S102.对DDR进行初始化及校准;
S103.对输入的模拟数据进行模数转换;
S104.读取模数转换后的数据,将读取的数据写入前置FIFO模块;
S105.读取前置FIFO模块数据,将读取的数据写入输入数据FIFO模块;
S106.发送DDR写操作指令,读取输入数据FIFO模块数据,将读取的数据写入DDR。
进一步地,执行DDR读操作时,包括以下步骤:
S201.发送DDR读操作指令;
S202.读取输出数据FIFO模块中数据,将读取的数据写入后置FIFO模块;
S203.从数据输出接口模块获取后置FIFO的读命令以及寄存器的配置命令信息,同时检测读使能和写使能信号的下降沿,当检测到读使能或写使能信号的下降沿,则进入下一步;
S204.进行命令解析和地址映射,若检测到读使能信号的下降沿,则根据锁存的地址值对读使能信号进行映射;若检测到写使能信号的下降沿,则执行寄存器配置命令;若解析出来的命令是执行后置FIFO的读操作,则进入下一步;
S205.读取后置FIFO模块数据并输出。
进一步地,当用户不需要使用所述前置FIFO模块或所述后置FIFO模块时,将所述前置FIFO模块或所述后置FIFO模块对应的控制信号置为低电平。
本发明与现有技术相比具有以下优点:
1、采用本发明提供的技术方案,能够连续读写DDR数据,从而实现数据的连续缓存和访问。
2、本发明提供的技术方案,采用异步FIFO作为缓存,既解决了跨时钟域的问题,又解决了传统“乒乓操作”方式需做频繁切换,在高速率场景下数据易丢失的问题,实现数据传输速率的自适应适配。
3、本发明提供的技术方案,为用户提供ADC的配置模板和灵活的EMIF接口和AXI接口,满足从数据采集到数据交互全面覆盖的用户需求,减小了用户的设计难度和开发工作量。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明一部分实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种实现数据连续存取的DDR IP核架构原理框图;
图2为本发明提供的一种实现数据连续存取的DDR IP核架构工作流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供的一种实现数据连续存取的DDR IP核架构包括:数据输入接口模块,用于对输入的模拟数据进行模数转换,输出数字数据至前置FIFO模块;
前置FIFO模块,用于写入所述数据输入接口模块传来的数字数据,当前置FIFO模块达到半满状态时,前置FIFO模块的读操作启动;
DDR IP核,用于控制DDR实现数据的采集、处理以及传输;
后置FIFO模块,用于写入输出数据FIFO模块读出来的数据,当后置FIFO模块写满数据时,后置FIFO模块的读操作启动;
数据输出接口模块:用于输出后置FIFO模块读取的数据。
作为本发明的一个实施例,本实施例中的数据输入接口模块包括三组由SPI接口、ADC接口以及AXI接口组成的输入端口,可以同时对输入的三路模拟数据进行模数转换,输出数字数据至前置FIFO模块;输出接口模块包括三组由EMIF接口和AXI接口组成的输出端口,用于输出后置FIFO模块读取的数据。SPI接口,用于配置数据采集芯片的寄存器并控制ADC芯片的工作;ADC接口为并行数据总线,用于传送ADC芯片输出的数字数据至前置FIFO模块;AXI接口,用于将DDR IP核与其他子系统互联,EMIF接口用于FPGA与CPU/DSP之间的通讯。
作为本发明的一个实施例,对应地,前置FIFO模块包括前置FIFO1、前置FIFO2以及前置FIFO3三个FIFO存储器,为数据写入DDR方向的FIFO存储器,深度为输入数据FIFO模块中FIFO存储器的2倍,多余一倍的存储空间用来缓存两次突发访问之间输入的数据。对应地,输入数据FIFO模块包括输入数据FIFO1、输入数据FIFO2以及输入数据FIFO3三个FIFO存储器。执行DDR写操作时,当前置FIFO模块为半满状态时启动前置FIFO模块的读操作,同时启动输入数据FIFO模块的写操作,将前置FIFO模块读出来的数据写入DDR IP核的输入数据FIFO模块中,每次连续读写一个突发长度的数据量(64个数据),当前置FIFO模块再次变为半满状态,启动新一轮读前置FIFO模块和写输入数据FIFO模块的操作,将连续不断输入的数据连续地写入前置FIFO模块中。
优选地,DDR IP核用于控制DDR芯片的初始化、预充电、自刷新、读写操作以及校准训练,用户通过命令总线将控制指令写入或者读出DDR IP核中的命令FIFO模块,再由控制器从命令FIFO模块取指令进行解析。执行DDR写操作时,输入数据FIFO模块的读操作启动,输入数据FIFO模块读出来的数字数据经数据传输通路传送给PHY物理层,PHY物理层再过IO接口将数据写入DDR;执行DDR读操作时,先由PHY物理层通过IO接口将DDR中的数据读取,通过数据传输通路将数据写入输出数据FIFO模块。
作为本发明的一个实施例,对应地,输入数据FIFO模块包括输入数据FIFO1、输入数据FIFO2以及输入数据FIFO3三个FIFO存储器;输出数据FIFO模块包括输出数据FIFO1、输出数据FIFO2以及输出数据FIFO3三个FIFO存储器;命令FIFO模块包括命令FIFO1ˉ命令FIFO6六个FIFO存储器,发别对应存储输入数据FIFO模块和输出数据FIFO模块的六个FIFO存储器的控制指令。
作为本发明的一个实施例,对应地,后置FIFO模块包括后置FIFO1、后置FIFO2以及后置FIFO3三个FIFO存储器,为数据读出DDR方向的FIFO存储器,深度为输入数据FIFO模块中FIFO存储器的2倍+1。执行DDR读操作时,先将DDR IP核输出数据FIFO模块中的数据读出,每次连续读写一个突发长度的数据量(64个数据),将这些数据写入后置FIFO模块中的FIFO存储器,后置FIFO模块写满后(128个数据),等待并解析数据输出接口模块总线上的命令,根据解析出来的读或写命令、地址信息做映射,产生对应后置FIFO模块的读控制信号,启动后置FIFO模块的读操作,将读取的数据通过数据输出接口模块输出。当后置FIFO模块读至半满状态时,再次将DDR IP核输出数据FIFO模块中的数据读出,然后将这些数据写入后置FIFO模块,后置FIFO模块的读操作连续进行,形成DDR的连续读操作。
优选地,前置读写控制模块连接连接前置FIFO模块和DDR IP核,用于向DDR IP核发送初始化、预充电、自刷新、读写操作以及校准训练指令,还用于产生前置FIFO模块的读写控制时序以及输入数据FIFO模块和输出数据FIFO模块的写时序。
优选地,后置读写控制模块连接连接后置FIFO模块和DDR IP核,用于向DDR IP核发送读命令和自刷新命令,还用于产生后置FIFO模块的读写控制时序。
图2为本发明提供的一种实现数据连续存取的DDR IP核架构工作流程图,如图2所示,执行DDR写操作时,具体步骤如下:
S101.对FPGA进行配置,通过检测pl l_lock信号是否拉高判断PLL的锁定状态来判断FPGA是否配置完成,若pl l_lock=1’b1则表示PLL已锁定,直接进入下一步,若pl l_lock=1’b0,则等待PLL锁定;
S102.对DDR进行初始化及校准,按照JESD79-3F标准,依次执行上电与初始化、ZQ校准、Verf DQ校准、读写训练操作,对所有的bank进行预充电,向各页发出刷新操作指令,配置模式寄存器,DDR完成上电、复位操作,使能并产生CK、CK#时钟;
S103.通过SPI接口配置ADC芯片;
作为本发明的一个实施例,为用户提供了ADC配置程序的模板,用户基于该模板可开发出符合项目需求的配置程序。该模板主要包括两部分,一部分是配置SPI接口读写控制逻辑的状态机,由IDLE、LOAD、WR_DATA、WR_FINISH、START_RD、WR_INST、RD_DATA、RD_FINISH、RD_WAIT等状态组成;另一部分是寄存器配置流程状态机,由IDLE、WR_REG1、WR_REG2、WR_REG3、WR_REG4、WR_REG5、WR_FINISH、RD_REG1、RD_REG2、RD_REG3、RD_REG4、RD_REG5、RD_FINISH等状态组成。ADC配置完成后,拉高adc_rdy信号。
S104.读取ADC芯片的数据,将读取的数据写入前置FIFO模块;
作为本发明的一个实施例,检测到adc_rdy=1’b1后开始读取ADC芯片输出的数字数据,用adc_dco时钟信号将adc_data[15:0]信号写入FIFO,执行DDR写操作时,实时监测溢出信号pre_fifo_ful l和半满信号pre_fifo_half_ful l的状态,当检测到pre_fifo_full=1’b1时,立即停止前置FIFO模块的写操作,并将pre_fifo_ful l作为告警信号输出;若检测到pre_fifo_half_ful l=1’b1且pre_fifo_ful l=1’b0时,则进入下一步。
S105.读取前置FIFO模块数据,将读取的数据写入输入数据FIFO模块;
作为本发明的一个实施例,读取前置FIFO模块中数据时,先将pre_fifo_rd_en信号拉高,等待1拍后,pre_fifo_val id信号输出为高电平,表示此时前置FIFO模块输出的数据有效,数据通过pre_fifo_dout[15:0]信号输出,送到输入数据FIFO模块的wr_data_in[15:0]端,同时,将pre_fifo_val id信号作为写使能信号(data_fifo_wr_en)送给输入数据FIFO模块,实现写使能信号与数据的对齐。当data_fifo_wr_en=1’b1时,开始对wr_data_cnt进行计数,统计写入输入数据FIFO模块中数据的数目,若检测到wr_data_cnt等于BL值(突发长度-1),则停止读前置FIFO模块和写输入数据FIFO模块的操作,进入下一步。
S106.发送DDR写操作指令,读取输入数据FIFO模块数据,将读取的数据写入DDR。
作为本发明的一个实施例,此步骤先产生一个宽度为1个cycle的cmd_enable脉冲信号,然后在下一拍将transaction的字节起始地址、写入数据数量以及写命令等信息一起写入命令FIFO,等待并判断cmd_empty和cmd_ful l两个信号的状态,若cmd_empty信号由高电平变为低电平且cmd_ful l=1’b0,则表示命令发送已完成,再等待5个cycle后跳转至步骤S105,重新检测pre_fifo_half_ful l是否再次变为1,若变为1则重复上述步骤S105和S106。另外,步骤S104的流程一直运行。第一次执行完步骤S106时,前置读写控制模块发送data_rdy信号给后置读写控制模块,表示可以执行读操作。
优选地,执行DDR读操作时,包括以下步骤:
S201.发送DDR读操作指令;
作为本发明的一个实施例,在DDR存有数据的前提下,先自动触发产生一个宽度为1个cycle的cmd_enable脉冲信号,触发条件:①data_rdy=1’b1;②后置FIFO模块的empty信号为1;③后置FIFO模块中剩余的数据数量等于或小于(BL+1)/2,即:post_fifo_half_empty信号被拉高。以上条件,①②与①③是或的关系,只要满足其中的一种组合条件就会触发产生DDR的读命令,然后在下一拍将transaction的字节起始地址、欲读取数据的数量以及读命令等信息一起写入命令FIFO模块,等待并判断cmd_empty和cmd_ful l两个信号的状态,若cmd_empty信号由高电平变为低电平且cmd_ful l=1’b0,则表示命令发送已完成,然后等待数据从DDR加载到DDR IP核的输出数据FIFO模块中,此时,ddr_rd_cnt[6:0]信号会随着数据的增加而累加,当其累加到BL值+1时,则表示已经将一次突发访问的数据全部加载完毕,进入下一步。
S202.读取输出数据FIFO模块中数据,将读取的数据写入后置FIFO模块;
作为本发明的一个实施例,后置FIFO模块中的FIFO存储器为深度129、位宽16bi t的异步FIFO。当检测到ddr_rd_cnt=BL+1时,将ddr_rd_en信号和post_fifo_wr_en信号都拉高,同时启动输出数据FIFO模块的读操作和后置FIFO模块的写操作。在此过程中,利用rd_cnt计数器对读取的数据数量进行累加计数,当rd_cnt=BL+1时,表示已读取完一次突发访问的数据,将ddr_rd_en信号和post_fifo_wr_en信号拉低,将rd_cnt计数器清零,同时跳转到步骤S201,再执行一次输出数据FIFO模块的读操作和后置FIFO模块的写操作将后置FIFO模块填满,执行完第二次读写操作之后,后置FIFO模块缓存的数据量达到128个,post_fifo_half信号被拉高,rd_cnt等于BL+1,此时将rd_pause信号拉高,暂停后置FIFO模块的写操作。然后进入下一步等待阶段,并不断地从数据输出接口模块获取命令信息。
S203.从数据输出接口模块获取后置FIFO模块的读命令以及寄存器的配置命令信息,同时检测读使能和写使能信号的下降沿,当检测到读使能或写使能信号的下降沿,则进入下一步;
作为本发明的一个实施例,对数据输出接口模块传递的命令进行地址分配:0x01-0x03分别对应后置FIFO1ˉFIFO3的读地址,0x04-0x08分别对应ADC寄存器1-5的配置地址,其他地址暂时保留。同时在片选信号的下降沿锁存总线地址。
S204.进行命令解析和地址映射,若检测到读使能信号的下降沿,则根据锁存的地址值对读使能信号进行映射;若检测到写使能信号的下降沿,则执行寄存器配置命令;若解析出来的命令是执行后置FIFO模块的读操作,则进入下一步;
作为本发明的一个实施例,若锁存的地址为0x01,则映射成后置FIFO1的读使能信号,产生一个脉宽为1个cycle的读脉冲信号(rd_post1_en);若锁存的地址为0x04,则直接对ADC寄存器进行改写;若解析出来的命令是执行后置FIFO模块的读操作,则进入下一步。
S205.读取后置FIFO模块数据并输出。
作为本发明的一个实施例,rd_post1_en被拉高后,启动后置FIFO1的读操作,每个rd_post1_en脉冲读取一个数据,当后置FIFO模块被读走BL+1个数据时,会自动触发步骤S201的操作,再次自动执行输出数据FIFO模块的读操作和后置FIFO模块的写操作,既可以避免后置FIFO模块中数据被读空,还可以保证数据的连续性。同时,为了防止后置FIFO模块中数据被读空,在读的过程中动态监测empty信号的状态,若检测到post_fifo_empty=1’b1,即立刻停止后置FIFO模块的读操作。同时,利用post_fifo1_rd_cnt计数器对读出的数据进行累减计数,从BL+1一直累减到1,当post_fifo1_rd_cnt=1时,拉低rd_post1_en信号,停止读操作。
优选地,在执行步骤S205时,若post_fifo1_val id信号被拉高,则按照数据输出接口模块总线的时序要求将数据输出,除了将后置FIFO模块的数据信号post_fifo_dout和有效指示信号post_fifo_val id输出以外,还将它们的empty信号和ful l信号输出,以便其他系统根据这些信号的状态做出应急处理。在输出数据的过程中,会利用total_rd_cnt计数器对输出数据的数量进行累加计数,当total_rd_cnt=TOTAL时,则拉高rd_finish信号,表示数据输出接口模块总线要读取的数据已经达到用户想要处理数据量,需要暂停DDR的读操作,等待用户需要做新的数据处理时再发起新的读操作。
作为本发明的一个实施例,当用户不需要使用前置FIFO模块和后置FIFO模块中FIFO存储器时,可将对应地sel_pre_fifo1ˉsel_pre_fifo3、sel_post_fifo1ˉsel_post_fifo3控制信号置为低电平,将对应的FIFO存储器旁路掉。
优选地,本发明实施例中的的FIFO存储器是深度为128、位宽为16bi t的异步FIFO存储器。
以上对本发明实施例公开的一种实现数据连续存取的DDR IP核架构进行了详细介绍,但其只作为范例,本发明并不限制于以上描述的具体实施方式。对于本领域的技术人员而言,依据本发明的思想,对该发明进行的等同修改或替代也都在本发明的范畴之中,因此,在不脱离本发明的精神和原则范围下所作的均等变换和修改、改进等,都应涵盖在本发明的范围内。综上,本说明书内容不应理解为对本发明的限制。
Claims (9)
1.一种实现数据连续存取的DDR IP核架构,其特征在于,包括:
数据输入接口模块,用于对输入的模拟数据进行模数转换,输出数字数据至前置FIFO模块;
前置FIFO模块,用于写入所述数据输入接口模块传来的数字数据,当所述前置FIFO模块达到预设状态时,所述前置FIFO模块的读操作启动;
DDR IP核,用于控制DDR实现数据的采集、处理以及传输,所述DDR IP核包括:
输入数据FIFO模块,用于写入从所述前置FIFO模块读出来的数字数据,并将所述数字数据经数据传输通路传送给PHY物理层;
PHY物理层,用于在执行DDR写或读操作时,通过IO接口将数据写入DDR或将数据从DDR读出;
输出数据FIFO模块,用于写入从DDR读出来的数字数据,执行DDR读操作时,所述输出数据FIFO的读操作启动;
命令FIFO模块,用于接收通过命令总线传输的DDR写操作控制指令或者DDR读操作控制指令;
控制器,用于从所述命令FIFO模块读取指令进行解析,控制所述输入数据FIFO模块和所述输出数据FIFO模块进行读写操作;
后置FIFO模块,用于写入从所述DDR IP核读出来的数据,当所述后置FIFO模块达到预设状态时,所述后置FIFO模块的读操作启动;
数据输出接口模块:用于输出从所述后置FIFO模块读取的数据;
其中,所述前置FIFO模块中的FIFO存储器深度为所述输入数据FIFO模块中的FIFO存储器的2倍,所述后置FIFO模块中的FIFO存储器深度为所述输出数据FIFO模块中的FIFO存储器的2倍加1。
2.按照权利要求1所述的一种实现数据连续存取的DDR IP核架构,其特征在于,所述架构还包括前置读写控制模块以及后置读写控制模块,
所述前置读写控制模块,用于产生所述前置FIFO模块的读写控制时序以及所述输入数据FIFO模块和输出数据FIFO模块的写时序;
所述后置读写控制模块,用于产生所述后置FIFO的读写控制时序。
3.按照权利要求1所述的一种实现数据连续存取的DDR IP核架构,其特征在于,执行DDR写或读操作时,每次写入或读取一个突发长度的数据。
4.按照权利要求3所述的一种实现数据连续存取的DDR IP核架构,其特征在于,所述实现数据连续存取的DDR IP架构基于FPGA。
5.按照权利要求4所述的一种实现数据连续存取的DDR IP核架构,其特征在于,所述数据输入接口模块包括:
SPI接口,用于配置数据采集芯片的寄存器并控制ADC芯片的工作;
ADC接口,用于传送ADC芯片输出的数字数据至所述前置FIFO模块,所述ADC接口为并行数据总线;
AXI接口,用于连续接收外部输入数据。
6.按照权利要求5所述的一种实现数据连续存取的DDR IP核架构,其特征在于,所述数据输出接口模块包括:AXI接口和EMIF接口,所述AXI接口用于连续输出从所述后置FIFO模块读取的数据;所述EMIF接口用于FPGA与CPU/DSP之间的通讯。
7.一种实现数据连续存取的方法,其特征在于,采用权利要求1-6任一种实现数据连续存取的DDR IP核架构,执行DDR写操作时,该方法包括以下步骤:
S101.根据需求对FPGA进行配置;
S102.对DDR进行初始化及校准;
S103.对输入的模拟数据进行模数转换;
S104.读取模数转换后的数据,将读取的数据写入前置FIFO模块;
S105.读取前置FIFO模块数据,将读取的数据写入输入数据FIFO模块;
S106.发送DDR写操作指令,读取输入数据FIFO模块数据,将读取的数据写入DDR。
8.按照权利要求7所述的一种实现数据连续存取的方法,其特征在于,执行DDR读操作时,包括以下步骤:
S201.发送DDR读操作指令;
S202.读取输出数据FIFO模块中数据,将读取的数据写入后置FIFO模块;
S203.从数据输出接口模块获取后置FIFO的读命令以及寄存器的配置命令信息,同时检测读使能和写使能信号的下降沿,当检测到读使能或写使能信号的下降沿,则进入下一步;
S204.进行命令解析和地址映射,若检测到读使能信号的下降沿,则根据锁存的地址值对读使能信号进行映射;若检测到写使能信号的下降沿,则执行寄存器配置命令;若解析出来的命令是执行后置FIFO的读操作,则进入下一步;
S205.读取后置FIFO模块数据并输出。
9.按照权利要求8所述的一种实现数据连续存取的方法,其特征在于,当用户不需要使用所述前置FIFO模块或所述后置FIFO模块时,将所述前置FIFO模块或所述后置FIFO模块对应的控制信号置为低电平。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111632579.XA CN114490466B (zh) | 2021-12-28 | 2021-12-28 | 一种实现数据连续存储的ddr ip核架构及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111632579.XA CN114490466B (zh) | 2021-12-28 | 2021-12-28 | 一种实现数据连续存储的ddr ip核架构及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114490466A CN114490466A (zh) | 2022-05-13 |
CN114490466B true CN114490466B (zh) | 2024-04-30 |
Family
ID=81495917
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111632579.XA Active CN114490466B (zh) | 2021-12-28 | 2021-12-28 | 一种实现数据连续存储的ddr ip核架构及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114490466B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114968169B (zh) * | 2022-05-17 | 2023-10-10 | 赵浩然 | 一种fpga控制的ddr映射多个ddr_fifo实现系统及方法 |
CN117093157B (zh) * | 2023-10-16 | 2023-12-29 | 鸣飞伟业技术有限公司 | 一种用于单向光传输的ddr高速读写方法及系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101308697A (zh) * | 2008-07-10 | 2008-11-19 | 哈尔滨工业大学 | 基于sdram的大容量fifo突发缓存器及数据存储方法 |
US7573770B1 (en) * | 2007-07-16 | 2009-08-11 | Lattice Semiconductor Corporation | Distributed front-end FIFO for source-synchronized interfaces with non-continuous clocks |
US7921243B1 (en) * | 2007-01-05 | 2011-04-05 | Marvell International Ltd. | System and method for a DDR SDRAM controller |
CN107133407A (zh) * | 2017-05-11 | 2017-09-05 | 成都欧飞凌通讯技术有限公司 | 一种高带宽下提高ddr ram接口带宽的fpga实现方法 |
CN107967225A (zh) * | 2017-11-21 | 2018-04-27 | 深圳市统先科技股份有限公司 | 数据传输方法、装置、计算机可读存储介质和终端设备 |
CN111610934A (zh) * | 2020-05-22 | 2020-09-01 | 上海大骋医疗科技有限公司 | 一种ddr控制器及控制方法 |
CN111722827A (zh) * | 2020-05-28 | 2020-09-29 | 江苏方天电力技术有限公司 | 一种高效ddr访问方法及应用 |
CN111984563A (zh) * | 2020-09-18 | 2020-11-24 | 西安电子科技大学 | 基于fpga的ddr3读写控制器及矩阵转置实现方法 |
CN113791994A (zh) * | 2021-11-17 | 2021-12-14 | 南京芯驰半导体科技有限公司 | 一种基于AXI协议wrap访问的DDR控制器及处理方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6843508B2 (ja) * | 2016-03-01 | 2021-03-17 | キヤノン株式会社 | 情報処理装置及び情報処理装置の制御方法 |
US11249913B2 (en) * | 2020-03-06 | 2022-02-15 | Macronix International Co., Ltd. | Continuous read with multiple read commands |
-
2021
- 2021-12-28 CN CN202111632579.XA patent/CN114490466B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7921243B1 (en) * | 2007-01-05 | 2011-04-05 | Marvell International Ltd. | System and method for a DDR SDRAM controller |
US7573770B1 (en) * | 2007-07-16 | 2009-08-11 | Lattice Semiconductor Corporation | Distributed front-end FIFO for source-synchronized interfaces with non-continuous clocks |
CN101308697A (zh) * | 2008-07-10 | 2008-11-19 | 哈尔滨工业大学 | 基于sdram的大容量fifo突发缓存器及数据存储方法 |
CN107133407A (zh) * | 2017-05-11 | 2017-09-05 | 成都欧飞凌通讯技术有限公司 | 一种高带宽下提高ddr ram接口带宽的fpga实现方法 |
CN107967225A (zh) * | 2017-11-21 | 2018-04-27 | 深圳市统先科技股份有限公司 | 数据传输方法、装置、计算机可读存储介质和终端设备 |
CN111610934A (zh) * | 2020-05-22 | 2020-09-01 | 上海大骋医疗科技有限公司 | 一种ddr控制器及控制方法 |
CN111722827A (zh) * | 2020-05-28 | 2020-09-29 | 江苏方天电力技术有限公司 | 一种高效ddr访问方法及应用 |
CN111984563A (zh) * | 2020-09-18 | 2020-11-24 | 西安电子科技大学 | 基于fpga的ddr3读写控制器及矩阵转置实现方法 |
CN113791994A (zh) * | 2021-11-17 | 2021-12-14 | 南京芯驰半导体科技有限公司 | 一种基于AXI协议wrap访问的DDR控制器及处理方法 |
Non-Patent Citations (1)
Title |
---|
Xilinx MIG IP核的研究及大容量数据缓冲区的实现;王红兵;强景;周珍龙;;电子产品世界(第08期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN114490466A (zh) | 2022-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114490466B (zh) | 一种实现数据连续存储的ddr ip核架构及方法 | |
US5109490A (en) | Data transfer using bus address lines | |
TWI474320B (zh) | 雙倍資料率虛擬靜態隨機存取記憶體及其控制器、存取與操作方法、寫入與讀取方法 | |
US6147926A (en) | Semiconductor memory device | |
US8300464B2 (en) | Method and circuit for calibrating data capture in a memory controller | |
US20070055813A1 (en) | Accessing external memory from an integrated circuit | |
US7464231B2 (en) | Method for self-timed data ordering for multi-data rate memories | |
US11768607B1 (en) | Flash controller for ASIC and control method therefor | |
KR930011352B1 (ko) | 가상형 스태틱 반도체 기억장치 | |
KR100399672B1 (ko) | 메모리소자,컴퓨터시스템,데이터전송방법,및비동기메모리소자변형방법 | |
TWI378449B (en) | Semiconductor memory and operating method of same | |
US20130290646A1 (en) | Fifo buffer system providing same clock cycle response to pop commands | |
US6507899B1 (en) | Interface for a memory unit | |
US6466492B2 (en) | Synchronous semiconductor memory device and method for controlling mask data input circuit | |
US5274784A (en) | Data transfer using bus address lines | |
US5448717A (en) | Transparently inserting wait states into memory accesses when microprocessor in performing in-circuit emulation | |
JPH03150792A (ja) | 半導体記憶装置 | |
TW201437812A (zh) | 記憶體存取方法、記憶體存取控制方法、記憶體裝置與記憶體控制器 | |
CN101667448B (zh) | 存储器存取控制装置及其相关控制方法 | |
Zheng et al. | Design and implementation of DDR4 SDRAM controller based on FPGA | |
CN210573757U (zh) | 一种用于实现基于fpga的sdram控制系统的硬件装置 | |
CN112100098A (zh) | Ddr控制系统及ddr存储系统 | |
JPH0143392B2 (zh) | ||
US10496368B1 (en) | Systems and methods for memory FIFO control | |
US7178000B1 (en) | Trace buffer for DDR memories |
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 |