清华计算机组成原理实践环节实验基础——able语言学习教案.pptx
会计学1清华计算机组成原理清华计算机组成原理(yunl)实践环节实验实践环节实验基础基础able语言语言第一页,共117页。2023/2/7可编程逻辑器件可编程逻辑器件(qjin)设计语言设计语言ABEL前言前言1 ABEL-HDL语言的基本语法语言的基本语法(yf)2 ABEL-HDL语言源文件的基本结构语言源文件的基本结构3 逻辑描述逻辑描述第1页/共117页第二页,共117页。2023/2/7 前言前言 开发使用开发使用PLD的系统时,应使用语言或的系统时,应使用语言或逻辑图来描述该逻辑图来描述该PLD的功能,并通过编译、的功能,并通过编译、连接、适配,产生可对芯片进行连接、适配,产生可对芯片进行(jnxng)编程的目编程的目标艾件(该文件一股采用熔丝图格式,如标艾件(该文件一股采用熔丝图格式,如标准的标准的JED文件),然后再下载并写入芯文件),然后再下载并写入芯片中。片中。第2页/共117页第三页,共117页。2023/2/7 常用的可编程逻辑器件设计语言为常用的可编程逻辑器件设计语言为ABEL-HDL(ABEL硬件描述语言),硬件描述语言),它是它是DATA I/O公司开发的一种公司开发的一种(y zhn)可编程可编程逻辑器件设计语言,它可支持绝大多数逻辑器件设计语言,它可支持绝大多数可编程逻辑器件。可编程逻辑器件。第3页/共117页第四页,共117页。2023/2/71 ABEL-HDL语言的基本语法语言的基本语法1.1 ABEL源文件构成源文件构成 在用在用ABEL-HDL进行进行(jnxng)逻辑设计时,描述逻辑设计时,描述逻辑功能的源文件必须是符合逻辑功能的源文件必须是符合ABEL-HDL语语言语法规定的言语法规定的ASII码文件。码文件。第4页/共117页第五页,共117页。2023/2/7 ABEL-HDL源文件是由各种语句组成的,源文件是由各种语句组成的,这些语句是由这些语句是由ABEL-HDL语言的基本符号构语言的基本符号构成的,这些符号必须满足一定的格式才能正成的,这些符号必须满足一定的格式才能正确描述逻辑功能确描述逻辑功能(gngnng)。语句的每一行最长为。语句的每一行最长为150个个字符。在源文件的语句中标识符、关键字、数字符。在源文件的语句中标识符、关键字、数字之间至少必须有一个空格,以便将它们分隔字之间至少必须有一个空格,以便将它们分隔开来。但在标识符列表中标识符以逗号分隔。开来。但在标识符列表中标识符以逗号分隔。第5页/共117页第六页,共117页。2023/2/7 在表达式中,标识符和数字用操作符或括在表达式中,标识符和数字用操作符或括号分隔。空格、点号不能夹在标识符、关键字、号分隔。空格、点号不能夹在标识符、关键字、数字之间。如空格夹在标识符、数字之间将会数字之间。如空格夹在标识符、数字之间将会被看作两个标识符或数数字。以大写被看作两个标识符或数数字。以大写(dxi)、小写或、小写或大小写混合写的关键字被看作同一个关键字,大小写混合写的关键字被看作同一个关键字,而以大写而以大写(dxi)、小写或大小写混合写写的标识符将、小写或大小写混合写写的标识符将被看作不同的标识符。被看作不同的标识符。第6页/共117页第七页,共117页。第7页/共117页第八页,共117页。第8页/共117页第九页,共117页。第9页/共117页第十页,共117页。第10页/共117页第十一页,共117页。2023/2/71.2 ASCII字符字符 在在ABEL-HDL语言中,其合法的语言中,其合法的ASCII字符除了字符除了(ch le)数字数字0-9,大小写的,大小写的英文字母外,还包括空格符及下述符英文字母外,还包括空格符及下述符号号:!#$?+&*();:“,./%第11页/共117页第十二页,共117页。2023/2/71.3 标识符标识符 标识符是用合法的标识符是用合法的ASCII字符按次序排字符按次序排列定义的名字列定义的名字(mng zi),其作用是标识器件、管脚、,其作用是标识器件、管脚、节点、集合、输入输出信号、常量、宏以及节点、集合、输入输出信号、常量、宏以及变量。所有的标识符必须符合下述规定变量。所有的标识符必须符合下述规定:1.标识符的长度不超过标识符的长度不超过31个字符个字符;2.标识符必须以字母或下划线开始标识符必须以字母或下划线开始;第12页/共117页第十三页,共117页。2023/2/73.标识符其他的宇母可采用大、小写字母、标识符其他的宇母可采用大、小写字母、数字及下划线数字及下划线;4.标识符中不能包括空格符标识符中不能包括空格符;5.除保留标识符除保留标识符(即关键宇即关键宇)外,标识符中同外,标识符中同一个字母的大、小写表示一个字母的大、小写表示(biosh)不同的含义不同的含义;6.除了合法的点扩展外,标识符中同一个字除了合法的点扩展外,标识符中同一个字母的大、小写表示母的大、小写表示(biosh)不同的含义。不同的含义。第13页/共117页第十四页,共117页。2023/2/7 在在ABEL-HDL中保留的标识符称为关中保留的标识符称为关键字,关键字不能用于命名键字,关键字不能用于命名(mng mng)器件、管脚、器件、管脚、节点、集合、宏或信号,而代表了这个字节点、集合、宏或信号,而代表了这个字所特指的功能。所特指的功能。第14页/共117页第十五页,共117页。第15页/共117页第十六页,共117页。2023/2/71.4 常量常量 在在ABEL-HDL语言的逻辑描述中,常语言的逻辑描述中,常量用于赋值语句、真值表和测试向量的表量用于赋值语句、真值表和测试向量的表达,有时也用于给某些标识符赋值,以使达,有时也用于给某些标识符赋值,以使该标识符在整个模块的逻辑描述中代表该该标识符在整个模块的逻辑描述中代表该常量的值。常量的值。常量可以是数值常量可以是数值(shz)常量,也可以是非数值常量,也可以是非数值(shz)的特殊常量。的特殊常量。第16页/共117页第十七页,共117页。第17页/共117页第十八页,共117页。2023/2/71.5 块块 块是包含在一对大括号中的文本,它块是包含在一对大括号中的文本,它用于宏和指令。括号中的文本内容可以是用于宏和指令。括号中的文本内容可以是一行,也可以是多行。块可以嵌套,即块一行,也可以是多行。块可以嵌套,即块中包含块。如在块的文本的字符中包含块。如在块的文本的字符(z f)中包含了中包含了大括号,则应在其之前加上反斜杠。大括号,则应在其之前加上反斜杠。第18页/共117页第十九页,共117页。2023/2/7例如例如(lr):This is a block再如:再如:This is also a block,and it spans more than one line再如:再如:A=B#C D=0,1&1,0第19页/共117页第二十页,共117页。2023/2/71.6 注释注释 注释是对源文件的解释注释是对源文件的解释(jish),注释以双引,注释以双引号开始,以另一个双引号或行结束符号号开始,以另一个双引号或行结束符号结束,注释不能用于关键字之间。结束,注释不能用于关键字之间。例如:例如:“declaration section”module Basic_logic;”gives the module a name(回车回车)第20页/共117页第二十一页,共117页。第21页/共117页第二十二页,共117页。2023/2/71.7 数字数字(shz)ABEL-HDL中的所有的数值运算精度中的所有的数值运算精度都是都是32位,合法的数值范围是位,合法的数值范围是0232-1。数字数字(shz)可采用二进制、八进制、十进制可采用二进制、八进制、十进制或十六进制,它们分别以符号或十六进制,它们分别以符号b、o、d或或h表示,如不用符号则认为是十进制数。表示,如不用符号则认为是十进制数。在在ABEL-HDL中数字中数字(shz)还可用字符表示,还可用字符表示,在字符之前加上单引号后,即以字母在字符之前加上单引号后,即以字母ASCII码作为数值,例如码作为数值,例如a=h61,ab=h6162。第22页/共117页第二十三页,共117页。2023/2/71.8 字符串字符串 字符串用于标题、模块及选项的表达,字符串用于标题、模块及选项的表达,也用于管脚、节点也用于管脚、节点(ji din)和属性的定义,它包含和属性的定义,它包含在在一对单引号中。如字符串中有单引号或反斜一对单引号中。如字符串中有单引号或反斜杠,则必须在它们之前再加一反斜杠。字符杠,则必须在它们之前再加一反斜杠。字符串可写几行,但不能超过串可写几行,但不能超过324个字符。如:个字符。如:TITLE 1 to 8 line demultiplexer;DMIP16L8;第23页/共117页第二十四页,共117页。2023/2/71.9 运算符运算符 ABEL-HDL支持四类支持四类(s li)基本运算基本运算:逻辑运逻辑运算、算术运算、关系运算及赋值运算。算、算术运算、关系运算及赋值运算。1.逻辑运算逻辑运算 (1)非非:!例例!A (2)与与:&例例 A&B (3)或或:#例例 A#B (4)异或异或$例例 A$B (5)同或同或 !$例例 A!$B第24页/共117页第二十五页,共117页。2023/2/72.算术运算算术运算 (1)取负取负 -例例-A (2)加加 +例例A+B (3)减减 -例例A-B (4)乘乘(无符号整数无符号整数(zhngsh)*例例A*B (5)除除(无符号整数无符号整数(zhngsh)/例例A/B (6)取模取模(无符号整数无符号整数(zhngsh)%例例A%B (7)左移左移 例例A 例例AB第25页/共117页第二十六页,共117页。2023/2/73.关系运算关系运算 关系运算为无符号关系运算为无符号(fho)运算,其结果为位运算,其结果为位(布尔布尔值值)。(1)等于等于:=例例A=B (2)不等号不等号:!=例例A!=B (3)小于小于:例例AB (4)小于等于小于等于:=例例A 例例AB (6)大于等于大于等于:=例例A=B 例如例如:2=3 值为值为false 32 值为值为false第26页/共117页第二十七页,共117页。2023/2/74.赋值运算赋值运算组合组合(zh)输出为(非时钟赋值)输出为(非时钟赋值)=寄存器输出为(时钟赋值)寄存器输出为(时钟赋值):=第27页/共117页第二十八页,共117页。2023/2/7第28页/共117页第二十九页,共117页。2023/2/71.10 表达式和等式表达式和等式 表达式由标示符和运算符组成。在表达式表达式由标示符和运算符组成。在表达式中可出现任何逻辑中可出现任何逻辑(lu j)、算术或关系运算,表达式、算术或关系运算,表达式中的运算次序按运算优先级决定,也可加括号中的运算次序按运算优先级决定,也可加括号改变执行次序。改变执行次序。赋值运算仅用于等式,它将表达式的运算赋值运算仅用于等式,它将表达式的运算结果通过等式赋给输出信号结果通过等式赋给输出信号(包括组合赋值和包括组合赋值和时序时序(寄存器寄存器)赋值赋值)。一个信号可以被多次赋值,而其。一个信号可以被多次赋值,而其最终结果是所有这些赋值的或,而不是最最终结果是所有这些赋值的或,而不是最后一次的赋值。后一次的赋值。第29页/共117页第三十页,共117页。2023/2/71.12 引脚和寄存器的特别说明引脚和寄存器的特别说明1.三态允许端三态允许端:.OE,它为,它为1有效,仅有效,仅 适用适用(shyng)于引脚。于引脚。2.寄存器复位端寄存器复位端:.RS,它为,它为1有效有效3.寄存器置位端寄存器置位端:.PR,它为,它为1有效有效4.寄存器时钟寄存器时钟:.CLK,它为上跳触发,它为上跳触发5.JK触发器输入端触发器输入端:.J和和.K6.T触发器输入端触发器输入端:.T7.RS触发器输入端触发器输入端:.R和和.S8.D触发器输入端触发器输入端:.D也可使用也可使用:=第30页/共117页第三十一页,共117页。2023/2/71.13 集合集合 集合是作为一个独立单元进行操作的一组集合是作为一个独立单元进行操作的一组信号或常量。它采用一个标识符,用方括号内信号或常量。它采用一个标识符,用方括号内的一组信号或常量表示,其中的每一个信号或的一组信号或常量表示,其中的每一个信号或常量称为集合的元素。常量称为集合的元素。定义集合的方法定义集合的方法(fngf)有枚举法、界限符法或有枚举法、界限符法或它它们的组合。例如们的组合。例如:ADD=A5,A4,A3,A2,A1,A0 为枚举法为枚举法 ADD=A5.A0 为界限符法为界限符法 ADD=A5,A4,A3.A0 为两种方法为两种方法(fngf)的的组合组合 第31页/共117页第三十二页,共117页。2023/2/7 集合可以进行逻辑、加、减、关系运算。集合可以进行逻辑、加、减、关系运算。逻辑运算是对集合中每一个元素作相应的运逻辑运算是对集合中每一个元素作相应的运算,因此如果需对两个或两个以上集合进行算,因此如果需对两个或两个以上集合进行运算时,这些参与运算的集合的元素数目运算时,这些参与运算的集合的元素数目(shm)必必须相同。但单个变量与集合进行逻辑运算为须相同。但单个变量与集合进行逻辑运算为该变量与集合的每个元素进行逻辑运算。加、该变量与集合的每个元素进行逻辑运算。加、减、关系运算为对整个集合执行该运算。减、关系运算为对整个集合执行该运算。第32页/共117页第三十三页,共117页。2023/2/7 例例:(ADD=h10)&(ADD=hA000)&(AddrX,Y)0,0-0,0 0,1-0,1 1,0-0,1 1,1-1,0;End GATE第44页/共117页第四十五页,共117页。2023/2/7 在这个模块中有标头段、定义段、逻辑在这个模块中有标头段、定义段、逻辑描述段、测试向量段及结束语句段五部分组描述段、测试向量段及结束语句段五部分组成。成。在这五部分中,标头段为模块的开始在这五部分中,标头段为模块的开始;定定义段的定义部分指定或定义用于设计的器件义段的定义部分指定或定义用于设计的器件(qjin)、信号、常量宏和库信号、常量宏和库;逻辑描述段对所设计的逻逻辑描述段对所设计的逻辑进行功能描述辑进行功能描述;测试向量段写出了测试向量,测试向量段写出了测试向量,用以验证所设计的逻辑用以验证所设计的逻辑;结束语句段表示一个结束语句段表示一个模块的结束。模块的结束。第45页/共117页第四十六页,共117页。2023/2/7 此外在模块中还允许有选择地加上一此外在模块中还允许有选择地加上一些指令。每一个模块只能有一个标头段,些指令。每一个模块只能有一个标头段,它与结束语句它与结束语句(yj)段配对使用,而定义段、逻段配对使用,而定义段、逻辑描述段、测试向量段则可以任意次序重辑描述段、测试向量段则可以任意次序重复,定义语句复,定义语句(yj)必须紧跟标头或定义段的关必须紧跟标头或定义段的关键字。键字。第46页/共117页第四十七页,共117页。2023/2/72.2 标头段标头段 在例在例1中标头段如下中标头段如下:Module GATE Options_trace wave Titleexample of gate 标头段包括模块语句、选项和标题标头段包括模块语句、选项和标题(biot)三个三个元素组成。元素组成。第47页/共117页第四十八页,共117页。2023/2/71.模块语句模块语句 模块语句是必不可少的,其作用是模块语句是必不可少的,其作用是命名模块并标志模块的开始,它与结束命名模块并标志模块的开始,它与结束语句配对使用,同时也可指出语句配对使用,同时也可指出(zh ch)是否利用是否利用哑元。哑元。第48页/共117页第四十九页,共117页。2023/2/7 模块语句模块语句(yj)的关键字是的关键字是Module,其格式其格式为为:Module modulename(dummy_arg,dummy_arg)其中其中modulename为命名模块的合法标为命名模块的合法标识符,在本例中为识符,在本例中为GATE。dummy_arg是哑变量名称,如不利用哑是哑变量名称,如不利用哑变量则可以略去。变量则可以略去。第49页/共117页第五十页,共117页。2023/2/7 若模块选用哑变量,则在使用若模块选用哑变量,则在使用(shyng)语言处理语言处理程序处理模块时,可将真实变量传给模块。程序处理模块时,可将真实变量传给模块。哑变量可为模块引用。模块中,凡带有哑变量可为模块引用。模块中,凡带有“?”的哑变量,语法分析程序都用真实变量将的哑变量,语法分析程序都用真实变量将其替代。例:其替代。例:module my_example(A,B)C=?B+?A;end my_example第50页/共117页第五十一页,共117页。2023/2/72.选项选项 选项为可选语句。其作用是语言选项为可选语句。其作用是语言(yyn)处处理器控制源文件的处理。理器控制源文件的处理。选项的关键字是选项的关键字是Options,其格式,其格式为为 Optionsstingstring为选项字符串。为选项字符串。第51页/共117页第五十二页,共117页。2023/2/73.标题标题 标题为可选语句标题为可选语句(yj),其作用是给出模块,其作用是给出模块一个标题,此标题将作为语言处理程序所一个标题,此标题将作为语言处理程序所生的编程器下载文件及设计编制文件的题生的编程器下载文件及设计编制文件的题头。头。标题的关键字是标题的关键字是Title,其格式为,其格式为:Titlestring string为标题字符串。为标题字符串。第52页/共117页第五十三页,共117页。2023/2/72.3 定义段定义段 在例在例1中定义段如下中定义段如下:Declarations gate DEVICEGAL16V8;A,B PIN 1,2;X,Y PIN 18,17;定义段包括定义段关键字、器件定义段包括定义段关键字、器件(qjin)定义、定义、信号定义、常量定义、宏定义、库定义等信号定义、常量定义、宏定义、库定义等元素。元素。第53页/共117页第五十四页,共117页。2023/2/7 定义段的关键字是定义段的关键字是Declarations,后面可跟任何合法的定义语句。定义段后面可跟任何合法的定义语句。定义段的关键字允许的关键字允许(ynx)定义段可在源文件的任何定义段可在源文件的任何一部分进行定义。如定义语句紧跟标头一部分进行定义。如定义语句紧跟标头段,则可略去定义段关键字。段,则可略去定义段关键字。第54页/共117页第五十五页,共117页。2023/2/71.器件定义器件定义 器件定义是可选项,它的作用是将模器件定义是可选项,它的作用是将模块中所使用的器件名与实际块中所使用的器件名与实际(shj)所采用的可编所采用的可编程逻辑器件联系起来。程逻辑器件联系起来。器件定义的关键字是器件定义的关键字是DEVICE,其格式,其格式为为 Device_id DEVICE real_device;第55页/共117页第五十六页,共117页。2023/2/7 此表达式中,此表达式中,device_id为模块中所使为模块中所使用的器件名,在本例中为用的器件名,在本例中为gate。real_device为实际际所使用的某一个特定为实际际所使用的某一个特定可编程逻辑器件的型号,在本例中为可编程逻辑器件的型号,在本例中为GAL16V8。值得注意的是。值得注意的是device_id必须是必须是合法的文件名,因为合法的文件名,因为(yn wi)编程器装载文件的文件编程器装载文件的文件名由名由device_id加上扩展名加上扩展名“jde”产生的。产生的。第56页/共117页第五十七页,共117页。2023/2/72.信号定义信号定义 信号定义包括了管脚定义、节点定义及信号定义包括了管脚定义、节点定义及属性定义。其作用是定义信号,并可选择和属性定义。其作用是定义信号,并可选择和管脚及节点相联系。管脚及节点相联系。节点节点/管脚定义用于定义信号名,并将信管脚定义用于定义信号名,并将信号同具体的器件节点号同具体的器件节点/管脚序数联系起来。如管脚序数联系起来。如不用不用FUSASM和和JEDSIM处理处理(chl)文件,可以不文件,可以不设定具体的器件节点设定具体的器件节点/管脚序数。管脚序数。第57页/共117页第五十八页,共117页。2023/2/7 属性用于定义信号的特性,它既可属性用于定义信号的特性,它既可用于器件的节点用于器件的节点/管脚说明中,作为节管脚说明中,作为节点点/管脚定义的一部分,也可设在器件管脚定义的一部分,也可设在器件的节点的节点/管脚定义之后,作为一个独立管脚定义之后,作为一个独立(dl)的定义部分。它们的关键字分别为的定义部分。它们的关键字分别为PIN,NODE,ISTYPE。第58页/共117页第五十九页,共117页。2023/2/7(1).管脚定义管脚定义 管脚定义的格式为管脚定义的格式为:!pin_id,!pin_idPINpin#,pin#ISTYPEattributes;其中其中!pin_id是逻辑设计中用于指示模块中是逻辑设计中用于指示模块中管脚的标识符管脚的标识符,pin#为实际为实际(shj)器件中的管脚器件中的管脚(可可为?,由系统分配为?,由系统分配),attributes为在节点可为在节点可编程的器件中用于指明属性的字符串,有以编程的器件中用于指明属性的字符串,有以下几种下几种:第59页/共117页第六十页,共117页。第60页/共117页第六十一页,共117页。2023/2/7例:例:!Clock,Rest,SI pin in U12,12,15,3;这行代码将器件这行代码将器件U12的管脚的管脚12,15,3分别用标示符分别用标示符Clock,Rest,SI来表示。来表示。若模块中不止定义一个若模块中不止定义一个(y)器件,必须用语器件,必须用语句中的句中的in项来指明器件。项来指明器件。第61页/共117页第六十二页,共117页。2023/2/7例:例:管脚的属性可由语句中的属性项管脚的属性可由语句中的属性项或或ISTYPE语句定义语句定义(dngy),比如,比如 FO pin 13=neg,reg;第62页/共117页第六十三页,共117页。2023/2/7(2).节点定义节点定义 节点定义的格式为节点定义的格式为:!node_id,!node_idNODEnode#,node#IETYPEattributes;其中其中!node_id是逻辑设计中用于表示节点的是逻辑设计中用于表示节点的标识符,标识符,node#为实际为实际(shj)器件中的节点号,器件中的节点号,Attributes为在节点可编程的器件中用于指明为在节点可编程的器件中用于指明属性的字符串属性的字符串(同管脚定义同管脚定义)。第63页/共117页第六十四页,共117页。2023/2/7 关键字关键字NODE并没有并没有(mi yu)把信号限制把信号限制在器件上的内部节点上,当一个信号在器件上的内部节点上,当一个信号用用NODE定义后,也可能被器件装配定义后,也可能被器件装配器分配给器件的器分配给器件的I/O引脚上。引脚上。第64页/共117页第六十五页,共117页。2023/2/7(3).属性属性(shxng)定义定义 属性属性(shxng)定义的格式为定义的格式为:signalsignalPIN NODE#SISTYPEattributes,attributes;signal是管脚或节点的标识符,是管脚或节点的标识符,attributes为指明属性为指明属性(shxng)的字符串。的字符串。第65页/共117页第六十六页,共117页。2023/2/7例:例:FO,A istype neg,latch;将将FO和和A定义为负极定义为负极(fj)性锁存信号性锁存信号第66页/共117页第六十七页,共117页。2023/2/73.常量定义常量定义(dngy)4.常量定义常量定义(dngy)用于定义用于定义(dngy)模块中的常量,模块中的常量,5.常量的关键字是常量的关键字是=,其格式为,其格式为:6.id,id=expr,expr;7.id为模块中所使用的常量的标识符。为模块中所使用的常量的标识符。8.expr为定义为定义(dngy)常量值的表达式。常量值的表达式。第67页/共117页第六十八页,共117页。2023/2/7例:例:A,B,C=5,1,0,6;G=1,2+3,4第68页/共117页第六十九页,共117页。2023/2/74.宏定义宏定义 宏定义用于定义模块宏定义用于定义模块(m kui)中的宏。这个宏包中的宏。这个宏包含了源文件中的某一部分,这样,用户在含了源文件中的某一部分,这样,用户在建立文件时,不必每次书写相同的内容,建立文件时,不必每次书写相同的内容,而可以调用宏。而可以调用宏。第69页/共117页第七十页,共117页。2023/2/7 宏定义的关键字是宏定义的关键字是MACRO,其格式为,其格式为:Macro_id MACRO(dummy_arg,dummy_arg)block;Macro_id为表示为表示(biosh)宏的宏的标识符。宏的宏的标识符。dummy_arg为哑变量。为哑变量。block为块。为块。第70页/共117页第七十一页,共117页。2023/2/7例:例:若定义若定义(dngy)了了NAND3 MACRO(A,B,C)!(?A&?B&?C;则引用则引用D=NAND3(Clock,Hello,Busy);相当于相当于D=!(Clock&Hello&Busy);第71页/共117页第七十二页,共117页。2023/2/75.库定义库定义 库定义的关键字是库定义的关键字是Library,其格式,其格式(g shi)为为:Libraryname name为定义库文件名为定义库文件名的字符串,不含扩展名。的字符串,不含扩展名。库定义使用户指定的文件内容从库定义使用户指定的文件内容从name.inc 库文件中抽取出来,并被插到源库文件中抽取出来,并被插到源文件中。文件中。第72页/共117页第七十三页,共117页。2023/2/72.4 逻辑描述段逻辑描述段 在例在例1中逻辑描述段如下中逻辑描述段如下:Equations X=A&B;Y=A$B;ABEL-HDL语言描述逻辑的方式有方程、语言描述逻辑的方式有方程、真值表、状态图、熔丝和异或因子真值表、状态图、熔丝和异或因子(ynz),其中每,其中每一种描述方法均以关键字或符号开始,以引一种描述方法均以关键字或符号开始,以引导某种描述的开始。导某种描述的开始。第73页/共117页第七十四页,共117页。2023/2/71.方程的形式方程的形式2.它以扩展的布尔方程来描述逻辑功能;它以扩展的布尔方程来描述逻辑功能;3.方程语句表示与某个方程语句表示与某个(mu)器件相关的一组方器件相关的一组方4.程的开始程的开始;5.方程语句的关键字是方程语句的关键字是Epuations,其赋值,其赋值6.符为符为=或或:=,其中,其中:=为组合逻辑的赋值操作符,为组合逻辑的赋值操作符,7.:=为时序逻辑的赋值操作符。为时序逻辑的赋值操作符。第74页/共117页第七十五页,共117页。2023/2/7 在方程中允许在方程中允许(ynx)使用使用WHEN-THEN-ElSE语句。语句。方程的表达形式如下方程的表达形式如下:EquationsWHEN condition THEN!element=expression;ELSE equations;或者或者第75页/共117页第七十六页,共117页。2023/2/7WHEN condition THEN equations;ELSE equations;其中其中condition 为任何合法的表达式。为任何合法的表达式。element 命名一个或一组信号命名一个或一组信号(xnho),或一个实际集合的一个标识符。或一个实际集合的一个标识符。equation 为任何合法的表达式。为任何合法的表达式。第76页/共117页第七十七页,共117页。2023/2/72.真值表的形式真值表的形式 它以表格它以表格(biog)的形式描述了输出与输入逻的形式描述了输出与输入逻辑之间的关系。真值表由表头向量和表格辑之间的关系。真值表由表头向量和表格(biog)组成。组成。第77页/共117页第七十八页,共117页。2023/2/7(1).表头向量表头向量(xingling)它的关键字是它的关键字是TRUTH TABLE,它的表达形式它的表达形式为为:TRUTH TABLE(in ids-out ids)inputs-outputs;或者或者 TRUTH TABLE(in ids:reg ids)inputs:regs outs;或者或者 TRUTH TABLE(in ids:reg ids-out ids)inputs:regs outs-outputs;第78页/共117页第七十九页,共117页。2023/2/7 其中其中in ids为逻辑关系中的输入为逻辑关系中的输入(shr)信号标识符。信号标识符。out ids为逻辑关系中的输出信号标识符。为逻辑关系中的输出信号标识符。reg ids为逻辑关系中的寄存器型信号标为逻辑关系中的寄存器型信号标识符。识符。inputs为逻辑关系中的输入为逻辑关系中的输入(shr)信号。信号。outputs为逻辑关系中的输出信号。为逻辑关系中的输出信号。reg outs为信号寄存后的输出。为信号寄存后的输出。第79页/共117页第八十页,共117页。2023/2/7 这三种这三种(sn zhn)形式中第一种适合于描述组合形式中第一种适合于描述组合逻辑,第二种适合于描述时序逻辑,第三逻辑,第二种适合于描述时序逻辑,第三种适合于描述既包含组合逻辑又包含时序种适合于描述既包含组合逻辑又包含时序逻辑的较复杂的逻辑电路。逻辑的较复杂的逻辑电路。符号符号-表示输入输出关系为组合型,表示输入输出关系为组合型,符号符号:表示输入输出关系为寄存器型。表示输入输出关系为寄存器型。第80页/共117页第八十一页,共117页。2023/2/7(2).真值表格式真值表格式 格式由真值表的表头向量定义,真值表格式由真值表的表头向量定义,真值表本身即为按格式定义格式排列的一组输入本身即为按格式定义格式排列的一组输入(shr)输出信号。真值表中使用的所用信号必须输出信号。真值表中使用的所用信号必须是常量。是常量。第81页/共117页第八十二页,共117页。2023/2/7例:例:定义定义(dngy)带使能的异或门带使能的异或门 truth_table inIC6 (EN,A,B-C)0,.X.,.X.-.X.;1,0,0-0;1,0,1-1;1,1,0-1;1,1,1-0;第82页/共117页第八十三页,共117页。2023/2/7例:例:定义一个简单定义一个简单(jindn)的状态机。当前状态用的状态机。当前状态用放在一个集合里的信号放在一个集合里的信号A,B表示,下一个表示,下一个状态用寄存器输出信号状态用寄存器输出信号C,D表示,它们也表示,它们也放在一个集合中。输出信号为一简单放在一个集合中。输出信号为一简单(jindn)的组的组合型信号。合型信号。该状态机工作时,在各状态之间循环。该状态机工作时,在各状态之间循环。当当A=0,B=1时,将时,将E置为低电平。置为低电平。第83页/共117页第八十四页,共117页。2023/2/7truth_table inIC17(A,B:C,D-E)0,0:0,1-1;0,1:1,0-0;1,0:1,1-1;1,1:0,0-1;也可写为也可写为truth_table inIC17(A,B:C,D-E)0:1-1;1:2-0;2:3-1;3:0-1;第84页/共117页第八十五页,共117页。2023/2/73.状态图的形式状态图的形式 状态图采用了状态机的结构,专门状态图采用了状态机的结构,专门用于描述用于描述(mio sh)时序逻辑,它可以更简便地设时序逻辑,它可以更简便地设计如计数器、顺序控制器等状态机构。计如计数器、顺序控制器等状态机构。第85页/共117页第八十六页,共117页。2023/2/7 它的关键字是它的关键字是STATE DIAGRAM,其表达形式为其表达形式为:STATE DIAGRAM State reg -state out STATE state exp equation equation .trans-stmt第86页/共117页第八十七页,共117页。2023/2/7(1).IF-THEN-THEN语句语句(yj)语法:语法:if 表达式表达式 then 状态表达式状态表达式 else 状态表达式状态表达式;例:例:if X-Y then J else K;若若X-Y不等于零,转入不等于零,转入J态,否则转入态,否则转入K态。态。第87页/共117页第八十八页,共117页。2023/2/7(2).链式链式IF-THEN-THEN语句语句语法:语法:if 表达式表达式 then 状态表达式状态表达式 else 状态表达式状态表达式;else if 表达式表达式 then 状态表达式状态表达式 else if 表达式表达式 then 状态表达式状态表达式 else 状态表达式状态表达式 可链接的数目可链接的数目(shm)没有限制,但最后一个语没有限制,但最后一个语句必须以分号结尾句必须以分号结尾第88页/共117页第八十九页,共117页。2023/2/7(3).CASE-ENDCASE语句语句(yj)语法:语法:case 表达式表达式:状态表达式状态表达式;表达式表达式:状态表达式状态表达式;表达式表达式:状态表达式状态表达式;endcase;第89页/共117页第九十页,共117页。2023/2/7例:例:case a=0:1;a=1:2;a=2:3;a=3:0;endcase第90页/共117页第九十一页,共117页。2023/2/7(4).GOTO语句语句(yj)语法:语法:goto 状态表达式;状态表达式;例:例:goto x+y;第91页/共117页第九十二页,共117页。2023/2/75.异或因子的形式异或因子的形式 异或因子部分可以指定一个布尔表达式,异或因子部分可以指定一个布尔表达式,这个表达式从简化的乘积形式方程这个表达式从简化的乘积形式方程(fngchng)中提取公中提取公因子,并与这个方程因子,并与这个方程(fngchng)异或。这样当一个设计异或。这样当一个设计在具有异或门结构的器件中实现时,可以大在具有异或门结构的器件中实现时,可以大大地简化方程大地简化方程(fngchng)的表达式。的表达式。第92页/共117页第九十三页,共117页。2023/2/7 它的关键字是它的关键字是XOR_Factors,表达式为表达式为:XOR_Factors Singal_name=xor_factors 式中式中Singal_name为信号为信号(xnho)名,名,xor_factors为异或表达式。为异或表达式。第93页/共117页第九十四页,共117页。2023/2/76.关于点扩展关于点扩展 点扩展的语言符号点扩展的语言符号(fho)为为Singal_name.ext信号点扩展类似于属性,它可以精确地描信号点扩展类似于属性,它可以精确地描述电路的行为,其主要应用是复杂的语言述电路的行为,其主要应用是复杂的语言情况。情况。第94页/共117页第九十五页,共117页。2023/2/72.5.测试向量测试向量(xingling)段段 在例在例1中测试向量