VARIABLE
ss: MACHINE WITH STATES (s0, s1, s2, s3); zd: NODE; BEGIN
ss.clk = clk; ss.reset = reset;
z = DFF(zd, clk, VCC, VCC); TABLE
% current current next next % % state input state output % ss, y => ss, zd; s0, 0 => s0, 0; s0, 1 => s2, 1; s1, 0 => s0, 0; s1, 1 => s2, 1; s2, 0 => s2, 1; s2, 1 => s3, 0; s3, 0 => s3, 0; s3, 1 => s1, 1; END TABLE; END;
例9:异步状态机 SUBDESIGN mealy (
clk : INPUT; reset : INPUT; y : INPUT; z : OUTPUT; )
VARIABLE
ss: MACHINE WITH STATES (s0, s1, s2, s3); BEGIN ss.clk = clk; ss.reset = reset; TABLE
139
% current current current next % % state input output state % ss, y => z, ss;
s0, 0 => 0, s0; s0, 1 => 1, s1; s1, 0 => 1, s1; s1, 1 => 0, s2; s2, 0 => 0, s2, 1 => 1, s3, 0 => 0, s3, 1 => 1, END TABLE; END;
例10:非指定状态的处理 例:
SUBDESIGN recover (
clk : INPUT; go : INPUT; ok : OUTPUT; )
VARIABLE
sequence : MACHINE OF BITS (q[2..0]) WITH STATES ( idle, one, two, three, four, illegal1, illegal2, illegal3);
s2; s3; s3; s0; 140
BEGIN
sequence.clk = clk; CASE sequence IS WHEN idle => IF go THEN sequence = one; END IF; WHEN one => sequence = two; WHEN two => sequence = three; WHEN three => sequence = four;
WHEN OTHERS => %其它状态转入idle% sequence = idle; END CASE;
ok = (sequence == four); END;
(6)基本逻辑模块/老型号宏功能模块/某些巨功能模块的使用
这些模块放在\\maxplus2\\max2lib\\mega_lpm和\\maxplus2\\max2inc子目录中,使用包括(Include)语句,可以使的这些文件在TDF文件中使用。 使用方法:
1. 在变量段声明这些模块的引用变量
2. 在逻辑段用<引用名>.<端口名>的格式使用端口
如下例子是四位计数器连接四/十六译码器,这些模块的引用在变量段的引用声明说明的。 INCLUDE \INCLUDE \SUBDESIGN macro1 (
clk : INPUT; out[15..0] : OUTPUT; )
VARIABLE counter : 4count;
141
decoder : 16dmux; BEGIN
counter.clk = clk; counter.dnup = GND;
decoder.(d,c,b,a) = counter.(qd,qc,qb,qa); out[15..0] = decoder.q[15..0]; END;
该例子中使用了ALTERA提供的宏函数4count和16dmux,它们在变量段给予了声明,使counter代表4count,decoder代表16dmux,两个函数的输入口以<引用名>.<端口名>的格式在逻辑段布尔表达式的左边,输出口以同样的方式放在右边。
这两个被引用的函数放在4count.inc和16dmux.inc文件中,定义如下: FUNCTION 4count (clk, clrn, setn, ldn, cin, dnup, d, c, b, a) RETURNS (qd, qc, qb, qa, cout); FUNCTION 16dmux (d, c, b, a) RETURNS (q[15..0]);
(7)创造宏功能和巨功能模块
创造一个AHDL能用的宏功能和巨功能模块需要如下步骤: 1)编译和仿真设计文件以保证设计的正确性 2)最好建立一个专门的子目录放设计文件 3)打开文本编辑器窗口,调入设计文件
4)选择File/Create Default Include File菜单建立TDF能使用的包括文件 5)选择File/Create Default Symbol菜单建立图形编辑器能使用的符号文件
142