VARIABLE
ss : MACHINE
OF BITS (q1, q2, q3) WITH STATES (
s1 = B\s2 = B\s3 = B\
该例的意思是:
状态机的名字是ss,状态位q1, q2, 和 q3是该机寄存器的输出,状态机的状态是s1,s2,和s3, 并给出了当前状态值。
(9)逻辑段
在逻辑段中,说明设计文件的逻辑操作。 1) 布尔方程
逻辑段中布尔方程用于表达节点之间的逻辑关系,该关系必须遵从逻辑规则。 例:
a[] = ((c[] & -B\
表达式的左边可以是一个字符变量、端口和组,右边是布尔方程表达式。 2) 布尔控制方程
该控制方程用于建立状态机的时钟、复位和时钟使能信号,见下例: ss.clk = clk1; ss.reset = a & b; ss.ena = clk1ena;
该控制方程的格式为<状态机名>.<端口名>,所以该例中状态机名是ss,三个端口:时钟、复位和使能。 3)CASE语句 例: CASE f[].q IS
WHEN H\
addr[] = 0; s = a & b;
count[].d = count[].q + 1; f[3..0].d = addr[4..1];
119
WHEN H\
WHEN H\
WHEN OTHERS =>
f[].d = f[].q;
END CASE; 3) 缺省叙述语句
该语句指定真值表中变量的缺省值, 例: BEGIN
DEFAULTS
a = VCC; END DEFAULTS; IF y & z THEN
a = GND; END IF;
END;
4)IF THEN语句 例:
IF a[] == b[] THEN
c[8..1] = H \addr[3..1] = f[3..1].q; f[].d = addr[] + 1; f[].d = addr[]; d = VCC;
ELSIF g3 $ g4 THEN ELSE END IF;
4)FOR GENERATE 语句 例:
CONSTANT NUM_OF_ADDERS = 8; SUBDESIGN 4gentst ( )
VARIABLE
a[NUM_OF_ADDERS..1], b[NUM_OF_ADDERS..1], cin : INPUT; c[NUM_OF_ADDERS..1], cout
: OUTPUT;
carry_out[(NUM_OF_ADDERS+1)..1] : NODE;
120
BEGIN
carry_out[1] = cin;
FOR i IN 1 TO NUM_OF_ADDERS GENERATE
c[i] = a[i] $ b[i] $ carry_out[i];
% Full Adder %
carry_out[i+1] = a[i] & b[i] # carry_out[i] & (a[i] $ b[i]);
END GENERATE;
cout = carry_out[NUM_OF_ADDERS+1];
END;
5) 真值表语句
该语句用于指定组合逻辑和状态机的输入和输出行为。 例: TABLE
0, 0, 1,
B\ B\ B\B\
=> =>
=> =>
B\B\B\B\
1; 0; 0; 1;
a0, f[4..1].q => f[4..1].d, control;
X,
END TABLE;
该例中,a0和f[4..1].q 是输入,f[4..1].d和control是输出, 3.5.2
(1) AHDL中的保留关键字
AHDL语言建议用大写字母书写如下关键字: AND
FUNCTION OUTPUT
REPORT
RETURNS SEVERITY
ASSERT GENERATE PARAMETERS BEGIN GND BIDIR BITS CASE
HELP_ID
AHDL中的语言元素
IF SEGMENTS INPUT STATES
LOG2
TABLE
THEN
121
BURIED INCLUDE
CLIQUE IS SUBDESIGN CONNECTED_PINS
CONSTANT MACHINE
DEFAULTS MOD DESIGN NODE DEVICE NOR DIV NOT ELSE ELSIF END
(2) 保留识别符
AHDL中的保留识别符:
VCC
TITLE
TRI_STATE_NODE VARIABLE
DEFINE NAND TO
OF WHEN OPTIONS
WITH
OR XNOR
OTHERS XOR
FOR
CARRY JKFFE SRFFE CASCADE CEIL DFFE
JKFF
SRFF
LATCH TFFE LCELL TFF
USED WIRE
DFF M CELL TRI EXP MEMORY FLOOR OPENDRN GLOBAL
(3) AHDL中运算符
符号 + - == ! != > >= < <= & !& $ !$ # !#
SOFT X
功能 加号 减 数和串相等 NOT 不等于 大于 大于等于 小于 小于等于 AND NAND XOR XNOR OR BOR 122
(4)AHDL中的组
具有相同类型的端口可以形成一个组,该组可以有256个成员“BIT”, 如下的组虽然表达方式不同,但实际是同一个组。 b[5..0]
(b5, b4, b3, b2, b1, b0) b[]
(5)AHDL中的数
二进制例: B\ 八进制例: Q\ 十六进制例:H\
(6)AHDL中的算数表达式
运算符 + - ! ^ MOD DIV * LOG2 + - == == != > >= < <= & AND !& NAND $ XOR !$ ) XNOR
说明 (unary)+1 positive (unary)-1 negative !a NOT a ^ 2 exponent 4 MOD 2 modulus 4 DIV 2 division a * 2 multiplication LOG2(4-3) logarithm base2 1+1 addition 1-1 subtraction (numeric) 5 == 5 numeric equality (string) \ string equality 5 != 4 not equal to 5 > 4 greater than 5 >= 5 greater than or equal to a < b+2 less than a <= b+2 less than or equal to a & b AND a AND b 1 !& 0 NAND (AND inverter) 1 NAND 0 1 $ 1 XOR (exclusive OR) 1 XOR 1 1 !$ 1 XNOR (exclusive NOR 1 XNOR 1 123
优先级别 1 1 1 1 2 2 2 2 3 3 4 4 4 4 4 4 4 5 5 6 6