《清华计算机组成原理实践环节课件第3部分:实验基础2——able语言S电子教案》由会员分享,可在线阅读,更多相关《清华计算机组成原理实践环节课件第3部分:实验基础2——able语言S电子教案(117页珍藏版)》请在金锄头文库上搜索。
1、2020/8/11,计算机组成原理,计算机组成原理实践环节基础2Able语言简介,2020/8/11,计算机组成原理,可编程逻辑器件设计语言ABEL,前言 1 ABEL-HDL语言的基本语法 2 ABEL-HDL语言源文件的基本结构 3 逻辑描述,2020/8/11,计算机组成原理,前言 开发使用PLD的系统时,应使用语言或 逻辑图来描述该PLD的功能,并通过编译、 连接、适配,产生可对芯片进行编程的目 标艾件(该文件一股采用熔丝图格式,如 标准的JED文件),然后再下载并写入芯 片中。,2020/8/11,计算机组成原理,1 ABEL-HDL语言的基本语法 1.1 ABEL源文件构成 在用A
2、BEL-HDL进行逻辑设计时,描述 逻辑功能的源文件必须是符合ABEL-HDL语 言语法规定的ASII码文件。,2020/8/11,计算机组成原理,ABEL-HDL源文件是由各种语句组成的, 这些语句是由ABEL-HDL语言的基本符号构 成的,这些符号必须满足一定的格式才能正 确描述逻辑功能。语句的每一行最长为150个 字符。在源文件的语句中标识符、关键字、数 字之间至少必须有一个空格,以便将它们分隔 开来。但在标识符列表中标识符以逗号分隔。,2020/8/11,计算机组成原理,在表达式中,标识符和数字用操作符或括 号分隔。空格、点号不能夹在标识符、关键字、 数字之间。如空格夹在标识符、数字之
3、间将会 被看作两个标识符或数数字。以大写、小写或 大小写混合写的关键字被看作同一个关键字, 而以大写、小写或大小写混合写写的标识符将 被看作不同的标识符。,2020/8/11,计算机组成原理,1.2 ASCII字符 在ABEL-HDL语言中,其合法的 ASCII字符除了数字0-9,大小写的 英文字母外,还包括空格符及下述符 号: ! # $ ? + : “ ,. / %,2020/8/11,计算机组成原理,1.3 标识符 标识符是用合法的ASCII字符按次序排 列定义的名字,其作用是标识器件、管脚、 节点、集合、输入输出信号、常量、宏以及 变量。所有的标识符必须符合下述规定: 1. 标识符的长
4、度不超过31个字符; 2. 标识符必须以字母或下划线开始;,2020/8/11,计算机组成原理,3. 标识符其他的宇母可采用大、小写字母、 数字及下划线; 4. 标识符中不能包括空格符; 5. 除保留标识符(即关键宇)外,标识符中同 一个字母的大、小写表示不同的含义; 6. 除了合法的点扩展外,标识符中同一个字 母的大、小写表示不同的含义。 ,2020/8/11,计算机组成原理,在ABEL-HDL中保留的标识符称为关 键字,关键字不能用于命名器件、管脚、 节点、集合、宏或信号,而代表了这个字 所特指的功能。,2020/8/11,计算机组成原理,1.4 常量 在ABEL-HDL语言的逻辑描述中,
5、常 量用于赋值语句、真值表和测试向量的表 达,有时也用于给某些标识符赋值,以使 该标识符在整个模块的逻辑描述中代表该 常量的值。 常量可以是数值常量,也可以是非数值 的特殊常量。,2020/8/11,计算机组成原理,1.5 块 块是包含在一对大括号中的文本,它 用于宏和指令。括号中的文本内容可以是 一行,也可以是多行。块可以嵌套,即块 中包含块。如在块的文本的字符中包含了 大括号,则应在其之前加上反斜杠。,2020/8/11,计算机组成原理,例如: This is a block 再如: This is also a block,and it spans more than one line
6、再如: A=B#C D=0,1 ”gives the module a name(回车),2020/8/11,计算机组成原理,1.7 数字 ABEL-HDL中的所有的数值运算精度 都是32位,合法的数值范围是0232-1。 数字可采用二进制、八进制、十进制 或十六进制,它们分别以符号b、o、d 或h表示,如不用符号则认为是十进制数。 在ABEL-HDL中数字还可用字符表示, 在字符之前加上单引号后,即以字母ASCII 码作为数值,例如a=h61,ab=h6162。,2020/8/11,计算机组成原理,1.8 字符串 字符串用于标题、模块及选项的表达, 也用于管脚、节点和属性的定义,它包含在 一
7、对单引号中。如字符串中有单引号或反斜 杠,则必须在它们之前再加一反斜杠。字符 串可写几行,但不能超过324个字符。如: TITLE 1 to 8 line demultiplexer; DMIP16L8;,2020/8/11,计算机组成原理,1.9 运算符 ABEL-HDL支持四类基本运算:逻辑运 算、算术运算、关系运算及赋值运算。 1. 逻辑运算 (1)非: ! 例 !A (2)与: X=.X.; 那么,下例两种方法等效于地址线集合中只使 用地址高三位的方法: 方法1: ChipSel=Addr=1,0,1,X,X,X,X,X,X,X,X,X,X,X,X,X 方法2: ChipSel=(Ad
8、dr=hA000),2020/8/11,计算机组成原理,1.14 变量及变量代换 哑变量:在宏定义、模块或指示字中可被真 实变量替代的标识符; 真实变量:用于宏定义、模块或指示字中的 变量。 在需要用真实变量取代哑变量的地方, 哑变量前要加一个问号“?”,以与其他标识符 区分开来。,2020/8/11,计算机组成原理,如下面的宏定义 OR_EM MACRO(a,b,c) ?a # ?b # ?c; 中,a,b,c就是哑变量。下列方程式对OR_EM 宏的宏引用 D=OR_EM(X,Y,Z); 其中X,Y,Z是真实变量。,2020/8/11,计算机组成原理,2 ABEL-HDL语言源文件的基本结构
9、 2.1 引言 ABEL-HDL语言源文件由一个或多个相 互独立的模块构成,每一个模块包含了一个 完整的逻辑描述。源文件中的所有模块都可 以被ABEL-HDL软件同时处理。,2020/8/11,计算机组成原理,模块结构必须遵从以下原则: 模块开头为module语句,结束必须用相应 的end语句; 2. 若使用flash语句,必须为module语句的第 一条语句; 3. 若使用title语句,必须为flags语句后的第 一条语句。若没有title语句,则必须为module 语句后的第一条语句; 4. 一个模块至少有一个定义段,模块中可按需 要以任意次序使用多个定义段。,2020/8/11,计算机
10、组成原理,例1:设计一个模块,要求以GAL6V8构成 一个两输入端的与门和一个两输入端的 “异或门”,设输入信号为A,B,输出信号 为X,Y,则X=AB,Y=AB。如在源文件 中仅有一个这样的模块,其源文件如下所示:,2020/8/11,计算机组成原理,Module GATE Options_trace wave Titleexample of gate Declarations gate DEVICEGAL16V8; A,B PIN 1,2; X,Y PIN 18,17; Equations X=A,2020/8/11,计算机组成原理,Test_vections ( A,B-X,Y ) 0,
11、0-0,0 0,1-0,1 1,0-0,1 1,1-1,0; End GATE,2020/8/11,计算机组成原理,在这个模块中有标头段、定义段、逻辑 描述段、测试向量段及结束语句段五部分组 成。 在这五部分中,标头段为模块的开始;定 义段的定义部分指定或定义用于设计的器件、 信号、常量宏和库;逻辑描述段对所设计的逻 辑进行功能描述;测试向量段写出了测试向量, 用以验证所设计的逻辑;结束语句段表示一个 模块的结束。,2020/8/11,计算机组成原理,此外在模块中还允许有选择地加上一 些指令。每一个模块只能有一个标头段, 它与结束语句段配对使用,而定义段、逻 辑描述段、测试向量段则可以任意次序
12、重 复,定义语句必须紧跟标头或定义段的关 键字。,2020/8/11,计算机组成原理,2.2 标头段 在例1中标头段如下: Module GATE Options_trace wave Titleexample of gate 标头段包括模块语句、选项和标题三个 元素组成。,2020/8/11,计算机组成原理,1. 模块语句 模块语句是必不可少的,其作用是 命名模块并标志模块的开始,它与结束 语句配对使用,同时也可指出是否利用 哑元。,2020/8/11,计算机组成原理,模块语句的关键字是Module,其格式 为: Module modulename(dummy_arg,dummy_arg)
13、其中modulename为命名模块的合法标 识符,在本例中为GATE。 dummy_arg是哑变量名称,如不利用哑 变量则可以略去。,2020/8/11,计算机组成原理,若模块选用哑变量,则在使用语言处理 程序处理模块时,可将真实变量传给模块。 哑变量可为模块引用。模块中,凡带有“?” 的哑变量,语法分析程序都用真实变量将 其替代。例: module my_example (A,B) C=?B+?A; end my_example,2020/8/11,计算机组成原理,2. 选项 选项为可选语句。其作用是语言处 理器控制源文件的处理。 选项的关键字是Options,其格式 为 Optionsst
14、ing string为选项字符串。,2020/8/11,计算机组成原理,3. 标题 标题为可选语句,其作用是给出模块 一个标题,此标题将作为语言处理程序所 生的编程器下载文件及设计编制文件的题 头。 标题的关键字是Title,其格式为: Titlestring string为标题字符串。,2020/8/11,计算机组成原理,2.3 定义段 在例1中定义段如下: Declarations gate DEVICEGAL16V8; A,B PIN 1,2; X,Y PIN 18,17; 定义段包括定义段关键字、器件定义、 信号定义、常量定义、宏定义、库定义等 元素。,2020/8/11,计算机组成原
15、理,定义段的关键字是Declarations, 后面可跟任何合法的定义语句。定义段 的关键字允许定义段可在源文件的任何 一部分进行定义。如定义语句紧跟标头 段,则可略去定义段关键字。,2020/8/11,计算机组成原理,1. 器件定义 器件定义是可选项,它的作用是将模 块中所使用的器件名与实际所采用的可编 程逻辑器件联系起来。 器件定义的关键字是DEVICE,其格式 为 Device_id DEVICE real_device;,2020/8/11,计算机组成原理,此表达式中,device_id为模块中所使 用的器件名,在本例中为gate。 real_device为实际际所使用的某一个特定 可
16、编程逻辑器件的型号,在本例中为 GAL16V8。值得注意的是device_id必须是 合法的文件名,因为编程器装载文件的文件 名由device_id加上扩展名“jde”产生的。,2020/8/11,计算机组成原理,2. 信号定义 信号定义包括了管脚定义、节点定义及 属性定义。其作用是定义信号,并可选择和 管脚及节点相联系。 节点/管脚定义用于定义信号名,并将信 号同具体的器件节点/管脚序数联系起来。如 不用FUSASM和JEDSIM处理文件,可以不 设定具体的器件节点/管脚序数。,2020/8/11,计算机组成原理,属性用于定义信号的特性,它既可 用于器件的节点/管脚说明中,作为节 点/管脚定义的一部分,也可设在器件 的节点/管脚定义之后,作为一个独立 的定义部分。它们的关键字分别为 PIN,NODE,ISTYPE。,2020/8/11,计算机组成原理,(1). 管脚定义 管脚定义的格式为: !pin_id,!pin