CPLD入门教程

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

目录
前言 (2)
第一章 MAX+plusII 软件和license的获得 (6)
第二章 MAX+plusII 软件的安装和license及驱动的设置
2.1 MAX+plusII 软件的安装 (7)
2.2 MAX+plusII 软件的license设置 (8)
2.3 MAX+plusII 软件的驱动设置 (12)
第三章用VHDL语言设计三人表决器
3.1打开MAX+plusII (22)
3.2新建VHDL文档 (23)
3.3输入设计文件 (24)
3.4保存文件 (25)
3.5检查编译 (27)
3.6创建symbol (32)
3.7波形防真 (33)
3.8下载验证 (40)
第四章用原理图输入的方式设计三人表决器 (47)
第五章用verilog-HDL语言设计三人表决器 (51)
前言
编写本入门教程(V1.2)的目点是为了让FPGA/CPLD初学者快速地入门。

该教程的特点是通过基本概念讲解和实际的例子来让初学者迅速了解FPGA/CPLD。

该教程是共享文件,可以复制、下载、转载,如果转载该文章请注明出处:;该教程未经许可,不得用于商业用途。

FPGA/CPLD是电子设计领域中最具活力和发展前途的一项技术,它的影响丝毫不亚于70年代单片机的发明和使用。

FPGA/CPLD的基本知识:
1.什么是FPGA/CPLD
FPGA (Field Programmable Gate Array)是现场可编程门阵列,CPLD是复杂的可编程逻辑器件(Complex Programmable Logic Device)的简称,不同厂家有不同的称呼,Xilinx把SRAM工艺,要外挂配置用的EEPROM的PLD叫FPGA,把Flash工艺(类似EEPROM工艺),乘积项结构的PLD叫CPLD; Altera把自己的PLD产品MAX系列(EEPROM工艺),FLEX/ACEX/APEX系列(SRAM工艺)都叫作CPLD,即复杂PLD(Complex PLD),由于FLEX/ACEX/APEX系列也是SRAM工艺,要外挂配置用的EPROM,用法和Xilinx的FPGA一样,所以很多人把Altera的FELX/ACEX/APEX系列产品也叫做FPGA.
但由于FPGA和CPLD功能基本相同,只是工艺和实现形式不同,所以初学者可以不要详细区分,我们可以统称为FPGA/CPLD。

2.FPGA/CPLD的用途:
FPGA/CPLD能做什么呢?可以毫不夸张的讲,FPGA/CPLD能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路,都可以用FPGA/CPLD来实现。

FPGA/CPLD如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法,或是硬件描述语言自由的设计一个数字系统。

通过软件仿真,我们可以事先验证设计的正确性。

在PCB 完成以后,还可以利用FPGA/CPLD的在线修改能力,随时修改设计而不必改动硬件电路。

使用FPGA/CPLD来开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。

FPGA/CPLD可以做数字IC设计的前端验证,用这种方式可以很大程度上降低IC设计的成本。

FPGA/CPLD的这些优点使得FPGA/CPLD技术在90年代以后得到飞速的发展,同时也大大推动了EDA软件和硬件描述语言(HDL)的进步
3.CPLD/FPGA的宏单元是怎么定义?一个宏单元对应多少门?
宏单元(或逻辑单元)是PLD/FPGA的最基本单元,不同产品对这种基本单元的叫法不同,如LE,MC,CLB,Slices等,但每个基本单元一般都包括两部分,一部分实现组合逻辑,另一部分实现时序逻辑。

各个厂家的定义可能不一样。

对ALTERA的芯片,每个基本单元含一个触发器;对Xilinx的部分芯片,每个基本单元单元含两个触发器。

一般不用“门”的数量衡量CPLD/FPGA的大小,因为各家对门数的算法不一样,象ALTERA和Xilinx对门的计算结果就差了一倍,推荐用触发器的多少来衡量芯片的大小。

