语言示例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;

调用寄存器描述方式顶层设计