原创 VHDL学习日志(五)--用FPGA实现对TLC7524的简单控制

2010-3-28 22:25 3733 8 8 分类: FPGA/CPLD

:(TLC7524资料)


           TLC7524是高速串行A/D芯片,FPGA的执行速度很快,所以很适合高速的数据采集,今天弄了个小程序实现对TLC7524的简单控制,代码如下:


       --------------------------------------------------------------------------------------------
--                         每天进步一点点,开心一大点^_^
--函数名称:TLC7524.VHD
--函数功能:用FPGA实现对TLC7524的简单控制,产生156.25KHz的正弦波
--作    者:萤火虫II号
--创建日期:2010.03.27
--------------------------------------------------------------------------------------------
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;


entity TLC7524 is
 port (clk: in std_logic;  --系统时钟
      rst: in std_logic;  --复位信号
      data_out: out std_logic_vector(7 downto 0)   --波形数据
    );
end TLC7524;


architecture behav of TLC7524 is
 signal b : integer range 0 to 63;  --地址计数器
 signal q : integer range 0 to 4;   --计数器
 signal d : integer range 0 to 255; --波形数据寄存器
  begin
  
  process(clk)
  begin
   if rst'event and rst='1' then --复位时,寄存器清零
    if q="4" then q<=4;          
     if b="63" then b<=0;
     else b<=b+1;
      end if;
     else  q<=q+1;
     end if;
   end if;
  end process;
 
  process(b)       --此进程存储了正弦波64个采样点的波形数据
  begin
  case b is
   when 00=> d<=255 ; when 01=> d<=254 ; when 02=> d<=252 ; when 03=> d<=249 ;
  when 04=> d<=245 ; when 05=> d<=239 ; when 06=> d<=233 ; when 07=> d<=225 ;
  when 08=> d<=217 ; when 09=> d<=207 ; when 10=> d<=197 ; when 11=> d<=186 ;
  when 12=> d<=174 ; when 13=> d<=162 ; when 14=> d<=150 ; when 15=> d<=137 ;
  when 16=> d<=124 ; when 17=> d<=112 ; when 18=> d<= 99 ; when 19=> d<= 87 ;
  when 20=> d<= 75 ; when 21=> d<= 64 ; when 22=> d<= 53 ; when 23=> d<= 43 ;
  when 24=> d<= 34 ; when 25=> d<= 26 ; when 26=> d<= 19 ; when 27=> d<= 13 ;
  when 28=> d<=  8 ; when 29=> d<=  4 ; when 30=> d<=  1 ; when 31=> d<=  0 ;
  when 32=> d<=  0 ; when 33=> d<=  1 ; when 34=> d<=  4 ; when 35=> d<=  8 ;
  when 36=> d<= 13 ; when 37=> d<= 19 ; when 38=> d<= 26 ; when 39=> d<= 34 ;
  when 40=> d<= 43 ; when 41=> d<= 53 ; when 42=> d<= 64 ; when 43=> d<= 75 ;
  when 44=> d<= 87 ; when 45=> d<= 99 ; when 46=> d<=112 ; when 47=> d<=124 ;
  when 48=> d<=137 ; when 49=> d<=150 ; when 50=> d<=162 ; when 51=> d<=174 ;
  when 52=> d<=186 ; when 53=> d<=197 ; when 54=> d<=207 ; when 55=> d<=217 ;
  when 56=> d<=225 ; when 57=> d<=233 ; when 58=> d<=239 ; when 59=> d<=245 ;
  when 60=> d<=249 ; when 61=> d<=252 ; when 62=> d<=254 ; when 63=> d<=255 ;
  when others=> null;
  end case;
  end process;
  data_out<= conv_std_logic_vector(d,8); --正弦波形输出,转换函数
end behav;


         可能还有其它的方法来实现,不过今天先弄到这,该去休息了,明天还要上班弄别的东西,俺先干好本职工作的同时,才能学习,不然工作都不称职,俺还怎么混下去,呵呵,明天晚上继续来……


        呵呵……


        每天进步一点点,开心多一点^_^

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
8
关闭 站长推荐上一条 /3 下一条