基于FPGA的直接数字频率合成器设计 - 图文(2)

2020-02-21 02:57

5

3.2原理分析

本设计的工作原理为将要产生的波形数据存入波形存储器 ,然后在参考时钟的作用下 ,对输入的频率数据进行累加 ,并且将累加器的输出一部分作为读取波形存储器的地址 ,将读出的波形数据经D/A转换为相应的模拟电压信号。本研究的重点就是用VHDL来实现DDS的功能 ,能够达到高精度的输出 ,同时标准波形数据生成存放在 ROM 中 ,可以简化运算过程 ,提高运算速度 ,加快反应时间。

3.3 DAC0832转换器

DAC0832是双列直插式8位D/A转换器,在电路中DAC0832被接成单缓冲器方式。它的ILE,VCC,8脚与+5V相连,CS,XFER,WR2,WR1,3脚,10脚与GND相连,WR1与CP信号相连。这样DAC0832的8位DAC寄存器始终处于导通状态,因此当CP变成低电平时,数据线上的数据便可直接通过8位DAC寄存器,并有其8位D/A转换器进行转换。

图3: DAC0832芯片引脚图

3.4 LM358芯片

LM358是常用的双运,LM358里面包括有两个高增益、独立的、内部频率补偿的双运放,适用于电压范围很宽的单电源,而且也适用于双电源工作方式,它的应用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运放的地方使用。

6

图4: LM358芯片引脚图

4.程序模块设计、仿真结果分析

波形发生器可以由顶层模块、分频模块、时钟模块、正弦波产生模块、三角波产生模块、方波产生模块和输出波形选择模块组成。

4.1顶层模块

顶层文件将已经设计的各个模块联系在一起成为一个整体,实验时使用QuartusⅡ9.0编写VHDL程序实现顶层文件设计。顶层文件仿真图如下5:

图5: 顶层文件仿真图

4.2分频模块

7

根据DAC0832 输出控制时序,利用接口电路图,DAC0832是8位的D/A转换器,转换周期为1μs,又因为FPGA的系统时钟为50MHz,必须对其进行分频处理,实验使用100分频,实验时使用QuartusⅡ9.0编写VHDL程序生成时钟分频器。 VHDL程序: LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY wxm_CLK IS PORT(CLK:IN STD_LOGIC; EN,EN1,EN2:IN STD_LOGIC; CLKOUT:OUT STD_LOGIC); END;

ARCHITECTURE BEHAVE OF wxm_CLK IS

SIGNAL CNT:STD_LOGIC_VECTOR(19 DOWNTO 0); SIGNAL EN3,EN4,EN5: STD_LOGIC;

SIGNAL EN6:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN

EN6<=EN3&EN4&EN5; PROCESS(EN) BEGIN

IF EN'EVENT AND EN='0' THEN IF EN3 ='0' THEN EN3<='1'; ELSE EN3<='0'; END IF; END IF; END PROCESS; PROCESS(EN1)

8

BEGIN

IF EN1'EVENT AND EN1='0' THEN IF EN4 ='0' THEN EN4<='1'; ELSE EN4<='0';

END IF;

END IF; END PROCESS; PROCESS(EN2) BEGIN

IF EN2'EVENT AND EN2='0' THEN

IF EN5 ='0' THEN

EN5<='1';

ELSE

EN5<='0';

END IF;

END IF; END PROCESS; PROCESS(CLK,EN6) BEGIN

IF CLK'EVENT AND CLK='1' AND EN6=\

IF CNT>4 THEN CNT<=(OTHERS=>'0'); CLKOUT<='0'; ELSIF CNT>2 THEN CLKOUT<='1' CNT<=CNT+1; ELSE

;

9

CNT<=CNT+1; END IF;

ELSIF CLK'EVENT AND CLK='1' AND EN6=\

IF CNT>8 THEN CNT<=(OTHERS=>'0'); CLKOUT<='0'; ELSIF CNT>4 THEN CLKOUT<='1' CNT<=CNT+1; ELSE CNT<=CNT+1; END IF;

;

ELSIF CLK'EVENT AND CLK='1' AND EN6=\

IF CNT>16 THEN CNT<=(OTHERS=>'0'); CLKOUT<='0'; ELSIF CNT>8 THEN CLKOUT<='1' CNT<=CNT+1; ELSE CNT<=CNT+1; END IF;

;

ELSIF CLK'EVENT AND CLK='1' AND EN6=\

IF CNT>30 THEN CNT<=(OTHERS=>'0'); CLKOUT<='0'; ELSIF CNT>15 THEN CLKOUT<='1' CNT<=CNT+1;

;


基于FPGA的直接数字频率合成器设计 - 图文(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:组合数学1章课后习题答案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: