logo资料库

正弦信号发生器的DSP实现方法及比较.pdf

第1页 / 共2页
第2页 / 共2页
资料共2页,全文预览结束
2009 年第 期 9 福 建 电 脑 福 建 电 脑 11 正弦信号发生器的 实现方法及比较 DSP 俞兴明 苏州市职业大学电子信息工程系 江苏 苏州 ( 215104 ) 摘 要 本文介绍了几种基于数字信号处理器 的正弦波产生法 与 (DSP) 转换器 给出了这些产生正弦信号的算法和主要源程 , 得出了软 的接口电路 经过程序的实际运行 TMS320VC5402 DSP DA TLC320ADC50 。 最后 分析了各种方法的优缺点 讨论了调整输出信号频率的方法 , , 。 【 】: 序代码或流程 , 件仿真和硬件仿真所得的正弦波形 同时给出了 关键词 【 】: 正弦 信号 发生器 数字信号处理器 。 , 0、 引言 在通信 、 仪器和控制等领域的信号处理系统中 出端用示波器观测到正弦波 如图 , 2 所示 。 图 2 在 DA 输出端测得的正弦波 直接法的特点是速度快 , 但需要占用大量的存储空间 且灵 中一 个 正 弦 周 期 的 数 据 个 数 , ( 2.2 活度低 即改变抽样频率 。 改变数据文件 ), sinwave.dat 输出正弦信号的频率明显改变 。 在实际编程时 , 然后再编写计算 用汇编语言分别编写计算 级数逼近法 所 示 正弦函数和余弦函数的台劳级数 展 开 如 式 (2) 。 和 的子程序 , 根据正弦信号在 和 数 最 后 通 过 正弦函数的台劳级数展 用台劳级数和汇编语言编写的正弦信号发生器 sinx 。 ,[0°,180°] sin(2x)=2·sinx·cosx 区间数值对称 不断输出来达到产生正弦波的目的 一 个 周 期 的 正 弦 值 [180°,360°] (1) cosx [90°,180°] 的主程序 [0°,360°] 复 制 出 [0°,90°] 值 对 称 的 关 系 和 与 , , 。 。 DA 开如下式所示 程序请参考文献[3]。 x 5! sinx=x- x 3! + 3 5 - 7 x 7! + 9 x 9! 正弦信号发生器 号的方法有多种 给出硬件设计和各自的源代码或程序流程 比较 基于数字信号处理器 本文介绍几种用 DSP 。 , , 。 硬件设计 1、 , 经常要用到 产生数字正弦信 (DSP) 产生正弦信号的方法 , 并对性能进行分析 基于 的正弦信号发生器的硬件连接较简单 主要由 的几种正弦信号发生器的硬件结构均相同 转 换 器 组 成 用 常 用 的 DSP 本文介绍 , DSP 和 。 DSP 图 是 和 1 位串行接口 DSP DA AD TLC320AD50C。 TLC320AD50C 部 为 个控制寄存器设置 16 4 , TMS320VC5402,DA DA 用 转 换 器 的 接 口 电 路 图 [1]。 其功能由内 和 与 必 DSP 中 的 控 制 寄 McBSP 通 信 , 转换器 DA 与 , DA 通过多通道缓冲串行口 接口 , 中 关 于 ;DSP 所 以 要 使 McBSP TLC320AD50C 的 有 关 寄 存 器 和 TLC320AD50C 须 设 置 好 DSP 存器 。 下 : 主要在于产生算法及 , 图 1 DSP 与 DA 转换器的接口电路 软件设计 2、 基于 DSP 产生正弦信号的方法很多 分别介绍以下几种 软件的不同 查表法 查表法是最直接的一种方法 2.1 。 。 , 在使用时只要根据输入查出表中对应的函数值即可 先计算好所有可能出现的正弦函数值 表 算正弦函数值可用 产生的数据文件保存为 语言程序实现 C , , 文件 也可用 MATLAB ,[2] 其四分之一余的数据为 其原理是根据运算的需要预 将这些结果编排成数据 预先计 , 。 语言产生 sinwave.dat , 0x0000 0x0C8B 0x18F8 0x2528 0x30FC 0x3C56 0x471D 0x5134 0x5A82 0x62F2 0x6A6D 0x70E3 0x7641 0x7A7C 0x7D89 0x7F62 0x7FFF 0x7F63 0x7D8A 0x7A7C 0x763E 0x70E1 0x6A6C 0x62EF … … 用汇编语言编写 的初始化函数 … … DSP 和 口 初 始 化 函 数 言编写的信号发生器的主程序 中的 OpenMcBSP() 装载 D/A 。 File/Data/Load sinwave.dat 转 换 函 数 在源程序编译 文件 InitC5402 ()、McBSP 用 在 WRITAD50(), , 运行程序 即 可 在 连接后 、 , 串行 语 C CCS 输 DA 苏州职业大学校级课题 (SZD09L27) 论文 =x(1- (1- 2 x 2·3 2 + 4 x 4! 2 x 4·5 6 + (1- 2 x 6·7 (1- 2 x 8·9 )))) 8 x 8! cosx=1- =1- x 2! 2 x 2 - x 6! 2 x 3·4 (1- (1- 台劳级数展开法用 C 2 2 (1- x 5·6 语言编程比较方便 x 7·8 ))) (1) (2) 其主要程序段如 , %for (i=0; i<=N; i++) %{// 计算一个周期内的 N 个样值 % %x=i*r-pi; %xx = x*x; x0 = 1-xx/(8*9); %%x1 = 1-x0*xx/(6*7); %%x2 = 1-x1*xx/(4*5); %x3 = 1-x2*xx/(2*3); %y[i] = x*x3; % % %} %for (;;) %{// %for (i=0; i<=N-1; i++) %{ 主循环 *py = (int)(y[i]*32000); %WRITEAD50();
福 建 电 脑 福 建 电 脑 福 建 电 脑 2009 年第 期 9 f= % ω0·fs 2π TLC320AD50C, 。 [5] 而 ω0=2πf·Ts 即抽样点数越少 , 在其晶振频率 (5) 固 表示相邻样值之间的相位 输出正弦信号的 (8.192MHz) 越大 Ts 但由抽样定理可知 ,ω0 , 必须不能大于 ,ω0 π。 转换器 档 6 越大 对于 DA 的设置有 ,fs 抽样间隔 定时 差 频率就越高 。 。 结束语 3、 , 。 , 。 , CCS 经在 DA 另一方面 软件平台上测得 转换和低通滤波后 在本文介绍的三种正弦信号产生方法中 真和硬件运行测量 弦波均十分完美 但均 想 台劳技术展开法计算一个周期样值所化的时钟数约 经计算机软件仿 得出用台劳级数逼近法和查表法所得的正 , 而用迭代法产生的正弦波仿真波形失真较大 , 用示波器测得的正弦信号还比较理 用汇编语言编程计算 用 用迭代法所用 迭 通 转 换 器 的 采 样频 率 即 结合的正弦信号发 参数改变方 774310 可见查表法速度最快 , 对于输出正弦波的频率 C 时钟为 代法次之 过 改 变 一 个 周 期 内 的 样 值 个 数 或 改 变 可实现 用 生器比传统的模拟电路发生器相比 便 DSP , 广泛应用于数字信号处理系统中 语言计算台劳级数的方法所用时钟约 83857 语言计算台劳级数最慢 前者改变的范围可更大 性能更稳定 用查表法为 362494 69773 DA 和 DA , , ,C 个 个 个 个 , , , , 。 , 。 , , 。 12 %} } 该程序运行时 级数逼近法的最大优点是灵活度高 输出波形与图 DA 2 相同 数 , 一个周期内计算的样值越多越精确 。 且不存在误差积累 , 。 值精度由程序员完全控制 。 迭代法 2.3 迭代法的关键是函数值之间的递推关系 也就是系统的差 分方程或系统函数模型 没有零点 应为恒幅度振荡 , 。 如果一个离散时间系统其系统函数 只有一对处在单位圆上的共扼极点 H(z) 则其单位冲激响 即产生了正弦信号 , , , 。 [4] (3) H(z)= b0 1+a1z -2 -1 +a2z 式 中 :b0=AsinωTs,a 1=-2cosωT s ,a 2=1,ω 为采样间隔 其倒数 为采样频率 经反变换后得 ,T s , fs=1/Ts 。 为 正 弦 信 号 频 率 y(n)=2cosωT·y(n-1)-y(n-2) 令 的正弦序列 y(-1)=0,y(-2)=-AsinωTs, 。 C 为 Ts 其 语言主程序中的主要部分如下 (4) 逐 一 迭 代 就 能 够 获 得 采 样 间 隔 : : %for (i=0; i
分享到:
收藏