欢迎来到天天文库
浏览记录
ID:47062460
大小:315.00 KB
页数:11页
时间:2019-07-12
《FPGA设计秘笈》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、第十章存储器一、前言如果我们考虑使用同步动态随机存取存储器(SDRAM),那么针对这种存储器我们需考虑的主要方面有:1.这种类型的动态随机存取存储器(DRAM)依赖于存储数据关口的电容三极管;2.DRAM比静态随机存取存储器(SRAM)更加兼容;3.DRAM不能被合成,因此需要一个单独的DRAM芯片;4.SDRAM要求有一个同步时钟,这个时钟需与其余的硬件系统相一致,并且是由微处理器进行运作5.DRAM数据必须被刷新,因为DRAM是储存电荷且在一定时间后会衰变;6.DRAM较SRAM更慢些。SRAM可以看作是类似于只读存储器(ROM)芯片,它还有其他不同的特征:1.存储单元格是以标准锁存
2、器为基准;2.SRAM是快捷的存储方式。3.SRAM兼容性不如DRAM(或SDRAM);4.SRAM可以合成一个现场可编程门阵列(FPGA),因此它是小型、快速寄存器或内存块的最佳选择。SRAM从本质上来说是不同步的,但是可以修改为同步运转(如SDRAM的同步相当于DRAM),这通常被称为同步RAM。这时候,Flash存储器非常有用,尽管它的运作不同于其他存储器那样久远,仅仅是因为它易于使用且在FPGA开发板上经常用得到。Flash存储器本质上是电可擦只读存储器(EEPROM)的一种形式,可以用作是一种永久的RAM。只所以说是永久性的,是因为在Flash存储器中,存储装置即使在断电时仍能
3、保存数据,因此它经常用作一种ROM,因为它可以用于存储FPGA程序,也可以用作RAM(动态)存储当前数据,因此普遍用于FPGA系统。二、用硬件描述语言(VHDL)对存储器进行建模当用VHDL对存储器进行建模时应非常小心,因为某些存储器不能合成,如果使用模块,即使是离片时,也必须能体现出正确的实际装置物理特征。这尤其适用于访问次数和时序扰乱情况。当时序扰乱时,所获得的数据最好的情况也许是可疑的,最坏的情况是完全无效的。设计师可以发现自己处于一个令人反感的处境,即仿真模块运行良好,而实际硬件完全不起作用。在此章节中,我们所使用的VHDL是在任何模型中都不会出现任何物理性延时,如果这些模块用于
4、现实系统时,则会增加延时。三、只读存储器ROM本质上是一套在存储寄存器中预先定义的数值。这种存储器有2种定义,第一种是存储区数量,第二种是位元数量。比如,假如存储器各自有16个存储区和8个位元,那么这个存储器就可以定义为16×8ROM。基本的ROM有一个信息输入,可以存取地址的定义,还有一个信息输出,是一个存放数据的逻辑载体。设想在VHDL中的一个简单的ROM行为模块实体为:ENTITYROM16x8ISPORT(address:ININTEGERRANGE0TO15;dout:OUTstd_logic_vector(7DOWNTO0));ENDENTITYROM16x8;由此可以看到,
5、地址已被定义为一个整数,但是数值范围局限于ROM范围中。ROM的架构定义为一个可以直接获取的固定数组元素。因此,一个带有一套样板数据元素的ROM范例可以定义如下:ARCHITECTUREexampleOFrom16x8ISTYPEromdataISARRAY(0TO15)OFstd_logic_vector(7DOWNTO0);CONSTANTromvals:romdata:=(“00000000”,“01010011”,“01110010”,“01101100”,“01110101”,“11010111”,“11011111”,“00111110”,“11101100”,“100001
6、10”,“11111001”,“00111001”,“01010101”,“11110111”,“10111111”,“11101101”);BEGINdata<=romvals(address);ENDARCHITECTUREexample;如果我们采取这个范例,我们首先需要声明这个ROM是在一个VHDL测试台上的,然后制定地址使用一个整数信号。以下为一个testbench范例:libraryieee;useieee.std_logic_1164.all;entitytestromisendentitytestrom;architecturetestoftestromissignala
7、ddress:integer:=0;signaldata:std_logic_vector(7downto0);beginrom16x8:entitywork.rom16x8(example)portmap(address,data);endarchitecturetest;需注意的是IEEE库中,std_logic_vector型号要求是std_logic_1164,数值取决于所选择的地址。四、随机存取存储器一个DRAM组件有一个
此文档下载收益归作者所有