微波EDA网,见证研发工程师的成长! 2025婵犵數濮烽弫鍛婃叏閹绢喗鍎夊鑸靛姇缁狙囧箹鐎涙ɑ灏ù婊呭亾娣囧﹪濡堕崟顓炲闂佸憡鐟ョ换姗€寮婚敐澶婄闁挎繂妫Λ鍕磼閻愵剙鍔ゆ繛纭风節瀵鎮㈤崨濠勭Ф闂佸憡鎸嗛崨顔筋啅缂傚倸鍊烽懗鑸靛垔椤撱垹鍨傞柛顐f礀閽冪喖鏌曟繛鐐珕闁稿妫濋弻娑氫沪閸撗€妲堝銈呴獜閹凤拷04闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾剧懓顪冪€n亝鎹i柣顓炴閵嗘帒顫濋敐鍛婵°倗濮烽崑鐐烘偋閻樻眹鈧線寮撮姀鈩冩珕闂佽姤锚椤︻喚绱旈弴銏♀拻濞达綀娅g敮娑㈡煕閺冣偓濞茬喖鐛弽顓ф晝闁靛牆娲g粭澶婎渻閵堝棛澧遍柛瀣仱閹繝濡烽埡鍌滃幗闂佸搫娲ㄩ崑娑㈠焵椤掆偓濠€閬嶅焵椤掍胶鍟查柟鍑ゆ嫹02闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾剧懓顪冪€n亝鎹i柣顓炴閵嗘帒顫濋敐鍛婵°倗濮烽崑鐐烘偋閻樻眹鈧線寮撮姀鈩冩珖闂侀€炲苯澧扮紒顕嗙到铻栧ù锝堟椤旀洟姊洪悷鎵憼闁荤喆鍎甸幃姗€鍩¢崘顏嗭紲闂佺粯鐟㈤崑鎾绘煕閵娿儳鍩g€殿喖顭锋俊鎼佸煛閸屾矮绨介梻浣呵归張顒傜矙閹达富鏁傞柨鐕傛嫹 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾剧懓顪冪€n亝鎹i柣顓炴閵嗘帒顫濋敐鍛婵°倗濮烽崑鐐烘偋閻樻眹鈧線寮撮姀鐘栄囨煕鐏炲墽鐓瑙勬礀閳规垿顢欑紒鎾剁窗闂佸憡顭嗛崘锝嗙€洪悗骞垮劚濞茬娀宕戦幘鑸靛枂闁告洦鍓涢敍娑㈡⒑閸涘⿴娈曞┑鐐诧躬閹即顢氶埀顒€鐣烽崼鏇ㄦ晢濠㈣泛顑嗗▍灞解攽閻樺灚鏆╁┑顔芥尦楠炲﹥寰勯幇顒傦紱闂佽宕橀褔鏌ㄩ妶鍡曠箚闁靛牆瀚崗宀勬煕濞嗗繑顥㈡慨濠呮缁辨帒螣閼姐値妲梻浣呵归敃銈咃耿闁秴鐒垫い鎺嶈兌閸熸煡鏌熼崙銈嗗濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌熼梻瀵割槮缁炬儳顭烽弻锝夊箛椤掍焦鍎撻梺鎼炲妼閸婂潡寮诲☉銏╂晝闁挎繂妫涢ˇ銉х磽娴e搫鞋妞ゎ偄顦垫俊鐢稿礋椤栨氨鐤€闂佸憡鎸烽懗鍫曞汲閻樼數纾藉ù锝呮惈椤庡矂鏌涢妸銉у煟鐎殿喖顭锋俊鎼佸煛閸屾矮绨介梻浣呵归張顒傜矙閹达富鏁傞柨鐕傛嫹
首页 > 硬件设计 > 硬件工程师文库 > 高速图像处理系统中DDR2-SDRAM接口的设计

高速图像处理系统中DDR2-SDRAM接口的设计

时间:06-23 来源:山西电子技术 点击:

  文中在介绍DDR2的工作原理的基础上,给出了一个用VHDL语言设计的DDR2 SDRAM控制器的方法,并且提出了一种在高速图像处理系统中DDR2 SDRAM的应用方案,同时在Virtex-5系列的FPGA上得到了实现。

  1 DDR2-SDRAM控制器的操作原理与设计

  1.1 DDR2-SDRAM的操作原理

   DDR2 SDRAM是运用DDR结构来达到高速操作。本文采用的DDR2-SDRAM是Micron的MT4H3264HY-53ED3。这款DDR2的存储空间为256 MB,由4片容量为512 Mb的内存芯片构成。每个芯片的数据位宽为16 b,有4 bank,13条行地址线,10条列地址线,因此每个内存芯片容量为8 192×
