琐存器:LATCH 例:
VARIABLE ff : TFF;
该变量一旦声明完毕,就可以使用如下变量: ff.t, ff.clk,ff.clrn,ff.prn,ff.q
对于只有一个输出的功能模块,可以简化使用。 DFF的功能说明为:
FUNCTION DFF(d, clk, clrn, prn) RETURNS (q);. 则对于如下的变量段,逻辑段的意思是a.d = b.q; VARIABLE a, b : DFF;
BEGIN a = b; END;
(4)状态机变量声明
例:
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语句
例:
11
CASE f[].q IS WHEN H\ addr[] = 0; s = a & b; WHEN H\ count[].d = count[].q + 1; WHEN H\ f[3..0].d = addr[4..1]; WHEN OTHERS => f[].d = f[].q; END CASE; (4)缺省叙述语句
该语句指定真值表中变量的缺省值, 例: BEGIN DEFAULTS a = VCC; END DEFAULTS; IF y & z THEN a = GND; END IF;
END;
(5)IF THEN语句
例:
IF a[] == b[] THEN c[8..1] = H \ addr[3..1] = f[3..1].q; f[].d = addr[] + 1;
ELSIF g3 $ g4 THEN f[].d = addr[];
ELSE d = VCC; END IF;
(6)FOR GENERATE 语句
例:
CONSTANT NUM_OF_ADDERS = 8; SUBDESIGN 4gentst ( a[NUM_OF_ADDERS..1], b[NUM_OF_ADDERS..1], cin : INPUT; c[NUM_OF_ADDERS..1], cout : OUTPUT;
12
)
VARIABLE carry_out[(NUM_OF_ADDERS+1)..1] : NODE;
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;
(7)真值表语句
该语句用于指定组合逻辑和状态机的输入和输出行为。 例: TABLE a0, f[4..1].q => f[4..1].d, control; 0, B\ => B\1; 0, B\ => B\0; 1, B\ => B\0; X, B\ => B\1;
END TABLE;
该例中,a0和f[4..1].q 是输入,f[4..1].d和control是输出,
二、AHDL中的语言元素
1、AHDL中的保留关键字
AHDL语言建议用大写字母书写如下关键字: AND FUNCTION OUTPUT
ASSERT GENERATE PARAMETERS BEGIN GND REPORT BIDIR HELP_ID RETURNS BITS IF SEGMENTS BURIED INCLUDE SEVERITY CASE INPUT STATES
CLIQUE IS SUBDESIGN
CONNECTED_PINS LOG2 TABLE CONSTANT MACHINE THEN DEFAULTS MOD TITLE DEFINE NAND TO
DESIGN NODE TRI_STATE_NODE DEVICE NOR VARIABLE
13
DIV NOT VCC
ELSE OF WHEN ELSIF OPTIONS WITH END OR XNOR FOR OTHERS XOR 2、 保留识别符
AHDL中的保留识别符:
CARRY JKFFE SRFFE CASCADE JKFF SRFF CEIL LATCH TFFE DFFE LCELL TFF DFF M CELL TRI EXP MEMORY USED FLOOR OPENDRN WIRE GLOBAL SOFT X 3、AHDL中运算符
符号 + - == ! != > >= < <= & !& $ !$ # !# 功能 加号 减 数和串相等 NOT 不等于 大于 大于等于 小于 小于等于 AND NAND XOR XNOR OR BOR
4、AHDL中的组
具有相同类型的端口可以形成一个组,该组可以有256个成员“BIT”, 如下的组虽然表达方式不同,但实际是同一个组。 b[5..0] ;(b5, b4, b3, b2, b1, b0) ;b[] 5、AHDL中的数
二进制例: B\
14
八进制例: 十六进制例: Q\ H\
6、AHDL中的算数表达式 运算符 + - ! ^ MOD DIV * LOG2 + - == == != > >= < <= & AND !& NAND $ XOR !$ ) XNOR # OR !# NOR ? 说明 (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 5 != 4 5 > 4 5 >= 5 (string) \ string equality numeric equality 优先级别 1 1 1 1 2 2 2 2 3 3 4 4 4 4 4 4 4 5 NAND (AND inverter) XOR (exclusive OR) XNOR (exclusive NOR OR NOR (OR inverter) ternary 5 6 6 7 7 8 not equal to greater than greater than or equal to a < b+2 less than a <= b+2 less than or equal to a & b a AND b 1 !& 0 1 $ 1 1 XOR 1 1 !$ 1 a # b a OR b a !# b a NOR b (5<4) ? 3:4 1 XNOR 1 1 NAND 0 AND
7、巨功能模块(LPM功能)
Mega功能模块列表:
15