ROMPLL加法器_第1页
ROMPLL加法器_第2页
ROMPLL加法器_第3页
ROMPLL加法器_第4页
ROMPLL加法器_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、Quartus ii 中 Rom、分频器和加法器的设计ROM无论是FPGA、ARM还是DSP,只要进行硬件设计,系统中总是离不开存储器的使用。Altera 的FPGA中提供了丰富的存储器资源可供使用,以TIGER BOARD上使用的EP4C22系列为例,FPGA内部提供了594Kb的存储器单元。在Quartus II中,Altera为开发者提供了丰富的与存储器有关的IP核,如下图所示。在IP核生成向导中,开发者选择和配置存储器的的类型、位宽、大小等参数信息,来满足电路设计中的需求。FPGA则会根据IP核的参数自动调用内部存储器单元来实现相应的存储器功能,当然,这个过程无需开发者操心,我们配置好

2、IP核的参数就OK了。在本章中先来介绍两种常用存储器类IP核ROM和RAM的使用方法。在对存储器分类时,ROM一般指掉电非易失的存储器,RAM则是掉电易失的存储器。事实上在FPGA中通过IP核生成的ROM或RAM调用的都是FPGA内部的RAM资源,掉电内容都会丢失(这也很容易解释,FPGA内部本来就没有掉电非易失存储器单元)。用IP核生成的ROM模块只是提前添加了数据文件(.mif或.hex格式),在FPGA运行时通过数据文件给ROM模块初始化,才使得ROM模块像个“真正”的掉电非易失存储器;也正是这个原因,ROM模块的内容必须提前在数据文件中写死,无法在电路中修改。存储器内部的数据内容是无法

3、用肉眼看到的,对于FPGA片外的存储器,如果想查看其内容,必须通过存储器的接口将数据读出,这样不仅操作麻烦,而且容易出错。对于片内存储器,Quartus II中提供了存储器查看工具In-System Memory Content Editor,它能用来查看FPGA生成的任意存储器类IP核,这等同于为开发者提供了一双透视片内存储的眼睛,在开发中十分好用,堪称神器;不仅如此,它还能在线编辑存储器的内容,是当之无愧的“Editor”。本章就来一并介绍In-System Memory Content Editor的使用方法,用它来验证ROM模块和RAM模块的设计正确性。第一步:制作MIF格式数据文件首

4、先在Quartus II新建一个工程,命名为rom_prj,工程建好后先别急着生成ROM模块,我们先为其制作mif格式的初始化文件。在本章中,我们打算生成和添加一个16x4bit大小的ROM,即容量为16,数据位宽为4bit。在概要中已经提到,FPGA中的ROM需要mif格式或hex格式的数据文件对其初始化。在添加ROM之前,先介绍下mif格式数据文件的制作方法。我们计划在ROM中添加0到15这16个数据,从地址0开始到地址15结束,将ROM填满。在Quartus II的主界面选择菜单栏的File->New,在弹出的New对话框中选中Memory Initialization File(

5、即mif文件),点击OK。接下来会弹出下图所示的对话框,选择容量(Number of words)及位宽(Word size),根据设计,容量为16,位宽为4,点击OK完成设置。点击OK后我们得到下图所示的文件,在下图中,红框为数据填充区域,用来填充mif文制作 MIF 格式数据文件 137 件存储的数据,每个方格代表一个地址,此时未填充保持全0。Addr代表数据的地址,其中Addr字符下方为起始地址,右方为偏移地址,数据地址=起始地址+偏移地址。接下来进行数据填充,方法是选中某个地址处的方格,输入数据即可,我们从地址0开始,依次输入0,1,214,15,完成后得到下图。其实Quartus I

6、I中提供了一些快捷键,可以快速填充某些数据。在数据区选中某个或多个地址右键单击,得到下图所示选项,其中Fill Cells with 0s代表将当前地址的数据全部填充为0,Fill Cells with 1s代表全部填充为1,Reverse Address Contents代表取反,这三个是常用的快捷键。完成数据填充后,将文件命名为rom.mif,保存在工程目录,注意下图红框中的选项,默认是把文件添加到当前工作来的。至此,mif文件的编写就完成了。我们在刚才的路径下找到保存的rom.mif文件,用文本编译器打开后如下图所示(省略了文件头的注释部分)。mif文件主要分为两个部分:框1的文件信息部

