当前位置:文档之家› 数电自主设计

数电自主设计

数电自主设计
数电自主设计

自主设计型实验实验报告

学院:电气工程及自动化学院

姓名:张旭

学号: 1120610831

2014 年12 月

姓名张旭班级1206108 学号1120610831

实验日期节次教师签字成绩

实验名称

基于FPGA频率可调的正弦波发生电路

1.实验目的

(1)利用FPGA产生频率可调的正弦波。

(2)熟练掌握FPGA的用法。

(3)利用MATLAB计算正弦波取点,熟练掌握MATLAB的应用。

2.总体设计方案或技术路线

用FPGA实现电路设计。电路的规模大小可根据自己的需要而设定可将波形数据存入FPGA的ROM中。

正弦波信号发生器是由地址发生器和正弦波数据存储器ROM两块构成,输入为时钟脉冲,输出为8位二进制。

2.1地址发生器的原理

地址发生器实质上就是计数器,ROM的地址是6位数据,相当于64位循环计数器。

2.2只读存储器ROM的设计

(1)、Verilog HDL编程的实现

①基本原理:为每一个存储单元编写一个地址,只有地址指定的存储单元才

能与公共的I/O相连,然后进行存储数据的读写操作。

②逻辑功能:地址信号的选择下,从指定存储单元中读取相应数据

根据相位间隔对正弦信号进行取样、量化、编码,然后储存在EPROM中构成一个正弦查询表,通过查表法产生波形。它是由参考时钟、相位累加器、正弦查询表和D/A转换器组成。

2.3基于Verilog HDL编程的设计

在地址信号的选择下,从指定存储单元中读取相应数据

系统框图如下:

2.4、总体设计框图

2.5程序设计思路:

1)分频器控制读取rom的步长,通过输入变量改变分频器计数器的计数总量,控制分频实验频率可调。

2)制作rom,通过一个函数实现,给函数输入一个地址,通过条件语句输出一个值。

3)调幅(附加),通过在rom的值除以不同的值来控制改变输出信号的幅度。

3.实验电路图

由FPGA模块为DA提供八路输出。

部分源程序:

module sin(

input clk,

input rst, //A7

output[7:0]data//JB,JC,(7~0:A9,B9,A10,C9,C12,A13,C13,D12) );

/////////////////////////////////////////////////

reg[8:0] addr_sin;

always@(posedge clk )

begin

if(9'd499==addr_sin)

addr_sin<=9'b0;

else

addr_sin<=addr_sin+9'b1;

end

//ROM区:

sin500 sin (

.clka(clk), // input clka

.addra(addr_sin), // input [8 : 0] addra

.douta(data) // output [7 : 0] douta

);

Endmodule

4.仪器设备名称、型号

1、Agilent U1252A数字万用表一台

2、数字电路试验箱、子板1台

3、直流稳压电源 1台

4、Agilent DS05032A 示波器1台

5、FPGA系统版一块

5.理论分析或仿真分析结果

波形存储器产生的所需波形的幅值的数字数据通过D/A 转换器转换成模拟信号,这里可由MATLAB 计算正弦波经D/A 转换器转换前的输出量,这里由于 D/A 转换器采用的是0832,为8位DA ,故由FPGA 生成的数字量从0000 0000到1111 1111,精度为1/256,这里通过转换后,可以得到在0V 到5V 范围内的正弦波,此时再添加一级运放来做到2.5V 的偏置。

信号发生器的输出频率0f 可表示为:

N s f M f M f 2..0=?=

式中s f 为系统时钟,f ?为系统分辨率,N 为相位累加器位数,M 为相位累加器的增量。

首先确定系统的分辨率f ?,最高频率m ax f ,及最高频率m ax f 下的最少采样点数min N ,根据需要产生的最高频率m ax f 以及该频率下的最少采样点数min N ,由公式

min max .N f f s ≥

确定系统时钟s f 的下限值。同时又要满足分辨率计算公式

f f N s ?=2

综合考虑决定s f 的值。

选定了s f 的值后,则由公式(1.3)可 得N 2=

f f s ?,据此可确定相位累加器

位数N 。

然后由最高输出频率

M f f o ??=

推出M =S 2,得出相位增量寄存器为S 位。 确定波形存储器的地址位数W ,本系统中决定存入Z 2个数据值,因此ROM 地址为Z 位。

本设计选用FPGA 器件作为DDS 的实现器件,对于D/A 转换器的选择,首先要考虑到D/A 转换器的转换速率。要实现所需的频率,D/A 的转换速度要大于min max .N f ,然后根据D/A 转换器字长所带来的误差,决定D/A 的位数。由此选择D/A 转换器的型号。

利用MATLAB 仿真波形

01234567

050

100

150

200

250

300

6.详细实验步骤及实验结果数据记录(包括各仪器、仪表量程及内阻的记录)

6.1实验步骤

由于XiLinx开发板外部没有DA转换电路,所以,这一次在实验中,我首先用面包板搭好555时钟振荡电路以及外部DA转换电路,然后利用直流稳压电源引出正负12V电源给运放供电,连接FPGA开发板并下载程序,运行,并且利用开发板上的Vcc和Gnd 为555提供电源,为运放提供参考电压。通过电脑为FPGA 下载源程序。

6.2实验部分源程序:

module sin(

input clk,

input rst, //A7

output[7:0]data//JB,JC,(7~0:A9,B9,A10,C9,C12,A13,C13,D12) );

reg[8:0] addr_sin;

always@(posedge clk )

begin

if(9'd499==addr_sin)

addr_sin<=9'b0;

else

addr_sin<=addr_sin+9'b1;

end

//ROM区:

sin500 sin (

.clka(clk), // input clka

.addra(addr_sin), // input [8 : 0] addra

.douta(data) // output [7 : 0] douta

);

Endmodule

6.2实验现象:

7.实验结论

成功输出了频率可调的正弦波,由于通过MATLAB导入的点充分,得到了一条光滑的正弦波。实验充分证明了现代数字电路设计的简便性,成功设计出了ROM来存储正弦波的数字信号。每到来一个时钟,取一个点,由此来实现。

8.实验中出现的问题及解决对策

设计持续多天才成功完成,由于导线及面包板故障,导致多次重复连线,分析电路,最终才完成硬件调试。然后进行编程设计,通过这段时间以来对Verilog HDL的学习,自以为会很顺利,没想到困难重重,编了很久终于搞定了,结果最终编译编译器多次报错,经过长时间的检查,终于发现了自己的多处错误,认真检查更改后,终于成功。

9.本次实验的收获和体会、对电路实验室的意见或建议

自己认真设计了多日的实验电路及参数,在持续两天的试验中,感受了自己设计分析与动手的乐趣,虽然经历了多次的失败,最终成功验证了自己的设计。在试验中,我最深刻的体会就是,做什么事情都需要认真仔细,要具有大胆怀疑的精神。实验过程中,认真检查所有仪器设备。

对于设计实验,一切贵在亲身感受与参与,从中学习。相信下一回会更好!

10.参考文献

[1] 杨春玲王淑娟数字电子技术基础. 哈尔滨:哈尔滨工业大学,2011:6.

[2] 宁改娣金印彬刘涛数字电子技术与接口技术实验教程. 西安电子科技大学,

2013:3.

相关主题
文本预览
相关文档 最新文档