基于FPGA技术的存储器设计及其应用

  • 格式:pdf
  • 大小:346.39 KB
  • 文档页数:4

■青岛海信空调有限公司 吕艳宗 中国海洋大学工程学院 王建国 基于FPGA技术的存储器设计及其应用 摘要:本文介绍了基于FPGA技术的存储器构造方法,重点介绍利用库函数构造双端口RAM的方法。进而 结合高速数据采集的特点,详细介绍了双端口RAM,以及配合双端口RAM工作需要而涉及到的地址 发生器、读写控制逻辑等外围电路在FPGA中的实现。 关键词:FPGA;双端口RAM;高速存储器;数据采集 引言 复杂可编程逻辑器件一一 FPGA技术在近几年的电子设计中 应用越来越广泛。FPGA具有的硬 件逻辑可编程性、大容量、高速、内 嵌存储阵列等特点使其特别适合于 高速数据采集、复杂控制逻辑、精 确时序逻辑等场合的应用。而应用 FPGA中的存储功能目前还是一个 较新的技术。本文将介绍在FPGA 中构造存储器的方法,特别是结合 高速数据采集的特点重点描述双端 口RAM的构造方法及其应用。 在FPGA中构造存储器 许多系列的FPGA芯片内嵌了 存储阵列,如AI.,'I ̄RAEP1K50芯 片内嵌了5K字节的存储阵列。因 此,在FPGA中实现各种存储器,如 单/双端口RAM、单/双端口RoM、 先进先出存储器FIFO等非常方便, 而且具有诸多优点。其硬件可编程 的特点允许开发人员灵活设定存储 器数据的宽度、存储器的大小、读 写控制逻辑等,尤其适用于各种特 2007.6电子设计匝用www.eaw.com.Cn 殊存储要求的场合。FPGA/FPGA器 件可工作于百兆频率以上,其构造 的存储器存取速度也可达百兆次/ 秒以上,这样构成的高速存储器能 够胜任存储数据量不太大,但速度 要求很高的工作场合。 FPGA中构造存储器主要有两 种方法实现。一是通过硬件描述语 言如VHDL、AHDL、Verilog HDL 等编程实现。二是调用MAx+ PLUS 17自带的库函数实现。调用库 函数方法构造存储器较硬件描述语 言输入方式更为方便、灵活、快捷 和可靠,故也更常用之。 利用库函数构造双端口RAM 在MAx+PLUS 17中有几个功 能单元描述库。prim逻辑元库,包 括基本逻辑单元电路,如与、或、非 门,触发器、输入、输出引脚等;mf 宏功能库,包括TTL数字逻辑单元 如74系列芯片;而下文将要详细介 绍的参数化双端口RAM模块所在 的参数化模块库(mega—lpm)中,包 括各种参数化运算模块(加、减、乘、 除)、参数化存储模块(单、双端口 RAM、ROM、FIFO等)以及参数化 计数器、比较器模块等等。库中的 这些元件功能逻辑描述经过了优化 验证,是数字电路设计中的极好选 择。 mega—lpm库中共有五种参数化 双端口RAM模块:ALTDPRAM、 LPM—RAM—DP、CSDPRAM、 LPM—RAM—DQ和LPM—RAM—10。 其中A L T D P R A M和 LPM—RAM—DP模块读写有两套总 线,读和写有各自的时钟线、地址 总线、数据总线和使能端,可同时 进行读写操作。除此之外, ALTDPRAM模块还有一个全局清 零端口。CSDPRAM模块则有a、b 两组写端时钟线、地址总线、数据 总线和使能端,可同时对RAM进行 写操作,但对RAM读、写只能分时 进行。LPM—RAM_DQ模块相对简 单,读与写共用一组地址总线,有 各自的数据线和时钟线。 LPMRAM—10模块只有一组地址 总线和数据总线。 mega—lpm函数库中的双端口 。 维普资讯 http://www.cqvip.com 、 r ~ 、 ~蕊 ~ 、 ’ ~ 一 ~ 一 =:_= — :一 J 一 , 