1 024×4×16 b,即512 Mb。4片组成起来就构成了MT4H3264HY-53ED3的64 b位宽。
    DDR2 SDRAM的操作主要通过以下控制信号给出:行地址选择信号(闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾剧懓顪冪€n亝鎹i柣顓炴閵嗘帒顫濋敐鍛婵°倗濮烽崑娑⑺囬悽绋垮瀭濡わ絽鍟粻娑樏归敐鍛础缂佸鑳剁槐鎾诲磼濮橆兘鍋撻悜鑺ュ€块柨鏇氱劍閹冲矂姊绘担鍛婂暈闁荤喆鍎抽幑銏狀潨閳ь剙顕f繝姘亜缁炬媽椴搁弲顒勬⒑閹稿海绠撴繛璇х到鏁堟俊銈呮噺閸嬧剝绻濇繝鍌涘櫣妞わ絽銈搁幃浠嬵敍濞戞ɑ璇為梺璇″枟閻燂妇鎹㈠┑瀣倞闁靛ě鍐ㄥ婵犵數濮烽弫鎼佸磹椤栫偛鐒垫い鎺戝绾惧鏌熼崜褏甯涢柣鎾寸洴閹鏁愭惔鈥茬敖婵犫拃鍐粵闁逛究鍔嶇换婵嬪川椤曞懍鍝楅梻浣告贡閹虫挾鈧氨澧楁穱濠囧箹娴h倽銊╂煥閺冣偓閸庡磭绱為幒妤佲拻闁稿本鐟ㄩ崗宀勬煙閾忣偅宕岀€规洜鏁诲浠嬵敇閻愭鍞甸梻浣芥硶閸o箓骞忛敓锟�...),列地址选择信号(闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾剧懓顪冪€n亝鎹i柣顓炴閵嗘帒顫濋敐鍛婵°倗濮烽崑娑⑺囬悽绋垮瀭濡わ絽鍟粻娑樏归敐鍛础缂佸鑳剁槐鎾诲磼濮橆兘鍋撻悜鑺ュ€块柨鏇氱劍閹冲矂姊绘担鍛婂暈闁荤喆鍎抽幑銏狀潨閳ь剙顕f繝姘亜缁炬媽椴搁弲顒勬⒑閹稿海绠撴繛璇х到鏁堟俊銈呮噺閸嬧剝绻濇繝鍌涘櫣妞わ絽銈搁幃浠嬵敍濞戞ɑ璇為梺璇″枟閻燂妇鎹㈠┑瀣倞闁靛ě鍐ㄥ婵犵數濮烽弫鎼佸磹椤栫偛鐒垫い鎺戝绾惧鏌熼崜褏甯涢柣鎾寸洴閹鏁愭惔鈥茬敖婵犫拃鍐粵闁逛究鍔嶇换婵嬪川椤曞懍鍝楅梻浣告贡閹虫挾鈧氨澧楁穱濠囧箹娴h倽銊╂煥閺冣偓閸庡磭绱為幒妤佲拻闁稿本鐟ㄩ崗宀勬煙閾忣偅宕岀€规洜鏁诲浠嬵敇閻愭鍞甸梻浣芥硶閸o箓骞忛敓锟�...),写使能信号(闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾剧懓顪冪€n亝鎹i柣顓炴閵嗘帒顫濋敐鍛婵°倗濮烽崑娑⑺囬悽绋垮瀭濡わ絽鍟粻娑樏归敐鍛础缂佸鑳剁槐鎾诲磼濮橆兘鍋撻悜鑺ュ€块柨鏇氱劍閹冲矂姊绘担鍛婂暈闁荤喆鍎抽幑銏狀潨閳ь剙顕f繝姘亜缁炬媽椴搁弲顒勬⒑閹稿海绠撴繛璇х到鏁堟俊銈呮噺閸嬧剝绻濇繝鍌涘櫣妞わ絽銈搁幃浠嬵敍濞戞ɑ璇為梺璇″枟閻燂妇鎹㈠┑瀣倞闁靛ě鍐ㄥ婵犵數濮烽弫鎼佸磹椤栫偛鐒垫い鎺戝绾惧鏌熼崜褏甯涢柣鎾寸洴閹鏁愭惔鈥茬敖婵犫拃鍐粵闁逛究鍔嶇换婵嬪川椤曞懍鍝楅梻浣告贡閹虫挾鈧氨澧楁穱濠囧箹娴h倽銊╂煥閺冣偓閸庡磭绱為幒妤佲拻闁稿本鐟ㄩ崗宀勬煙閾忣偅宕岀€规洜鏁诲浠嬵敇閻愭鍞甸梻浣芥硶閸o箓骞忛敓锟�...),时针使能信号(CKE),片选择信号(闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾剧懓顪冪€n亝鎹i柣顓炴閵嗘帒顫濋敐鍛婵°倗濮烽崑娑⑺囬悽绋垮瀭濡わ絽鍟粻娑樏归敐鍛础缂佸鑳剁槐鎾诲磼濮橆兘鍋撻悜鑺ュ€块柨鏇氱劍閹冲矂姊绘担鍛婂暈闁荤喆鍎抽幑銏狀潨閳ь剙顕f繝姘亜缁炬媽椴搁弲顒勬⒑閹稿海绠撴繛璇х到鏁堟俊銈呮噺閸嬧剝绻濇繝鍌涘櫣妞わ絽銈搁幃浠嬵敍濞戞ɑ璇為梺璇″枟閻燂妇鎹㈠┑瀣倞闁靛ě鍐ㄥ婵犵數濮烽弫鎼佸磹椤栫偛鐒垫い鎺戝绾惧鏌熼崜褏甯涢柣鎾寸洴閹鏁愭惔鈥茬敖婵犫拃鍐粵闁逛究鍔嶇换婵嬪川椤曞懍鍝楅梻浣告贡閹虫挾鈧氨澧楁穱濠囧箹娴h倽銊╂煥閺冣偓閸庡磭绱為幒妤佲拻闁稿本鐟ㄩ崗宀勬煙閾忣偅宕岀€规洜鏁诲浠嬵敇閻愭鍞甸梻浣芥硶閸o箓骞忛敓锟�...)。各种指令不同的组合方式完成不同的功能。表1为各种指令完成的组合方式。

  

闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾剧懓顪冪€n亝鎹i柣顓炴閵嗘帒顫濋敐鍛婵°倗濮烽崑娑⑺囬悽绋垮瀭濡わ絽鍟粻娑樏归敐鍛础缂佸鑳剁槐鎾诲磼濮橆兘鍋撻悜鑺ュ€块柨鏇氱劍閹冲矂姊绘担鍛婂暈闁荤喆鍎抽幑銏狀潨閳ь剙顕f繝姘亜缁炬媽椴搁弲顒勬⒑閹稿海绠撴繛璇х到鏁堟俊銈呮噺閸嬧剝绻濇繝鍌涘櫣妞わ絽銈搁幃浠嬵敍濞戞ɑ璇為梺璇″枟閻燂妇鎹㈠┑瀣倞闁靛ě鍐ㄥ婵犵數濮烽弫鎼佸磹椤栫偛鐒垫い鎺戝绾惧鏌熼崜褏甯涢柣鎾寸洴閹鏁愭惔鈥茬敖婵犫拃鍐粵闁逛究鍔嶇换婵嬪川椤曞懍鍝楅梻浣告贡閹虫挾鈧氨澧楁穱濠囧箹娴h倽銊╂煥閺冣偓閸庡磭绱為幒妤佲拻闁稿本鐟ㄩ崗宀勬煙閾忣偅宕岀€规洜鏁诲浠嬵敇閻愭鍞甸梻浣芥硶閸o箓骞忛敓锟�...

  1.1.1 Load Mode指令

  用来配置DDR2内存的模式寄存器,包括一个主模式寄存器及3个扩展模式寄存器,它们被用来设定内存的工作方式,包括突发长度的选择、突发的类型、CAS延迟、CAS附加延迟、DLL使能、ODT设置、OCD设置以及DQS设置等。

  1.1.2 Precharge指令

  预充电指令是用来重新激活bank中已经打开的行。在预充电指令发出后,当前bank必须等待一个特定的时间(tRP)后才可以再次激活。

  1.1.3 自动刷新指令

  DDR2 SDRAM内存需要每7.8μs刷新一次。自动刷新不需要外部提供行地址信息,DDR2 SDRAM内部有一个行地址生成器(也称刷新计数器)用来自动的依次生成行地址。由于刷新是针对一行中所有的存储体进行,所以无需列地址。在进入自动刷新模式前,所有的bank必须都处于预充电状态,自动刷新指令在预充电指令后延迟tRP才能给出。

  1.1.4 Active指令

  Active用来激活bank中的某一行。在对DDR2内存进行读/写之前,都必须执行该指令把bank中的某一行激活。激活命令到读/写命令之间的最小延迟由AL决定,当AL为0时,最小延迟由tRCD(RAS to CAS delay)决定。当AL不为0时,激活命令到读/写命令之间的最小延迟就可以不受tRCD限制,读/写命令可以提前,但其实最后数据的读/写并不提前,这样可以提高总线的利用率。

  需要注意的是,当要激活同一bank中不同的行时,必须先对原来激活的行进行预充电,才能激活新的行。同一bank中连续的active命令之间的间隔必须受tRC(RAS cycle time)的控制。

  1.1.5 Read指令

  读指令是用来对DDR2内存进行读操作,并对突发读进行初始化。其中BA0和BA1给出bank地址,A0~A1给出起始列地址。突发读结束后,激活的行在预充之前继续保持有效,直到该行被预充电。从列选择到数据输出的延迟为CAS延迟(CL),整个读延迟等于AL+CL。读操作时由内存给出一个与数据同步的数据滤波信号DQS,它的边沿与读取的数据边沿对齐。

  1.1.6 Write指令

  Write指令用来控制DDR2内存进行写操作,并给出burst写的起始地址。其中BA0和BA1给出bank地址,A0~A1给出起始列地址。整个写延迟为读延迟减去一个时钟周期,即写延迟等于AL+CL-1。写操作时,控制器同样给出一个与数据同步的数据滤波信号DQS,它的边沿与写数据的中间对齐。

  1.1.7 Idle指令

  用来使DDR2内存处于空闲无操作状态。

   1.2 DDR2-SDRAM控制器的设计

  本文中的DDR2 SDRAM控制器是采用VHDL硬件描述语言设计的,主要由4部分组成:用户界面模块(User Interface)、基础模块(infrast-ructure)、物理层模块(Physical layer)和存储控制模块(Controller)。DDR2-SDRAM控制器的设计原理框图如图1所示。

  

闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾剧懓顪冪€n亝鎹i柣顓炴閵嗘帒顫濋敐鍛婵°倗濮烽崑娑⑺囬悽绋垮瀭濡わ絽鍟粻娑樏归敐鍛础缂佸鑳剁槐鎾诲磼濮橆兘鍋撻悜鑺ュ€块柨鏇氱劍閹冲矂姊绘担鍛婂暈闁荤喆鍎抽幑銏狀潨閳ь剙顕f繝姘亜缁炬媽椴搁弲顒勬⒑閹稿海绠撴繛璇х到鏁堟俊銈呮噺閸嬧剝绻濇繝鍌涘櫣妞わ絽銈搁幃浠嬵敍濞戞ɑ璇為梺璇″枟閻燂妇鎹㈠┑瀣倞闁靛ě鍐ㄥ婵犵數濮烽弫鎼佸磹椤栫偛鐒垫い鎺戝绾惧鏌熼崜褏甯涢柣鎾寸洴閹鏁愭惔鈥茬敖婵犫拃鍐粵闁逛究鍔嶇换婵嬪川椤曞懍鍝楅梻浣告贡閹虫挾鈧氨澧楁穱濠囧箹娴h倽銊╂煥閺冣偓閸庡磭绱為幒妤佲拻闁稿本鐟ㄩ崗宀勬煙閾忣偅宕岀€规洜鏁诲浠嬵敇閻愭鍞甸梻浣芥硶閸o箓骞忛敓锟�...

  时钟生成模块用来产生控制器中所有模块的时钟信号。外部用户时钟通过数字时钟管理器(DCM)进行处理后,输出0度和90度的时钟。同时该包括了一个延迟校准模块,是用来校准读数据(DQ)对读数据选通脉冲(DQS)的延迟,以便DQS的边沿能正确对齐DQ有效窗口的中间位置。

  用户接口模块主要包括读/写数据和地址三类FIFO,用来接收和存储用户的数据,命令和地址等信息,起到缓冲和同步数据的作用。控制器模块生成该模块所需要的控制信号。

  物理层模块负责在控制信号的约束下完成用户访问地址与访问指令的解释与匹配,产生DDR2 SDRAM所需的控制指令信号,并保证指令与地址,数据的同步和信号的维持。

控制模块主要实现的功能为:在系统上电过程及系统意外复位发生时,与初始化模块配合,对控制器和所控制的DDR2进行初

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top