如10万门的Xilinx的XC2S100
有1200个slices,即含2400个触发器;5万门的ALTERA的1K50则含2880个LE,即2880个触发器。

4. 如何如何学习FPGA/CPLD
其实FPGA/CPLD的使用很简单,学习FPGA/CPLD比学习单片机要简单的多,有数字电路基础,会使用计算机,就可以进行FPGA/CPLD的开发。

开发FPGA/CPLD需要了解两个部分:(1). FPGA/CPLD开发软件(2). FPGA/CPLD本身(芯片);另外最好配置开发系统(或实验板)
FPGA/CPLD软件已经发展的相当完善,用户甚至可以不用详细了解FPGA/CPLD的内部结构,也可以用自己熟悉的方法:如原理图输入或HDL语言来完成相当优秀的FPGA/CPLD设计。

所以对初学者,首先应简单了解FPGA/CPLD开发软件和开发流程。

本教程就是本着这种思想编写的。

了解FPGA/CPLD的内部结构,将有助于提高我们设计的效率和可靠性。

本手册以目前使用频率和资料最多的ALTERA公司的软件MAX+plusII10.2和芯片EPM7128SLC84-15为例子来讲述一个完整的CPLD/FPGA设计的全过程。

本手册中实验所需要到软件:max+plus10.2(第一章讲述来源);硬件:JX002开发套件(含CPLD芯片EPM7128)、PC、220V电源。

本手册的设计例子是一个很简单的实际例子:三人表决器。

采用
VHDL、Verilog-HDL和图形的方式(以VHDL为主),硬件采用JX002B 型实验板,你可以到下载JX002B型实验板的使用说明书。

三人表决器的功能描述:三个人分别用拨位开关SW1、SW2、SW3来表示自己的意愿,如果对某决议同意,各人就把自己的拨位开关拨到高电平(上方),不同意就把自己的拨位开关拨到低电平(下方)。

表决结果用LED(高电平亮)显示,如果决议通过那么实验板上L2(黄灯)亮;如果不通过那么实验板上L1(红灯)亮;如果对某个决议有任意二到三人同意,那么此决议通过,L2亮;如果对某个决议只有一个人或没人同意,那么此决议不通过,L1亮。

编者将在以后的业余时间编写QUARTUS软件的使用以及FPGA在IC设计中的应用。

该教程参考了FPGA中文网站的部分内容,在此表示感谢。

本手册仅供初学者使用。

由于编者水平有限,本手册难免有错误和不妥之处,恳请读者批评指正:fpga@.
2004.2
shanghai
第一章 MAX+plusII 软件和license的获得
你可以通过下面方式来获得MAX+plusII 软件:
A:到https:///login/signin.asp上登记、注册申请并下载(那是10.2的baseline版本的)。

B:到上下载(那是10.2的BASELINE 版本的)
C:和fpga@联系
使用MAX+plusII 软件你需要license.dat文件,你可以到上下载
第二章 MAX+plusII 软件的安装和license、驱动的设置2.1 MAX+plusII 软件的安装
如果是baseline10.2版本,直接双击下图的图表,按提示安装
如果是10.2完全版,双击下图中的setup.exe可执行文件,按提示安装
其他版本也都是双击可执行文件*.exe
安装后,在开始->程序->altera(或MAX+plusII)中将看到MAX+plusII的图标
安装后请按下面步骤进行。

