第五章 MAX+PLUSⅡ的高级使用(3)

2019-03-03 10:50

第一部分CPLD器件及开发系统的使用

可以指定器件和管脚分配。重新编译后就可以进行仿真和下载试验。

5.3 MAX+PLUSⅡ中LPM宏单元库的使用

5.3.1 使用LPM宏单元库

LPM宏单元库是参数化的模块库,是为不同的设计者为了不同的电路设计要求而制定的,是优秀的版图设计和软件设计的结晶。采用LPM器件,只要修改其某些参数就可以达到设计要求。LPM宏单元库中,各种类型的器件比较丰富,目前该库中包含有25中器件,基本含盖不同设计的各种用途。用LPM宏单元进行设计和其它方式设计一样,都和具体器件无关。具体的LPM函数如下所示:

1、门单元函数:

lpm_and

参数化与门

lpm_bustri 参数化三态缓冲器 lpm_clshift 参数化逻辑移位器 lpm_constant 参数化常量产生器 lpm_decode lpm_inv lpm_mux busmux mux

lpm_or lpm_xor 2、算术运算函数

lpm_abs

参数化绝对值函数 参数化加减函数 参数化比较器 参数化计数器 参数化乘法器 参数化触发器 参数化锁存器

参数化RAM(输入、输出分开) 参数化单端口RAM 参数化ROM

lpm_add_sub lpm_compare lpm_counter lpm_mult lpm_ff

参数化译码器 参数化取反器 参数化选择器

参数化总线选择器 多路选择器 参数化或门 参数化异或门

3、具有存储功能的函数

lpm_latch lpm_ram_dq lpm_ram_io lpm_rom

lpm_shiftreg 参数化移位积存器

148

第一部分CPLD器件及开发系统的使用

4、用户定制函数

csfifo csdpram

参数化先进先出队列 参数化双口RAM

这些函数,在设计时使用方便,但需要花一点精力研究其内部参数。下面以lpm_mult为例介绍宏函数的使用。(lpm宏函数库所在的目录\\maxplus2\\max2lib\\mega_lpm)。如图4.8所示:打开图形编辑界面,双击空白处,在弹出的对话框中选择\\maxplus9.6\\max2lib\\mega_lpm\\*,打开lpm宏函数库选择lpm_mult宏函数,该图形分为两个部分,基本电路图形和参数化框,下面将分别介绍:参数化框的内容如下:

图5-7 LPM宏函数的使用

输入数据dataa[]是否为常数 输入数据datab[]是否为常数 流水线阶数 符号说明

输入数据 dataa[]的位数 输入数据 datab[]的位数

INPUT_A_IS_CONSTANT INPUT_B_IS_CONSTANT LPM_PIPELINE= LPM_WIDTHA= LPM_WIDTHB=

LPM_REPRESENTATION

LPM_WIDTHP=( LPM_WIDTHA +LPM_WIDTHB) 输出数据 result[]的位数 LPM_WIDTHS=(LPM_WIDTHA) 当有多个乘法器级联时低级乘法器向本

级乘法器的进位位的宽度,该宽度应和

149

第一部分CPLD器件及开发系统的使用

LPM_WIDTHA一致。该项为可选项,如果只有一个乘法器,本项可以不选。

MAXIMIZE _SPEED

编译时优化的等级,可以从0到10之间选择等级,设定后MAX+PLUSⅡ在编译时会在速度和面积之间平衡。

USE_EAB

=

是否使用EAB单元。

其它还有aclk异步时钟,clken时钟使能,clock同步时钟。这些也都是可选项,可以选也可以不选。

双击参数化框,在弹出的界面中将每一个参数设定为合适的值如图5-8

图5-8 LPM宏的参数化框设置

本例设定好的参数如下图所示:其中在编辑最后一项“USE_EAB=”时要注意,只能添入“ON”或“OFF”,而且要根据不同的器件进行选择,如器件为“MAX7000”、“MAX9000”、“FLEX6000/8000”等器件本身没有“EAB”宏单元,因此只能选择

150

第一部分CPLD器件及开发系统的使用

“OFF”,即使选择“10K10”系列,也要看器件所带的“EAB”是否放得下8X8的乘法器,如果不能,也只能选择“OFF”。具体参数的设置可以参照上面介绍的内容,设置后在添加输入、输出时,一定要注意输入、输出应与参数化框中设定的位宽一致。设置后的界面如图5-9所示:

图5-9 参数化乘法器的设计

5.3.2 参数化模块在文本编辑中的使用

在AHDL语言使用参数化模块时要先用 “include”语句将宏函数包含进文本编辑中,在variable 中用with语句进行参数设置。 include\subdesign multx

(a[7..0],b[7..0],c[7..0]:input; s[15..0]:output; ) variable

mmut:lpm_mult with(LPM_WIDTHA=8, LPM_WIDTHB=8, LPM_WIDTHP=16, LPM_WIDTHS=8,

lpm_result=15,eab=\begin

mmut.dataa[]=a[]; mmut.datab[]=b[]; mmut.sum[]=c[];

151

第一部分CPLD器件及开发系统的使用

s[]=mmut.result[]; end;

可见,只要作一些简单的设置就可以很好的使用宏函数。其实,不仅宏函数可以这样引用,mf库的所有模块都可以这样引用,因为不需要参数设置,所以使用起来更简单。下面的程序演示7400在文本编辑时的引用,这里只是起到抛砖引玉的作用,该库中其它模块可以采用同样的方法引用。 include\subdesign nad2 (a,b:input; c:output; ) variable m7400:7400; begin

m7400.2=a; m7400.3=b; c=m7400.1; end;

5.4 CPLD中内嵌RAM块EAB的使用

内嵌RAM块EAB是ALTERA公司CPLD产品中的精华部分,它可以实现CPLD其它部分无法文成的工作,由于其优越特性,所以倍受设计人员的青睐。模块化宏函数库中大部分函数都可以使用EAB,但最具典型的当属LPM_ROM和LPM_RAM的使用,这里将详细介绍ROM与RAM的使用。 1、LPM_ROM的使用

(1) LPM_ROM在图形编辑中的使用

打开图形编辑界面,双击编辑区的空白处,在弹出的对话框中选择\\maxplus10.0\\max2lib\\mega_lpm库,在库中选择LPM_ROM,点击OK,LPM_ROM的图形及参数框如图5-10所示。

图5-10 LPM-ROM的参数化模块

152


第五章 MAX+PLUSⅡ的高级使用(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:谈判与推销技巧3

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: