频率可变的任意波形发生器

深 圳 大 学 实 验 报 告

课程名称: Verilog使用及其应用

实验名称: 频率可变的任意波形发生器 学院: 电子科学与技术学院

一、 前言

波形发生器是一种数据信号发生器,在调试硬件时,常常需要加入一些信号,以观察电路工作是否正常,在实验与工程中都具有重要的作用。随着电子技术的发展与成熟,电子工程领域对波形发生器的要求越来越高,不仅要求波形发生器具有连续的相位变换,频率稳定等特点,还要求波形发生器可以模拟各种复杂信号,并能做到幅度、频率,相位,波形动态可调。Verilog HDL是一种硬件描述语言(HDL:Hardware Discription Language),是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。

本实验正是基于Verilog HDL语言对波形发生器的功能进行描述,并进行仿真,从而了解与掌握波形发生器的内部工作原理,并进一步熟悉与掌握Verilog HDL语言,将课堂所学知识进行实践。

二、 实验原理

总体设计方案及其原理说明:

图 1-1 系统总体设计方案

DDS是一种把数字信号通过数/模转换器转换成模拟信号的合成技术。它由相位累加器、相幅转换函数表、D/A转换器以及内部时序控制产生器等电路组成。

参考频率f_clk为整个合成器的工作频率,输入的频率字保存在频率寄存器中,经N位相位累加器,累加一次,相位步进增加,经过内部ROM波形表得到相应的幅度值,经过D/A转换和低通滤波器得到合成的波形。△P为频率字,即相位增量;参考频率为f_clk;相位累加器的长度为N位,输出频率f_out为:

F_out——输出信号的频率;

N————相位累加器的位数;

△P———频率控制字(步长);

F_clk——基准时钟频率。

图1-2 四种波形单周期的取样示意图

段地址 基地址 16位二进制数代表波形的取值

0 70 100 70 0 -70 100 -70 100 100 100 100 -100

01 101

01 110

-100

-100 -100 0 25 50 75 100 125 150 175 175 150 125 100 75 50 25 0 图1-3 函数查找表的设计

三、 源程序

module dds(f_clk,p,choice,data);//模块的端口设定

input [15:0] p; //频率控制字

input[1:0] choice; //波形选择变量

input f_clk; //输入时钟信号

output [15:0] data; //波形数值输出

wire [15:0] data;

reg [5:0] addr,address; //波形数值所在地址

reg [15:0] count;

reg f_out; //经P变量频率控制调动后的时钟信号

initial

begin

count

addr

f_out

function [15:0]rom; //ROM中各波形数值的设定

input[5:0] address;

case(address) //波形选择

0 : rom = 0; //正弦波

1 : rom = 70;

2 : rom = 100;

3 : rom = 70;

4 : rom = 0;

5 : rom = -70;

6 : rom = -100;

7 : rom = -70;

8 : rom = 100;

9 : rom = 100;

10: rom = 100;

11: rom = 100;

12: rom = -100;

13: rom = -100;

14: rom = -100;

15: rom = -100;

16 : rom = 0;

17 : rom = 25;

18 : rom = 50;

19 : rom = 75;

20 : rom = 100;

21 : rom = 125;

22 : rom = 150;

23 : rom = 175;

24 : rom = 175;

25 : rom = 150;

26 : rom = 125;

27 : rom = 100;

28 : rom = 75;

29 : rom = 50;

30 : rom = 25;

31 : rom = 0;

default : rom = 10'hxx;

endcase

endfunction

always @(posedge f_clk)

begin

if(count==p) //方波 //正三角波 //负三角波 //利用计数器count变量实现分频 //设置频率控制字

count=0;

f_out=~f_out;

end

else

count=count+1;

end

always@(posedge f_out)

begin

if(addr==7) //波形取8个点,实现波形数据切换 addr=0;

else

addr=addr+1;

case(choice) //选择波形

0: address=addr;

1: address=addr+8;

2: address=addr+16;

3: address=addr+24;

endcase

end

assign data = rom(address);//将ROM中对应的数据传递到data端口输出 endmodule

四、 仿真程序

module test;

wire [15:0] data;

wire [5:0] address;

reg [15:0] p;

reg f_clk;

reg [1:0] choice;

always #10 f_clk = ~f_clk;

initial //波形的初始化

begin

f_clk =0;

p=2; //频率控制字为2时的波形

choice=0;

#1050 choice = 1;//延时,切换波形,使所有波形能够在同一个仿真结果 #1500 choice = 2;

#1500 choice = 3;

#1000 p=5; //延时,更换频率

#500 choice=0;

#1050 choice = 1;

#1500 choice = 2;

#1500 choice = 3;

#1000 p=15; //延时,更换频率

#500 choice=0;

#1050 choice = 1;

#1500 choice = 2;

#1500 choice = 3;

end

dds phase (.f_clk (f_clk),.p(p),.choice(choice),.data(data)); //调用dds模块 endmodule

五、实验结果

深 圳 大 学 实 验 报 告

课程名称: Verilog使用及其应用

实验名称: 频率可变的任意波形发生器 学院: 电子科学与技术学院

一、 前言

波形发生器是一种数据信号发生器,在调试硬件时,常常需要加入一些信号,以观察电路工作是否正常,在实验与工程中都具有重要的作用。随着电子技术的发展与成熟,电子工程领域对波形发生器的要求越来越高,不仅要求波形发生器具有连续的相位变换,频率稳定等特点,还要求波形发生器可以模拟各种复杂信号,并能做到幅度、频率,相位,波形动态可调。Verilog HDL是一种硬件描述语言(HDL:Hardware Discription Language),是一种以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。

本实验正是基于Verilog HDL语言对波形发生器的功能进行描述,并进行仿真,从而了解与掌握波形发生器的内部工作原理,并进一步熟悉与掌握Verilog HDL语言,将课堂所学知识进行实践。

二、 实验原理

总体设计方案及其原理说明:

图 1-1 系统总体设计方案

DDS是一种把数字信号通过数/模转换器转换成模拟信号的合成技术。它由相位累加器、相幅转换函数表、D/A转换器以及内部时序控制产生器等电路组成。

参考频率f_clk为整个合成器的工作频率,输入的频率字保存在频率寄存器中,经N位相位累加器,累加一次,相位步进增加,经过内部ROM波形表得到相应的幅度值,经过D/A转换和低通滤波器得到合成的波形。△P为频率字,即相位增量;参考频率为f_clk;相位累加器的长度为N位,输出频率f_out为:

F_out——输出信号的频率;

N————相位累加器的位数;

△P———频率控制字(步长);

F_clk——基准时钟频率。

图1-2 四种波形单周期的取样示意图

段地址 基地址 16位二进制数代表波形的取值

0 70 100 70 0 -70 100 -70 100 100 100 100 -100

01 101

01 110

-100

-100 -100 0 25 50 75 100 125 150 175 175 150 125 100 75 50 25 0 图1-3 函数查找表的设计

三、 源程序

module dds(f_clk,p,choice,data);//模块的端口设定

input [15:0] p; //频率控制字

input[1:0] choice; //波形选择变量

input f_clk; //输入时钟信号

output [15:0] data; //波形数值输出

wire [15:0] data;

reg [5:0] addr,address; //波形数值所在地址

reg [15:0] count;

reg f_out; //经P变量频率控制调动后的时钟信号

initial

begin

count

addr

f_out

function [15:0]rom; //ROM中各波形数值的设定

input[5:0] address;

case(address) //波形选择

0 : rom = 0; //正弦波

1 : rom = 70;

2 : rom = 100;

3 : rom = 70;

4 : rom = 0;

5 : rom = -70;

6 : rom = -100;

7 : rom = -70;

8 : rom = 100;

9 : rom = 100;

10: rom = 100;

11: rom = 100;

12: rom = -100;

13: rom = -100;

14: rom = -100;

15: rom = -100;

16 : rom = 0;

17 : rom = 25;

18 : rom = 50;

19 : rom = 75;

20 : rom = 100;

21 : rom = 125;

22 : rom = 150;

23 : rom = 175;

24 : rom = 175;

25 : rom = 150;

26 : rom = 125;

27 : rom = 100;

28 : rom = 75;

29 : rom = 50;

30 : rom = 25;

31 : rom = 0;

default : rom = 10'hxx;

endcase

endfunction

always @(posedge f_clk)

begin

if(count==p) //方波 //正三角波 //负三角波 //利用计数器count变量实现分频 //设置频率控制字

count=0;

f_out=~f_out;

end

else

count=count+1;

end

always@(posedge f_out)

begin

if(addr==7) //波形取8个点,实现波形数据切换 addr=0;

else

addr=addr+1;

case(choice) //选择波形

0: address=addr;

1: address=addr+8;

2: address=addr+16;

3: address=addr+24;

endcase

end

assign data = rom(address);//将ROM中对应的数据传递到data端口输出 endmodule

四、 仿真程序

module test;

wire [15:0] data;

wire [5:0] address;

reg [15:0] p;

reg f_clk;

reg [1:0] choice;

always #10 f_clk = ~f_clk;

initial //波形的初始化

begin

f_clk =0;

p=2; //频率控制字为2时的波形

choice=0;

#1050 choice = 1;//延时,切换波形,使所有波形能够在同一个仿真结果 #1500 choice = 2;

#1500 choice = 3;

#1000 p=5; //延时,更换频率

#500 choice=0;

#1050 choice = 1;

#1500 choice = 2;

#1500 choice = 3;

#1000 p=15; //延时,更换频率

#500 choice=0;

#1050 choice = 1;

#1500 choice = 2;

#1500 choice = 3;

end

dds phase (.f_clk (f_clk),.p(p),.choice(choice),.data(data)); //调用dds模块 endmodule

五、实验结果


相关文章

  • Verilog期末实验报告-波形发生器
  • 深 圳 大 学 实 验 报 告 课程名称: Verilog使用及其应用 实验名称: 频率可变的任意波形发生器 学院: 电子科学与技术学院 专业:电子科学与技术 班级: 2 组号: 指导教师: 刘春平 报告人: 陈昊 学号: 20071601 ...查看


  • 信号源电路模块的设计
  • 目 录 第1章 绪 论 ............................................................................................................ ...查看


  • 第五届全国大学生电子设计竞赛题目
  • 第五届(2001年)全国大学生电子设计竞赛题目 A题波形发生器 一.任务 设计制作一个波形发生器,该波形发生器能产生正弦波.方波.三角波和由用户编辑的特定形状波 形.示意图如下: 二.要求 1.基本要求 (1)具有产生正弦波.方波.三角波三 ...查看


  • 傅里叶分解与合成
  • 周期信号的傅里叶分析 任意一个周期函数都可展开为傅里叶级数,因此各种波形的周期信号都可分解为一系列不同频率的正弦波.通过实验电路实现周期信号的傅里叶分解与合成,对周期信号进行傅里叶分析,对于深刻理解周期函数的傅里叶展开具有重要意义. 1 周 ...查看


  • [电子测量与仪器]陈尚松版课后习题与答案
  • 第二章误差与测量不确定度 当今校园学生抄作业现象日趋严重.许多学生早晨匆匆赶到学校不是读书,而是抄作业:更有甚者"分工合作"集体抄作业.学生抄作业是中学教育中的一个顽疾.其后果是十分严重的,它败坏了学风,形成了惰性,影响 ...查看


  • 波形发生器设计
  • 波形发生器设计报告 一. 设计任务 设计制作一个波形发生器,该波形发生器能产生正弦波.方波.三角波和由用户编辑的 特定形状波形. 二. 设计要求 1. 基本要求 具有产生正弦波.方波.三角波三种周期性的波形. 用键盘输入编辑生成上述三种波形 ...查看


  • 放大器赛题芯片运用总结
  • 一. 宽带直流放大器: 1. 输入小信号放大10DB的功能:双运放POA2690(低噪声高共模抑制比运放,最小可放 大1mV 有效值信号:加电容进行补偿减小带内起伏) 第一级做跟随器同时具有匹配阻抗的效果,第二级放大10dB 方便后级处理 ...查看


  • 电子信息类毕业设计参考题目
  • 毕业设计 第一题 点阵电子显示屏制作 一.任务 设计并制作一台简易LED电子显示屏,16行*32列点阵显示,原理示意图如下: 显示器 PC机 二.要求 控制器 LED电子显示屏原理框图 1.基本要求:设计并制作LED电子显示屏和控制器. 1 ...查看


  • 空气流量计
  • 空气流量计 空气流量计按结构原理可分为翼板式.热丝式.卡门涡旋式及电位计式等几种,按信号输出类型又分为数字式和模拟式两种. 操作说明 翼板式空气流量计 实验方法一 实验方法二 BOSCH热丝式空气流量计 BOSCH CIS 空气流量计 实验 ...查看


热门内容