基于AHDL的函数信号发生器的设计(附源代码)
AD558可将输入的数字量(8位)转化成0~2.56V的模拟电压量;用CPLD器件产生四种循环变化的数据量:
1、0~255(8Bit)循环加法计数;
2、255~0(8Bit)循环碱法计数;
3、0~255~0(8Bit)循环加减法计数;
4、0,20H,40H,60H,80H,A0H,C0H,E0H编码计数器。
将计数器的八位输出接到DAC的八位输入,可以产生四种波形(频率相同):
1、递增斜波;
2、递减斜波;
3、三角波;
4、递增阶梯波;
本实验完全用硬件描述语言实现,参考AHDL源程序
t11.tdf
SUBDESIGN t11
(
clk,reset,model[1..0]: INPUT;
daout[7..0]: OUTPUT;
)
VARIABLE
count[7..0],subadd :DFF;
-- subadd :NODE;
BEGIN
count[].clk=clk;
count[].clrn=reset;
subadd.clk=clk;
subadd.clrn=reset;
daout[]=count[].q;
-- sa[]=subadd[].q;
CASE model[] IS
WHEN 0 =》
count[].d=count[].q+1;
WHEN 1 =》
count[].d=count[].q-1;
WHEN 2 =》
IF(subadd.q==GND) THEN
count[].d=count[].q+1;
IF(count[].q == 254) THEN
subadd.d=VCC;
ELSE
subadd.d=GND;
END IF;
ELSE
count[].d=count[].q-1;
IF(count[].q 《= 1) THEN
subadd.d=GND;
ELSE
subadd.d=VCC;
END IF;
END IF;
WHEN 3 =》
count[].d=count[].q+H“20”;
END CASE;
END;
非常好我支持^.^
(0) 0%
不好我反对
(0) 0%