MAX+plusII简介

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MAX+plusII简介
第1节可编程器件与MAX+plusII简介
[学习要求]
熟悉常用逻辑器件的分类;了解常用可编程逻辑器件的内部结构;熟悉可编程逻辑器件的开发流程;掌握MAX+plusII软件。

[重点与难点]
重点:基于MAX+plusII软件进行PLD设计的流程。

难点:PLD的内部结构。

[理论内容]
一、可编程逻辑器件的基本概念
1、发展历程
当今社会是数字化的社会,是数字集成电路广泛应用的社会。

数字集成电路本身在不断地进行更新换代。

它由早期的电子管、晶体管、小中规模集成电路、发展到超大规模集成电路(VLSIC,几万门以上)以及许多具有特定功能的专用集成电路。

但是,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。

系统设计师们更愿意自己设计专用集成电路(ASIC)芯片,而且希望ASIC的设计周期尽可能短,最好是在实验室里就能设计出合适的ASIC芯片,并且立即投入实际应用之中,因而出现了现场可编程逻辑器件(FPLD),其中应用最广泛的当属现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。

FPGA(现场可编程门阵列)与 CPLD(复杂可编程逻辑器件)都是可编程逻辑器件,它们是在PAL,GAL等逻辑器件的基础之上发展起来的。

同以往的PAL,GAL等相比较,FPGA/CPLD的规模比较大,它可以替代几十甚至几千块通用IC芯片。

这样的FPGA /CPLD实际上就是一个子系统部件。

这种芯片受到世界范围内电子工程设计人员的广泛关注和普遍欢迎。

经过了十几年的发展,许多公司都开发出了多种可编程逻辑器件。

比较典型的就是Xilinx公司的FPGA器件系列和Altera 公司的CPLD器件系列,它们开发较早,占用了较大的PLD市场。

2、PLD的优点
FPGA/CPLD芯片都是特殊的ASIC芯片,它们除了具有ASIC的特点之外,还具有以下几个优点:
①随着VlSI(Very Large Scale IC,超大规模集成电路)工艺的不断提高单一芯片内
部可以容纳上百万个晶体管, FPGA/CPLD芯片的规模也越来越大,其单片逻辑门数已达到上百万门,它所能实现的功能也越来越强,同时也可以实现系统集成。

② FPGA/CPLD芯片在出厂之前都做过百分之百的测试,不需要设计人员承担投片风险和费用,设计人员只需在自己的实验室里就可以通过相关的软硬件环境来完成芯片的最终功能设计。

所以,FPGA /CPLD的资金投入小,节省了许多潜在的花费。

③用户可以反复地编程、擦除、使用或者在外围电路不动的情况下用不同软件就可实现不同的功能。

所以,用FPGA/PLD 试制样片,能以最快的速度占领市场。

FPGA /CPLD软件包中有各种输入工具和仿真工具,及版图设计工具和编程器等全线产品,电路设计人员在很短的时间内就可完成电路的输入、编译、优化、仿真,直至最后芯片的制作。

当电路有少量改动时,更能显示出FPGA/CPLD的优势。

电路设计人员使用FPGA/CPLD进行电路设计时,不需要具备专门的IC(集成电路)深层次的知识, FPGA /CPLD软件易学易用,可以使设计人员更能集中精力进行电路设计,快速将产品推向市场。

3、PLD的内部结构
尽管FPGA,CPLD和其它类型PLD的结构各有其特点和长处,但概括起来,它们是由三大部分组成的,
①一个二维的逻辑块阵列,构成了PLD器件的逻辑组成核心。

②输入/输出块:
③连接逻辑块的互连资源。

连线资源:由各种长度的连线线段组成,其中也有一些可编程的连接开关,它们用于逻辑块之间、逻辑块与输入/输出块之间的连接。

兰色:逻辑单元
红色:连线资源
黄色:输入输出块
图1 PLD有内部结构示意图
以基于乘积项(Product-T erm)的PLD为例来看看具体的内部结构。

采用这种结构的PLD芯片有:Altera的MAX7000,MAX3000系列(EEPROM工艺),Xilinx的XC9500系列(Flash工艺)和Lattice,Cypress的大部分产品(EEPROM工艺)
我们先看一下这种PLD的总体结构(以MAX7000为例,其他型号的结构与此都非常
相似):
图2 基于乘积项的PLD的内部结构总图
这种PLD可分为三块结构:宏单元(Marocell),可编程连线(PIA)和I/O控制块。


