青岛大学本科生毕业论文(设计) 系统电路的原理及设计
图2.6 ROM查找表mif文件配置 “sin_rom.mif”是正弦ROM中的值,放置幅度-相位的查表值,可由文本形式生成,也可由高级语言如C语言生成[11]。ROM查找表在整个设计中是一个比较重要的部分,为了保证波形的平滑,设计时可将一个周期分为1024个点。但是,点数太多时,用文本方式输入可能有很多困难。因此,应当用C语言描述正弦方程式,最后再将其转化为所需的mif文件。下面是用Turbo C在“sin_rom.mif”文件里产生1024个点的正弦波数据的源程序:
#include
{
s = sin(atan(1)*8*i/1024);
printf(\} }
把上述C程序编译成程序后,在DOS命令行下执行:
sin > sin_rom.mif;
生成sin_rom.mif文件,再加上下面的头部说明即可,其中sin为产生的DOS下可执行文件名。
具体参数:LPM_WIDTH:输出数据的宽度(1~64任选);LPM_WIDTHAD:输入地址的宽度(1~12任选);LPM_FILE:存储器初始化文件名(.mif或.hex)。本设计中各参数设置如下:
LPM_WIDTH =>8;
13
青岛大学本科生毕业论文(设计) 系统电路的原理及设计
LPM_WIDTHAD=>8;
LPM_OUTDATA=>”UNREGISTERED”;
LPM_ADDRESS_CONTROL=>\;
LPM_FILE=>”sim_rom.mif\
如果位宽为10位,则产生的sin_rom.mif文件如下:
width=10; ---文件中头部说明 depth=1024;
address_radix=dec; data_radix=dec; content begin 0:511; 1:514; 2:517; 3:520; 4:524; 5:527; …… …… ……
1019:495; 1020:498; 1021:502; 1022:505; 1023:508; end;
在Quartus II 编译环境中,产生的ROM查找表模块如图2.7所示
i_romaddress[7..0]clockq[7..0]inst2
图2.7 ROM查找表模块
实际上,DDS还可以产生任意频率的正弦信号发生器,可用来作任意波形发生器,只要改变ROM查找表中的数据就可以实现,程序中介绍了正弦波形实现,直接频率合成技术还有一个很重要的为了让频率发生器产生任意波形,从上面直接数字频率合成的原理可知,其输出波形取决于波形存储器的数据。因此,产生任意波形的方法取决于向该存储器(RAM)提供数据的方法,只需要改变查找表中的数据。目前有以下几种方法[7]。
(1) 表格法
将波形画在小方格纸上,纵坐标按幅度相对值进行二进制量化,横坐标按时间间隔编制地址,然后制成对应的数据表格,按序放入RAM。对经常使用的定了“形”的数据,可将数据固化于ROM或存入非易失性RAM中,以便反复使用。
14
青岛大学本科生毕业论文(设计) 系统电路的原理及设计
(2) 数学方程法
对能用数学方程描述的波形,先将其方程(算法)存入计算机,在使用时输入方程中的有关参数,计算机经过运算,提供波形数据。
(3) 折线法
对于任意波形可以用若干线段来逼近,只要知道每一段的起点和终点的坐标位置(X1Y1和X2Y2)就可以按照下式计算波形各点的数据
Yi=Y1+
(4) 作图法
在计算机显示器上移动光标作图,生成所需波形数据,将次数据送入RAM。 (5) 复制法
将其他仪器(如数字存储示波器,X-Y绘图仪)获得的波形数据通过微机系统总线传输给波形数据存储器。
在自然界有很多无规律的现象,例如,雷电、地震及机器运转时产生的震动等现象都是无规律的,甚至不能再现。为了研究这些问题,就要模拟这些现象的产生。过去只能采用很复杂的方法实现,现在采用任意波形发生器则方便的多。
Y2?Y1(Xi-X1)
X2-X12.2.3 模数转换
输出处理子系统是一模拟系统,用来完成数字频率到模拟频率的转换,通过DAC可将数字量形式的波形幅值转换成所要求的合成频率模拟量形式信号[12]。
考虑到DDS的输出为8位数字量,工程要求的最高输出频率为256KHz,因此可以直接利用DAC0832完成转换。
DAC0832是双列直插式8位D/A转换器。能完成数字量输入到模拟量(电流)输出的转换。图1-1和图1-2分别为DAC0832的引脚图和内部结构图。其主要参数如下:分辨率为8位,转换时间为1μs,满量程误差为±1LSB,参考电压为(+10?/span>-10)V,供电电源为(+5~+15)V,逻辑电平输入与TTL兼容。从图1-1中可见,在DAC0832中有两级锁存器,第一级锁存器称为输入寄存器,它的允许锁存信号为ILE,第二级锁存器称为DAC寄存器,它的锁存信号也称为通道控制信号 /XFER。
图2.8中,当ILE为高电平,片选信号 /CS 和写信号 /WR1为低电平时,输入寄存器控制信号为1,这种情况下,输入寄存器的输出随输入而变化。此后,当 /WR1由低电平变高时,控制信号成为低电平,此时,数据被锁存到输入寄存器中,这样输入寄存器的输出端不再随外部数据DB的变化而变化
对第二级锁存来说,传送控制信号 /XFER 和写信号 /WR2同时为低电平时,二级锁存控制信号为高电平,8位的DAC寄存器的输出随输入而变化,此后,当 /WR2由低电平变高时,控制信号变为低电平,于是将输入寄存器的信息锁存到DAC寄存器中。 图2.8中其余各引脚的功能定义如下:
15
青岛大学本科生毕业论文(设计) 系统电路的原理及设计
(1)、DI7~DI0 :8位的数据输入端,DI7为最高位。 (2)、IOUT1 :模拟电流输出端1,当DAC寄存器中数 据全为1时,输出电流最大,当 DAC寄存器中数据全 为0时,输出电流为0。
(3)、IOUT2 :模拟电流输出端2, IOUT2与IOUT1的和为 一个常数,即IOUT1+IOUT2=常数。
(4)、RFB :反馈电阻引出端,DAC0832内部已经有 反馈电阻,所以 RFB端可以直接接到外部运算放大器 的输出端,这样相当于将一个反馈电阻接在运算放大 器的输出端和输入端之间。
(5)、VREF :参考电压输入端,此端可接一个正电 压,也可接一个负电压,它决定0至255的数字量转 VREF端与D/A内部T形电阻网络相连。
(6)、Vcc :芯片供电电压,范围为(+5~ 15)V。 (7)、AGND :模拟量地,即模拟电路接地端。
(8)、DGND :数字量地。
化出来的模拟量电压值的幅度,VREF范围为(+10~-10)V。 图2.8 DAC0832
2.2.4 低通滤波输出电路
D/A输出后,低通滤波器用于衰减和滤除不需要的取样分量,以便输出频谱纯净的正弦波信号。
滤波器在通带内的平坦程度对我们而言,比其衰减更为重要,而且,巴特沃斯滤波器的元件值也较合乎实际情况,不像绝大多数其他类型滤波器对元件值要求那么苛刻。在截止频率附近,频率响应钝化可能使这些滤波器在要求锐截止的地方不合要求。
二阶巴特沃斯有源低通滤波器设计(图2.9)
正弦波的输出频率小于10KHz,为保证10KHz频带内输出幅度平坦,又要尽可能抑制谐波和高频噪声,综合考虑取
R1 = 1 KΩ,R2 = 1 KΩ,C1 = 100 pF,C = 100pF
图2.9 有源低通滤波器设计图
16
青岛大学本科生毕业论文(设计) 系统电路的原理及设计
2.3 软件验证及仿真
FPGA部分电路是整个电路设计系统中最主要的部分,所以其能否正常工作对整个系统的工作起关键作用。FPGA部分仿真主要是观察波形数据的值的输出是否正确和值输出
图2.10 DDS仿真结果窗口 的频率是否和预置的频率控制字相对应,仿真部分波形如图2.10所示。
在Quartus II的仿真文件.scf里对FPGA部分的电路进行了验证。由于外部有源晶振的频率为4.096MHz,故将.scf的option里的Grid size设置为244.1ns,即周期差不多是4.096MHz,当频率输入字为“0000000001”时,输出二进制数据应该按照“sin_rom.mif”正弦查找表中的数据变化。
仿真在这里是由Quartus II开发工具直接提供(当然也可以使用第三方的专业仿真工具),运行仿真,得到的结果跟理论的结果几乎一样,因此,可以确定整个FPGA部分电路可以正常运行。
Quartus II的设计软件中的.tbl文件是纯文本文件,它包含了.scf文件中的所有信息。.tbl文件的生成很简单,在Quartus II波形仿真结束后,打开.scf文件,然后从“File”菜单中选择“Create Table File”选项,就可产生.tbl文件。.tbl文件的基本结构可分为四大部分,其中第三部分和第四部分是最关键的,可从中获取仿真波形数据,并利用计算机高级语言处理这些数据,将其转换为直观的波形曲线。需要注意的是,每做一次Quartus II波形仿真,都要重新生成一次.tbl文件,以更新.tbl文件内的数据。
从图2.11的波形仿真结果中很难直观地看出DDS输出正弦波的情况。为了便于调试设计电路,我们可以利用计算机高级语言将Quartus II波形仿真结果转换为波形曲线,其中需要借助于Quartus II的表格文件(.tbl文件)。
17