五.参考程序
程序包含 6 个文件:SINGT.VHD, PLL20.VHD, CNT6.VHD, CN6.VHD, data_rom.vhd
以及 sdata.hex.。
1)正弦信号发生器顶层设计
LIBRARY IEEE; --正弦信号发生器源文件
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY SINGT IS
PORT ( CLK : IN STD_LOGIC; --信号源时钟
DOUT : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );--8 位波形数据输出
END;
ARCHITECTURE DACC OF SINGT IS
COMPONENT PLL20 --调用锁相环 PLL20 文件:PLL20.vhd 声明
PORT(inclk0 : IN STD_LOGIC := '0';
c0 : OUT STD_LOGIC );
END COMPONENT;
COMPONENT cnt6 --调用 16 位计数器 cnt6 文件:cnt6.vhd 声明
PORT(CLK1 : IN STD_LOGIC ;
Q : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) ) ;
END COMPONENT;
COMPONENT cn6 --调用地址发生器 cn6 文件:cn6.vhd 声明
PORT( CLK2 : IN STD_LOGIC ;
Q4 : OUT STD_LOGIC_VECTOR (5 DOWNTO 0) ) ;
END COMPONENT;
COMPONENT data_rom --调用波形数据存储器 LPM_ROM 文件:data_rom.vhd 声明
PORT(address : IN STD_LOGIC_VECTOR (5 DOWNTO 0);--6 位地址信号
inclock : IN STD_LOGIC ;--地址锁存时钟
q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );
END COMPONENT;
SIGNAL c0 : STD_LOGIC; --设定内部节点作为时钟信号
SIGNAL do : STD_LOGIC_VECTOR (15 DOWNTO 0);
SIGNAL Q5 : STD_LOGIC_VECTOR (5 DOWNTO 0);
BEGIN
u1:PLL20 PORT MAP(c0 => c0,inclk0=>CLK); --例化
u2:cnt6 PORT MAP(CLK1 => c0,q=>do);
u3:cn6 PORT MAP(Q4=>Q5,CLK2=>do(8));
u4: data_rom PORT MAP(address=>Q5, q => DOUT,inclock=>do(8));
END;
评论0