二 ≥要 三 、二 、 三至 _=兰 : 三 r -- '三 ≤ ■__\ 乏 三 耋 ;7 - 兰■ 幽 RAM模块全是参数化调用,这为设 计带来极大的方便。通过对各种参 数的取合、参数设置和组合,再结 合读写控制逻辑就可以构造出设计 需要的存储器模块。双端口RAM常 见的应用模式主要有以下两种: 1.存储器映像方式。该方式可 以随意对存储器的任何单元进行读 写操作。其主要应用于多CPU的共 享数据存储、数据传送等。该方式 中,读、写控制线、地址总线和数 据总线有两套。根据两端口之间数 据的传送方向为单向或双向,又有 单向数据总线和双向数据总线之 分。 2.顺序写方式。该方式对RAM 的写操作只能顺序写入。这种情况 适用于对象特性与时间紧密相关或 传送数据与顺序密切相关的场合, 如文件传送、时序过程、波形分析 等。根据写控制逻辑的不同,可对 RAM进行循环写入或一次写入方 式。该方式下的读操作可以是存储 器映像读或顺序读,前一种有较大 的灵活性,而后一种则类似于FIFO 形式。 在读、写使用独立的地址总线 和数据总线时,可以同时对RAM不 同单元进行读写操作。根据不同控 制逻辑的要求,对读写时钟、时钟 使能端口可以适时设置,以满足控 制需要。 下面以LPM_RAM_DP模块为 例介绍库函数法构造双端口RAM 的步骤。 首先在MAX+PLUS II中建立 一个图形编辑文件。双击文件任意 空白处弹出库函数选择窗口。然后 从m e g a・1 P m库中选择 LPM—RAM—DP模块,其参数列表 2007.6电子设计应用www.eaw.com.cn ‘L‘P‘‘’M’’’‘R‘‘A’‘’M‘’‘‘D‘‘P‘‘ ………………………..::…USE._ 图1 LPM RAM DP模块图 LPM RAM DP ……………………….. E_ ON..'。 STERED” 

