Zedboard体验---信号发生器
0赞
0 前言
信号发生器作为科研和工程项目必备的工具,在解决各种硬件测试方面发挥着重要的作用。但是,优秀的信号发生器价格高昂,普通的信号发生器又局限于有限的几种波形,不能满足不同测试的需求。如果手中正好没有信号发生器的时候,就更显尴尬,因此本文提出了一种基于Xilinx FPGA的简易信号发生器方案。
1 框架设计方案
方案目标:实现四种基本波形的产生,包括正弦波、方波、三角波和锯齿波,电压波形峰峰值为10伏特,正电压最大值为+5伏特,频率可调,同时在OLED上可以显示当前波形的类型。
硬件方案如图1.1,由于需要外设DA,因此右边这块板子用于提供DA(DA只是这款板子的一部分外设)。

图1.1 硬件设计方案(所示为锯齿波)
软件方案控制框图1.2,

图1.2 软件设计方案
其中,整个软件设计方案中,涉及到三个模块:波形模式选择模块,OLED控制模块,DA控制模块。波形模式选择模块用于选择当前要显示的波形参数,包括频率设定和相应存储区的选择;OLED控制模块用于根据选定的波形参数,从相应存储区读相应的数据和命令进行显示;DA控制模块则用于根据选定的波形参数,从相应存储区读相应的数据交给DA时序控制器,进行DA转换并输出。
2 控制原理部分
2.1 OLED控制部分
这部分原理已经在上一篇博客《Zedboard测试-OLED》中说明。这里已做部分修改,前面博文中选取的方法是,利用查找表的方式查找数据和命令;这里修改为将OLED数据和命令存进存储区ROM中,数据和命令采用.coe文件进行初始化。(附件为格式说明)
2.2 DA控制部分
DA作为输出的关键器件,其驱动需要相应的时序,本文选取的DA芯片为DAC8822,其时序如图2.1所示。

图2.1 DA时序图
DA输出的四种波形数据提前存储在ROM里面。采样的波形数据采用如下步骤获取:
(a) DA核的运行步骤如图2.2。图示为一个数据的运行过程。

图2.2 DA内核控制图
(b) 波形周期计算公式:前提是需要采样一个完整周期内的波形数据。需要的参数包括一个波形内采样点数N_sample ,DA控制核运行时钟周期T_sys,完成一次DA转换需要时钟个数N_pre,输入频率调节数N_set(对应延时频率设定时间),最后可得出信号发生器的周期为
T_wave=(N_pre +N_set )*N_sample*T_sys
3 结果说明及分析
本文选取的参数为:采样点数为N_sample=1024,时钟周期为T_sys=10ns,完成一次DA转换需要时钟个数为N_pre=28,输入频率调节数为N_set=0,因此信号发生器的周期理论值为
T_wave=(N_pre +N_set )*N_sample*T_sys=286.72(us )
备注:硬件部分SW0~SW6对应频率调节数;SW7和BTNU对应模式控制,SW7为高的时候,调节BTNU可以实现波形的选择。
实际测试中,获取三角波的波形图如下

图3.1 实际测得的三角波图
运用安捷伦示波器测得的周期为286us,与理论值相差不多,结果满意。
