弄过了ADC0809当然要弄一下DAC0832了,嘻嘻,这个芯片俺印象很深,当年俺参加学习的电子大赛培训时就是用它做的一个函数发生器,呵呵,当时功能比较简单,今天俺用FPGA来控制它,嘻嘻……
--------------------------------------------------------------------------------------------
-- 每天进步一点点,开心一大点^_^
--函数名称:DAC0832.VHD
--函数功能:用FPGA实现对DAC的简单控制,产生频率为762.9Hz的锯齿波。
--作 者:萤火虫II号
--创建日期:2010.03.24
--------------------------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity DAC0832 is
port (clk: in std_logic; --系统时钟,这里说一下std_logic和BIT数据类型的曲别
--std_logic定义为:type std_logic is ('u','x','0','1','z','w','l','h','-');
--bit的定义为:type bit is ('0','1');
rst: in std_logic; --复位信号
ile: out std_logic; --数据锁存允许
cont: out std_logic; --控制信号(WR1,WR2,CS,Xfer)
data_out: out std_logic_vector(7 downto 0) --波形数据输出
);
end DAC0832;
architecture behav of DAC0832 is
signal q: integer range 0 to 63; --计数值
signal data: std_logic_vector(7 downto 0); --波形数据
begin
process(clk)
begin
if rst='1' then q<=0; --高电平复位,计数值清零
elsif clk'event and clk='1' then
if q="63" then q<=0; --这句是产生64分频,原理很简单,只有时钟振荡64次data才变一次
if data="11111111" then data<="00000000"; --产生锯齿波形
else data<=data+1;
end if;
else q<=q+1;
end if;
end if;
end process;
ile<='1';cont<='0';data_out<=data; --ile锁存、cont赋值;波形数据输出;
end behav;
写代码时发与自己对std_logic定义 --bit的定义为不是太了解,又临时翻了一下课本,呵呵,现在终于记住了……
哦,把俺查的DAC0832的资料也弄上来:
还是那句口号:
每天进步一点点,开心多一点^_^
xucun915_925777961 2012-12-12 11:32
用户377235 2012-11-30 23:51
用户850068 2010-4-5 19:25