7、分和框2的文件内容部分。文件信息部分列出了mif文件的主要信息:包括数据位宽(WIDTH)、容量(DEPTH)、地址格式(ADDRESS_RADIX)和数据格式(DATA_RADIX)。其中数据位宽和容量一般用10进制表示,如上图中的4和16;对于地址格式和数据格式,常用的有UNS(无符号10进制)、HEX(16进制)、BIN(二进制)等,上图中二者都是用的UNS,所以框2数据区的地址值和数据值都用无符号10进制来表示。文件内容部分列出了mif文件的每个地址及对应数据,以固定的“CONTENT BEGIN”语句开始,中间列出了每个地址值及对应数据值,最后以”END;”结尾。以上就是整个mif文

8、件的格式,其实有了它的格式,我们大可不必非得在Quartus II中一个个输入数据生成mif文件,自己根据需求来修改某个mif文件的文件信息和文件内容即可生成期望的mif文件,更可以借助excel或matlab来生成较长的规律性文件,这种做法对于较长的mif文件来说省事不少(试想下在Quartus II中手动输入从0到1023是件多么痛苦的事情)。mif文件的制作过程到此为止,利用Quartus II也可以生成Hex格式文件,同样也可以依照其格式脱离Quartus II自行修改创建,方法与mif文件类似,这里就不详叙了。在工程中添加ROMmif文件制作完成后,下面来生成和添加ROM模块。在Qu

9、artus II主界面选择菜单栏的Tools->MegaWizard Plug-In Manager,打开IP核生成向导。在弹出的对话框选择默认的第一项创建一个新IP核,点击Next来到IP核选择页面,我们选择Memory Compiler类下的ROM(1-PORT),如框1所示,将其命名为rom,保存在提前建好的ip/rom路径下,如框2所示。完成上述操作后点击Next,得到下图所示的ROM配置对话框。当前页面位于Parameter Settings的General栏,下图中框1是数据位宽和容量的配置,分别设为4和16(注意容量的下拉列表中最小是32,手动输入16即可);框2是存储单元

10、类型的选择,这决定着我们使用FPGA内部的哪种存储器资源生成ROM模块,保持Auto(自动)即可;框3是输入输出的时钟选择:选择单时钟还是双时钟,保持默认的单时钟即可;框4是当前ROM模块的结构图,可以看到此时的ROM地址线宽为4(对应16个地址),数据线宽为4,与配置相符。完成上述配置后点击Next,来到Regs/Clken/Aclrs栏,框1选项为是否为输出q寄存:这里需要说明下,因为ROM的地址线配置了寄存器,如果选择再为输出q配置寄存器,给出地址后,地址对应的数据会晚两个cycle从q输出;如果选择不为q配置寄存器,则会晚1个cycle输出。我们选择后者,可以看到框2的ROM模块结构图

11、中q端的寄存器就消失了,其余配置无需改动。点击Next,来到Mem Init栏,我们给ROM配置初始化文件。点击红框中的Browse在找到mif的路径添加进来,如框1中的File Name所示,这样ROM的初始化文件就配置OK了。框2的选项需要大家注意:是否允许让In System Memory Content Editor查看和更新内容,我们一会要用到In System Memory Content Editor来验证工程,这里勾选上,Instance ID命名为rom。此外这里还需要注意的是在添加mif文件时,默认的搜索文件类型为hex,如果没注意这点不改变搜索类型,会发现存放mif文件的

12、路径下居然没有该文件,大家莫慌,我们把搜索类型改为mif或all files即可,如下图红框所示。最后连续点击Next直至Summary类,框1中的生成文件只先择rom.v文件即可,框2为最终的ROM模块结构图,点击Finish,完成ROM模块的生成。 PLL 分频器找到IP核生成向导并打开,方法是在菜单栏中选择Tools->MegaWizard Plug-In Manager,如下图红框所示。然后会弹出下图所示的对话框,有三个选项可供选择:如图中红字所示,我们选择第一个,创建一个新IP核,然后点击Next。点击Next后弹出下图,框1为IP核列表,Altera提供的IP核都列在其中,每

