"); //-->
ABEL-HDL语言是一种用语言来描述器件逻辑功能的设计语言,它与其它计算机语言一样有一些关键字及一些规定。
(1)基本的运算表示
ABEL-HDL语言运算可分为逻辑运算和算术运算。下面两个表格分别列出了两种运算的符号及功能,下面表格中红底的项为时序电路中才会使用到。
ABEL-HDL基本逻辑运算符号
运算符
|
优先级
|
功能
|
例子
|
含义
|
!
|
1
|
取反
|
!(AB)
|
(AB)的非
|
&
|
2
|
与运算
|
A&B
|
A·B
|
#
|
3
|
或运算
|
A#B
|
A+B
|
$
|
4
|
异或运算
|
A$B
|
A⊕B
|
=
|
|
赋值
|
A=5
|
将5赋给A
|
==
|
|
数值相等
|
A==1
|
用于判断数值相等
|
!=
|
|
数值不等
|
A!=1
|
用于判断数值不等
|
ABEL-HDL基本算术运算符号
运算符
|
功能
|
举例
|
含义
|
+
|
算术加
|
C=A+B
|
将A与B相加,将积再赋给C |
-
|
算术减
|
|
|
*
|
算术乘
|
|
|
/
|
算术除
|
|
|
<<,>>
|
左,右移位
|
A<<B
|
将A左移B位 |
(2)关键字
关键字
|
作 用
|
举 例
|
module
|
说明模块的开始,与END对应
|
MODULE tran
|
End
|
模块的结束
|
END
|
Title
|
说明模块的名称(可省略)
|
Title 'U2 is a decode'
|
Equations
|
表明与器件相关的方程式的开始
|
|
Pin
|
说明器件I/O的引脚
|
CLK,A Pin 1,2;
|
Istype
|
说明输出信号的属性
|
A Pin 19 istype 'COM';
|
Test_vectors
|
测试向量的开始
|
|
Truth_table
|
真值表的开始
|
|
When then Else
|
当什么时就怎样,否则怎样
|
When b then c=0 esle a=b
|
If then else
|
|
|
(3)ABEL语言设计举例
例 写出全加器的ABEL-HDL语言的源文件。
分析:在组合逻辑电路中我们分析了全加器的电路,我们可以用真值表、逻辑表达式、电路图等几种方式来描述其逻辑功能。其表达式写为:
进位输出:Co=A·B+A·Ci+B·Ci
本位和的输出:S=A⊕B⊕C
其值表可写为:
Ci
|
A
|
B
|
Co
|
S
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
1
|
0
|
1
|
0
|
0
|
1
|
0
|
1
|
1
|
1
|
0
|
1
|
0
|
0
|
0
|
1
|
1
|
0
|
1
|
1
|
0
|
1
|
1
|
0
|
1
|
0
|
1
|
1
|
1
|
1
|
1
|
该逻辑用真值表和表达式皆可以表示,即ABEL的源文件可以有两种表达方式。
源文件1:用表达式来表示
源文件
|
说 明
|
Module FSUM; | 模块定义,FSUM为模块名,每行结束用分号结束 |
A,B,Ci pin 1,2,3; | 定义A,B,Ci对应管脚1,2,3 |
S,Co pin 19,18 istype 'com'; | 定义S,Co的管脚,并定义其为组合逻辑电路输出 |
Equations | 表示下面一段为逻辑表达式 |
S=A$B$Ci; | |
Co=A&B+A&Ci+B&Ci; | |
Test_vectors ([Ci,A,B]->[Co,S]) | 测试向量定义,下面为测试向量用于模拟逻辑功能 |
[0,0,0]->[0,0]; | |
[0,0,1]->[0,1]; | |
[0,1,0]->[0,1]; | |
[0,1,1]->[1,0]; | |
[1,0,0]->[0,1]; | |
[1,0,1]->[1,0]; | |
[1,1,0]->[1,0]; | |
[1,1,1]->[1,1]; | |
End | 模块结束 |
源文件2:用真值表来表示
只要将上面的源文件中Equations起的三行用下面一段代替即可。
Truth_table ([Ci,A,B]->[Co,S]) |
[0,0,0]->[0,0]; |
[0,0,1]->[0,1]; |
[0,1,0]->[0,1]; |
[0,1,1]->[1,0]; |
[1,0,0]->[0,1]; |
[1,0,1]->[1,0]; |
[1,1,0]->[1,0]; |
[1,1,1]->[1,1]; |
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。