STERED“ \ 图2设定好的双端口RAM'模块图 如图1所示。 据宽度; 在LPM_RAM_DP模块中共有LPM—WIDTHAD——设置地 9个可配置参数: 址总线宽度; LPM—FILE——指定存储器的LPM_WRADDRESS_CONTROL 初始化数据文件;——选择写地址控制信号是寄存方 LPM—INDATA——选择输入 数据采用寄存方式还是非寄存方 式; LPM_NUMW0RDS——设置 存储器的深度(大小); LPM_OUTDATA——选择输 出数据采用寄存方式还是非寄存方 式; LPM_RDADDRESS_CON'IROL ——决定读地址控制信号是寄存方 式还是非寄存方式; LPM_WIDTH——设置存储数 式还是非寄存方式; USE_EAB——决定是否使用 嵌入式阵列块。 双击双端口RAM参数列表可 弹出引脚/参数设置窗口。在引脚/ 参数设置窗口可以具体对双端口 RAM进行引脚、参数设置。可以根 据具体的对存储器的功能要求,决 定各种口线的使用与否。例如不想 使用rdclken(读时钟使能)信号,则 可以将其Status设置为Unused即 可。同时还可以通过Inversion项设 ■ ; 一 一一 乏 h 赋 J』 维普资讯 http://www.cqvip.com 定该信号的初始状态(初始值)。在 窗口的Parameters参数设置处,选 择不同的参数项后,通过Parameter Value项可以改变或设置其相应的 状态或数值。如想设置存储数据为 8位宽度,则选择LPM—WIDTH项, 然后将P Lmeter Value设置为8。 例如要设计一个11位宽数据, 512个存储单元,使用读写同步时 钟、不需要读写使能端及时钟使能 端的双端口RAM。则可以打开引 脚/参数设置窗口,设置 LPM—N U MW O RD S为5 1 2, L P M—W I D TH为1 1,LP M— wIDTHAD为9,LPM—INDATA、 L P M—o U T D A T A、L P M— RDADDRESS—CoNTROL和 LPM_WRADDRESS_CONTROL为 寄存方式,使用嵌入式阵列; rdad ̄ess rdclock data wrad&ess wrclock、q为Used,rden、rdcNen、 wren、wrcNen为Unused。设置完成 后如图2所示。 其它存储器的构造方法 不同的存储器根据各自特点, 应用场合也不尽相同。ROM存储器 主要用来存储“常量”,如系统参 数、波形发生器的信源等。先进先 出FIFO存储器可用于信号的实时 不间断采集,存储、缓冲两个异步 时钟之间的数据传输等。 ROM、FIFO等存储器的调用库 函数构造方法与双端口RAM的构 造方法类似,在mega-lpm库中调用 相应的模块单元即可。其中ROM存 储器在库中是LPM—ROM模块, FIFO存储器在库中有CSFIFO、 D C F I F O、L P M—F I F O、 LPM—FIFo—DC、SC ̄FO、SFIF0 共六种。需要说明的是由于ROM在 实际系统运行时的不可写入性,在 ROM构造过程中要对ROM存储器 进行数据初始化。这一操作是通过 设置PLM_FILE项完成的。在引脚/ 参数设置窗口的Parameters参数设 置处选择该项,再通过Parameter Value项确定相应的数据初始化文 件( .miO ̄O可。下面是VHDL格式 的ROM数据初始化文件(文件可用 任何文本编辑器实现): WIDTH=8;(存储器数据宽度 为8位) DEPTH=256;(存储器容量为 256字节) ADDRESS_RADIX=HEX;(地 址和数据用十六进制表示) DATA_RADIX=HEX; C。ONTENT BEGIN 0 : 0;(前一列表示 地址,后一列表示该地址的初始化 数据) 1 : 1; FF : FF; END: 双媸口RAM在 高速数据采集中的应用 利用传统方法设计的高速数据 采集系统由于集成度低、电路复 杂,高速运行电路干扰大,电路可 靠性低,难以满足高速数据采集工 作的要求。应用FPGA可以把数据 采集电路中的数据缓存、控制时序 逻辑、地址译码、总线接口等电路 全部集成进一片芯片中,高集成性 增强了系统的稳定性,为高速数据 采集提供了理想的解决方案。下面 以一个高速数据采集系统为例介绍 双端口RAM的应用。 该系统要求实现对频率为 5MHz的信号进行采样,系统的计 算处理需要对信号进行波形分析, 信号采样时间为25gs。根据设计要 求,为保证采样波形不失真,A/D采 样频率用80MHz,采样精度为8位 数据宽度。计算得出存储容量需要 2K字节。其系统结构框图如图3所 示,图4给出了具体电路连接图。 根据设计要求,双端口RAM的 LPM—WIDTH参数设置为8, LPM—WIDTHAD参数设置为 ll(21 l=2048),使用读写使能端及 读写时钟。ADCLK、WRCLK和地 址发生器的计数频率为80MHz。 AID转换值对双端口RAM的 写时序为顺序写方式,每完成一次 A/D转换,存储一次数据,地址加 、4 q 乏 

参一 }.、 幺 , 懑 蟊 谚拳壤耄 。

 维普资讯 http://www.cqvip.com l指向下一单元,因此写地址发生 器(RAM—CONTROL)采用递增计 数器实现,计数频率与ADCLK、 WRCLK一致以保证数据写入时序 的正确性。写操作时序由地址和时 钟发生器、A/D转换时钟和双端口 RAM的写时钟产生。停止采样时 AD—STOP有效,写地址发生器停止 计数,同时停止对RAM的写操作。 将地址发生器的计数值接至DSP总 线可以获取采样的首尾指针。地址 发生器单元一般用(VHDL)语言编 程实现,然后生成符号文件 RAM_CONTROL在上层文件调用。 其部分VHDL语言程序如下: Q<=data; aa:process(elk) begin ifCLR=’l’then data<=”OOOOOOOO0OO”; WR<=’0’: elsif fCLK’event and CLK=’l’1 then if AD_STOP=’l’then WR<=’0’: data<=data; else if(data=l023) then data<=”O(O)O(O)O0OOO”; else data<=data+l: WR<=CLKafter20ns; endif; endif; end if; end process aa; 对双端口RAM的读操作采用 存储器映像方式,其读出端口接 DSP的外扩RAM总线,DSP可随机 0 二 象