基于FPGA的直接数字频率合成器设计 - 图文
更新时间:2023-03-15 00:01:01 阅读量: 教育文库 文档下载
JIANGSU UNIVERSITY OF TECHNOLOGY
基于FPGA的直接数字频率合成器设计
学 院: 电气信息工程学院 专 业: 电子信息工程 班 级: 姓 名: 学 号: 指导教师: 戴霞娟、陈海忠 时 间: 2015年9月17日
FPGA技术实验报告
1
目 录
1.功能要求 ........................................................... 2 2. 方案设计及原理框图 ................................................ 2 2.1 方案设计 ......................................................... 2 2.2 原理框图 ......................................................... 3 2.2.1输入电路 ........................................................ 3 2.2.2FPGA电路 ........................................................ 3 2.2.3D/A转换电路 ..................................................... 4 3. 硬件电路设计及原理分析 ............................................ 4 3.1 硬件电路图 ....................................................... 4 3.2 原理分析 ......................................................... 5 3.3 DAC0832转换器 .................................................... 5 3.4 LM358芯片 ........................................................ 5 4.程序模块设计、仿真结果及分析 ...................... 错误!未定义书签。 4.1顶层模块 .......................................................... 6 4.2分频模块 .......................................................... 6 4.3 时钟模块 ........................................ 错误!未定义书签。 4.4正弦波产生模块 ................................... 错误!未定义书签。 4.5三角波产生模块 ................................... 错误!未定义书签。 4.6方波产生模块 ..................................... 错误!未定义书签。 4.7锯齿波产生模块 ................................... 错误!未定义书签。 4.8波形选择模块 ..................................... 错误!未定义书签。 5. 软硬件调试 ....................................................... 20 5.1软件调试 ......................................................... 22 5.2硬件调试 ......................................................... 22 6.调试结果说明 ...................................................... 25 7.心得体会 .......................................................... 25 8.参考文献 .......................................................... 25 附 录 ............................................................... 26
2
1.功能要求
通过本课题训练,使学生掌握使用FPGA实现频率合成的方法。要求学生根据正弦波形发生器的设计实例,举一反三,设计多功能波形发生器。该波形发生器能产生正弦波、方波、三角波、锯齿波和由用户编辑的特定形状波形,并且幅度、频率可调。具体要求如下:
基本要求:
(1)具有产生正弦波、方波、三角波、锯齿波4种周期性波形的功能。 (2)输出波形的频率范围为100HZ~200kHZ;至少可以输出8种频率的波形。 (3)输出波形幅度不大于5V(峰-峰值),且幅度可调。
扩展要求:
(1)在频率范围为100HZ~200kHZ内,频率步进间隔≤100HZ。
(2)输出波形幅度范围0~5V(峰-峰值),可按步进0.1V(峰-峰值)调整。 (3)用LCD1602显示输出波形的类型、重复频率(周期)和幅度。 (4)用键盘输入编辑生成上述4种波形(同周期)的线性组合波形。 (5)用键盘和其他输入装置产生任意波形。 (6)具有波形存储功能。
2.方案设计及原理框图 2.1方案设计
利用FPGA来完成设计,FPGA编程灵活,可以实现三角波、方波、锯齿波和
正弦波的数字化处理,将一个周期内的采样点存储起来,生成频率可调的正弦波、方波、锯齿波或者三角波,再通过D/A转换和滤波电路便可得到模拟波形。利用该方法,编程简单,实现灵活。
2.2原理框图
数字信号发生器系统主要由输入部分、FPGA部分、D/A转换部分、频率调节和波形转换部分组成。原理框图如下图1:
3
FPGA部分 时钟 分频器 复位 系统控制正弦波 波形 波形 调频1 调频2 调频3 三角波 方波 锯齿波 滤波 输出 D\\A 图1:多功能波形信号发生器原理框图 2.2.1输入部分
输入部分包含以下功能按键:时钟、复位、波形、调频1、调频2和调频3。 (1)时钟:标准的50MHZ时钟输入。 (2)复位:低电平复位。
(3)波形:为波形输出选择开关,可以选择单波形的输出。
(4)调频1,2,3:可以改变正弦波、三角波、方波和锯齿波的频率,总共可以输出8种不同频率。
转 器换
2.2.2FPGA部分
FPGA是整个系统的核心,包括系统控制器、波形数据生成器、加法器、运算/
译码、分频器等电路。各部分具体功能如下: 系统控制器:控制系统的每个部分状态之间的协调。 分频:分频系数有的固定不变,也有可改变的。
正弦波:通过循环不断地从RAM中依次读取正弦波一个周期在时域上1024个采样点的波形数据送入波形DAC,从而产生正弦波。正弦波的频率取决于读取数据的速度。
4
三角波:三角波波形是对称的,每边呈线性变化,所以可以根据地址数据做简单运算,就可以得到三角波。
锯齿波:产生单调性锯齿波,因此把地址数据进行左移2位,结果送波形DAC就可。
方波:方波产生有1024个采样点组成,1024个采样点的数据只有“低电平”和“高电平”2种状态。
2.2.3波形D/A转换部分
采用具有8位分辨率的D/A转换集成芯片DAC0832作为多种波形发生器的数模转换器。由于多种波形发生器制使用一路D/A转换,因而DAC0832可连续接成单缓冲器方式。另外,因DAC0832是一种电流输出型D/A转换器,要获得模拟电压输出时,需外接运放来实现电流转换为电压。
由于在实际使用中输出波形不仅需要单极性的(0~+5V或-5~0V) 有时还需要双极性的(±5V),因而可用两组运算放大器作为模拟电压输出电路,运放可选用LM358,其片内集成了两个运算放大器。
3.硬件电路设计及原理分析
3.1硬件电路图
图2:波形信号发生器硬件电路图
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;
;
15
LIBRARY altera_mf; USE altera_mf.all; ENTITY cyy_sj IS
PORT(address: IN STD_LOGIC_VECTOR (9 DOWNTO 0); clock: IN STD_LOGIC ;
q
: OUT STD_LOGIC_VECTOR (9 DOWNTO 0));
END cyy_sj;
ARCHITECTURE SYN OF cyy_sj IS
SIGNAL sub_wire0 : STD_LOGIC_VECTOR (9 DOWNTO 0); COMPONENT altsyncram
GENERIC (clock_enable_input_a : STRING;
clock_enable_output_a init_file : STRING;
intended_device_family : STRING; lpm_hint : STRING; lpm_type : STRING; numwords_a : NATURAL; operation_mode outdata_aclr_a
: STRING; : STRING;
: STRING;
outdata_reg_a : STRING; widthad_a : NATURAL; width_a
: NATURAL;
width_byteena_a : NATURAL);
PORT (clock0 : IN STD_LOGIC ;
address_a : IN STD_LOGIC_VECTOR (9 DOWNTO 0); q_a : OUT STD_LOGIC_VECTOR (9 DOWNTO 0));
END COMPONENT; BEGIN
q <= sub_wire0(9 DOWNTO 0);
16
altsyncram_component : altsyncram
GENERIC MAP (clock_enable_input_a => \
clock_enable_output_a => \init_file => \intended_device_family => \lpm_hint => \lpm_type => \numwords_a => 1024, operation_mode => \outdata_aclr_a => \outdata_reg_a => \widthad_a => 10, width_a => 10, width_byteena_a => 1)
PORT MAP (clock0 => clock, address_a => address, q_a => sub_wire0);
END SYN; 仿真结果:
4.6方波产生模块
17
该模块输入信号由时钟(clk)和复位信号(reset)构成,当信号发生器选择信号(sel[2..0])为5时,该模块输出端(q [9..0])对外输出。模块振幅随时钟的变化持续变为高电平 或低电平,输出波形参数可以通过程序进行设定。 VHLIBRARY ieee;
USE ieee.std_logic_1164.all; LIBRARY altera_mf; USE altera_mf.all; ENTITY cyy_square IS
PORT(address : IN STD_LOGIC_VECTOR (9 DOWNTO 0);
clock : IN STD_LOGIC ;
q : OUT STD_LOGIC_VECTOR (9 DOWNTO 0));
END cyy_square;
ARCHITECTURE SYN OF cyy_square IS
SIGNAL sub_wire0 : STD_LOGIC_VECTOR (9 DOWNTO 0); COMPONENT altsyncram
GENERIC (clock_enable_input_a : STRING;
clock_enable_output_a init_file : STRING;
intended_device_family : STRING; lpm_hint : STRING; lpm_type : STRING; numwords_a : NATURAL; operation_mode outdata_aclr_a
: STRING; : STRING;
: STRING;
outdata_reg_a : STRING; widthad_a : NATURAL; width_a
: NATURAL;
18
width_byteena_a : NATURAL);
PORT (clock0 : IN STD_LOGIC ;
address_a : IN STD_LOGIC_VECTOR (9 DOWNTO 0); q_a : OUT STD_LOGIC_VECTOR (9 DOWNTO 0));
END COMPONENT BEGIN
q <= sub_wire0(9 DOWNTO 0); altsyncram_component : altsyncram
GENERIC MAP (clock_enable_input_a => \
clock_enable_output_a => \init_file => \intended_device_family => \lpm_hint => \lpm_type => \numwords_a => 1024, operation_mode => \outdata_aclr_a => \outdata_reg_a => \widthad_a => 10, width_a => 10, width_byteena_a => 1)
PORT MAP (clock0 => clock,
address_a => address, q_a => sub_wire0);
END SYN; 仿真结果:
19
4.7锯齿波产生模块
VHDL程序: LIBRARY ieee;
USE ieee.std_logic_1164.all; LIBRARY altera_mf; USE altera_mf.all; ENTITY cyy_jc IS
PORT(address : IN STD_LOGIC_VECTOR (9 DOWNTO 0);
clock
: IN STD_LOGIC ;
q : OUT STD_LOGIC_VECTOR (9 DOWNTO 0 );
END cyy_jc;
ARCHITECTURE SYN OF cyy_jc IS
SIGNAL sub_wire0 : STD_LOGIC_VECTOR (9 DOWNTO 0); COMPONENT altsyncram
GENERIC (clock_enable_input_a : STRING;
clock_enable_output_a init_file
: STRING;
: STRING;
intended_device_family : STRING; lpm_hint : STRING; lpm_type : STRING;
20
numwords_a : NATURAL; operation_mode: STRING; outdata_aclr_a: STRING; outdata_reg_a : STRING; widthad_a : NATURAL; width_a
: NATURAL;
width_byteena_a : NATURAL );
PORT (clock0 : IN STD_LOGIC ;
address_a : IN STD_LOGIC_VECTOR (9 DOWNTO 0); q_a : OUT STD_LOGIC_VECTOR (9 DOWNTO 0));
END COMPONENT; BEGIN
q <= sub_wire0(9 DOWNTO 0);
altsyncram_component : altsyncram
GENERIC MAP (clock_enable_input_a => \
clock_enable_output_a => \init_file => \intended_device_family => \lpm_hint => \lpm_type => \numwords_a => 1024, operation_mode => \outdata_aclr_a => \outdata_reg_a => \widthad_a => 10, width_a => 10, width_byteena_a => 1)
PORT MAP (clock0 => clock,
address_a => address,
21
q_a => sub_wire0);
END SYN;
4.8输出波形选择模块
VHDL程序 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL; ENTITY cyy_MUX IS
PORT(Q1,Q2,Q3,Q4:IN STD_LOGIC_VECTOR(9 DOWNTO 0); A1,A0:IN STD_LOGIC;
Q:OUT STD_LOGIC_VECTOR(9 DOWNTO 0)); END;
ARCHITECTURE ONE OF cyy_MUX IS
SIGNAL A:STD_LOGIC_VECTOR(1 DOWNTO 0); SIGNAL A2,A3:STD_LOGIC; BEGIN PROCESS(A1) BEGIN
IF A1'EVENT AND A1='0' THEN
IF A2='0' THEN A2<='1'; ELSE A2<='0';
END IF; END IF; END PROCESS; PROCESS(A0) BEGIN
IF A0'EVENT AND A0='0' THEN
IF A3='0' THEN
22
A3<='1'; ELSE A3<='0';
END IF; END IF; END PROCESS; A<=A2&A3;
Q<=Q1 WHEN A=\
Q2 WHEN A=\Q3 WHEN A=\ Q4;
END;
5.软硬件调试
5.1软件调试
程序编写完成且准确无误后,将FPGA板接入计算机,安装完成后下载,逻辑分析仪显示下图所示正弦波波形。
三角波、方波、锯齿波的调试过程与正弦波雷同。
5.2硬件调试
将焊接并测试好的外部硬件电路与FPGA连接好,接上电源,调整频率与波
23
形控制开关,利用示波器观察输出的波形。
5.2.1正弦波波形
5.2.2三角波波形
24
5.2.3方波波形
5.2.4锯齿波波形
硬件调试注意点:
(1)电路板接入电路前,不能直接放在仪器外壳上,因为电路板反面焊点是裸露的,放在仪器上容易出现短路,烧毁电路板。
(2)在将电路板与FPGA接入电路时,要先将实物与FPGA开发板接好,再给
25
FPGA送电,最后开启电源。
(3)电路板上LM358芯片的+12V与-12V不能接反,否则芯片会被烧毁。
6.调试结果说明
实验中利用FPGA下载设计的程序作为波形信号源,通过DAC083、进行DA转换,经运放放大通过示波器显示观察。
观察可发现,设计电路可以输出四种波形,分别是正弦波、方波、三角波和锯齿波,有8种不同频率,最小频率为97.3HZ,最大频率为8.137KHZ。频率大于8.137KHZ,则在示波器中可发现明显的波形失真。
7.心得体会
经过两周的课程设计,我终于完成了波形信号发生器的设计。基本达到老师要求,在兴奋不已的同时,我也发现了很多问题,虽然我以前做过FPGA的小设计,但是相对来说,对于FPGA还是很陌生的,DAC0832芯片就压根没见过。所以,一开始完全没有头绪,要进行大量的准备工作,但通过老师的讲解和向同学请教,慢慢有了思路。要设计一个成功的电路,必须要有耐心,要有坚持的毅力。在整个电路的设计过程中,花费时间最多的是各个单元电路的连接及电路的细节设计上,这要求我们对硬件系统的各个部分有充分透析的理解和研究,并能对之灵活应用。完成这次设计后,我在书本理论的基础上又有了更深层次的理解。 通过本次设计,我能够更加熟练的运用VHDL语言编写程序,通过运用VHDL语言对波形信号发生器的整体设计、仿真分析和实验验证,成功实现了对波形信号频率的调节和显示。对FPGA的功能也有了更深刻的了解,对FPGA的安装、下载过程也烂熟于心。最后还要感谢老师和同学在这次设计中对我的支持和帮助。
8.参考文献
[1]FPGA技术综合训练指导书[M].江苏理工学院,2014,5 [2]潘松,黄继业.EDA技术实用教程[M].科学出版社,2002,10 [3]王振红.VHDL数字电路设计教程[M].机械工业出版社,第二版
[4]褚振勇,翁木云.FPGA设计及应用[M].西安电子科技大学出版社,2002,7 [5]路而红.电子设计自动化应用技术——FPGA应用篇[M].高等教育出版社,2015,4
26
附录:
1.实物图:
2.锁定引脚:
正在阅读:
建国60周年中国交通发展史论文01-02
松下PLC编程软件FPWINGR操作教程04-22
节能环保我先行作文03-31
实用法律基础期末复习题110-01
最新液压自动抛石机A1液压自动抛石机(防汛抢险抛石机)06-23
南昌大学分析化学题库11-19
丰收的季节02-10
matlab线性代数例题04-21
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 合成器
- 频率
- 基于
- 直接
- 图文
- 数字
- 设计
- FPGA