西电verilog课件第八章_第1页
西电verilog课件第八章_第2页
西电verilog课件第八章_第3页
西电verilog课件第八章_第4页
西电verilog课件第八章_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

第8章VerilogHDL存储器设计2/1/20231MicroelectronicsSchoolXidianUniversity8.1存储器简介和分类2/1/20232MicroelectronicsSchoolXidianUniversity表8.1-1存储器分类RWMNVRWMROM随机存取非随机存取EPROME2PROMFLASHROMSRAMDRAMFIFOLIFO移位寄存器8.1.2存储器结构(a)存储器结构(b)利用译码器减少地址位数8.1.3存储器设计方法2/1/20233MicroelectronicsSchoolXidianUniversity在基于FPGA的电路设计方法中,一些固定的模块已经作为IP核来调用,从而简化设计。在专用集成电路设计过程中,有专用的软件——memorycompiler来实现存储器的设计。memorycompiler的使用也和IP核的调用类似,通过改变一些参数来实现设计中需要的存储器,不同的是memorycompiler设计的存储器是基于具体的工艺的表8.2IP核设计和MemoryCompiler设计的主要区别设计方法IP核设计MemoryCompiler需要的参数存储器大小,端口信息存储器大小,端口信息,工作频率,电源线宽输出文件网表文件,原理图文件等网表文件,时序信息文件,布局布线文件,注释文件可移植性可以用于不同工艺,可以设计其他IP模块主要用于存储器设计,基于具体工艺,工艺不同则需要重新设计综合直接像其他设计一样,用designcompiler等工具综合将输出文件作为designcompiler的链接库,设计将直接作为综合后的宏单元8.2基于FPGA的IP核RAM的设计及调用2/1/20234MicroelectronicsSchoolXidianUniversity8.2.1IP核的简介IP(知识产权)核将一些在数字电路中常用,但比较复杂的功能块,如FIR滤波器、SDRAM控制器、PCI接口等设计做成一个“黑盒”或者是可修改参数的模块,供设计者使用。IP核包括硬IP与软IP。调用IP核能避免重复劳动,大大减轻设计人员的工作量。8.2.2FPGA配置和调用RAM例8.2-1FPGA设计的RAM外围电路对RAM进行读写操作2/1/20235MicroelectronicsSchoolXidianUniversity7位地址线计数器`timescale1ns/1psmodulecount(clk,en,count,clr);inputclk,en,clr;output[6:0]count;reg[6:0]count;always@(posedgeclkornegedgeclr)beginif(!clr)count=7'b0;elsebeginif(en)count=count+1;endendendmodule8位数据线计数器`timescale1ns/1psmoduledata_count(clk,count,clr);inputclk,clr;output[7:0]count;reg[7:0]count;always@(posedgeclkornegedgeclr)beginif(!clr)count=8'b0;elsecount=count+1;endendmodule2/1/20236MicroelectronicsSchoolXidianUniversity`timescale1ns/1psmoduleIP_RAM(clk_wr,clk_rd,wren,rden,data_rd,clr);inputclk_wr,clk_rd,wren,rden,clr;output[7:0]data_rd;wire[6:0]addr_wr,addr_rd;wire[7:0]data_wr;wire[7:0]data_rd;

countaddr_wr1(.clk(clk_wr),.en(wren),.count(addr_wr),.clr(clr));

data_countdata_wr1(.clk(clk_wr),.count(data_wr),.clr(clr));countaddr_rd1(.clk(clk_rd),.en(rden),.count(addr_rd),.clr(clr));

