CN101000590A - 一种读取内存中数据的方法和系统 - Google Patents
一种读取内存中数据的方法和系统 Download PDFInfo
- Publication number
- CN101000590A CN101000590A CNA2007100003866A CN200710000386A CN101000590A CN 101000590 A CN101000590 A CN 101000590A CN A2007100003866 A CNA2007100003866 A CN A2007100003866A CN 200710000386 A CN200710000386 A CN 200710000386A CN 101000590 A CN101000590 A CN 101000590A
- Authority
- CN
- China
- Prior art keywords
- data
- clock
- internal memory
- memory
- sampling
- 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.)
- Pending
Links
- 230000015654 memory Effects 0.000 title claims abstract description 87
- 238000000034 method Methods 0.000 title claims abstract description 18
- 238000005070 sampling Methods 0.000 claims abstract description 53
- 230000001360 synchronised effect Effects 0.000 claims description 4
- 230000001934 delay Effects 0.000 claims description 3
- 230000000630 rising effect Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 5
- 230000003111 delayed effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012938 design process Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000004576 sand Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012731 temporal analysis Methods 0.000 description 1
- 238000000700 time series analysis Methods 0.000 description 1
Images
Landscapes
- Dram (AREA)
Abstract
本发明公开了一种读取内存中数据的方法,设置与内存控制器主时钟MCLK具有相位差Tph的采样时钟DATA_CLK,并且包括如下步骤:A、内存控制器在主时钟域下,向内存发送读控制信号和读地址;B、在采样时钟域下接收内存输出的所述读地址中存储的数据,并缓存所接收的数据;C、内存控制器在主时钟域下,读取所述缓存的数据。本发明还公开了一种读取内存中数据的系统。本发明方案可以解决内存控制器和内存之间的时延可能会导致读取数据错误的问题,并且本发明方案简单,易于实现。
Description
技术领域
本发明涉及内存控制技术领域,特别涉及一种读取内存中数据的方法和系统。
背景技术
随着片上系统(System On Chip,SOC)芯片技术的发展,芯片所需存储器的容量越来越大,仅靠SOC芯片上集成的片上存储器已经难以满足实际需要,况且增加片上存储器的容量会大大增加SOC芯片的成本。为此,常采用片外的内存代替片上存储器供SOC芯片上的硬件模块使用。目前,最常见的内存为同步动态随机存储器(Synchronous Dynamic random accessmemory,SDRAM)。
现有技术读取SDRAM中数据的工作原理如图1所示。SDRAM控制模块101向SDRAM 102输出主时钟(Main Clock,MCLK)。在MCLK的某一个时钟周期内,SDRAM控制模块101向SDRAM发出读取数据的控制信号以及所读取的地址;在MCLK的下一个时钟周期,SDRAM 102将所读取的数据返回SDRAM控制模块101。
由于SDRAM的管脚和SOC芯片的管脚之间存在时延,这些时延包括从SDRAM控制器101到SOC芯片管脚的延时ΔT0、SOC芯片管脚到SDRAM102的延时ΔT1以及从SDRAM 102到SOC芯片管脚的延时ΔT2。SDRAM 102实际是工作在时钟MCLK’下,时钟MCLK’相对于时钟MCLK的时延为ΔT0+ΔT1,从SDMRAM控制模块101的角度来说,实际上从SDRAM102返回数据的时刻比理想情况晚ΔT的时间,其中ΔT可认为是内存和内存控制器之间的时延,ΔT=ΔT0+ΔT1+ΔT2。在MCLK的时钟频率很高的情况下,MCLK的时钟周期会接近甚至小于时延ΔT,这样就难以保证在下一个时钟周期的上升沿读取SDRAM 102中的数据,导致读取SDRAM 102的数据出现错误。
针对这一问题,现有技术通常的做法是在SDRAM控制器101和SDRAM 102之间采用复杂的后端电路严格控制时延ΔT,使之小于MCLK的时钟周期。这种方法实现复杂,而且并没有从根本上解决问题。随着SOC芯片性能的提高,MCLK的时钟周期必然会进一步减小,则该方法会越来越难以实现。
发明内容
有鉴于此,本发明提出一种读取内存中数据的方法,可以在高时钟频率的工作环境下,避免内存和内存控制器之间的时延对读取数据造成的影响。该方法设置与内存控制器主时钟MCLK具有相位差Tph的采样时钟DATA_CLK,并且包括如下步骤:
A、内存控制器在主时钟域下,向内存发送读控制信号和读地址;
B、在采样时钟域下接收内存输出的所述读地址中存储的数据,并缓存所接收的数据;
C、内存控制器在主时钟域下,读取所述缓存的数据。
所述设置采样时钟为:设置采样时钟的时钟周期T与主时钟的时钟周期相同,采样时钟与主时钟的相位差Tph满足ΔT+Ts<Tph<ΔT+T-Th,其中Ts为采样时钟要求的数据建立时间,Th为采样时钟要求的数据保持时间,ΔT为内存和内存控制器之间的时延。
所述设置采样时钟为:将主时钟信号延时所述Tph时间,所得信号为采样时钟信号。
本发明还提出一种读取内存中数据的系统,包括内存和内存控制模块,内存控制模块在主时钟域下向内存发送读控制信号和读地址;采样模块,用于在采样时钟域下接收内存输出的数据,缓存所接收的数据,并在主时钟域下将所缓存的数据发送至内存控制模块。
所述内存控制模块进一步包括主时钟单元,用于生成主时钟信号,并将所述主时钟信号分别发送至内存和采样模块。
所述采样模块包括:
采样时钟单元,用于向内存输出采样时钟信号;
采样单元,用于在采样时钟域下接收来自内存的数据,并将所读取的数据发送至缓存单元;
缓存单元,用于缓存来自采样单元的数据,并在主时钟域下将所缓存的单元输出至内存控制模块。
所述缓存单元为异步先入先出存储器。
所述内存为同步动态随机存储器或双数据率同步动态随机存储器。
从以上技术方案可以看出,内存控制器在主时钟域下向内存发送读地址和读控制信号,在与主时钟域具有一定相位差的采样时钟域下读取内存中的数据,经缓存后再调整到主时钟域下由内存控制器读取,这样就解决了内存控制器和内存之间的时延可能会使读取数据出现错误的问题。并且本发明方案简单,易于实现。
附图说明
图1为现有技术的SDRAM工作原理图;
图2为本发明的DATA_CLK与MCLK的时钟周期关系示意图;
图3为本发明实施例系统结构示意图;
图4为本发明实施例从SDRAM读取数据的流程图。
具体实施方式
本发明方案采用两套时钟来处理内存控制器和内存之间的数据和控制信息的交互过程。即在主时钟MCLK之外,引入采样时钟(DATA_CLK),DATA_CLK与MCLK之间具有一定的时延。当读取数据时,内存在DATA_CLK时钟域下输出数据,所输出的数据缓存在先入先出缓存(FIFO)中,然后在MCLK的上升沿内存控制器读取所缓存的数据。这样就可以解决内存和内存控制器之间的时延所造成的读取错误的问题。以下实施例中的内存均为SDRAM。
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细阐述。
图2为本发明的DATA_CLK与MCLK的时钟周期关系示意图,时间轴左侧为较早时刻,右侧为较晚时刻。为了便于描述,对SDRAM的一次数据读取过程中取7个时刻,分别用T0到T6来表示,垂直方向的虚线为时刻在时间轴上的位置。各个时刻对应的含义如下:
时刻T0中的MCLK时钟上升沿,SDRAM控制器向SDRAM发出读信号和读地址;
时刻T1和时刻T0的间隔为SDRAM控制器和SDRAM之间的延时,该延时长度为ΔT;在时刻T1,SDRAM收到了读信号和读地址;
时刻T2到时刻T4是数据输出到FIFO中被缓存的时间,其中时刻T3对应的DATA_CLK上升沿是FIFO保存数据的瞬间,并且T3与T1的时间间隔就是DATA_CLK与MCLK之间的时延Tph。为了保存这个数据,时刻T2至时刻T3之间的Ts是需要满足DATA_CLK的建立时间(setup time),时刻T3至时刻T4之间的Th是需要满足的DATA_CLK的保持时间(hold time)。
时刻T4到时刻T6是数据被缓存在FIFO中到被SDRAM控制器处理的等待时间,时刻T6对应的MCLK的上升沿,SDRAM控制器读取所述缓存的数据。其中时刻T5与时刻T1之间的间隔为一个时钟周期。
根据Ts和Th的定义,要求满足如下关系:
Tph-ΔT>Ts
(1)
ΔT-Tph>Th
根据不等式组(1)可以得到
ΔT+Ts<Tph<ΔT+T-Th (2)
由于Ts+Th<<T,因此Tph有很大的调整空间,这意味着通过比较简单的后端流程以及静态时序就可以满足不等式(2)。
用于实现本发明方案的系统如图3所示,具体如下:
SDRAM控制模块310,用于从采样模块330中读取数据,或者向SDRAM 320写入数据。具体地说,该模块包括主时钟单元311,用于向SDRAM 320以及采样模块330输出MCLK信号。
参照图2所示的时序图,在T0至T6的读数据过程中,在时刻T0对应的MCLK时钟上升沿,SDRAM控制模块310向SDRAM 320输出读地址、读控制信号,并在时刻T6对应的MCLK时钟上升沿,即图2中MCLK的第三个上升沿,从采样模块330获得所要读取的数据。
SDRAM 320,用于根据来自SDRAM控制模块310的写控制信号和写地址,存储来自SDRAM控制模块310的数据;还用于根据来自SDRAM控制模块310的读控制信号和读地址,将所存储的数据输出至采样模块330。
参照图2所示的时序图,SDRAM 320在时刻T1中收到了来自SDRAM控制模块310的读控制信号和读地址,然后在此之后的DATA_CLK时钟的某个上升沿,即比T0延后Tph所对应的DATA_CLK时钟域的上升沿,也就是图2所示时刻T3对应的DATA_CLK的时钟上升沿,将所存储的数据输出至采样模块330。
采样模块330,用于在DATA_CLK时钟域下从SDRAM 320中读取数据,并缓存所读取的数据,在MCLK时钟域下将所缓存的数据输出至SDRAM控制模块310。
对照图2所示的时序图,在时刻T3对应的DATA_CLK上升沿,采样模块330从SDRAM 320中读取数据。所读取的数据先缓存起来,等到MCLK接下来出现的时钟上升沿,即图2所示的时刻T6对应的MCLK时钟上升沿,将所读取的数据输出至SDRAM控制模块310。
具体地说,该模块包括采样时钟单元331、采样单元332和缓存单元333。采样时钟单元331用于向SDRAM 320输出DATA_CLK信号。采样单元332用于在DATA_CLK时钟域下从SDRAM 320读取数据,并在DATA_CLK时钟域下将所读取的数据输出至缓存单元333。缓存单元333为异步先入先出(FIFO)存储器,在DATA_CLK时钟的某个时钟周期的上升沿,如图2中DATA_CLK将来自采样单元332的数据存储起来,再在紧跟着上述上升沿的MCLK时钟的上升沿T6将所存储的数据输出至SDRAM控制模块310。
可以看出,由于ΔT的存在,在主时钟MCLK的第一个上升沿向SDRAM320发出读信号后,难以实现在接下来的主时钟MCLK的上升沿将所要读取的数据返回SDRAM控制模块310。因此,本发明方案是通过采样时钟DATA_CLK读取SDRAM 320的数据,将所读取的数据存在FIFO存储器中。该FIFO存储器实际上起到时钟域转换的作用,这样从SDRAM控制模块310的角度来看,就是在MCLK时钟域下第一个上升沿发出读信号后,在之后的第二个上升沿收到所要读取的信号,这样就避免了由于时延造成读取数据错误的问题。
在芯片设计过程中,对SDRAM控制模块310和SDRAM 320之间的时延ΔT、DATA_CLK要求数据建立时间Ts和数据保持时间Th进行时序分析,根据分析结果以及SDRAM控制模块310的MCLK信号确定采样模块330中的采样时钟单元331的DATA_CLK信号,所述DATA_CLK信号DATA_CLK信号与MCLK信号的周期相同,DATA_CLK信号的相位比MCLK信号延后Tph,其中Tph满足不等式(2)。
一般来说,时延ΔT对于向SDRAM写数据过程的影响基本可以忽略,因此图3所示系统对于写数据过程的处理流程与现有技术相同。在设计本发明实施例的装置时,需要根据主时钟信号设置采样时钟信号,具体为:获取内存与内存控制器之间的时延ΔT、DATA_CLK要求的数据建立时间Ts、MCLK的时钟周期T、DATA_CLK要求的数据保持时间Th,根据以上各数据估算满足不等式(2)的相位差Tph,将MCLK信号延迟Tph后所得信号即为DATA_CLK。其中,ΔT、Ts、Th和T均为固定值。而上述系统实现读数据的流程如图4所示,包括如下步骤:
步骤401:SDRAM控制模块310将读地址、读控制信号在MCLK时钟域下发送至SDRAM 320。
步骤402:SDRAM 320根据所述读控制信号,将所述读地址中存储的数据在DATA_CLK时钟域下发送至采样模块330,采样模块330缓存所收到的数据。
步骤403:SDRAM控制模块310在MCLK时钟域下读取采样模块330中缓存的数据。
本发明方案不仅适用于SDRAM,对于其它种类的内存也同样适用,例如双数据率同步动态随机存储器(Double Data rate Random Access Memory,DDRAM)等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1、一种读取内存中数据的方法,其特征在于,设置与内存控制器主时钟MCLK具有相位差Tph的采样时钟DATA_CLK,并且包括如下步骤:
A、内存控制器在主时钟域下,向内存发送读控制信号和读地址;
B、在采样时钟域下接收内存输出的所述读地址中存储的数据,并缓存所接收的数据;
C、内存控制器在主时钟域下,读取所述缓存的数据。
2、根据权利要求1所述的方法,其特征在于,所述设置采样时钟为:设置采样时钟的时钟周期T与主时钟的时钟周期相同,采样时钟与主时钟的相位差Tph满足ΔT+Ts<Tph<ΔT+T-Th,其中Ts为采样时钟要求的数据建立时间,Th为采样时钟要求的数据保持时间,ΔT为内存和内存控制器之间的时延。
3、根据权利要求2所述的方法,其特征在于,所述设置采样时钟为:将主时钟信号延时所述Tph时间,所得信号为采样时钟信号。
4、一种读取内存中数据的系统,包括内存和内存控制模块,内存控制模块在主时钟域下向内存发送读控制信号和读地址,其特征在于,该系统还包括:
采样模块,用于在采样时钟域下接收内存中输出的数据,缓存所接收的数据,并在主时钟域下将所缓存的数据发送至内存控制模块。
5、根据权利要求4所述的系统,其特征在于,所述内存控制模块进一步包括主时钟单元,用于生成主时钟信号,并将所述主时钟信号分别发送至内存和采样模块。
6、根据权利要求4所述的系统,其特征在于,所述采样模块包括:
采样时钟单元,用于向内存输出采样时钟信号;
采样单元,用于在采样时钟域下接收来自内存的数据,并将所读取的数据发送至缓存单元;
缓存单元,用于缓存来自采样单元的数据,并在主时钟域下将所缓存的单元输出至内存控制模块。
7、根据权利要求6所述的系统,其特征在于,所述缓存单元为异步先入先出存储器。
8、根据权利要求4至7任一项所述的系统,其特征在于,所述内存为同步动态随机存储器或双数据率同步动态随机存储器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007100003866A CN101000590A (zh) | 2007-01-22 | 2007-01-22 | 一种读取内存中数据的方法和系统 |
CNB2007101406296A CN100561590C (zh) | 2007-01-22 | 2007-08-09 | 一种读取内存中数据的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2007100003866A CN101000590A (zh) | 2007-01-22 | 2007-01-22 | 一种读取内存中数据的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101000590A true CN101000590A (zh) | 2007-07-18 |
Family
ID=38692569
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2007100003866A Pending CN101000590A (zh) | 2007-01-22 | 2007-01-22 | 一种读取内存中数据的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101000590A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102043740A (zh) * | 2010-12-17 | 2011-05-04 | 天津曙光计算机产业有限公司 | 一种用fpga实现兼容多容量内存的控制器实现方法 |
CN102681788A (zh) * | 2011-03-10 | 2012-09-19 | 擎泰科技股份有限公司 | 适用于动态随机存取内存的内存控制器及控制方法 |
CN103592489A (zh) * | 2013-11-14 | 2014-02-19 | 江苏绿扬电子仪器集团有限公司 | 数字示波器深存储设计方法 |
CN111448543A (zh) * | 2017-12-07 | 2020-07-24 | 华为技术有限公司 | 内存访问技术及计算机系统 |
-
2007
- 2007-01-22 CN CNA2007100003866A patent/CN101000590A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102043740A (zh) * | 2010-12-17 | 2011-05-04 | 天津曙光计算机产业有限公司 | 一种用fpga实现兼容多容量内存的控制器实现方法 |
CN102043740B (zh) * | 2010-12-17 | 2016-04-20 | 曙光信息产业股份有限公司 | 一种用fpga实现兼容多容量内存的控制器实现方法 |
CN102681788A (zh) * | 2011-03-10 | 2012-09-19 | 擎泰科技股份有限公司 | 适用于动态随机存取内存的内存控制器及控制方法 |
CN103592489A (zh) * | 2013-11-14 | 2014-02-19 | 江苏绿扬电子仪器集团有限公司 | 数字示波器深存储设计方法 |
CN111448543A (zh) * | 2017-12-07 | 2020-07-24 | 华为技术有限公司 | 内存访问技术及计算机系统 |
CN111448543B (zh) * | 2017-12-07 | 2021-10-01 | 华为技术有限公司 | 内存访问技术及计算机系统 |
US11784756B2 (en) | 2017-12-07 | 2023-10-10 | Huawei Technologies Co., Ltd. | Memory access technology and computer system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102981776B (zh) | 双倍数据率虚拟静态随机存取存储器及其控制器、存取与操作方法、写入与读取方法 | |
CN101692346B (zh) | 一种存储器数据采样装置及一种采样控制器 | |
US8441888B2 (en) | Write command and write data timing circuit and methods for timing the same | |
US8260982B2 (en) | Method for reducing latency | |
US7808855B1 (en) | Distributed front-end FIFO for source-synchronous interfaces with non-continuous clocks | |
KR100888597B1 (ko) | 메모리 인터페이스 제어 장치 및 제어 방법 | |
CN104978150B (zh) | 存储器装置的控制方法、存储器装置和存储器系统 | |
CN108038068B (zh) | 一种基于ddr读数据同步方法及系统 | |
CN113971143B (zh) | 一种内存控制器、物联网芯片及电子设备 | |
US20120089793A1 (en) | Memory Subsystem for Counter-Based and Other Applications | |
US8593902B2 (en) | Controller and access method for DDR PSRAM and operating method thereof | |
CN101645294A (zh) | 半导体存储设备读取操作的控制电路 | |
CN100517498C (zh) | 一种无读取延迟的先进先出存储器 | |
CN101000590A (zh) | 一种读取内存中数据的方法和系统 | |
CN112712829B (zh) | 一种跨时钟域的寄存器读写电路及方法 | |
CN100561590C (zh) | 一种读取内存中数据的方法和系统 | |
CN102967819B (zh) | 高速测试电路与方法 | |
CN109062538A (zh) | 环形先进先出缓冲器及数据传输接口、系统、方法 | |
CN101510182B (zh) | 低速dma接口的片上系统和内存访问方法 | |
US6972998B1 (en) | Double data rate memory devices including clock domain alignment circuits and methods of operation thereof | |
CN103714012B (zh) | 数据处理方法和装置 | |
US7280628B1 (en) | Data capture for a source synchronous interface | |
CN102496389A (zh) | 一种读取时序控制电路 | |
US7899955B2 (en) | Asynchronous data buffer | |
US10742216B1 (en) | Clock domain crossing for an interface between logic circuits |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |