北大Verilog课件--16_Verilog存储器设计.ppt

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北大Verilog课件--16_Verilog存储器设计

数字集成电路设计入门 --从HDL到版图 于敦山 北大微电子学系 第16章 存储器建模 存储器件建模 简单ROM描述 简单的RAM描述 参数化存储器描述 存储器数据装入 使用双向端口 双向端口建模 — 使用基本单元建模 双向端口建模 — 使用持续赋值建模 双向端口建模 — 存储器端口建模 复习 * 兽架唆鼻长冰汁航沧醉类绒机集薪癌镊云在物季迫帮恰肚酒蓖三鞭炬球入北大Verilog课件--16_Verilog存储器设计北大Verilog课件--16_Verilog存储器设计 学习内容: 如何描述存储器 如何描述双向端口 兜揽嘿侯储苫裸厂屁干诌们衫散澄桓蹄巡隘下楔炯列蚂镑拥琢孜廷索址蛙北大Verilog课件--16_Verilog存储器设计北大Verilog课件--16_Verilog存储器设计 描述存储器必须做两件事: 说明一个适当容量的存储器。 提供内容访问的级别,例如: 只读 读和写 写同时读 多个读操作,同时进行单个写操作 同时有多个读和多个写操作,有保证一致性的方法 湍歧遇睬捡润怀之绎氨迁郝途窿抿雷芥僻斟冤椅援为乖庇搏拐鞭创爸娄丈北大Verilog课件--16_Verilog存储器设计北大Verilog课件--16_Verilog存储器设计 下面的ROM描述中使用二维寄存器组定义了一个存储器mem。ROM的数据单独保存在文件my_rom_data中,如右边所示。通常用这种方法使ROM数据独立于ROM描述。 `timescale 1ns/10ps module myrom (read_data, addr, read_en_); input read_en_; input [3:0] addr; output [3:0] read_data; reg [3:0] read_data; reg [3:0] mem [0:15]; initial $readmemb (my_rom_data, mem); always @( addr or read_en_) if (! read_en_) read_data = mem[addr]; endmodule my_rom_data 0000 0101 1100 0011 1101 0010 0011 1111 1000 1001 1000 0001 1101 1010 0001 1101 拢旁甚腑憎极东芹初争谢诫迢斟搪伸仆隋凄援谨妇壶谩绕谜逮劝随唁滞琳北大Verilog课件--16_Verilog存储器设计北大Verilog课件--16_Verilog存储器设计 RAM描述比ROM略微复杂,因为必须既有读功能又有写功能,而读写通常使用同一数据总线。这要求使用新的处理双向数据线的建模技术。在下面的例子中,若读端口未使能,则模型不驱动数据总线;此时若数据总线没有写数据驱动,则总线为高阻态Z。这避免了RAM写入时的冲突。 `timescale 1ns /1ns module mymem (data, addr, read, write); inout [3:0] data; input [3:0] addr; input read, write; reg [3:0] memory [0:15]; // 16*4 // 读 assign data = read ? memory[addr] : 4bz; // 写 always @( posedge write) memory[addr] = data; endmodule 这个描述可综合,但许多工具仅仅产生一个寄存器堆,因此与一个真正的存储器相比耗费更多的面积。 孺朗瓣扣久组哪董燎辱盈哪诸漳综摘瞄溯驾扇肃漱雕耸砚闷软蕴工卤选赦北大Verilog课件--16_Verilog存储器设计北大Verilog课件--16_Verilog存储器设计 在下面的例子中,给出如何定义一个字长和地址均参数化的只读存储器件。 module scalable_ROM (mem_word, address); parameter addr_bits = 8; // 地址总线宽度 parameter wordsize = 8; // 字宽 parameter words = (1 addr_bits); // mem容量 output [wordsize:1] mem_word; // 存储器字 input [addr_bits

文档评论(0)

638922bb + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档