单元是PLD的基本结构,由它来实现基本的逻辑功能。

图2中兰色部分是多个宏单元的集
合(因为宏单元较多,没有一一画出)。

可编程连线负责信号传递,连接所有的宏单元。

I/O 控制块负责输入输出的电气特性控制,比如可以设定集电极开路输出,摆率控制,三态输出等。

图2左上的INPUT/GCLK1,INPUT/GCLRn,INPUT/OE1,INPUT/OE2 是全局时钟,清零和输出使能信号,这几个信号有专用连线与PLD中每个宏单元相连,信号到每个宏单元的延时相同并且延时最短。

宏单元的具体结构见下图:
图3 宏单元的具体结构图
左侧是乘积项阵列,实际就是一个与或阵列,每一个交叉点都是一个可编程熔丝,如果导通就是实现“与”逻辑。

后面的乘积项选择矩阵是一个“或”阵列。

两者一起完成组合逻辑。

图3右侧是一个可编程D触发器,它的时钟,清零输入都可以编程选择,可以使用专用的全局清零和全局时钟,也可以使用内部逻辑(乘积项阵列)产生的时钟和清零。

如果不需要触发器,也可以将此触发器旁路,信号直接输给PIA或输出到I/O脚。

4、乘积项结构PLD的逻辑实现原理
下面我们以一个简单的电路为例,具体说明PLD是如何利用以上结构实现逻辑的,电路如下图:
图4 简单的电路图
假设组合逻辑的输出(AND3的输出)为f,则f=(A+B)*C*(!D)=A*C*!D + B*C*!D ( 我们以!D表示D的“非”),则PLD将以下面的方式来实现组合逻辑f:
图5 PLD实现数字电路的框图
A,B,C,D由PLD芯片的管脚输入后进入可编程连线阵列(PIA),在内部会产生A,A反,B,B反,C,C反,D,D反8个输出。

图中每一个叉表示相连(可编程熔丝导通),所以得到:f= f1 + f2 = (A*C*!D) + (B*C*!D) 。

这样组合逻辑就实现了。

图4电路中D触发器的实现比较简单,直接利用宏单元中的可编程D触发器来实现。

时钟信号CLK由I/O 脚输入后进入芯片内部的全局时钟专用通道,直接连接到可编程触发器的时钟端。

可编程触发器的输出与I/O脚相连,把结果输出到芯片管脚。

这样PLD就完成了图4所示电路的功能。

(以上这些步骤都是由软件自动完成的,不需要人为干预)图4的电路是一个很简单的例子,只需要一个宏单元就可以完成。

但对于一个复杂的电路,一个宏单元是不能实现的,这时就需要通过并联扩展项和共享扩展项将多个宏单元相连,宏单元的输出也可以连接到可编程连线阵列,再做为另一个宏单元的输入。

这样PLD就可以实现更复杂逻辑。

这种基于乘积项的PLD基本都是由EEPROM和Flash工艺制造的,一上电就可以工作,无需其他芯片配合。

对用户而言,CPLD与FPGA的内部结构稍有不同,但用法一样,所以多数情况下,不加以区分。

二、基于MAX+plusII软件进行PLD的设计
1、设计流程
图6 利用MAX+plusII进行PLD设计的主要流程
2、具体的设计过程举例
采用原理图设计三人表决器,我们根据三人表决器的直值表,可以通过卡诺图化简可以得到:
L2=SW1SW2+SW1SW3+SW2SW3
(1)设计输入
①打开MAX+plusII
②新建一个图形文件:File菜单>new,新建文件时选择Graphic Editor file,点OK
③输入设计文件
我们现在在图形文件中输入电路,我们这个电路需要AND2、OR3、NOT三个逻辑门电路和输入输出端,你可以Symbol ->Enter Symbol(或者双击空白处)
弹出窗口:
在Symbol Name 中输入and2,点OK 。