2.2 MAX+plusII 软件的license设置
安装完成后,将license文件拷贝到硬盘的任何一个目录,连后按下面过程设置(下面是英文原文,仅WIN2000翻译成中文了),另外根据我们的使用经验,安装后直接在软件中的设置就可以了,如下面两图所示:
连后在对话框中填入license.dat所在路径(不要出现中文),点OK
就可以了
官方标准设置如下:
Setting up Licensing in Windows NT
To specify the license file in the Windows NT Control Panel, follow these steps:
1)choose Settings > Control Panel from the Windows Start menu. 2)Double-click the System icon in the Control Panel window. 3)Click the Environment tab in the System Properties dialog box.
4)Click the System Variable list to highlight it, and then in the Variable box, type LM_LICENSE_FILE.
5)Type <path to license file>\license.dat in the Value box.
Example: C:\maxplus\license.dat
6)Click SET, and then click OK.
7)You can now run the Altera software.
Setting Up Licensing in Windows 2000
在WINDOWS2000中设置licensing
To specify the license file in the Windows 2000 Control Panel, follow these steps:
在Windows 2000中设置license文件,按下面流程:
choose Settings > Control Panel from the Windows Start menu. 从WINDOWS开始菜单中选择设置>控制面板
Double-click the System icon in the Control Panel window. 在控制面板上双击系统
Click the Advanced tab in the System Properties dialog box. 点系统特性中的高级
Click the Environment Variables button.
点环境变量
Click the System Variable list to highlight it, and then click New.
点系统变量,连后点新建
Type LM_LICENSE_FILE in the Variable box.
在变量名中填LM_LICENSE_F
Type <path to license file>\license.dat in the Value box.
Example: C:\MAXPLUS\license.dat
在变量值中填上license所在路径,
如C:\MAXPLUS\license.dat
Click OK.
点确认
You can now run the Altera software.
你可以使用 Altera软件了
Setting up Licensing in Windows 98
To specify the license file in Windows 98, follow these steps: pen your PC's autoexec.bat file with a text editor.
Type the following environment variable on its own line in the autoexec.bat file: set LM_LICENSE_FILE=<path to license file>\license.dat.
Example: set LM_LICENSE_FILE=C:\maxplus\license.dat
Save the autoexec.bat file.
Restart the PC.
You can now run the Altera software.
2.3 MAX+plusII 软件的驱动设置
在Win98下运行MAX+plusII可以自动检测到ByteBlasterMV(ByteBlaster)下载电缆,但在WIN2000、WINXP、WINNT下无法自动检测到它的存在。

如何在WIN2000、WINNT和WINXP 平台下安装使用ByteBlasterMV并口下载电缆呢?
WIN2000
1)在控制面板中选择“添加/删除硬件”
2)选择“添加/排除设备故障”,下一步
3)选择“添加新设备”,下一步
4)选择“否,从列表中选择硬件”
5)选择“声音、视频和游戏控制器”,下一步
6)选择“从磁盘安装”,下一步
7)在MaxPlus2->Drivers->Win2000下选择inf文件,
8)选择“Altera ByteBlaster”,按下“下一步”开始安装,安装完毕,需要重新启动电脑才能使新设备生效
(在安装过程中可能会出现没有找到“数字签名”的提示,我们不去理会,不影响使用;如果你WIN2000的SP太低,安装中可能还会出现需要pgdhdlc.dll文件,你在你安装目录下maxplus2/drivers/win2000下可以找到pgdhdlc.dll)
WINXP添加驱动:
先切换到经典视图
(不切换可能界面和下面有点区别,但同样可以安装)1)在控制面板中选择“添加硬件”
2)选择“添加硬件向导”,下一步
3)选择“是,硬件已连接好”,下一步
4)选择“添加新的硬件设备”
5)选择“安装我手动从列表中选择的硬件”
6)选择“声音、视频和游戏控制器”,下一步
7)选择“从磁盘安装”,下一步
8)在MaxPlus2->Drivers->Win2000下选择inf文件,
9)在如下对话框中选择“Altera ByteBlaster”,按下“下一步”开始安装,安装完毕,需要重新启动电脑才能使新设备生效NOTE:
在安装最后,可能会提示“WINXP不支持此驱动,继续安装可能会导致系统崩溃”,这并不影响使用,你选择继续安装,我们经过了10台电脑以上的测试,并咨询过ALTERA。

