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_sys3 结果说明及分析本文选取的参数为:采样点数为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,与理论值相差不多,结果满意。4 改进方向(a) 文中需要利用matlab生成.coe初始化文件,波形固定,如果需要其他波形,则需要重新生成.coe文件,过程较为繁琐。改进方向:运用PS和PL,随时更换波形,更具有灵活性。(b) 字符的显示也是固定的,且是静态,修改太过繁琐,改进方向:可以建立一个字符的点阵库,通过当前字符的ASCII码偏移值,可以随时刷新屏幕,实现动态显示。去飘零的博客 |