同样可以加入or3、input 、output 、not 对input 、output ,鼠标左键双击PIN_NAME ,那么PIN_NAME 被选中,并且变黑,然后输把元件拖动到合适位置入你要改的名字,如SW1
,将光标放到元件的引线出,可以发现光标变为十字星,此时摁住左保存文件:
键就可以进行连线。

最后的电路图如下图

保存为majority_voter.gdf ,Automatic Extension 选.gdf ,把文件设为当前工程:FILE->PROJECT->SET PROJECT TO CURRENT FILE
AX+PLUS II 的标题条将显示新的项目名字
M
(2)编译设计文件号
片的型号,菜单①指定选用的器件型我们先要指定所用芯:
Assign->Device
如下图将弹出一窗口(注意把show only fastest speed grades 前的钩去掉,否则看不到EPM7128SLC84-15)
在Debice Family 中选择MAX7000S
DEVICE选择EPM7128SLC84-15
②指定芯片的管脚
Assign->Pin/Location/Chip(也可以在空白处点右键,选Assign->Pin/Location/Chip)
将弹出下图窗口:
在Node Name 中添入SW3
Chip Resource 下的Pin 中输入管脚41 指定以下管脚: pin
Pin type
在Pin type 中输入input 点
ADD
连后同样Node name
SW2 44 input SW1 45 input L1 10 output L2 9 output ③ 编译文件
ect->save&Compile File->Proj
此时可能弹出下图WARNING 窗口,提示“project has user pin or logic cell assignments, but never been compiled before. For best fitting results, let the compiler choose the first set of assignments instead”,这是因为在管脚指定之前没有compile ,你只要再点save & compile 就可以了
MAX+PLUS II 编译器将检查项目是否有错,并对项目进行逻辑综合,然后对设计进行布局布线,放到一个Altera 器件中,同时将产生报告文件、编程文件和用于时间仿真用的输出文件
逻辑综合:就是把HDL语言或原理图翻译成最基本的与或非门的连接关系
布局布线:把这种与或非门的连接关系用芯片的内部的可编程结构和连线来实现
如果设计正确,将下图所示,点确认
编译后可以看到IO在芯片上的分布:MAX+plusII-> Froorplan Editor
将弹出一窗口如下图
双击空白处,可以看到下图所示IO在芯片EPM7128SLC84上的
布局
(3)仿真设计文件
此过程主要是用软件来仿真你的设计,看看结果是否符合你的设计要求编译好以后,打开波形编辑器,MAX+PLUSII->Waveform Editor
载入端口,Node->Enter Nodes from SNF
将弹出下面窗口,你按下面步骤操作:
点List,将出现端口列表,你默认是选择全部,你也可以通过左键和Ctrl组合来选择你
想要的信号。

点=>将你的信号加入SNF文件中
点OK
为了方便观察,我们把信号展开
如果需要再次合并可以按住SHIFT键,用鼠标左键选上要合并的信号,再点右键->Enter Group
下面我们将对信号进行赋值,首先选中一个要赋值的信号区间,如SW3的10us到20us 范围,按住鼠标左键,在SW3的10us到20us的范围只能够那拉出一个黑色区域,松开鼠标左键,再点左边工具栏上的“1”,使这个时间段,SW3就被赋值为高电平,如下图:(注意时间不要选择太小,比如就选10ns,这样结果可能不对,因为电路的延迟可能就达到10ns)
你将其他信号按你希望的加上激励
在上面过程中,你可能要遇到下面设置:
Snap to Grid:鼠标按网格选取,用鼠标左键可以决定是否选取Show Grid:显示网格
Gride Size:设置网格大小(这个非常有用,在你一些设计中经常要改变网格大小,便于你选择)
End Time:设置仿真结束时间(这个在设计中也经常用到,否则默认的仿真时间只有1us)
下面是加激励后的波形(end time =200us,gride size=10us)
点FILE->PROJECT->save&simulate
这时会弹出保存窗口,我们保存为majority_voter.scf
点OK,将会防真,如果正确会弹出窗口(图)
点确认,再点open SCF,将出现防真后的波形
波形图显示的逻辑功能和设计目的完全一样,下面我们将把程序在线下载到芯片EPM7128SLC84-15中。

(4)下载设计到可编程器件中
点击菜单MAX+plusII ->programmer
将会弹出编程窗口:。

相关文档
最新文档