WINNT
1)在“控制面板”中双击“多媒体”,显示如下窗口:
2)按下“添加”按钮,显示如下窗口:
3)选择“未列出或已更新的驱动程序”,按下“确定”,在弹出的对话框中选择驱动程序所在的位置,即MaxPlus安装目录下的Drivers 子目录
4)按下“确定”,提示可以安装如下新的驱动程序:
5)选择Altera ByteBlaster,按下确定键。

至此,在MaxPlus中就可以看到该编程器了。

第三章用VHDL语言设计三人表决器
3.1打开MAX+plusII
在开始菜单内选择 MAX+PLUS II 项,开始运行 MAX+PLUS II(如下图)
你最好把图标放到桌面上,以后直接双击MAX+PLUS II图标就可以运行软件了
在MAX+PLUS II上点右键,选择发送到->桌面快捷方式(如下图),那么你桌面上就看到MAX+PLUS II了。

3.2新建VHDL文档
(图形和verilog-HDL设计的过程见后面的部分)
FILE->NEW
或者点下图的新建图标:
连后选择Text Editor File文件,点OK如下图
3.3输入设计文件
在文本窗口中输入以下VHDL源程序:
--Designed by ,
--you can download all the file from
--Any question contact with fpga@ please have fun! --*********************************************
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
--*********************************************
ENTITY majority_voter IS
PORT(SW : IN std_logic_vector(3 DOWNTO 1);
L : OUT std_logic_vector(2 DOWNTO 1));
--L2 is a yellow LED AND L1 is a RED LED
END majority_voter;
--********************************************* ARCHITECTURE concurrent OF majority_voter IS
BEGIN
WITH SW SELECT
L <= "10" WHEN "011",
"10" WHEN "101",
"10" WHEN "110",
"10" WHEN "111",
"01" WHEN OTHERS;
END concurrent;
--*********************************************
如下图
3.4保存文件
FILE->SAVE,或点工具栏上的存盘符号
存盘符号
把文件保存为majority_voter.vhd(路径中不要有中文字符,Automatic Extension选.vhd)
把文件设为当前文件:FILE->PROJECT->SET PROJECT TO CURRENT FILE
MAX+PLUS II的标题条将显示新的项目名字
3.5检查编译
先指定下载的芯片型号,
Assign->Device
如下图
将弹出一窗口
(注意把show only fastest speed grades前的钩去掉,否则看不到EPM7128SLC84-15)
在Debice Family 中选择MAX7000S
DEVICE选择EPM7128SLC84-15
再指定芯片的管脚(也就是把你设计的I/O口如L1,L2指定到芯片对应的管脚上如10,9)
Assign->Pin/Location/Chip(也可以在空白处点右键,选
Assign->Pin/Location/Chip)
将弹出下图窗口:
在Node Name 中添入SW3
Chip Resource 下的Pin中输入管脚41
在Pin type中输入input
点ADD
连后同样指定以下管脚:
Node name pin Pin type
SW2 44 input
SW1 45 input
L1 10 output L2 9 output
在加完L2后点OK
(编译后可以看到IO在芯片上的分布:MAX+plusII-> Froorplan Editor,具体见在编译后面
的讲解)
编译文件
File->Project->save&Compile
此时可能弹出下图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 编译器将检查项目是否有错,并对项目进行逻辑综合,,同时将产生报告文件、编程文件和用于时间仿真用的输出文件
如果设计正确,将下图所示,点确认
编译后可以看到I/O在芯片上的分布:MAX+plusII-> Froorplan Editor
将弹出一窗口如下图
双击任一图,可以看到下图所示I/O在芯片EPM7128SLC84上的布局
3.6创建一个设计的符号
(和本设计无关,仅供其他设计调用)
在File菜单中选择 Create Default Symbol 项,即可创建一个设计的符号。

该符号可被高层设计调用。

此时会产生一个COMPILE窗口,直接点Start,完成后点确认
3.7波形防真
此过程主要是用软件来防真模拟你的设计,看是否符合你所想要的逻辑
打开波形编辑器,MAX+PLUSII->Waveform Editor
载入端口,Node->Enter Nodes from SNF
将弹出下面窗口,你按下面步骤操作:
点List,将出现端口列表,你默认是选择全部,你也可以通过左键和Ctrl组合来选择你想要的信号。

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

