FPGA设计秘笈.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

文档分享 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档