- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
FPGA设计秘笈
存储器
一、 前言
如果我们考虑使用同步动态随机存取存储器(SDRAM),那么针对这种存储器我们需考虑的主要方面有:
这种类型的动态随机存取存储器(DRAM)依赖于存储数据关口的电容三极管;
DRAM比静态随机存取存储器(SRAM)更加兼容;
DRAM不能被合成,因此需要一个单独的DRAM芯片;
SDRAM要求有一个同步时钟,这个时钟需与其余的硬件系统相一致,并且是由微处理器进行运作
DRAM数据必须被刷新,因为DRAM是储存电荷且在一定时间后会衰变;
DRAM较SRAM更慢些。
SRAM可以看作是类似于只读存储器(ROM)芯片,它还有其他不同的特征:
存储单元格是以标准锁存器为基准;
SRAM是快捷的存储方式。
SRAM兼容性不如DRAM(或SDRAM);
SRAM可以合成一个现场可编程门阵列(FPGA),因此它是小型、快速寄存器或内存块的最佳选择。
SRAM从本质上来说是不同步的,但是可以修改为同步运转(如SDRAM的同步相当于
DRAM),这通常被称为同步RAM。
这时候,Flash存储器非常有用,尽管它的运作不同于其他存储器那样久远,仅仅是因为它易于使用且在FPGA开发板上经常用得到。
Flash存储器本质上是电可擦只读存储器(EEPROM)的一种形式,可以用作是一种永久的RAM。只所以说是永久性的,是因为在Flash存储器中,存储装置即使在断电时仍能保存数据,因此它经常用作一种ROM,因为它可以用于存储FPGA程序,也可以用作RAM(动态)存储当前数据,因此普遍用于FPGA系统。
二、 用硬件描述语言(VHDL)对存储器进行建模
当用VHDL对存储器进行建模时应非常小心,因为某些存储器不能合成,如果使用模块,即使是离片时,也必须能体现出正确的实际装置物理特征。这尤其适用于访问次数和时序扰乱情况。当时序扰乱时,所获得的数据最好的情况也许是可疑的,最坏的情况是完全无效的。设计师可以发现自己处于一个令人反感的处境,即仿真模块运行良好,而实际硬件完全不起作用。
在此章节中,我们所使用的VHDL是在任何模型中都不会出现任何物理性延时,如果这些模块用于现实系统时,则会增加延时。
三、只读存储器
ROM本质上是一套在存储寄存器
ENTITY ROM16x8 IS
PORT address : IN INTEGER RANGE 0 TO 15;
dout : OUT std_logic_vector 7 DOWNTO 0 ;
END ENTITY ROM16x8;
由此可以看到,地址已被定义为一个整数,但是数值范围局限于ROM范围中。ROM的架构定义为一个可以直接获取的固定数组元素。因此,一个带有一套样板数据元素的ROM范例可以定义如下:
ARCHITECTURE example OF rom16x8 IS
TYPE romdata IS ARRAY 0 TO 15
OF std_logic_vector 7 DOWNTO 0 ;
CONSTANT romvals : romdata : ,
,
,
,
,
,
,
,
,
,
,
,
,
,
,
;
BEGIN
data romvals address ;
END ARCHITECTURE example;
如果我们采取这个范例,我们首先需要声明这个ROM是在一个VHDL测试台上的,然后制定地址使用一个整数信号。以下为一个testbench范例:
library ieee;
use ieee.std_logic_1164.all;
entity testrom is
end entity testrom;
architecture test of testrom is
signal address : integer : 0;
signal data : std_logic_vector 7 downto 0 ;
begin
rom16x8: entity work.rom16x8 example
port map address, data ;
end architecture test;
需注意的是IEEE库中,std_logic_vector 型号要求是std_logic_1164,数值取决于所
文档评论(0)