3.8下载验证
(注意:本次实验采用的JX002B实验板已经将下载电缆的电路都做在了实验板上,所以只需要一根并口延长线即可,实际使用中一般都使用标准的下载电缆(ByteblasterMV、ByteblasterII)和并口相连,下载电缆再和CPLD芯片相连)
在下载前,还要进行以下步骤:
A:将JX002B实验板的电源开关拨到OFF(上方)
B:将并口下载电缆母端插到JX002B实验的25针下载口上,并口电缆公端插到电脑的打印口上,参考下面四张图(不可能插错,否则插不上)
并口下载电缆母端
并口电缆公端
JX002B实验的25针下载口
电脑的25孔打印口
C:将稳压电源(内正外负)一端插到220V电源上,另一断插到JX002B实验板电源口上
稳压电源220V端
稳压电源和实验板连接端
下载电缆和电源都连接好后的图:
你也可以用开关电源(红线为正,黑线为负),如下图,但此时电源开关不起作用,由开关电源的开关控制,跳过D
D:把电源开关拨到ON,打开电源
点MA+plusII->programmer
将会弹出编程窗口:
我们现在先要选择适当的编程器:
Option->Hardware Setup(一定要打开编程窗口才可以看到这些设置)
设置如下:Hardware Type选择ByteBlaster[MV]
(有些电脑看不道LPT1:,可能是并口被屏闭掉了,你需要在CMOS 状态下设置)
点击图中的Program,将看到红条不断添满状态条,最后弹出编程成功的窗口,如图
点OK
现在你就可以通过JX002B上的硬件资源来验证表决器功能是否正确,按下表的拨位开关SW1、SW2、SW3状态来进行完全测试
SW1 SW2 SW3 L1 L12 0 0 0 亮不亮
0 0 1 亮不亮
0 1 0 亮不亮
0 1 1 不亮亮
1 0 0 亮不亮
1 0 1 不亮亮
1 1 0 不亮亮
1 1 1 不亮亮
通过测试,设计的表决器功能完全正确
第四章用原理图输入的方式设计三人表决器
我们根据直值表可以通过卡诺图化简可以得到:
L2=SW1SW2+SW1SW3+SW2SW3
L1=_L2
那么我们可以在MAX+plusII中用原理图实现上面的三人表决器
下面仅把和VHDL不同的详细写下,相同或基本相同的就一带而过,你可以参考VHDL设计部分:
(1)打开MAX+plusII
(2)新建一个图形文件
新建文件时选择Graphic Editor file)
点OK
(3)输入设计文件
我们现在在图形文件中输入电路,我们这个电路需要AND2、OR3、NOT 三个逻辑门电路和输入输出端,你可以
Symbol ->Enter Symbol(或者双击图形文件空白处)
弹出窗口:
在Symbol Name中输入and2,点OK
同样可以加入or3、input、output、not
对input、output,鼠标左键双击PIN_NAME,那么PIN_NAME被选种,输入你要改的名字,如SW1
最后的电路图如下图
(4)保存文件:
保存为majority_voter.gdf,Automatic Extension选.gdf 并把文件设为当前文件
(5)检查编译
指定下载的芯片型号
指定芯片的管脚
此时的图形为:
下图为SW3放大的图,其中majority_voter@41中前部分为设计的文件名,后面41为EPM7128SLC84-15的41脚,也就是说电路图中SW3被指定到EPM7128SLC84-15的41脚(而实验板上41脚被连接到拨位开关SW1上了,这样电路图上SW3就和实验板上的硬件SW3实现了连接)。

再编译文件
(6)创建symbol(和本设计无关,仅供其他设计调用)
(7)波形防真
(8)下载验证。

相关文档
最新文档