在系统可编程技术
第 4讲
ABEL语音源文件元素
数据类型( 4种),
? 二进制数, ^B1010 ^b1010
? 八进制数, ^O 57 ^o57
? 十进制数, ^D37 ^d37
? 十六进制数,^H7EF ^h7EF
? 默认数制:十进制 3 20
一、数据类型
ABEL语音中所有数值运算精度都是
128位,合法的在 0~ 2128- 1之间。
MODULE example
CP PIN;
Q3,Q2,Q1,Q0 PIN ISTYPE’REG’;
Q=[Q3,Q2,Q1,Q0];
EQUATIONS
Q.CLK=CP;
TRUTH_TABLE(Q:>Q)
^B0000:>^B0001; ^B0001:>^B0010; ^B0010:>^B0011;
^B0011:>^B0100; ^B0100:>^B0101; ^B0101:>^B0110;
^B0110:>^B0111; ^B0111:>^B1000; ^B1000:>^B1001;
^B1000:>^B1010; ^B1010:>^B1011; ^B1011:>^B0000;
TEST_VECTORS(CP->Q)
@REPEAT 15{.C.->.X.;}
END
例,ABEL语音设计一个十二进制的计数器
二进制表示法
TRUTH_TABLE(Q:>Q)
^O0:>^O1; ^O1:>^O2; ^O2:>^O3;
^O3:>^O4; ^O4:>^O5; ^O5:>^O6;
^O6:>^O7; ^O7:>^O10; ^O10:>^O11;
^O11:>^O12; ^O12:>^O13; ^O13:>^O0;
八进制表示法
TRUTH_TABLE(Q:>Q)
0:>1; 1:>2; 2:>3;
3:>4; 4:>5; 5:>6;
6:>7; 7:>8; 8:>9;
9:>10; 10:>11; 11:>0;
十进制表示法
TRUTH_TABLE(Q:>Q)
^H0:>^H1; ^H1:>^H2; ^H2:>^H3;
^H3:>^H4; ^H4:>^H5; ^H5:>^H6;
^H6:>^H7; ^H7:>^H8; ^H8>^H9;
^H9:>^HA; ^HA:>^HB; ^HB:>^H0;
十六进制表示法
二、字符串
用单引号括起来的 ASCII码系列,主要用于以下场合,
?标题语句 TITLE
例,TITLE ’This is an example.’
?引脚定义语句 PIN,说明引脚属性
例,Y PIN ISTYPE ’COM,BUFFER’
?节点语句 NODE,说明内部节点属性
例, Y1,Y2 NODE ISTYPE’COM’;
集合是作为一个整体来进行运算的一组信
号和常量。
?集合的定义,
例,
① Address=[ A7,A6,A5,A4,A3,A2,A1,A0 ];
② Address=[ A7..A0 ];
③ x=.x.; Address=[ A7,A6,A5,A4,x,x,x,x ];
EQUATIONS
!IO=(Address>=^h10)&(Address<=^h60)
三、集合
集合的索引号能使用户使用集合中的元素。
例,
① AD=[ A15.,A0 ];
② DATA=[D7..D0 ];
③ DATA=AD[8..15];
其意义是 D7=A7 ……D0=A0
因集合的最左边的元素的索引号是 0,
故,AD[0]=A15,AD[1]=A14…,
AD[8]=A7,AD[9]=A6…AD[15]=A0
集合的索引号
是对集合的每一个元素进行的。两集合运算,
必须具有相同的元素。
例,① 若已定义 sign=[A,B,C];
则可以这样赋值,sign=[1,1,0]; 或者 sign=6;
也可以这样运算,sign=[1,1,0]&[1,0,1]; 或者
sign=6&5;
② [a,b]=^bxx11; 等同于 [a,b]=^b11;
③ [a,b]=^b1; 等同于 [a,b]=^b01;
④ [a,b]=c&d; 等同于 a=c&d; b=c&d;
集合的赋值和运算
1、逻辑运算符,
运算符 说 明 举 例
! 逻辑非 !A
& 逻辑与 A&B
# 逻辑或 A#B
$ 逻辑异或 A$B
!$ 逻辑同或 A!$B
四、运算符
ABEL布尔方程描述,
ACBABABY ????
ABEL语言逻辑方程,
Y=B#(!A&B)#(A&!B)#(A&C)
或 Y=B#!A&B#A&!B#A&C
ABEL语言逻辑方程,
S=A$B$C;
CO=!(!((A$B)&CI)&!(A&B))
布尔方程,
2、算术运算符,
运算符 举 例 说 明
- -A 取二进制补码
- A-B 减
+ A+B 加
* A*B 乘
/ A/B 除
% A%B 取模
<< A<<B A左移 B位
>> A>>B A右移 B位
3,关系运算符,
运算符 说 明 举 例
== 等于 A==B
!= 不等于 A!=B
< 小于 A<B
<= 小于等于 A<=B
> 大于 A>B
>= 大于等于 A>=B
?所有关系运算符都是无符号运算,运算结果为真或假。
例,5>4的值为真
-1>4的值也为真
因 -1的补码是 2128- 1,对应的无
符号数也是 2128- 1
?关系运算符也可以用来构成逻辑表达式。
例,A=D$(B==C)
?使用关系运算符时,应注意运算的优先级。
3,关系运算符,
4,赋值运算符,
运算符 说 明 举 例
= 立即赋值 A=B
:= 时钟赋值 A:=B
例,MODULE example
A,B,C,D,CP PIN;
F PIN ISTYPE’COM’
Q PIN ISTYPE’REG’
EQUATIONS
F=!((A&B)#(C&D))
Q.CLK=CP;
Q:=!Q;
END
表达式中运算符的优先级,
优先级 运算符 说明
1
1
-
!
取补
取反
2
2
2
2
2
2
&
<<
>>
/
*
%

左移
右移


取模
优先级 运算符 说明
3
3
3
3
3
+
-
#
$
!$



异或
同或
4
4
4
4
4
4
==
!=
<
<=
>
>=
等于
不等于
小于
小于等于
大于
大于等于
五、表达式- 标识符和运算符的组合
六、特殊常量值
常量值 说 明
1 逻辑高电平
0 逻辑低电平
.C,时钟输入(电平按低 — 高 — 低变化)
.K,时钟输入(电平按高 — 低 — 高变化)
.U,时钟上升沿(电平按低 — 高变化)
.D,时钟下降沿(电平按高 — 低变化)
.F,浮动输入或输出信号
.P,寄存器预装载
.X,任意值
.Z,高阻态
七、寄存器描述
需要一组方程来描述寄存器,
?时钟方程
?输出方程
?复位方程
?预置方程
使用点扩展来表示不同的方程
常用的点扩展,
点扩展 含 义
.AP 寄存器异步置位
.AR 寄存器异步复位
.CE 时钟导通触发器的时钟输入
.CLK 边沿触发器的时钟输入
.D D触发器的激励输入
.FB 寄存器反馈信号
.J JK触发器的 J激励输入
.K JK触发器的 K激励输入
.LD 寄存器并行置数输入
.LE 锁存器的锁存使能输入
点扩展 含 义
.LH 锁存器的锁存使能(高电平)
.OE 输出使能
.PIN 引脚反馈
.Q 寄存器输出(书写源文件时可以省略)
.R SR触发器的 R激励输入
.RE 寄存器复位信号(同步或异步)
.S SR触发器的 S激励输入
.SP 寄存器同步置位
.SR 寄存器同步复位
.T T触发器的激励输入
常用的点扩展,
点扩展描述的电路结构
描述寄存器的两种形式,
Q1.D=…;
Q1.CLK=…;
Q1.AR=…;
Q1.AP=…;
Q1.Q:=…;
Q1.CLK=…;
Q1.AR=…;
Q1.AP=…;
Q1.D是寄存器的激励信号,用立即赋值符“=”
Q1.Q是寄存器的输出信号,用时钟赋值符,:=”
以 D触发器为例
“REG”寄存器类型的点扩展
“REG”寄存器类型的点扩展
“reg_d,invert”寄存器类型的点扩展
“reg_T,invert”寄存器类型的点扩展
“reg_sr,invert”寄存器类型的点扩展
“reg_jk,invert”寄存器类型的点扩展
“reg_l,invert”寄存器类型的点扩展
“reg_l,invert”寄存器类型的点扩展
“reg_g,invert”寄存器类型的点扩展
请说明下例语句的含义
请说明下例语句的含义
七,DIRECTIVES 指示字
指示字在 ABLE源文件中的作用是指
示编译程序有条件的对 ABLE源文件的内
容加以处理。使用指示字可以化简逻辑
描述,方便文件调试。
@REPEAT 重复指示字
@REPEAT 表达式 {块 };
该指示字将块的内容重复 n次,n为常
量表达式的值。
例,
@REPEAT 5{[.c.,1,0]->.X.;};
在源文件中插入文本
[.c.,1,0]->.X.;
[.c.,1,0]->.X.;
[.c.,1,0]->.X.;
[.c.,1,0]->.X.;
[.c.,1,0]->.X.;
常用指示字介绍
小 结
? ABEL语言运算符使用时应注意其优先级;
? =是立即赋值;
?,=是时钟赋值;
? ABEL语言使用点扩展的方式来描述寄存器;
? 集合是信号的集中表示,它是简化描述的一
种方法。
作业,P177 5.3 5.4 5.5