第一部分CPLD器件及开发系统的使用
具体的参数设置如图5-11所示:
图5-11 LPM-ROM参数化框的设置
是否必需
是 否
描述
寻址ROM的地址
如果address[]是同步寄存器 类型,则inclock为地址的同 步时钟,address[]为异步类型,inclock可以不用。
下面是参数的具体介绍: 端口 address[] inclock
outclock
否
153
如果数据输出是同步寄存器
第一部分CPLD器件及开发系统的使用
Memenab 否 q[]
否 LPM_WIDTH
是 LPM_WIDTHAD 是 LPM_NUMWORDS
否 LPM_FILE
是 LPM_ADDRESS_CONTROL
否
LPM_OUTDATA
否
LPM_HINT
否
LPM_TYPE 否 功能描述:
(1) ROM内容的同步读取:
时钟 使能端 OUTCLOCK MEMENAB X
L 无时钟 H 有时钟
H
类型,则outclock为地址的同步时钟,address[]为异步类型,outclock可以不用。
输出数据使能。 数据输出端。 输出数据宽度。 寻址的地址宽度。
数据深度,一般指组合ROM块 中有多少位数据。
是ROM的初始化文件名,其扩 展名mif或hex。
确定address[]是否是寄存器 类型,其参数是字符型,为 REGISTERED,\和\三种类型,默认值 为REGISTERED类型。
确定 q[]是否是寄存器类型, 其参数是字符型,为UNUSED\, REGISTERED,\ 和\三种类型,默认值
为REGISTERED类型。
是否在VHDL语言编辑中指定
ALTERA特定参数默认值为 “unused”。
在VHDL语言编辑中标识实体 名。
功能 (Function) q[]为高阻状态。 q[]保持不便。
q[]在时钟上升沿装入address[]对应ROM 单元内容。
154
第一部分CPLD器件及开发系统的使用
(2) ROM内容的异步读取:
使能端 MEMENAB L H
功能描述 (function) q[]为高阻状态 数据装入q[]。
参数按以上描述设置完成后,加上输入、输出管脚如图5-12所示:
图5-12 LPM-ROM设置后的界面
在编译的过程中,会在编译信息框有一个警告,如下图5-13的内容:这说
图5-13 编译器没有找到mif 文件后的警告信息
明目前给LPM_ROM指定的文件“7sgmt.mif”没有找到,这是由于该文件目前并不存在造成的。解决的办法有两种,一种是按照“*.mif”文件的格式,在参数化框中指定的路径用记事本编辑一个同名的“*.mif”文件,或用计算机高级语言根据设计用途生成“*.mif”文件。第二种在MAX+PLUSⅡ菜单下点击simulator子菜单,这时将在主菜单中出现Initialize菜单,激活该菜单的下拉菜单Initialize memory之后就会跳出一个含有表格的界面,按照设计要求填写存储器初时化表格,也可以将已有的mif文件导入后进行编辑。如图5-14所示:
155
第一部分CPLD器件及开发系统的使用
图5-13 LPMROM的初始化设置
在表格中按顺序添好所需内容,点击Export File 在弹出的对话框中取名
图5-14 将LPMROM的初始化导出
和LPM_ROM参数化框LPM_FILE指定的文件一致,就可以编译使用了。如图所示。
(2)LPM_ROM在文本编辑中的使用
156
第一部分CPLD器件及开发系统的使用
该函数在文本编辑中的使用与普通的参数化宏函数使用方法一样,下面例子:正弦波全波函数发生器
化框的内容,并加入如图中所示的输入、输出。编译并形成Include
利用该函数用AHDL语言编写一个正弦波全波函数发生器:
(1) 先在图形编辑输入方式,编辑如图所示的电路,参数设置如图中参数
图5-15 利用LPMROM生成波形函数发生器
模块,新建AHDL语言的文本输入界面,在文本编辑中引用该模块,如下面的程序所示:
include \subdesign sin
(inclk :input; qout[10..0] :output; ) variable
addr[7..0],fh :dff; mem :trom; Begin
mem.a[7..0]=addr[7..0]; mem.inclk=inclk; fh.clk=inclk; addr[].clk=inclk; if addr[]==179 then addr[]=0;fh=!fh; else
addr[]=addr[]+1;
fh=fh;
157