pld设计方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
10分钟学会PLD设计
睿浩电子
今天我们将带领大家完成你的第一个PLD设计,即使你从没有接触过PLD,也可以让你可以在十分种之内初步学会PLD设计!不信?呵呵我们慢慢往下看。
实验目的
我们分别采用VHDL、Verilog-HDL和原理图输入方式设计一个简单的三人表决器,,并下载到PLD实验板进行实际运行。
三人表决器的功能描述:三个人分别用手指拨动开关SW1、SW2、SW3来表示自己的意愿,如果对某决议同意,各人就把自己的指拨开关拨到高电平(上方),不同意就把自己的指拨开关拨到低电平(下方)。表决结果用LED(高电平亮)显示,如果决议通过那么实验板上L2(黄灯)亮;如果不通过那么实验板上L1(红灯)亮;如果对某个决议有任意二到三人同意,那么此决议通过,L2亮;如果对某个决议只有一个人或没人同意,那么此决议不通过,L1亮
功能虽然简单,但是大家可以从这个实验中学习到PLD的设计输入,仿真,下载等一个完整过程。
软件准备
本次实验采用Max+plusII 10.2 软件,首先我们需要下载免费软件并安装license。对于WindowsNT/2000/XP,还需要安装下载电缆的驱动程序。
>> 软件安装和license的获取请点击此处
>> 安装下载电缆的驱动程序请点击此处
硬件准备
PC机一台,JX002B型实验板,电源,下载电缆
软硬件均准备好以后,就可以开始我们的设计了。在三种输入方式中,你也可以先只看一种,比如原理图方式或者VHDL方式,然后可以直接看2-4章的内容
10分钟学会PLD设计
1 设计输入
1.1 采用原理图设计三人表决器
我们根据三人表决器的直值表,可以通过卡诺图化简可以得到:
L2=SW1SW2+SW1SW3+SW2SW3
L1=_L2
那么我们可以在MAX+plusII中用原理图实现上面的三人表决器
下面仅把和VHDL不同的详细写下,相同或基本相同的就一带而过:
(1)打开MAX+plusII
(2)新建一个图形文件:File菜单>new
新建文件时选择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
把文件设为当前工程:FILE->PROJECT->SET PROJECT TO CURRENT FILE
MAX+PLUS II的标题条将显示新的项目名字
至此,程序输入就已经完成了
(5)检查编译
指定下载的芯片型号
指定芯片的管脚
(参见10分钟学会PLD设计2 -设计的编译)此时的图形为:
下图为SW1放大的图,其中majority_voter@41中前部分为设计的文件名,后面41为
EPM7128SLC84-15的41脚,也就是说电路图中SW1被指定到EPM7128SLC84-15的41脚(而实验板上41脚被连接到指拨开关SW1上了,这样电路图上SW1就和实验板上的硬件SW1实现了连接)。
1.2 采用VHDL设计三人表决器
打开MAX+plusII,在开始菜单内选择MAX+PLUS II 项,开始运行MAX+PLUS II(如下图)
你最好把图标放到桌面上,以后直接双击MAX+PLUS II图标就可以运行软件了
在MAX+PLUSII上点右键,选择发送到->桌面快捷方式(如下图),那么你桌面上就看到MAX+PLUS II了。
3.2 新建VHDL文档
(图形和verilog-HDL设计的过程见后面的部分)FILE->NEW
或者点下图的新建图标:
连后选择Text Editor File文件,点OK如下图
3.3输入设计文件
在文本窗口中输入以下VHDL源程序:
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;
--*********************************************
如下图