这里是题目:
低频频率特性测试仪
一、任务
设计并制作一个频率特性测试仪。
二、要求
1.基本要求
(1)制作一个幅频特性测试仪。其频率范围25kHz~40kHz;频率步进10Hz;频率稳定度10-4;测量精度5%;能在全频范围和特定频率范围内自动步进测量,频率和电压以4位LCD显示。
(2)制作一被测网络(阻容双T网络)。其中心频率30 kHz;带宽±50Hz;计算网络的幅频和相频特性,用所制作的幅频特性测试仪测其幅频特性。
2.发挥部分
(1)制作相频特性测试仪,其频率范围25kHz~40kHz;相位度数显示3位及1个符号位;测试精度30。
(2)用示波器显示幅频特性曲线。
(3)在示波器上同时显示幅频和相频特性曲线。
(4)创新性。
这个题目弄了好几天了这两天一定要弄出来
今天送妹子上飞机去四川玩去了.晚上又在帮她装电脑..恩...
记录下我
的制作过程吧:
1.解读一下题目:
所谓幅频特性曲线就是
传输网络的输入和输出端的电压比随输入正弦信号频率改变的曲线
于是要向待测网络输入端中输入一定频率的正弦波,并在传输网络末端收集输出的正弦波信号
并测出输入的幅值和输出的幅值的比值就好
要用到ADC的模拟信号量输入功能和DAC的数字信号量变模拟输出功能
2.解决方案的提出:
这里是思考过程的记录暂时不代表最终结果
实现方案NO.0:
51单片机dac正弦信号+FPGA输出+51单片机输出
FPGA和51单片机之间通讯采用spi协议
51单片机输出不同频率的正弦信号..
在每次改变之前进行通讯...
关于sine正弦波码表的问题可以用Matlab来做
代码如下
%matlab生成256个sin值并输出到d:a.txt中;
Y=ceil((16384/2-1)*sin(0:pi*2/256:2*pi)+8192); %那个pi*2/256 表示生成256个数列
fid=fopen('d:a.txt','wt');
fprintf(fid,'%8.0f ',Y); %整数形式
fclose(fid);
输出后的数据整理什么的我是用Excel+word做的请原谅我是个正则表达式渣渣...
后来觉得这样好麻烦啊每次单片机输出正弦波之后还要先通讯一次发出同步信号
然后FPGA再采样并且把结果返回单片机什么的...觉得这样的检测时间会增加好多..
毕竟是从25Khz-40Khz步进10Hz的话有1500个数据要采样诶会很慢的
实现方案NO.1
可以完全只用FPGA搞定嘛...
dac+adc
然后输出值给单片机显示就好了~~~~
关于通讯协议
底层采用SPI总线协议(好写..)
示波器显示就用PWM+低通滤波器的方法
经过实际的测试,单片机的DAC输出频率不够
如果用PWM调波再经过低通滤波器的方法用上次题目剩下的低通滤波器在高频输出的幅值很小,
和队友交流了一下应该是低通滤波器的通带太低了,高频信号的通过率就有所降低
FPGA的话我们这款Xlinx的SPARTAN-6的DAC时钟频率50Mhz完全能够胜任
另外ISE提供DDS正弦波输出的ip核,于是直接调用就好...IP核真是个好东西要多看看
我们用的IP核是DDS Compiler 4.0
一开始调用总是失败特别烦恼,后来发现是要有个频率控制字data没有赋值
这里是使用说明
初始化的时候就要设置.或者调用之前先给we一个高电平,再输入data
DDS IPCore 的时序图
有关频率计算方法:
这块Xlinx 的FPGA板子的系统时钟是50Mhz
用猥琐的方法计算哼哼
在第四页的设置里面把预置控制字先设置好
然后在第6页就能看到结果了
或者在第5页也能看到
现在的设置是24位数据输入,意思就是控制字每+1输出频率增加3hz..
出现了奇妙的问题,我IP核的设置是完全按照Datasheet来写的然后看了仿真的图形也是完全正确的
FPGA板子的DAC输出部分也很正常
但是就是无法生成正弦波形
昨天也尝试了自己来写一个dds模块
教程在
http://www.docin.com/p-405466617.html
我用matlab生成了.coe文件后发现ISE自带的ROM的数据深度无法满足表的大小,
目前的解决方法是可以只生成1/4个周期的码表其他的用对称的方法通过运算解决
不过今天已经28号了我还是去弄下wifi模块先..