低密度PLDGAL通用逻辑阵列编程软件WinCupl简介Cupl语言是可以在Windows环境上开发GAL系列PLD的编译环境WinCupl这种编译环境由ATMEL公司出品是免费下载软件用于PLD器件的编程支持多种器件包括GAL系列和ATF系列可以擦写100次甚至更多次一Cupl的保留字Cuple的保留字包括以下的字串APPENDFORMATOUTASSEMBLYFUNCTIONPARTNOASSYFUSEPINCOMPANYGROUPPINNNODECONDITIONIFPRESENTDATEJUMPREVDEFAULTLOCREVISIONDESIGNERLOCATIONSEQUENCEDEVICEMACROSEQUENCEDELSEMINSEQUENCEJKFIELDNAMESEQUENCERSFLDNODESEQUENCET这些字串是不能被用作其它的用途的尤其是不能被当作标号使用Cupl语言有一些运算符包括ampamp与或非异或括号加减乘除分号注释httpwwweda121com下面是一个门电路的例子通过这个例子我们可以学到基本的Cupl语言的用法在该文件中之间的为注释NameGatesPartnoCA0001Date071687DesignerGWoolheiserCompanyATILocationSanJoseCAAssemblyExample这是一个表示CUPL语言基本用法的例子Pin1a引脚1输入端定义名称是a名称可由用户定Pin2b引脚2输入端定义名称是b名称可由用户定Pin3SB引脚3输入端定义名称是SB名称可由用户定Pin4FR引脚4输入端定义名称是FR名称可由用户定Pin5SQ引脚5输入端定义名称是SQ名称可由用户定Pin6A0引脚6输入端定义名称是A0名称可由用户定Pin7A1引脚7输入端定义名称是A1名称可由用户定Pin8A2引脚8输入端定义名称是A2名称可由用户定Pin91XK引脚9输入端定义名称是1XK名称可由用户定Pin112XK引脚11输入端定义名称是2XK名称可由用户定说明在G16V8A中有10个输入端其中第1脚可作为时钟输入第11脚可作为片选端第10脚是接地第20脚是电源Pin12inva非门Pin13invb非门Pin14and与门Pin15nand与非门Pin16or或门Pin17nor或非门Pin18xor异或门Pin19xnor同或门httpwwweda121com逻辑实现部分演示如何利用CUPL实现基本门电路invaa反相器invbb反相器andaampb与门nandaampb与非门orab或门norab或非门xorab异或门xnorab同或门通过上面例子的学习我们应该对Cupl语言有了初步的了解WinCupl不但可以编译该文件生成JED的熔丝文件还可以对该文件进行波形仿真在做小规模的PLD设计的时候使用GAL系列或者ATF系列的PLD比较方便便宜WinCupl文件的基本格式在编写Cupl语言源文件需要遵守一定的格式源文件由头部说明输入引脚说明输出引脚说明和逻辑实现4部分组成缺一不可一头部说明头部说明一般包括以下部分NameWAITGENPartnoP9000183Revision02Date11189DesignerOsannCompanyLogicalDevicesIncAssemblyPCMemoryBoardLocationU106DeviceF155FormatijName关键字用来说明逻辑文件的文件名默认的扩展名是PLD因此可以不写扩展名Partno关键字用来说明对特定的PLD器件对应的某个公司的部件号如果不知道可以不要这个部分Revision设计公司设计该源文件的版本号可以不填可以没有Date设计日期可以不填可以没有Designer设计者的名称可以不填可以没有Company设计者所在公司名称可以不填可以没有Assembly本设计用于PC机板卡时的名称可以没有Location本设计用于PC机板卡时所在的位置可以没有Device必填字段用来选择本设计所用的具体PLD器件型号Format用来指定本文件编译后产生的烧写芯片文件的种类h表示产生HEX格式的ASCII码文件i表示HL格式的文件j表示产生JEDEC格式的文件二引脚说明在PLD源文件中所用的输入输出引脚都必须说明后才能使用因此可以象下面格式一样说明引脚PINpinnvarPIN是关键字pinn是引脚号码var是引脚定义的名字该名字用在后面的逻辑实现中是可选的用来说明引脚的极性如果没有输入是什么就是什么为同相如果有就表示输入后信号反相下面是一个实际的例子Pin2APin3BPin16YYAampB逻辑实现部分当然如果有一系列的引脚需要说明这些引脚又是连续的可以用符号来说明比如Pin26A15就表示引脚2到6用A1到A5来表示比较方便三逻辑实现部分逻辑实现部分用来实现引脚之间的逻辑关系它主要靠一些逻辑操作符来实现引脚之间的关系这些逻辑关系包括逻辑符号例子关系操作优先级ANOT1ampAampBAND2ABOR3ABXOR4表示非amp表示与表示或表示异或异或的操作优先级最低非的优先级最高接下来我们学习如何使用这个软件1启动WinCupl如图启动界面2启动完进入主界面后单击File菜单的New从New中单击Projet就是新建一个工程文件其实还是PLD文件在弹出的对话框中Name源文件名称填入Name其它包括Date创建时间Designer设计者名称Company公司名称等根据需要进行填写这里有个特殊的地方就是Device器件名称系统默认的是virtual就是不针对任何具体的部件这里我们改掉改成G16V8A这个关键字兼ATF16V8如图所示头文件信息3单击OK后系统要你输入你要用的输入引脚数如图单击确定按钮填写输入引脚数3系统要你输入要用到的输出引脚数如图单击确定按钮填写输出引脚数4系统要你输入要使用到的中间节点数我们不需要填0单击OK按钮这样系统就建立了一个PLD文件文件名就是NamePLD系统将该文件显示出来了就象下面这样NameNamePartNo00Date2009811Revision01DesignerEngineerCompanycjyAssemblyNoneLocationDeviceG16V8AINPUTPINSPINPINPINOUTPUTPINSPINPIN例题两输入端与门具体步骤是1启动WinCupl启动完进入主界面后单击File菜单的New从New中单击Projet就是新建一个工程文件其实还是PLD文件在弹出的对话框中可以填您的源文件名字Name器件Device系统默认的是virtual就是不针对任何具体的部件这里我们改掉改成g16v8a这个关键字兼容ATF16V82单击OK后系统要你输入你要用的输入引脚数因为我们只有两个输入端因此填2单击OK按钮3系统要你输入要用到的输出引脚数填1单击OK按钮4系统要你输入要使用到的中间节点数我们不需要填0单击OK按钮这样系统就建立了一个PLD文件文件名就是NamePLD系统将该文件显示出来了就象下面这样NameNamePartNo00Date200689Revision01DesignerWUJIANCompanyTALEAssemblyNoneLocationDeviceg16v8aINPUTPINSPINPINOUTPUTPINSPIN因此这个文件是空的我们填一下将输入输出引脚都填好把逻辑也写完就象下面这样NameNamePartNo00Date200689Revision01DesignerWUJIANCompanyTALEAssemblyNoneLocationDeviceg16v8aINPUTPINSPIN2aPIN3bOUTPUTPINSPIN12YYaampb写好后我们需要编译该文件在Run菜单中单击DeviceDependentCompile就是基于器件型号的编译如果没有出现什么键入错误都能成功编译在Proteus中仿真如果我们需要验证PLD器件与其它器件联合工作的情况呢那就需要利用另一个著名的仿真软件Proteus软件自带PLD库进行了在Proteus中PLD器件所需要载入的文件是jed文件就像仿真单片机所需要HEX文件一样载入jed文件httparticleednchinacomword153055aspx就像载入单片机HEX文件一样如果熟悉Proteus操作的可按照自己的方法载入文件将鼠标放在U1上右击然后左击在JEDECFuseMapFile处如图7a找到我们刚刚保存源文件的地方选择Encoderjed文件然后打开如图7b最后点击OK如图8C最后点击httpwwweda121comArticleIndexhtml装好Proteus71后在元件库的PLDFPGA项目中选择AM16V8其实就是GAL16V8将其httpwwweda121com放到原理图上然后拖电阻和开关到原理图上再拖个发光管到电路上将其连好如下图所示在原理图的AM16V8上选中它然后在上面单击鼠标左键在弹出的对话框的JEDECFuseMapFile栏中单击右侧的浏览图标装入NameJED文件即可单击OK按钮关闭该对话框练习题练习题点动控制电路一接触继电线路图二程序Name1DDPartNo00Date2009726Revision01DesignerEngineerCompanynbbaoAssemblyNoneLocationDeviceg16v8aINPUTPINSPIN2SBOUTPUTPINSPIN18KMKMSB三仿真图练习题自锁控制电路一接触继电线路图二程序Name3ZSPartNo00Date2009726Revision01DesignerEngineerCompanynbbaoAssemblyNoneLocationDeviceg16v8aINPUTPINSPIN2SB1PIN3SB2停止按钮用常闭OUTPUTPINSPIN18KMKMSB1KMampSB2停止按钮用常闭三仿真图练习题点动与连续控制电路练习题双重联锁正反转电路控制电路一接触继电线路图二程序INPUTPINSPIN2FRPIN3SB3PIN4SB1PIN5SB2OUTPUTPINSPIN17KM1PIN18KM2KM1KM2ampSB2ampSB1KM1ampSB3ampFRKM2KM1ampSB1ampSB2KM2ampSB3ampFR三仿真图练习题正反转连续点动混合控制电路练习题2台水泵电机控制电路2台水泵抽水是向水池外面抽水而不是向内供水工艺要求1当水池内水位升高到第一高度时作为主泵运行的电动机启动第一台水泵工作向外抽水若水位继续上升到第二高度时作为备用泵的运行电动机启动第二台水泵工作向外抽水当水位到最低水位后自动停机2两台电动机运行状态主电机和备用电机能自动转换要求其每次运行后轮换改作主泵运行一次一接触继电线路图2台水泵抽水是向水池外面抽水而不是向内供水工艺要求1当水池内水位升高到第一高度时作为主泵运行的电动机启动第一台水泵工作向外抽水若水位继续上升到第二高度时作为备用泵的运行电动机启动第二台水泵工作向外抽水当水位到最低水位后自动停机2两台电动机运行状态主电机和备用电机能自动转换要求其每次运行后轮换改作主泵运行一次3具有手动操作开关单独控制泵1和泵2工作4当某台水泵发生故障需要维修时可以使其退出运行此时另一台电机则始终处于主泵运行状态练习题用PLD实现3线8线译码器74LS138的功能一原理图练习题用PLD实现7段数码管显示驱动CC4511的功能一真值表练习题用PLD实现4选1数据选择器练习题用PLD实现8选1数据选择器用GAL20V10或GAL22V10练习题用PLD实现数字电子技术基础第五版162页题例421练习题用PLD实现数字电子技术基础第五版165页题例422练习题用PLD实现数字电子技术基础第五版182页题表437练习题用PLD实现数字电子技术基础第五版187页题例433练习题用PLD实现数字电子技术基础第五版210页题46练习题用PLD实现数字电子技术基础第五版197页题例437练习题用PLD实现数字电子技术基础第五版384页练习题双重联锁正反转启动反接制动