RAM_2PORTRAM1(.wrclock(clk_wr),.rdclock(clk_rd),.wren(wren),.data(data_wr),.wraddress(addr_wr),.rdaddress(addr_rd),.q(data_rd));endmodule2/1/20237MicroelectronicsSchoolXidianUniversity`timescale1ns/1psmoduleIP_RAM_tb;regclk_wr,clk_rd,clr;regwren,rden;wire[7:0]data_rd;IP_RAMRAM1(.clk_wr(clk_wr),.clk_rd(clk_rd),.wren(wren),.data_rd(data_rd),.clr(clr),.rden(rden));

initialbegin#1clk_wr=0;clk_rd=0;clr=1;rden=0;#3wren=0;clr=0;#3wren=1;clr=1;#3000wren=0;rden=1;#3000wren=0;rden=0;#500$stop;end

always#10clk_wr=~clk_wr;always#15clk_rd=~clk_rd;endmodule2/1/20238MicroelectronicsSchoolXidianUniversity图8.2-2写入过程仿真结果图8.2-3读出过程仿真结果8.2.3IP核的RAM设计流程2/1/20239MicroelectronicsSchoolXidianUniversity例8.2-2:IP核生成RAM的过程以及例化的过程(1)打开QuartusII(本文使用的版本是QuartusII8.1),新建工程NewQuartusIIProject(2)选择工程存储路径,并设置工程名,例如IP_RAM(2)添加文件,暂时不添加。(4)选择芯片型号,例如CycloneIIEP2C5Q208C8(5)完成工程的建立(6)点击tools,选择Tools—MegaWizardPlug-InManager,创建新的MegaCore;(7)选择新建一个MegaCore2/1/202310MicroelectronicsSchoolXidianUniversity(8)选择IP,在左侧选中RAM:2-PORT,选择VerilogHDL,并在对话框中设置输出文件名,例如RAM_PORT22/1/202311MicroelectronicsSchoolXidianUniversity(9)定义读写端口;2/1/202312MicroelectronicsSchoolXidianUniversity(10)定义输入数据宽度(此处为8),RAM深度(此处为128);2/1/202313MicroelectronicsSchoolXidianUniversity(11)选择读写时钟;2/1/202314MicroelectronicsSchoolXidianUniversity(12)定义输出锁存;2/1/202315MicroelectronicsSchoolXidianUniversity(13)选择是否进行初始化;2/1/202316MicroelectronicsSchoolXidianUniversity(14)显示创建的输出文件类型;2/1/202317MicroelectronicsSchoolXidianUniversity(15)创建原理图输入文件;File>New>BlockDiagram/SchematicFile(16)双击左键,弹出Symbol对话框,可以在上方的libraries中看到project,显示已创建的RAM_PORT2Symbol;(17)选择input和outputSymbol;(18)最终设置完成后,如图8.2-122/1/202318MicroelectronicsSchoolXidianUniversity(19)将该原理图保存为顶层文件IP;(20)进行全编译,如图示,在顶层文件下会显示实例化(21)一个RAM的IP核已经成功调用。8.2.4对生成的RAM进行仿真2/1/202319MicroelectronicsSchoolXidianUniversity1.直接用quartus手动加激励仿真2.和其它软件结合的testbench仿真方法2/1/202320MicroelectronicsSchoolXidianUniversity(1)在quartus中选择tools里面的option设置仿真工具modesim的路径,如图8.2-14所示:2/1/202321MicroelectronicsSchoolXidianUniversity(2)在assignments中的settings中进行仿真设置,首先是仿真工具,选择modelsim,接着是网表文件格式,这里选择verilog,并对时间精度进行设置。2/1/202322MicroelectronicsSchoolXidianUniversity(3)接着是连接的软件的设置,在上一个界面中的最下面,选择第二项testbench的选项,然后点击后面的testbenches选项弹出如下对话框:2/1/202323MicroelectronicsSchoolXidianUniversity(4)点击new进行设置,其中Testbenchname可以随便设置,Toplevelmoduleintestbench是testbench中模块的名字,designinstancenameintestbench是testbench中例化的待测试模块的名字。2/1/202324MicroelectronicsSchoolXidianUniversity(5)完成设置。在quartus界面编译,仿真,quartus会自动启动modelsim软件进行仿真。本例的testbench程序和仿真结果如下`timescale1ns/1psmoduleIP_RAM_tb;regclk_wr,clk_rd;regwren;reg[7:0]data_wr;reg[6:0]addr_wr,addr_rd;wire[7:0]data_rd;RAM_2PORTRAM1(.wrclock(clk_wr),.rdclock(clk_rd),.wren(wren),.data(data_wr),.wraddress(addr_wr),.rdaddress(addr_rd),.q(data_rd));initialbegin#1clk_wr=0;clk_rd=0;#3addr_wr=7'b0;addr_rd=7'bz;#3wren=0;data_wr=8'b0000_0100;#3wren=1;#3000wren=0;addr_rd=7'b000_0000;#3000wren=1;#50$stop;endalways#10clk_wr=~clk_wr;always#15clk_rd=~clk_rd;alwaysbegin#20addr_wr=addr_wr+1;end

alwaysbegin#20data_wr=data_wr+1;end

alwaysbegin#30addr_rd=addr_rd+1;endendmodule2/1/202325MicroelectronicsSchoolXidianUniversity图8.2-18写入过程的仿真图图8.2-19读出过程的仿真图8.3用MemoryCompiler生成RAM并仿真2/1/202326MicroelectronicsSchoolXidianUniversity8.3.1MemoryCompiler的简介MemoryCompiler能够根据用户的要求自动生成ROM或RAM。在生成ROM时需要直接将ROM写入的数据在生成时存进去,在生成RAM的过程则不需要。MemoryCompiler产生RAM的同时会生成用于行为级仿真的verilog代码。其他重要的文件列举如下:(1).LIB该数据是RAM的时序信息文件(2).VCLEF布局布线工具需要使用的物理信息文件(3).SPECRAM是注释文件。这里我们使用Artisan的MemoryCompiler——AdvantageSingle-PortRegisterfileGenerator来生成。所使用的工艺是TSMC65nmCL65G+Process。8.3.2ASIC设计过程中的RAM2/1/202327MicroelectronicsSchoolXidianUniversity

