1、数字电路课程设计 直接数字频率合成 摘要:本次课程设计主要任务是设计数字正弦信号发生器,主要依据的原摘要:本次课程设计主要任务是设计数字正弦信号发生器,主要依据的原 理原理是奈奎斯特采样定律,从一个连续的正弦信号中经取样、量化、编码,理原理是奈奎斯特采样定律,从一个连续的正弦信号中经取样、量化、编码, 形成一个正弦函数表,存于形成一个正弦函数表,存于 ROMROM 中。合成时,通过改变相位累加器的累加步长中。合成时,通过改变相位累加器的累加步长 控制字来改变相位增量。相位增量不同,输出的一个正弦周期内的采样点数就控制字来改变相位增量。相位增量不同,输出的一个正弦周期内的采样点数就 不同,从而达
2、到改变频率的目的。实验利用不同,从而达到改变频率的目的。实验利用 xilinxxilinx 软件进行编写程序之后下载软件进行编写程序之后下载 到到 xilinxxilinx 开发板上,最后生成正弦波。开发板上,最后生成正弦波。 二、二、 设计方案设计方案 第第1 1章章 实验任务与原理实验任务与原理 任务指标:任务指标: 掌握数字函数发掌握数字函数发生器的基本原理;生器的基本原理; 通过实验掌握通过实验掌握 xilinxxilinx 软件及开发板的基本使用方法;软件及开发板的基本使用方法; 进一步掌握进一步掌握 VHDLVHDL。 功能需求:功能需求: 产生一定范围内的任意频率的正弦波。产生一
3、定范围内的任意频率的正弦波。 原理阐述:原理阐述: 在时钟频率即采样频率不变的情况下, 通过相位增量的改变来实现频在时钟频率即采样频率不变的情况下, 通过相位增量的改变来实现频 率的改变。对于正弦信号发生器,它的输出可以用下式来描述:率的改变。对于正弦信号发生器,它的输出可以用下式来描述: ; SoutSout 是该信号发生器的输出信号波形,是该信号发生器的输出信号波形, foutfout 指输出信号对应的频率。上式的表述对于时间指输出信号对应的频率。上式的表述对于时间 t t 是连续的,为了用数字是连续的,为了用数字 逻辑实现该表达式,必须进行离散化处理。用基准时钟逻辑实现该表达式,必须进行
4、离散化处理。用基准时钟 clkclk 进行抽样,进行抽样, 令正弦信号的相位:令正弦信号的相位:;在一个;在一个 clkclk 周期周期 TclkTclk 内,相位的增量内,相位的增量 为:为: 。 FclkFclk 指指 clkclk 的频率,对相位增加进行数字量化,则的频率,对相位增加进行数字量化,则 2 2切割成切割成 2 2 的的 N N 次方份,每个次方份,每个 clkclk 周期相位增加则为周期相位增加则为,K K 为整数,称为整数,称 K K 为频率为频率 控制字。于是,控制字。于是,得到得到。就可以得到输出信号的。就可以得到输出信号的 频率为频率为 。 第第2 2章章 系统设计
5、及仿真系统设计及仿真 1 1、顶层模块设计:、顶层模块设计: 代码:代码: library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity top is Port ( clk : in STD_LOGIC; din : in STD_LOGIC_VECTOR (7 downto 0); dout : out STD_LOGIC_VECTOR (7 downto 0); end top; architecture Behavioral of top is component rom is port ( clka: IN std_logic; addra: IN
6、 std_logic_VECTOR(10 downto 0); douta: OUT std_logic_VECTOR(7 downto 0) ); end component; component accumulator is Port ( clk : in STD_LOGIC; k : in STD_LOGIC_VECTOR (7 downto 0); dout : out STD_LOGIC_VECTOR (10 downto 0); end component; signal addr: STD_LOGIC_VECTOR(10 downto 0); begin U1: accumulator port map(clk, din, addr); U2: rom port map(clk, addr, dout); end Behavioral; 累加器设计:累加器设计: 代码:代码: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use ieee.std_logic_unsigned.all;