《CPLD设计实例》由会员分享,可在线阅读,更多相关《CPLD设计实例(48页珍藏版)》请在金锄头文库上搜索。
1、CPLD/FPGA 设计实例手册 目录 目录 前言 2 第一章 MAX+plusII 软件和 license 的获得 4 第二章 MAX+plusII 软件的安装和 license、驱动的设置 2.1 MAX+plusII 软件的安装 5 2.2 MAX+plusII 软件的 license 设置 6 2.3 MAX+plusII 软件的驱动设置10 第三章 用 VHDL 语言设计三人表决器 3.1 打开 MAX+plusII 19 3.2 新建 VHDL 文档 20 3.3 输入设计文件21 3.4 保存文件22 3.5 检查编译24 3.6 创建 symbol26 3.7 波形防真30 3
2、.8 下载验证36 第四章 用原理图输入的方式设计三人表决器46 第五章 用 verilog-HDL 语言设计三人表决器47 Download from ,written by Caijs 1CPLD/FPGA 设计实例手册 前言 前言 FPGA/CPLD 是电子设计领域中最具活力和发展前途的一项技术,它的影响丝毫不亚于 70 年代单片机的发明和使用。 CPLD 是复杂的可编程逻辑器件(Complex Programable Logic Device)的简称,FPGA 是可编程门现场可编程门阵列,不同厂家有不同的称呼,Xilinx 把 SRAM 工艺,要外挂配置用的 EPROM 的 PLD
3、叫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 功能基本相同,只是工艺和实现形式不同,所以初学者可以不要详细区
4、分,我们可以统称为 FPGA 或 CPLD。 本手册以目前使用频率和资料最多的 ALTERA 公司的软件MAX+plusII 和芯片 EPM7128SLC84-15 为例子来讲述一个完整的CPLD/FPGA 设计的全过程。 本手册的设计例子是三人表决器,采用 VHDL、Verilog-HDL 和图形的方式,硬件采用 JX002B 型实验板 ,你可以到 下载 JX002B 型实验板的使用说明书。 三人表决器的功能描述:三个人分别用指拨开关 SW1、SW2、SW3来表示自己的意愿,如果对某决议同意,各人就把自己的指拨开关拨Download from ,written by Caijs 2CPL
5、D/FPGA 设计实例手册 到高电平(上方) ,不同意就把自己的指拨开关拨到低电平(下方) 。表决结果用 LED(高电平亮)显示,如果决议通过那么实验板上 L2(黄灯)亮;如果不通过那么实验板上 L1(红灯)亮;如果对某个决议有任意二到三人同意,那么此决议通过,L2 亮;如果对某个决议只有一个人或没人同意,那么此决议不通过,L1 亮。 本手册仅供初学者使用。由于编者水平有限,本手册难免有错误和不妥之处,恳请读者批评指正:. 2004.1 shanghai Download from ,written by Caijs 3CPLD/FPGA 设计实例手册 第一章 MAX+plusII 软件和
6、license 的获得 第一章 MAX+plusII 软件和 license 的获得 你可以通过下面方式来获得 MAX+plusII 软件: A:到 https:/ 上 登记、注册申请并下载(那是 10.2 的 baseline 版本的) 。 B:到 上下载 C:到 或 上搜索并下载 D:和 联系 使用 MAX+plusII 软件你需要 LICENSE.DAT 文件,你可以到 上下载 Download from ,written by Caijs 4CPLD/FPGA 设计实例手册 第二章 MAX+plusII 软件的安装和 license、驱动的设置 第二章 MAX+plusII
7、软件的安装和 license、驱动的设置 2.1 MAX+plusII 软件的安装 2.1 MAX+plusII 软件的安装 如果是 baseline10.2 版本,直接双击下图的图表,按提示安装 如果是 10.2 完全版,双击下图中的 setup.exe 可执行文件,按提示安装 其他版本也都是双击可执行文件*.exe 安装后,在开始开始-程序程序-alteraaltera 中将看到 MAX+plusII 的图标 安装后请按下面步骤进行。 Download from ,written by Caijs 5CPLD/FPGA 设计实例手册 2.2 MAX+plusII 软件的 license
8、设置 2.2 MAX+plusII 软件的 license 设置 安装完成后,将 license 文件拷贝到硬盘的任何一个目录,连后按下面过程设置(下面是英文原文,仅 WIN2000 翻译成中文了) ,另外根据我们的使用经验,安装后直接在软件中的设置就可以了,如下面两图所示: Download from ,written by Caijs 6CPLD/FPGA 设计实例手册 连后在对话框中填入 license.dat 所在路径(不要出现中文) 官方标准设置如下: 官方标准设置如下: Setting up Licensing in Windows NT Setting up Licensing
9、 in Windows NT To specify the license file in the Windows NT Control Panel, follow these steps: 1)choose SettingsSettings Control PanelControl Panel from the Windows Start menu. 2)Double-click the SystemSystem icon in the Control PanelControl Panel window. 3)3)Click the EnvironmentEnvironment tab in
10、 the System PropertiesSystem Properties dialog box. 4)Click the System VariableSystem Variable list to highlight it, and then in the Variable box, type LM_LICENSE_FILE. 5)Type license.dat in the ValueValue box. Example:Example: C: maxplus license.dat 6)Click SETSET, and then click OKOK. 7)You can no
11、w run the Altera software. Setting Up Licensing in Windows 2000Setting Up Licensing in Windows 2000 在 WINDOWS2000 中设置 licensing 在 WINDOWS2000 中设置 licensing To specify the license file in the Windows 2000 Control Panel, follow these steps: 在 Windows 2000 中设置 license 文件,按下面流程: choose SettingsSettings
12、Control PanelControl Panel from the Windows Start menu. Download from ,written by Caijs 7CPLD/FPGA 设计实例手册 从 WINDOWS 开始开始菜单中选择设置设置控制面板 控制面板 Double-click the SystemSystem icon in the Control PanelControl Panel window. 在控制面板控制面板上双击系统 系统 Click the AdvancedAdvanced tab in the System PropertiesSystem Pro
13、perties dialog box. 点系统特性系统特性中的高级 高级 Click the Environment VariablesEnvironment Variables button. 点环境变量 环境变量 Click the System VariableSystem Variable list to highlight it, and then click NewNew. 点系统变量系统变量,连后点新建 新建 Type LM_LICENSE_FILE in the VariableVariable box. 在变量名变量名中填 LM_LICENSE_F Type license.
14、dat in the Value box. Example:Example: C: MAXPLUS license.dat 在变量值变量值中填上 license 所在路径, 如 C: MAXPLUS license.dat Click OKOK. 点确认 确认 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: Download from ,w
15、ritten by Caijs 8CPLD/FPGA 设计实例手册 pen your PCs autoexec.batautoexec.bat file with a text editor. Type the following environment variable on its own line in the autoexec.batautoexec.bat file: set LM_LICENSE_FILE= license.dat. Example:Example: set LM_LICENSE_FILE=C: maxplus license.dat Save the autoex
16、ec.batautoexec.bat file. Restart the PC. You can now run the Altera software. Download from ,written by Caijs 9CPLD/FPGA 设计实例手册 2.3 MAX+plusII 软件的驱动设置 2.3 MAX+plusII 软件的驱动设置 在 Win98 下运行 MAX+plusII 可以自动检测到 ByteBlasterMV(ByteBlaster)下载电缆,但在 WIN2000、WINXP 下无法自动检测到它的存在。如何在 WIN2000 和 WINXP 平台下安装使用ByteBl
17、asterMV 并口下载电缆呢? WIN2000 WIN2000 1)在控制面板中选择“添加/删除硬件” 2)选择“添加/排除设备故障”,下一步 Download from ,written by Caijs 10CPLD/FPGA 设计实例手册 3)选择“添加新设备”,下一步 4)选择“否,从列表中选择硬件” Download from ,written by Caijs 11CPLD/FPGA 设计实例手册 5)选择“声音、视频和游戏控制器”,下一步 6)选择“从磁盘安装”,下一步 Download from ,written by Caijs 12CPLD/FPGA 设计实例手册
18、7)在 MaxPlus2-Drivers-Win2000 下选择 inf 文件, 8)选择“Altera ByteBlaster”,按下“下一步”开始安装,安装完毕,需要重新启动电脑才能使新设备生效 Download from ,written by Caijs 13CPLD/FPGA 设计实例手册 WINXP 添加驱动:WINXP 添加驱动: 先切换到经典视图 (不切换可能界面和下面有点区别,但同样可以安装) 1)在控制面板中选择“添加硬件” Download from ,written by Caijs 14CPLD/FPGA 设计实例手册 2)选择“添加硬件向导”,下一步 3)选择“
19、是,硬件已连接好”,下一步 Download from ,written by Caijs 15CPLD/FPGA 设计实例手册 4)选择“添加新的硬件设备” 5)选择“安装我手动从列表中选择的硬件” Download from ,written by Caijs 16CPLD/FPGA 设计实例手册 6)选择“声音、视频和游戏控制器”,下一步 7)选择“从磁盘安装”,下一步 Download from ,written by Caijs 17CPLD/FPGA 设计实例手册 8)在 MaxPlus2-Drivers-Win2000 下选择 inf 文件, 9)在如下对话框中选择“Alt
20、era ByteBlaster”,按下“下一步”开始安装,安装完毕,需要重新启动电脑才能使新设备生效 NOTE: 在安装最后,可能会提示“WINXP 不支持此驱动,继续安装可能会导致系统崩溃” ,这并不影响使用,你选择继续安装,我们经过了 10 台电脑以上的测试,并咨询过 ALTERA。 Download from ,written by Caijs 18CPLD/FPGA 设计实例手册 第三章 用 VHDL 语言设计三人表决器 第三章 用 VHDL 语言设计三人表决器 3.1 打开 MAX+plusII 3.1 打开 MAX+plusII 在 开始 开始 菜单内选择 MAX+PLUS II
21、 项, 开始运行 MAX+PLUS II(如下图) 你最好把图标放到桌面上, 以后直接双击 MAX+PLUS II 图标就可以运行软件了 在 MAX+PLUS II 上点右键,选择发送到发送到-桌面快捷方式桌面快捷方式(如下图) ,那么你桌面上就看到 MAX+PLUS II 了。 Download from ,written by Caijs 19CPLD/FPGA 设计实例手册 3.2 新建 VHDL 文档3.2 新建 VHDL 文档 (图形和 verilog-HDL 设计的过程见后面的部分) FILEFILE-NEW NEW 或者点下图的新建图标: 连后选择 Text Editor Fi
22、le 文件,点 OKOK 如下图 Download from ,written by Caijs 20CPLD/FPGA 设计实例手册 3.3 输入设计文件 3.3 输入设计文件 在文本窗口中输入以下 VHDL 源程序: -Designed by http:/ -Any question contact with 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 : OU
23、T 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 SAVE,SAVE,或点工具栏上的存盘符号 存盘符号 把文件保存为 majority_voter.vhd(路径中不要有中文字符,Automatic Extension 选.vhd) Download from ,written by Caijs 22CPLD/FPGA 设
24、计实例手册 把文件设为当前文件:FILEFILE-PROJECTPROJECT-SET PROJECT TO CURRENT FILE SET PROJECT TO CURRENT FILE MAX+PLUS II 的标题条将显示新的项目名字 Download from ,written by Caijs 23CPLD/FPGA 设计实例手册 3.5 检查编译3.5 检查编译 先指定下载的芯片型号, AssignAssign-DeviceDevice 如下图 将弹出一窗口 (注意把 show only fastest speed grades 前的钩去掉,否则看不到EPM7128SLC84-
25、15) 在 Debice Family 中选择 MAX7000S DEVICE 选择 EPM7128SLC84-15 再指定芯片的管脚(也就是把你设计的 IO 口如 L1,L2 指定到芯片对应的管脚上如 10,9) AssignAssign-Pin/Location/ChipPin/Location/Chip(也可以在空白处点右键,选Download from ,written by Caijs 24CPLD/FPGA 设计实例手册 AssignAssign-Pin/Location/Chip)Pin/Location/Chip) 将弹出下图窗口: 在 Node Name 中添入 SW3 C
26、hip Resource 下的 Pin 中输入管脚 41 在 Pin type 中输入 input 点 ADD 连后同样指定以下管脚: Node name pin Pin type SW2 44 input Download from ,written by Caijs 25CPLD/FPGA 设计实例手册 SW1 45 input L1 10 output L2 9 output 在加完 L2 后点 OK (编译后可以看到 IO 在芯片上的分布:MAX+plusII- Froorplan Editor,具体见在编译后面的讲解) 编译文件 FileFile-ProjectProject-sa
27、ve&Compile 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 就可以了 Download from ,written by Caijs 26C
28、PLD/FPGA 设计实例手册 MAX+PLUS II 编译器将检查项目是否有错,并对项目进行逻辑综合,然后配置到一个 Altera 器件中,同时将产生报告文件、编程文件和用于时间仿真用的输出文件 如果设计正确,将下图所示,点确认 编译后可以看到 IO 在芯片上的分布:MAX+plusIIMAX+plusII- Froorplan Editor Froorplan Editor Download from ,written by Caijs 27CPLD/FPGA 设计实例手册 将弹出一窗口如下图 双击任一图,可以看到下图所示 IO 在芯片 EPM7128SLC84 上的布局 Downloa
29、d from ,written by Caijs 28CPLD/FPGA 设计实例手册 3.6 创建一个设计的符号 3.6 创建一个设计的符号 (和本设计无关,仅供其他设计调用) 在 FileFile 菜单中选择 Create Default Symbol Create Default Symbol 项,即可创建一个设计的符号。该符号可被高层设计调用。 此时会产生一个 COMPILE 窗口,直接点 Start,完成后点确认 Download from ,written by Caijs 29CPLD/FPGA 设计实例手册 3.7 波形防真 此过程主要是用软件来防真模拟你的设计, 看是否符
30、合你所想要的逻辑 打开波形编辑器,MAX+PLUSII-Waveform Editor Download from ,written by Caijs 30CPLD/FPGA 设计实例手册 载入端口,Node-Enter Nodes from SNF 将弹出下面窗口,你按下面步骤操作: 点 List,将出现端口列表,你默认是选择全部,你也可以通过左键和Ctrl 组合来选择你想要的信号。 点=将你的信号加入 SNF 文件中 点 OK Download from ,written by Caijs 31CPLD/FPGA 设计实例手册 为了方便观察,我们把信号展开 如果需要再次合并可以按住 S
31、HIFT 键,用鼠标左键选上要合并的信号,再点右键-Enter Group 按下鼠标左键,拉上你要加激励的信号,比如 SW3 的 10us 到 20us,再点左边工具栏上的“1” ,使这个时间段,SW3 为高电平,那么 SW3的 20ns 到 70ns 段将为高电平,如下图: Download from ,written by Caijs 32CPLD/FPGA 设计实例手册 (注意时间不要选择太小,比如就选 10ns,这样结果可能不对,因为电路的延迟可能就达到 10ns) 你将其他信号按你希望的加上激励 在上面过程中,你可能要遇到下面设置: Snap to Grid:鼠标按网格选取,用鼠标
32、左键可以决定是否选取 Show Grid:显示网格 Gride Size: 设置网格大小(这个非常有用,在你一些设计中经常要改变网格大小,便于你选择) Download from ,written by Caijs 33CPLD/FPGA 设计实例手册 End Time:设置结束时间(这个在设计中也经常用到) 下面是加激励后的波形(end time =200us,gride size=10us) 点 FILE-PROJECT-save&simulate Download from ,written by Caijs 34CPLD/FPGA 设计实例手册 这时会弹出保存窗口,我们保存为 ma
33、jority_voter.scf 点 OK,将会防真,如果正确会弹出窗口(图) Download from ,written by Caijs 35CPLD/FPGA 设计实例手册 点确认,再点 open SCF,将出现防真后的波形 波形图显示的逻辑功能和设计目的完全一样, 下面我们将把程序在线下载到芯片 EPM7128SLC84-15 中。 Download from ,written by Caijs 36CPLD/FPGA 设计实例手册 3.8 下载验证 3.8 下载验证 在下载前,还要进行以下步骤: A:将 JX002B 实验板的电源开关拨到 OFF(上方) B:将并口下载电缆母端
34、插到 JX002B 实验的 25 针下载口上,并口电缆公端插到电脑的打印口上,参考下面四张图(不可能插错,否则插不上) 并口下载电缆母端 并口电缆公端 Download from ,written by Caijs 37CPLD/FPGA 设计实例手册 JX002B 实验的 25 针下载口 电脑的 25 孔打印口 C:将稳压电源(内正外负)一端插到 220V 电源上,另一断插到 JX002B 实验板电源口上 稳压电源 220V 端 Download from ,written by Caijs 38CPLD/FPGA 设计实例手册 稳压电源和实验板连接端 下载电缆和电源都连接好后的图: 你
35、也可以用开关电源,如下图,但此时电源开关不起作用,由开关电源的开关控制,跳过 D Download from ,written by Caijs 39CPLD/FPGA 设计实例手册 D:把电源开关拨到 ON,打开电源 点 MA+plusIIMA+plusII-programmerprogrammer 将会弹出编程窗口: Download from ,written by Caijs 40CPLD/FPGA 设计实例手册 我们现在先要选择适当的编程器: OptionOption-Hardware SetupHardware Setup(一定要打开编程窗口才可以看到这些设置) 设置如下:Ha
36、rdware TypeHardware Type 选择 ByteBlasterMV Download from ,written by Caijs 41CPLD/FPGA 设计实例手册 点击图 中的 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 不
37、亮 亮 1 1 1 不亮 亮 通过测试,设计的表决器功能完全正确 Download from ,written by Caijs 42CPLD/FPGA 设计实例手册 第四章 用原理图输入的方式设计三人表决器 第四章 用原理图输入的方式设计三人表决器 我们根据直值表可以通过卡诺图化简可以得到: L2=SW1SW2+SW1SW3+SW2SW3 L1=_L1 那么我们可以在 MAX+plusII 中用原理图实现上面的三人表决器 下面仅把和 VHDL 不同的详细写下,相同或基本相同的就一带而过: (1)打开 MAX+plusII (2)新建一个图形文件 新建文件时选择 Graphic Editor
38、 file 点 OK (3)输入设计文件 我们现在在图形文件中输入电路,我们这个电路需要 AND2、OR3、NOT三个逻辑门电路和输入输出端,你可以 Symbol -Enter Symbol(或者双击空白处) Download from ,written by Caijs 43CPLD/FPGA 设计实例手册 弹出窗口: 在 Symbol Name 中输入 and2,点 OK 同样可以加入 or3、input、output、not 对 input、output,鼠标左键双击 PIN_NAME,那么 PIN_NAME 被选种,输入你要改的名字,如 SW1 Download from ,wri
39、tten by Caijs 44CPLD/FPGA 设计实例手册 最后的电路图如下图 (4)保存文件: 保存为 majority_voter.gdf,Automatic Extension 选.gdf 并把文件设为当前文件 (5)检查编译 指定下载的芯片型号 指定芯片的管脚 Download from ,written by Caijs 45CPLD/FPGA 设计实例手册 此时的图形为: 下图为 SW1 放大的图, 其中 majority_voter41 中前部分为设计的文件名,后面 41 为 EPM7128SLC84-15 的 41 脚,也就是说电路图中 SW1被指定到 EPM7128S
40、LC84-15 的 41 脚 (而实验板上 41 脚被连接到指拨开关 SW1 上了, 这样电路图上 SW1 就和实验板上的硬件 SW1 实现了连接) 。 再编译文件 (6)创建 symbol(和本设计无关,仅供其他设计调用) (7)波形防真 (8)下载验证 Download from ,written by Caijs 46CPLD/FPGA 设计实例手册 第六章 用 verilog-HDL 语言设计三人表决器 下面仅把和 VHDL 不同的详细写下,相同或基本相同的就一带而过: (1)打开 MAX+plusII (2)新建 verilog-HDL 文档 新建一个 verilog-HDL 文件
41、(Text Editor File 类型) (3)输入设计文件 其中 SW12,SW13,SW23 为中间变量 /Designed by http:/ /Any question contact with please have fun! /* module majority_voter(SW1,SW2,SW3,L1,L2); output L1,L2; input SW1,SW2,SW3; and(SW12,SW1,SW2); and(SW13,SW1,SW3); and(SW23,SW2,SW3); or(L2,SW12,SW13,SW23); /SW12、SW23、SW13 是中间变量 not(L1,L2); endmodule Download from ,written by Caijs 47CPLD/FPGA 设计实例手册 (4)保存文件 (4)保存文件 保存为 majority_voter.v,注意 Automatic Extension 选.v 并把文件设为当前文件 (5)检查编译 指定下载的芯片型号 指定芯片的管脚 再编译文件 (6)创建一个设计的符号 (和本设计无关,仅供其他设计调用) (7)波形防真 (8)下载验证 Download from ,written by Caijs 48