Cupl实习指导讲义

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

低密度PLDGAL通用逻辑阵列编程软件WinCupl简介Cupl语言是可以在Windows环境上开发GAL系列PLD的编译环境。WinCupl这种编译环境由ATMEL公司出品,是免费下载软件,用于PLD器件的编程,支持多种器件,包括GAL系列和ATF系列。可以擦写100次,甚至更多次。一、Cupl的保留字Cuple的保留字包括以下的字串:APPENDFORMATOUTASSEMBLYFUNCTIONPARTNOASSYFUSEPINCOMPANYGROUPPINNNODECONDITIONIFPRESENTDATEJUMPREVDEFAULTLOCREVISIONDESIGNERLOCATIONSEQUENCEDEVICEMACROSEQUENCEDELSEMINSEQUENCEJKFIELDNAMESEQUENCERSFLDNODESEQUENCET这些字串是不能被用作其它的用途的。尤其是不能被当作标号使用。Cupl语言有一些运算符,包括:&#!$()-+*/[];:...,'=@^/**/&与#或!非$异或()括号+加–减*乘/除=[];分号:...,'@^/**/注释下面是一个门电路的例子,通过这个例子我们可以学到基本的Cupl语言的用法,在该文件中/**/之间的为注释。NameGates;PartnoCA0001;Date07/16/87;DesignerGWoolheiser;CompanyATI;LocationSanJose,CA.;AssemblyExample;/*这是一个表示CUPL语言基本用法的例子*/Pin1=a;/*引脚1:输入端,定义名称是a名称可由用户定*/Pin2=b;/*引脚2:输入端,定义名称是b名称可由用户定*/Pin3=SB;/*引脚3:输入端,定义名称是SB名称可由用户定*/Pin4=FR;/*引脚4:输入端,定义名称是FR名称可由用户定*/Pin5=SQ;/*引脚5:输入端,定义名称是SQ名称可由用户定*/Pin6=A0;/*引脚6:输入端,定义名称是A0名称可由用户定*/Pin7=A1;/*引脚7:输入端,定义名称是A1名称可由用户定*/Pin8=A2;/*引脚8:输入端,定义名称是A2名称可由用户定*/Pin9=1XK;/*引脚9:输入端,定义名称是1XK名称可由用户定*/Pin11=2XK;/*引脚11:输入端,定义名称是2XK名称可由用户定*/说明:在G16V8A中,有10个输入端。其中第1脚可作为时钟输入,第11脚可作为片选端。第10脚是接地,第20脚是电源。Pin12=inva/*非门*/Pin13=invb/*非门*/Pin14=and/*与门*/Pin15=nand/*与非门*/Pin16=or/*或门*/Pin17=nor/*或非门*/Pin18=xor/*异或门*/Pin19=xnor/*同或门*//*逻辑实现部分:演示如何利用CUPL实现基本门电路*/inva=!a;/*反相器*/invb=!b;/*反相器*/and=a&b;/*与门*/nand=!(a&b);/*与非门*/or=a#b;/*或门*/nor=!(a#b)/*或非门*/xor=a$b;/*异或门*/xnor=!(a$b);/*同或门*/通过上面例子的学习,我们应该对Cupl语言有了初步的了解。WinCupl不但可以编译该文件,生成JED的熔丝文件,还可以对该文件进行波形仿真。在做小规模的PLD设计的时候,使用GAL系列或者ATF系列的PLD比较方便、便宜。WinCupl文件的基本格式在编写Cupl语言源文件需要遵守一定的格式,源文件由头部说明、输入引脚说明、输出引脚说明和逻辑实现4部分组成,缺一不可。一、头部说明头部说明一般包括以下部分:NameWAITGEN;PartnoP9000183;Revision02;Date1/11/89;DesignerOsann;CompanyLogicalDevices,Inc.;AssemblyPCMemoryBoard;LocationU106;DeviceF155;Formatij;Name关键字用来说明逻辑文件的文件名,默认的扩展名是PLD,因此可以不写扩展名。Partno关键字用来说明对特定的PLD器件对应的某个公司的部件号。如果不知道,可以不要这个部分。Revision设计公司设计该源文件的版本号。可以不填,可以没有Date设计日期,可以不填,可以没有Designer设计者的名称,可以不填,可以没有Company设计者所在公司名称,可以不填,可以没有Assembly本设计用于PC机板卡时的名称,可以没有Location本设计用于PC机板卡时所在的位置,可以没有Device必填字段,用来选择本设计所用的具体PLD器件型号,Format用来指定本文件编译后产生的烧写芯片文件的种类。h表示产生HEX格式的ASCII码文件,i表示HL格式的文件,j表示产生JEDEC格式的文件。二、引脚说明在PLD源文件中,所用的输入输出引脚都必须说明后才能使用,因此,可以象下面格式一样说明引脚:PINpin_n=[!]var;PIN是关键字,pin_n是引脚号码,var是引脚定义的名字,该名字用在后面的逻辑实现中。!是可选的,用来说明引脚的极性,如果没有!,输入是什么就是什么,为同相,如果有!,就表示输入后信号反相。下面是一个实际的例子:Pin2=!A;Pin3=!B;Pin16=Y;Y=A&B;/*逻辑实现部分*/当然,如果有一系列的引脚需要说明,这些引脚又是连续的,可以用[]符号来说明,比如Pin[2..6]=A[1..5];就表示引脚2到6用A1到A5来表示,比较方便。三、逻辑实现部分逻辑实现部分用来实现引脚之间的逻辑关系。它主要靠一些逻辑操作符来实现引脚之间的关系。这些逻辑关系包括:逻辑符号例子关系操作优先级!!ANOT1&A&BAND2#A#BOR3$A$BXOR4!表示非,&表示与,#表示或,$表示异或,异或的操作优先级最低,非的优先级最高。接下来我们学习如何使用这个软件。1、启动WinCupl。如图:启动界面2、启动完进入主界面后,单击File菜单的New,从New中单击Projet,就是新建一个工程文件(其实还是PLD文件),在弹出的对话框中,“Name”(源文件名称),填入“Name”,其它包括“Date”(创建时间)、“Designer”(设计者名称)、“Company”(公司名称)等根据需要进行填写。这里有个特殊的地方,就是“Device”(器件名称),系统默认的是virtual,就是不针对任何具体的部件,这里我们改掉,改成G16V8A,这个关键字兼ATF16V8。如图所示;IN0/CLK1IN12IN23IN34IN45IN56IN67IN78IN89IN9/OE11IO012IO113IO214IO315IO416IO517IO618IO719头文件信息3、单击OK后,系统要你输入你要用的输入引脚数,如图,单击【确定】按钮。填写输入引脚数3、系统要你输入要用到的输出引脚数,如图,单击【确定】按钮。填写输出引脚数4、系统要你输入要使用到的中间节点数,我们不需要,填0,单击OK按钮。这样系统就建立了一个PLD文件,文件名就是Name.PLD。系统将该文件显示出来了,就象下面这样:NameName;PartNo00;Date2009-8-11;Revision01;DesignerEngineer;Companycjy;AssemblyNone;Location;DeviceG16V8A;/****************INPUTPINS*********************/PIN=;/**/PIN=;/**/PIN=;/**//****************OUTPUTPINS*********************/PIN=;/**/PIN=;/**/例题:两输入端与门具体步骤是:1、启动WinCupl。启动完进入主界面后,单击File菜单的New,从New中单击Projet,就是新建一个工程文件(其实还是PLD文件),在弹出的对话框中,可以填您的源文件名字(Name)。器件(Device),系统默认的是virtual,就是不针对任何具体的部件,这里我们改掉,改成g16v8a,这个关键字兼容ATF16V8。2、单击OK后,系统要你输入你要用的输入引脚数,因为我们只有两个输入端,因此填2,单击OK按钮。3、系统要你输入要用到的输出引脚数,填1,单击OK按钮。4、系统要你输入要使用到的中间节点数,我们不需要,填0,单击OK按钮。这样系统就建立了一个PLD文件,文件名就是Name.PLD。系统将该文件显示出来了,就象下面这样:NameName;PartNo00;Date2006-8-9;Revision01;DesignerWUJIAN;CompanyTALE;AssemblyNone;Location;Deviceg16v8a;/****************INPUTPINS*********************/PIN=;/**/PIN=;/**//****************OUTPUTPINS*********************/PIN=;/**/因此,这个文件是空的,我们填一下,将输入输出引脚都填好,把逻辑也写完,就象下面这样:NameName;PartNo00;Date2006-8-9;Revision01;DesignerWUJIAN;CompanyTALE;AssemblyNone;Location;Deviceg16v8a;/****************INPUTPINS*********************/PIN2=a;/**/PIN3=b;/**//****************OUTPUTPINS*********************/PIN12=Y;/**/Y=a&b;写好后,我们需要编译该文件。在Run菜单中,单击DeviceDependentCompile,就是基于器件型号的编译。如果没有出现什么键入错误,都能成功编译。在Proteus中仿真如果我们需要验证PLD器件与其它器件联合工作的情况呢?那就需要利用另一个著名的仿真软件Proteus软件自带PLD库进行了。在Proteus中,PLD器件所需要载入的文件是“.jed”文件(就像仿真单片机所需要.HEX文件一样)。载入“.jed”文件:就像载入单片机“.HEX”文件一样(如果熟悉Proteus操作的可按照自己的方法载入文件),将鼠标放在U1上,右击,然后左击,在“JEDECFuseMapFile:”处,如图7(a),找到我们刚刚保存源文件的地方,选择“Encoder.jed”文件,然后打开,如图7(b),最后点击“OK”,如图8(C)。装好Proteus7.1后,在元件库的PLD/FPGA项目中选择AM16V8,其实就是GAL16V8,将其放到原理图上,然后拖电阻和开关到原理图上,再拖个发光管到电路上。将其连好,如下图所示。在原理图的AM16V8上,选中它,然后在上面单击鼠标左键,在弹出的对话框的JEDECFuseMapFile栏中单击右侧的浏览图标,装入Name.JED文件即可。单击OK按钮关闭该对话框。练习题练习题:点动控制电路一、接触-继电线路图:二、程序Name1DD;PartNo00;Date2009-7-26;Revision01;DesignerEngineer;Companynbbao;AssemblyNone;Location;Deviceg16v8a;/****************INPUTPINS*********************/PIN2=SB;/**//****************OUTPUTPINS*********************/PIN18=KM;/**/KM=SB;三、仿真图练习题:自锁控制电路一、接触-继电线路图:二、程序Name3ZS;PartNo0

1 / 16
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功