13、个文件夹代表一类,比如Memory Compiler里包含了与存储器有关的IP核,框1上面提供了一个搜索框,可以通过IP核名称来搜索。框2为工程指定的FPGA所属的器件系列,每个器件系列能提供的IP核种类与数量不尽相同,所以这个地方要保持与工程创建时选择的器件系列一致,避免出现添加本器件不支持的情况,这里默认是一致的。框3为添加IP核时输出文件的语言类型,这个取决于工程具体设计所使用的语言,这里选择Verilog;框4是IP核输出文件的保存类型及IP核名称,路径一般在工程文件夹中即可,名称自定义。PLL属于列表中的I/O类,我们找到它并选中(当然也可通过名称搜索找到),器件类型保持不变,输出文

14、件类型选择Verilog,存放路径为工程路径/ip/pll,并命名为pll,设置好后如下图所示,点击Next(ip/pll为预先建好的文件夹,VITO的习惯是在工程目录下新建一个ip文件夹,在该文件夹下再为每个IP核建一个与IP核同名的文件夹,将IP核文件保存该文件夹下,显得整洁规范,当然存放路径因人而异,只要自己能找到就OK了)。点击Next后会弹出下图所示对话框,我们正式开始对将生成的PLL进行配置。框1为需要配置的选项,根据其固有标号一共分为5类:Parameter Settings(参数设置)、PLL Reconfiguration(PLL重新配置)、Output Clocks(输出时

15、钟设置)、EDA和Summary(总体设置),每一类又分成很多项。PLL涉及到的参数繁多,我们无需掌握每个参数的作用,只要了解了一些经常需要配置的重要参数即可。框2中为当前PLL的结构图,它会伴随在PLL的配置中。根据图可以看到PLL当前的主要信息:输入频率、每个输出的信息(频率、比率、相移、占空比)、模块管脚等。当前的页面属于Parameter Settings的General/Modes项,我们需要修改的是输入时钟频率,将其从默认的100MHz变为50MHz,如框3所示,可以看到框2的结构中显示输入时钟频率也随之变为了50MHz,其余不变,点击Next到下一项。在Inputs/Lock项,

16、我们需要注意框1和框2的含义。框1项是为PLL创建异步复位管脚,对应结构图上的areset,用来对PLL进行异步复位。框2是为PLL创建锁定管脚,对应结构图上的Locked,用来检测PLL是否已经锁定(正常工作)。对于一般的应用而言,可以不用添加这两个管脚,这里我们添加上,以便在仿真时能更全面地体现PLL的工作特点。完成后点击Next。连续点击Next,直至Output Clock类的clk c0项,对输出时钟c0进行配置。框1选项决定是否使用当前的输出时钟,每个PLL最多有5个输出时钟,我们可以根据需要选择输出时钟的数量,c0默认是选中的,保持该选项不变。框2是配置c0的输出频率,有两种方式

17、:直接输入频率(未选中的选项)和输入参数配置频率(当前选中的选项)。对于直接输入频率方式,直接在Requested Settings中输入想得到的输出频率即可;对于输入参数配置频率,需要输入倍频因子(Clock multiplication factor)和分频因子(Clock division factor),最后的输出频率计算方式为:输出频率=输入频率x倍频因子/分频因子。我们通过参数配置方式得到25MHz的一个输出时钟,将倍频因子和分频因子分别设置为1和2即可。另外需要注意的是:PLL的输出并非随心所欲的,受输入频率等因素影响,每个PLL的输出频率会有一定的范围限制。框3为输出时钟的相移

18、,这里保持默认0。框4为输出时钟的占空比,也保持50%不变。在本工程中,我们只需要PLL输出c0时钟,其它输出时钟不使用也无需配置,完成上述操作后连续点击Next,直到Summary类。在下图所示的Summary类中,框1是PLL输出的文件,除了两个灰色必选的pll.v和pll.ppf外,默认还勾选上了pll_bb.v,对于IP核的使用,有两个必选文件已经足够,我们去掉pll_bb.v文件。加法器在Quartus II中新建一个工程,命名为addr_prj。创建完成后打开IP核向导,在弹出的对话框中选择第一项创建一个新的IP核,如下图所示。点击Next进入下图所示的IP核选择页面,选中左栏IP核列表中的PARALLEL_ADD(位于Arithmetic文件夹),即并行加法器,如框1所示;存放路径为提前建好的ip/addr文件夹,命名为addr,如框2所示。完成上述操作后点击Next,进入并行加法器配置对话框。首先是Parameter Set

温馨提示

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

评论

0/150

提交评论