打印

TLC7524接口电路程序

[复制链接]
1295|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
MAMAM|  楼主 | 2012-8-27 15:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 MAMAM 于 2012-8-27 15:49 编辑

--文件名:TLC7524.VHD
--功能:产生156.25KHz的正弦波。


library ieee;
use ieee.std_logic_arith.all;
use ieee.std_logic_1164.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='1' then b<=0;            --复位时,对地址寄存器清零   
elsif clk'event and clk='1' then

if q=4 then q<=0;               --
IF语句完成对系统时钟的5分频


if b=63 then b<=0;              --
IF语句完成对地址的循环计数


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;




.

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

60

帖子

0

粉丝