北大Verilog-16Verilog存储器设计 (2)课件_第1页
北大Verilog-16Verilog存储器设计 (2)课件_第2页
北大Verilog-16Verilog存储器设计 (2)课件_第3页
北大Verilog-16Verilog存储器设计 (2)课件_第4页
北大Verilog-16Verilog存储器设计 (2)课件_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数字集成电路设计入门--从HDL到版图 北大微电子学系第16章存储器建模学习内容:如何描述存储器如何描述双向端口存储器件建模描述存储器必须做两件事:说明一个适当容量的存储器。提供内容访问的级别,例如:只读读和写写同时读多个读操作,同时进行单个写操作同时有多个读和多个写操作,有保证一致性的方法简单的RAM描述RAM描述比ROM略微复杂,因为必须既有读功能又有写功能,而读写通常使用同一数据总线。这要求使用新的处理双向数据线的建模技术。在下面的例子中,若读端口未使能,则模型不驱动数据总线;此时若数据总线没有写数据驱动,则总线为高阻态Z。这避免了RAM写入时的冲突。`timescale1ns/1nsmodulemymem(data,addr,read,write);inout[3:0]data;input[3:0]addr;inputread,write;reg[3:0]memory[0:15];//16*4//读assigndata=read?memory[addr]:4'bz;//写always@(posedgewrite)memory[addr]=data;endmodule

这个描述可综合,但许多工具仅仅产生一个寄存器堆,因此与一个真正的存储器相比耗费更多的面积。参数化存储器描述在下面的例子中,给出如何定义一个字长和地址均参数化的只读存储器件。modulescalable_ROM(mem_word,address);

parameteraddr_bits=8;//地址总线宽度

parameterwordsize=8;//字宽

parameterwords=(1<<addr_bits);//mem容量

output[wordsize:1]mem_word;//存储器字

input[addr_bits:1]address;//地址总线

reg[wordsize:1]mem[0:words-1];//mem声明//输出存储器的一个字

wire[wordsize:1]mem_word=mem[address];endmodule

例中存储器字范围从0而不是1开始,因为存储器直接用地址线确定地址。也可以用下面的方式声明存储器并寻址。reg[wordsize:1]mem[1:words];//从地址1开始的存储器//存储器寻址时地址必须加1wire[wordsize:1]mem_word=mem[address+1];

存储器数据装入可以使用循环或系统任务给存储器装入初始化数据用循环给存储器的每个字赋值

for(i=0;i<memsize;i=i+1)

//initializememorymema[i]={wordsize{1'b1}};

调用系统任务$readmem$readmemb("mem_file.txt",mema);

可以用系统任务$readmem给一个ROM或RAM加载数据。对于ROM,开始时写入的数据就是其实际内容。对于RAM,可以通过初始化,而不是用不同的写周期给每个字装入数据以减少仿真时间。双向端口建模—使用基本单元建模modulebus_xcvr(bus_a,bus_b,en_a_b,en_b_a);inoutbus_a,bus_b;inputen_a_b,en_b_a;bufif1b1(bus_b,bus_a,en_a_b);bufif1b2(bus_a,bus_b,en_b_a);//Structuralmodulelogicendmodule

若en_a_b=1,基本单元b1使能,bus_a数据传送到bus_b若en_b_a=1,基本单元b2使能,bus_b数据传送到bus_a信号en_a_b和en_b_a控制使能双向端口建模—使用持续赋值建模modulebus_xcvr(bus_a,bus_b,en_a_b,en_b_a);inoutbus_a,bus_b;inputen_a_b,en_b_a;assignbus_b=en_a_b?bus_a:'bz;assignbus_a=en_b_a?bus_b:'bz;//Structuralmodulelogicendmodule

若en_a_b=1,赋值语句驱动bus_a数据到bus_b若en_b_a=1,赋值语句驱动bus_b值到bus_a信号en_a_b和en_b_a控制使能双向端口建模—存储器端口建模moduleram_cell(databus,rd,wr);inoutdatabus;inputrd,wr;regdatareg;assigndatabus=rd?datare

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论