语言示例AHDL
- 格式:doc
- 大小:128.50 KB
- 文档页数:3
一.AHDL语言216进制计数器
(1)底层设计——采用调用寄存器描述方
SUBDESIGN js216
(
clk,load,ena,clr,d[15..0] : INPUT = GND;
q[15..0],z : OUTPUT;
)
VARIABLE
count[15..0] : DFF;
BEGIN
count[].clk=clk;
count[].clrn=!clr;
IF load THEN
count[].d=d[];
ELSIF !ena THEN
count[].d=count[].q+1;
ELSE
count[].d=count[].q;
END IF;
q[]=count[];
CASE count[] IS
WHEN 216 => Z=Vcc;
END CASE;
END;
(2)顶层设计
二.AHDL语言10进制计数器
(1)方法1——状态机方式
SUBDESIGN js10
(
clk : INPUT ;
j : OUTPUT;
)
VARIABLE
ss:MACHINE WITH STATES (S0,S1,S2,S3,S4,S5,S6,S7,S8,S9);
BEGIN
ss.clk=clk;
TABLE
ss => ss, j;
s0 => s1, 0;
s1 => s2, 0;
s2 => s3, 0;
s3 => s4, 0;
s4 => s5, 0;
s5 => s6, 0;
s6 => s7, 0;
s7 => s8, 0;
s8 => s9, 0;
s9 => s0, 1;
END TABLE;
END;
(2)方法2——调用寄存器描述方式
SUBDESIGN js10
(
clk,load,ena,clr,d[4..0] : INPUT = GND;
q[4..0],z : OUTPUT;
)
VARIABLE
count[4..0] : DFF;
BEGIN
count[].clk=clk;
count[].clrn=!clr;
IF load THEN
count[].d=d[];
ELSIF !ena THEN
count[].d=count[].q+1; ELSE
count[].d=count[].q;
END IF;
q[]=count[];
CASE count[] IS
WHEN 9 => Z=Vcc;
END CASE;
调用寄存器描述方式顶层设计