例8.3-1:ASIC设计过程中的RAM的调用:本例设计一个RAM,并可以对其进行读取。外围的读取电路是由一个计数器控制地址端,另一个计数器控制数据端,实现数据的实时写入和读出。地址计数器包含使能端,使能端由RAM的使能控制端cen来控制。2/1/202328MicroelectronicsSchoolXidianUniversity顶层模块:`timescale1ns/1psmoduleWR_RD_RAM(clk,wen,data_rd,cen,clr);inputclk,wen,cen,clr;output[7:0]data_rd;wire[7:0]data_rd;wire[6:0]addr;wire[7:0]data_wr;countaddr_wr1(.clk(clk),.clr(clr),.en(cen),.count(addr));data_countdata_wr1(.clk(clk),.clr(clr),.count(data_wr));

RF1SHD_128X8RAM(.CLK(clk),.CEN(cen),.WEN(wen),.A(addr),.D(data_wr),.Q(data_rd),.EMA(0),.RETN(1));Endmodule2/1/202329MicroelectronicsSchoolXidianUniversity`timescale1ns/1psmoduleRAM_tb;regclk;regwen,cen,clr;wire[7:0]data_rd;WR_RD_RAMRAM1(.clk(clk),.wen(wen),.cen(cen),.clr(clr),.data_rd(data_rd));initialbegin#1clk=0;cen=1;clr=1;#2cen=0;clr=0;#3clr=1;#3wen=1;#3wen=0;#3000wen=1;#3000cen=1;#50$stop;endalways#10clk=~clk;endmodule2/1/202330MicroelectronicsSchoolXidianUniversity图8.3-3写入过程仿真结果图8.3-4读出过程仿真结果8.3.3MemoryCompiler的使用2/1/202331MicroelectronicsSchoolXidianUniversity图8.3-4MemoryCompiler的使用流程2/1/202332MicroelectronicsSchoolXidianUniversity例8.3-2用MemoryCompiler生成一个128×8的双端口的RAM。用verilog例化该RAM并对其进读写测试。1.RTL阶段参数说明:(1)instancename:该设置是对RAM的命名,由于ram的特性有地址和位数,所以在命名的时候尽量包含这些信息。在本例中我们可以命名为RA2SHD_128×8.(2)numberofwords:该设置用来确定RAM的深度,即寻址空间大小,本例中为128。(3)numberofbits:该设置用来确定RAM的宽度,本例中为8。(4)frequency:该设置用来确定RAM的工作频率,该设置确定后就可以基本确定RAM的功耗,估计的结果位平均电流,通过该数据来设定电源环的宽度,本例设定为200MHz。(5)ringwidth:该设置为工具建议的电源环宽度,根据本例的情况,设计为12um。(6)relativefootprint:该设置确定RAM的形状,最好让RAM的形状接近正方形。(7)multiplexerwidth:该设置确定每行的单元数,这里设置为4,能够让形状更接近正方形。2/1/202333MicroelectronicsSchoolXidianUniversity左下角的view中选择生成的文件名,然后点击generate就可以生成所需要的文件,如图8.3-5中的红色的框框所示。这样的生成文件的方式需要依次生成想要的文件,如果想要一次生成所有需要的文件,可以选择utilities->generate,会弹出如图8.3-6对话框,然后勾选需要的文件,点击generate就会生成所有我们需要的文件。2/1/202334MicroelectronicsSchoolXidianUniversity接着选择utilities->advancedoptions,修改电源和地的名字2/1/202335MicroelectronicsSchoolXidianUniversity在MENU中点击utilities->writespec产生SRAM的注释文档:生成的RAM的详细信息可以读取生成RAM的数据手册来得出,里面包含详细的面积信息,延时信息等。2/1/202336MicroelectronicsSchoolXidianUniversity2.综合与布局布线阶段在布局布线前,需要考虑RAM的长与宽,估计它的位置与方向,尽量让功能相关的模块靠近一些。将产生的.LIB文件转换成.DB文件,就可以把MemoryCompiler生成的RAM加入到代码中进行综合了。在综合工具的脚本中的serch_path下加入RAM的DB文件地址即可。3.对生成的RAM的例化和仿真`timescale1ns/1psmoduleWR_RD_RAM(clk,wen,addr,data_wr,data_rd,cen);inputclk,wen,cen;input[6:0]addr;input[7:0]data_wr;output[7:0]data_rd;wire[7:0]data_rd;

RF1SHD_128X8RAM(.CLK(clk),.CEN(cen),.WEN(wen),.A(addr),.D(data_wr),.Q(data_rd),.EMA(

温馨提示

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

评论

0/150

提交评论