精华内容
下载资源
问答
  • 简易信号发生器设计

    千次阅读 多人点赞 2020-07-16 09:09:00
    简易信号发生器设计 文章目录简易信号发生器设计一、设计任务与要求1)设计目的2)设计要求基本要求:3)技术指标4)设计提示5)设计报告要求二、方案设计与论证三、单元电路设计与参数计算3.1方波发生电路的工作...

    简易信号发生器设计

    一、设计任务与要求

    1)设计目的

    1、理解分立元件构成的信号发生器的原理

    2、掌握信号发生器的设计方法和仿真测试。

    2)设计要求

    基本要求:

    A、电路能输出正弦波、方波和三角波、锯齿波四种波形;

    B、输出信号的频率要求可调;

    C、拟定测试方案和设计步骤;

    D、根据性能指标,计算元件参数,选好元件,设计电路并画出电路图;

    E、用Multisim进行仿真测试,测量输出信号的幅度和频率;

    F、写出设计报告。

    3)技术指标

    频率范围:100Hz-1KHz,1Kz-10KHz;输出电压:方波VP-P≤24V,三角波VP-P=6V, 锯齿波VP-P=6V,正弦波VP-P=2V;方波tr小于1uS。

    4)设计提示

    方案提示:设计方案可先产生方波-三角波,再将三角波变成正弦波和锯齿波。如 下框图所示。

    在这里插入图片描述
    设计用主要器件**:双运放uA747(或7412)若干、差分管3DG100**若干;电阻电容若干。

    5)设计报告要求

    1、采用分立元件进行设计和仿真测试;

    2、拟出设计步骤,画出设计电路,分析并计算主要元件参数值;

    3、画出仿真电路,给出仿真波形和仿真数据;

    4、列出测试数据表格;

    5、进行分析和总结,设计报告要求条理清楚、文字流畅、图文并茂、语言通顺、格式规范,字数不少于8000字。

    二、方案设计与论证

    在这里插入图片描述
    图 1 方波、三角波、正弦波、锯齿波信号发生器的原理框图

    ​ 函数发生器一般是指能自动产生正弦波、三角波、方波及锯齿波、阶梯波等电压波形的电路或仪器。根据用途不同,有产生三种或多种波形的函数发生器,使用的器件可以是分立器件,也可以采用集成电路。为进一步掌握电路的基本理论及试验调试技术,本课题采用由集成运算放大器与晶体管差分放大器共同组成的方波-----三角波-----正弦波(锯齿波)函数发生器的设计方法。

    ​ 使用的器件可以是分立器件(如低频信号函数发生器S101 全部采用晶体管 ),也可以采用集成电路 (如双运放uA747(或7412))。为进一步掌握电路的基本理论及实验调试技术, 本课题采用由集成运算放大器与晶体管差分放大器共同组成的方波—三角波—正弦波函数发生器的设计方法。

    ​ 产生正弦波、方波、三角波的方案有多种,如首先产生正弦波,然后通过 整形电路将正弦波变换成方波,再由积分电路将方波变成三角波;也可 以首先产生三角波—方波,再将三角波变成正弦波或将方波变成正弦波等 等。本课题采用先产生方波—三角波,再将三角波变换成正弦波的电路设 计方法。

    本课题中函数发生器电路组成框图如下所示:

    ​ 由比较器和积分器组成方波—三角波产生电路,比较器输出的方波经积分器得到三角波,三角波到正弦波的变换电路主要由差分放大器来完成。差分放大器具有工作点稳定,输入阻抗高 抗干扰能力较强等优点。 特别是作为直流放大器时,可以有效地抑制零点漂移,因此可将频率很低的三角波变换成正弦波。波形变换的原理是利用差分放大器传输特性曲线的非线性。

    ​ 使用的器件可以是分立器件,也可以采用集成电路。为进一步掌握电路的基本理论及试验调试技术,本课题采用由集成运算放大器与晶体管差分放大器共同组成的方波-----三角波-----正弦波-----锯齿波函数发生器的设计方法。

    三、单元电路设计与参数计算

    3.1方波发生电路的工作原理

    在这里插入图片描述

    方波信号原理图

    ​ 此电路由反相输入的滞回比较器和 RC 电路组成。 RC 回路既作为延迟环节,又作为反馈网络,通过 RC 充、放电实现输出状态的自动转换。设某一时刻输出电压 Uo=+Uz, 则同相输入端电位 Up=+UT 。Uo 通过 R3 对电容 C 正向充电,如图中实线箭头所示。反相输入端电位 n 随时间 t 的增长而逐渐增高,当 t 趋于无穷时, Un 趋于 +Uz ;但是,一旦 Un=+Ut, 再稍增大, Uo 从+Uz 跃变为 -Uz, 与此同时 Up 从+Ut 跃变为 -Ut 。随后, Uo 又通过 R3 对电容 C 反向充电,如图中虚线箭头所示。 Un 随时间逐渐增长而减低,当 t 趋于无穷大时, Un 趋于-Uz ;但是,一旦 Un=-Ut, 再减小, Uo 就从 -Uz 跃变为 +Uz , Up 从-Ut 跃变为 +Ut ,电容又开始正相充电。上述过程周而复始,电路产生了自激振荡。

    3.2方波—三角波转换电路的工作原理

    在这里插入图片描述
    方波—三角波产生电路

    在这里插入图片描述
    压传输特性

    若 a 点断开,运算发大器 A1 与 R1、R2 及 R3、RP1 组成电压比较器,C1 为加速电容,可加速比较器的翻转。运放的反相端接基准电压,即U-=0 ,同相输入端接输入电压Uia ,R1 称为平衡电阻。比较器的输出Uo1 的高电平等于正电源电压 +Vcc,低电平等于负电源电压-Vee( |+Vcc|=|-Vee|),当比较器的U+=U-=0时,比较器翻转,输出Uo1 从高电平跳到低电平-Vee,或者从低电平 Vee 跳到高电平Vcc 。设 Uo1=+Vcc, 则

    在这里插入图片描述
    将上式整理,得比较器翻转的下门限电位

    在这里插入图片描述

    若 Uo1=-VEE, 则比较器翻转的上门限电位为:
    在这里插入图片描述
    比较器的门限宽度

    在这里插入图片描述
    由以上公式可得比较器的电压传输特性,如图所示:
    在这里插入图片描述
    a 点断开后,运放 A2与 R4、RP2、C2 及 R5 组成反相积分器,其输入信号为方波Uo1 ,则积分器的输出

    在这里插入图片描述

    当U01=+Vcc时
    在这里插入图片描述

    当U01=-Vcc时
    在这里插入图片描述
    可见积分器的输入为方波时, 输出是一个上升速度与下降速度相等的三角波,其波形关系下图所示。
    在这里插入图片描述
    a 点闭合,既比较器与积分器首尾相连, 形成闭环电路, 则自动产生方波-三角波。 三角波的幅度为
    在这里插入图片描述
    方波 -三角波的频率f 为
    在这里插入图片描述
    由以上两式可以得到以下结论:

    1.电位器 RP2 在调整方波 -三角波的输出频率时,不会影响输出波形的幅度。若要求输出频率的范围较宽,可用 C2 改变频率的范围, PR2 实现频率微调。

    2.方波的输出幅度应等于电源电压 +Vcc 。三角波的输出幅度应不超过电源电压 +Vcc 。电位器 RP1 可实现幅度微调,但会影响方波-三角波的频率。

    3.3 三角波 — 正弦波转换电路的工作原理

    在这里插入图片描述
    三角波——正弦波

    差分放大器具有工作点稳定, 输入阻抗高, 抗干扰能力较强等优点。特别是作为直流放大器, 可以有效的抑制零点漂移, 因此可将频率很低的三角波变换成正弦波。波形变换的原理是利用差分放大器传输特性曲线的非线性。分析表明,传输特性曲线的表达式为:

    在这里插入图片描述
    Ic1=aIE1=aIo/[1+e(-Uid/UT)]

    如果 Uid 为三角波,设表达式为

    在这里插入图片描述

    式中:

    Um——三角波的幅度;

    T——三角波的周期。

    为使输出波形更接近正弦波,由图可见:
    在这里插入图片描述

    (1) 传输特性曲线越对称,线性区越窄越好;

    (2) 三角波的幅度 Um 应正好使晶体管接近饱和区或截止区。

    (3) 图为实现三角波——正弦波变换的电路。其中 Rp1 调节三角波的幅度, Rp2 调整电路的对称性,其并联电阻 RE2 用来减小差分放大器的线性区。 电容 C1,C2,C3 为隔直电容, C4 为滤波电容,以滤除谐波分量,改善输 出波形。
    在这里插入图片描述
    三角波—正弦波变换电路
    在这里插入图片描述
    三角波—正弦波变换电路

    3.4 电路的参数选择及计算

    1. 方波- 三角波中电容 C1变化(关键性变化之一)

    实物连线中,我们一开始很长时间出不来波形,后来将 C2从 10uf (理论时可出来波形)换成 0.1uf 时,顺利得出波形。实际上,分析一下便知当 C2=10uf 时,频率很低,不容易在实际电路中实现。

    运放A1与A2用741,因为方波的幅度接近电源电压+VCC=+12V,-VEE=-12V.

    比较器A1与积分器A2的元件参数计算如下。

    由式得:
    在这里插入图片描述
    由式(3-2-9)得:

    在这里插入图片描述在这里插入图片描述

    3.5 三角波 - 正弦波部分

    差分放大器元件参数确定

    取RC1=RC2=10 KΩ,RB1=RB2=6.8 KΩ,取I0=1.1mA, 而

    I0=(RE4/RE3)IREF

    IREF=VEE-UBE/(RE4+R)=12-0.7/RE4+R

    取RE4=R=20 KΩ,代入(3-4-2),得IREF=0.28 mA,将IREF=0.28 mA代入,得RE3=5 KΩ

    在这里插入图片描述

    四、总原理图及元器件清单

    4.1.总原理图

    在这里插入图片描述

    三角波 -方波-正弦波函数发生器实验电路

    先通过比较器产生方波, 再通过积分器产生三角波, 最后通过差分放

    大器形成正弦波。

    2.元件清单

    数量 描述 RefDes 封装 类型
    1 POWER_SOURCES, VCC VCC Generic
    1 POWER_SOURCES, VEE VEE Generic
    8 RESISTOR, 10kΩ R1, R5, R11, R13, R17, R18, RC1, RC2
    2 RESISTOR, 20kΩ R2, R9
    1 POWER_SOURCES, GROUND 0 Generic
    2 POTENTIOMETER, 47kΩ R4, R7
    1 CAPACITOR, 0.2µF C1
    1 RESISTOR, 7.7kΩ R6
    2 CAP_ELECTROLIT, 470µF C4, C5
    2 RESISTOR, 6.8kΩ R8, RB1
    1 CAPACITOR, 0.1µF C6
    1 RESISTOR, 5.5kΩ RE4
    5 RESISTOR, 5kΩ R12, R14, R15, R16, RE3
    2 CAPACITOR, 47µF C2, C7
    1 POTENTIOMETER, 400kΩ R10
    1 CAPACITOR, 5nF C3
    1 POTENTIOMETER, 80kΩ R3
    2 POTENTIOMETER, 100kΩ R20, R21
    1 RESISTOR, 600Ω R22
    1 CAPACITOR, 1µF C8
    元件序号 型号 主要参数 数量 备注
    R1
    T1

    五、安装与调试(没有进行安装调试的这部分写电路中参数的选择与计算)

    5.1方波— 三角波发生电路的安装与调试

    5.1.1.按装方波——三角波产生电路

    1.1把两块 741 集成块插入面包板,注意布局;

    1.2.分别把各电阻放入适当位置,尤其注意电位器的接法;

    1.3.按图接线,注意直流源的正负及接地端。

    5.1.2.调试方波——三角波产生电路

    2.1.接入电源后,用示波器进行双踪观察;

    2.2.调节 RP1,使三角波的幅值满足指标要求;

    2.3.调节 RP2,微调波形的频率;

    2.4.观察示波器,各指标达到要求后进行下一部按装。

    在这里插入图片描述

    5.2三角波 — 正弦波转换电路的安装与调试

    5.2.1.按装三角波——正弦波变换电路

    5.2.1.在面包板上接入差分放大电路,注意三极管的各管脚的接线;

    5.2.2.搭生成直流源电路,注意 R* 的阻值选取;

    5.2.3.接入各电容及电位器,注意 C6 的选取;

    5.2.4.按图接线,注意直流源的正负及接地端。

    在这里插入图片描述

    5.2.2 调试三角波——正弦波变换电路

    1.接入直流源后,把 C4 接地,利用万用表测试差分放大电路的静 态工作点;

    2.测试 V1 、V2 的电容值,当不相等时调节 RP4 使其相等;

    3.测试 V3 、 V4 的电容值,使其满足实验要求;

    4.在 C4 端接入信号源, 利用示波器观察, 逐渐增大输入电压, 当输出波形刚好不失真时记入其最大不失真电压;

    5.3总电路的安装与调试

    1.把两部分的电路接好,进行整体测试、观察

    2.针对各阶段出现的问题,逐各排查校验,使其满足实验要求,即使正弦 波的峰峰值大于 1V 。

    5.4调试中遇到的问题及解决的方法

    方波 -三角波 -正弦波函数发生器电路是由三级单元电路组成的 ,在装 调多级电路时通常按照单元电路的先后顺序分级装调与级联。

    1.方波 -三角波发生器的装调

    由于比较器 A 1 与积分器 A 2 组成正反馈闭环电路, 同时输出方波 与三角波, 这两个单元电路可以同时安装。需要注意的是,安装电位器 RP1 与 RP2 之前,要先将其调整到设计值,如设计举例题中,应先使 RP1=10K Ω ,RP2 取( 2.5-70 )KΩ 内的任一值 , 否则电路可能会不起 振。只要电路接线正确,上电后, UO1 的输出为方波, UO2 的输出为 三角波,微调 RP1, 使三角波的输出幅度满足设计指标要求有,调节 RP2,则输出频率在对应波段内连续可变。

    2.三角波 — 正弦波变换电路的装调

    按照图 3— 75 所示电路,装调三角波 — 正弦波变换电路,其中差分发 大电路可利用课题三设计完成的电路。电路的 调试步骤如下。

    (1)经电容 C4 输入差摸信号电压 Uid=50v ,Fi =100Hz 正弦波。 调节 Rp4 及电阻 R*, 是传输特性曲线对称。在逐渐增大 Uid 。直 到传输特性曲线形状入图 3— 73 所示,记 下次时对应的 Uid 即 Uidm 值。移去信号源,再将 C4 左段接地,测量差份放大器的 静态工作点 I0 ,Uc1,Uc2,Uc3,Uc4.

    (2)Rp3 与 C4 连接, 调节 Rp3 使三角波俄 输出幅度经 Rp3 等于 Uidm 值,这时 Uo3 的输出波形应 接近 正弦波, 调节 C6 大小可 改善输出波形。

    (3)性能指标测量与误差分析

    1.放波输出电压是因为运放输出极有 PNP 型两种晶体组成复合互补对 称电路,输出方波时,两管轮流截止与饮和导通,由于导通时输出电阻的 影响,使方波输出度小于电源电压值。

    2.方波的上升时间 T,主要受预算放大器的限制。如果输出频率的限制。 可接俄加速电容 C1,一般取 C1 为几十皮法。用示波器或脉冲示波 器测量 T.

    5.5静态调试

    整个电路连接完之后,就可以对该电路进行调试和检测了,以发现和纠正 设计方案的不足之处。在进行调试和测试之前,首先要对电路进行检查。 对照原理图按顺序一一检查,以免产生遗漏。以元件作为中心进行检查, 把每个元器件的引脚依次检查,看是否有接错线或者漏接等问题,为了防 止出现错误,最好对已经检查好的线路在原理图上做好标记,倘若线路检 查无误,则可以对线路进行调试和测试了。

    用万用表适当的档位对线路进行测试,看线路是否有短路或者断路等问题,如果出现错误,就立即进行改进,修改再进行调试。

    5.6 动态调试

    5.6.1 方波—三角波发生器的调试

    由于比较器A1与积分器A2组成正反馈闭环电路,同时输出方波和正弦波,所以这两个单元电路可以同时安装。但是需要注意的是,在安装电位器RP1与RP2之前,要先将其调整到设计值,否则会导致电路不起振。如果电路接线正确。则在接通电源后,A1输出为方波,A2输出为三角波,微调RP1,使三角波的输出幅度满足设计指标要求,调节RP2,则输出频率连续可变。

    5.6.2 三角波—正弦波发生器的调试

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    六、性能测试与分析(写仿真调试与分析)

    调试中的注意事项:

    为了保证效果,必须减小测量误差,提高测量精度。为此,需注意以下几点:

    (1)正确使用测量仪器的接地端

    (2)测量电压所用仪器的输入端阻抗必须远大于被测处的等效阻抗。因为,若测量仪器输入阻抗小,则在测量时会引起分流给测量结果带来很大的误差。

    (3)仪器的带宽必须大于被测电路的带宽。

    (4)用同一台测量仪进行测量进,测量点不同,仪器内阻引起的误差大小将不同。

    (5)调试过程中,不但要认真观察和测量,还要记录。记录的内容包括实验条件,观察的现象,测量的数据,波形和相位关系等。只有有了大量的可靠实验记录并与理论结果加以比较,才能发现电路设计上的问题,完善设计方案。

    (6)调试时出现故障,要认真查找故障原因,切不可一遇故障解决不了的问

    题就拆掉线路重新安装。因为重新安装的线路仍可能存在各种问题。我们应该认真检查。调试结果是否正确,在很大程度上受测量正确与否和测量精度的影响。

    七、结论与心得

    ​ 为期几天的课程设计已经结束,在这几天的学习、设计、及电路搭建过程中我感触颇深。使我 对抽象的理论有了具体的认识。通过对函数信号发生器的设计,我掌握了常用元件的识别和测试; 熟悉了常用的仪器仪表;了解了电路的连接、搭建方法;以及如何提高电路的性能等等。 通过对函数信号发生器的设计,我还深刻认识到了“理论联系实际”的这句话的重 要性与真实性。而且通过对此课程的设计,我不但知道了以前不知道的理论知识,而且 也巩固了以前知道的知识。最重要的是在实践中理解了书本上的知识,明白了学以致用 的真谛。也明白老师为什么要求我们做好这个课程设计的原因。他是为了教会我们如何

    ​ 运用所学的知识去解决实际的问题,提高我们的动手能力。在整个设计到电路的焊接以 及调试过程中,我个人感觉调试部分是最难的,因为你理论计算的值在实际当中并不一定是最佳参数,我们必须通过观察效果来改变参数的数值以期达到最好。而参数的调试 是一个经验的积累过程,没有经验是不可能在短时间内将其完成的,而这个可能也是老 师要求我们加以提高的一个重要方面吧!

    ​ 其次,这次课程设计提高了我的团队合作水平,使我们配合更加默契,体会了在接 好电路后测试出波形的那种喜悦,体会到成功来自于汗水,体会到成果的来之不易。 在实验过程中,我们遇到了不少的问题。比如:波形失真,甚至不出波形这样的问题。在同学的帮助下,把问题一一解决,那种心情别提有多高兴啦。实验中暴露 出我们在理论学习中所存在的问题,有些理论知识还处于懵懂状态,老师们不厌其烦地为我们调整波形,讲解知识点,实在令我感动。 还有值得我们自豪的就是我们的线路连得横竖分明,简直就是艺术,当然,我们也 有很多不足的地方, 最后用一句话来结束吧: “实践是检验真理的唯一标准” 。

    ​ 通过本次实践操作,也让我深刻明白:只有将课本上的理论知识,结合实践不断练习,不断总结提炼,反复思考实践中的经验教训,才能够真正消化为自己的知识。

    八、参考文献

    [1] 陈利永 . 电子技术基础 [M] 北京 . 北京邮电大学出版社

    [2]《电子线路设计·实验·测试》 第三版,谢自美 主编,华中科技大学出版社

    [3]《新型集成电路的应用——电子技术基础课程设计》梁宗善 主编,华中科技大学出版社

    [4]《电子技术基础课程设计》,孙梅生等编著,高等教育出版社

    九、完整的论文和仿真下载

    展开全文
  • DDS信号发生器原理与经典DDS信号发生器设计方案

    千次阅读 多人点赞 2019-09-22 15:20:49
    DDS信号发生器采用直接数字频率合成(Direct Digital Synthesis,简称DDS)技术,把信号发生器的频率稳定度、准确度提高到与基准频率相同的水平,并且可以在很宽的频率范围内进行精细的频率调节。采用这种方法设计的...

     

        DDS信号发生器采用直接数字频率合成(Direct Digital Synthesis,简称DDS)技术,把信号发生器的频率稳定度、准确度提高到与基准频率相同的水平,并且可以在很宽的频率范围内进行精细的频率调节。采用这种方法设计的信号源可工作于调制状态,可对输出电平进行调节,也可输出各种波形。

      DDS原理

      在介绍DDS信号发生器原理之前我们先了解一下DDS原理。

      若对一正弦波形进行采样,每周期为 m 个采样点,分别记为 1~m。 对应每次参考时钟 f c , 输出一个采样点,输出图中所示的一个周期的正弦,需要 m 个时钟周期,则输出的波形频率为 f a =f c/m。对于这种情况, 每次时钟到来时,相位累加器加 1 ,则就会在第 i 个时钟周期输出 第 i 个采样点( i = 1~m) ,第 m + 1 个时钟输出第 1 个采样点,以此循坏,这时的相位累加器实 际上是步进为 1 的模 m 计数器。 如果每次时钟到来时, 总是间隔一个采样点输出,即相位累 加器的步进为 2 ,这时在第 i 个周期输出第 2i 个采样点,输出波形如图 1. 2 的波形 b,显然波 形 b 的频率是 a 的 2 倍,即 f b = 2 f a 。

      综上所述,如果相位累加器的步进为 B, 则输出波形的频率为 B×f a , f a 是最小的输 出频率称为频率分辨率或步进间隔, B 为频率控制字。给定不同的频率控制字即可输出不同 的频率。频率输出公式为: f 0 = fc/m* B

    DDS信号发生器原理与经典设计方案

      在实际设计中,如果累加器长度为N ,则可以有2^N 个存储单元存储采样数据,如果我们 对一个周期的波形进行2N 个点的采样,即m = 2^N , 此时输出频率f o 和系统时钟频率f c ,相 位累加器长度N 以及频率控制字B的关系为:

                                                                     f0 = fc*B/(2^N)

    为了使波形输出不失真,根据奈奎 斯特定理,fc>=2fc,所以 B最高为2^ N - 1 。另外要提高DDS 的精度,就需要分母越大越好,即采样点的个数 越多,越接近实际波形。但实际上不可能提供如此之多的存储空间,这就需要对采样点进行量 化。如图1 (c) 所示,如果量化单位为K,则前K 个点的值总是相同的,为采样值1 ,第二组K 个 采样点的值为采样值2 ,以此类推,第i 组K 个采样点的值为采样值i , 共需要m/K个存储单元 来存储m/K个采样点。

      DDS 的杂散来源之一就是相位累加器相位舍位造成的杂散。现有的频率控制主要采用 二进制频率控制原理。这是因为 FPGA 采用二进制的数据处理机制以及波形存储器的二进 制寻址方式,所以通常情况下 mK、m、K 都是二进制整数,如 m = 2^N ,这就要求对计算结果 进行十进制近似取舍,造成了波形发生器的输出频率以及频率分辨率存在无法消除的误差。

      DDS 以数控振荡器的方式,产生频率、相位可控制的正弦,电路包括了基准时钟源、相位累加器、相位调制器、正弦ROM 查找表、D/A 转换 器和低通滤波器等。

         频率控制字B 和相位控制字N分别控制DDS 所输出的正弦波的频率和相 位。DDS 系统的核心是相位累加器,它由一个N 位累

    加器与N 位相位寄存器构成。时钟脉冲每触发一次, 累加器便将频率控制数据与相位寄存器输出的累加相位数据相加, 然后把

    相加后的结果送至相位寄存器的数据输入端。 相位寄存器将累加器在上一个时钟作用后所产生的新相位数据反馈到累加器的输入

    端, 以使加法器在下一个时钟的作用下继续与频率控制数据相加。 这样, 相位累加器在参考时钟的作用下将进行线性相位累

    加, 当相位累加器累加满时, 就会产生一次溢出, 以完成一个周期性的动作, 这个周期就是DDS 合成信号的一个频率周期,

    相位累加器的溢出频率就是DDS 输出的信号频率。 相位寄存器的输出与相位控制字相加, 结果作为正弦查找表的地址。 查找表

    由ROM 构成, 其内部存有一个完整周期正弦波的数字幅度信息, 每个查找表的地址对应正弦波中的一个相位点。 查找表把输入

    地址信息映射成正弦波幅度信号, 同时输出到D/A 转换器的输入端, 通过D/A 可将数字量形式的波形幅值转换成所要求的合成频

    率模拟量形式信号。 低通滤波器用于衰减和滤除不需要的取样分量, 以便输出频谱纯净的正弦波信号。

    DDS信号发生器原理与经典DDS信号发生器设计方案

      DDS信号发生器原理

      DDS信号发生器原理是建立在采样定理基础上,首先对需要产生的波形进行采样,将采样值数字化后存入存储器作为查找表,然后通过查表读取数据,再经D/A转换器转换为模拟量,将保存的波形重新合成出来。DDS基本原理框图如图所示。

      DDS信号发生器原理与经典DDS信号发生器设计方案

      除了滤波器之外,DDS系统都是通过数字集成电路实现的,易于集成和小型化。系统的参考时钟源通常是一个具有高稳定性的晶体振荡器,为各组成 部分提供同步时钟。频率控制字(FSW)实际上是相位增量值(二进制编码)作为相位累加器的累加值。相位累加器在每一个参考时钟脉冲输入时,累加一次频率,其输出相应增加一个步长的相位增量。由于相位累加器的输出连接在波形存储器(ROM)的地址线上,因此其输出的改变就相当于查表。这样就可以通过查表 把存储在波形存储器内的波形抽样值(二进制编码)查找出来。ROM的输出送到D/A转换器,经D/A转换器转换成模拟量输出。

    DDS信号发生器原理与经典DDS信号发生器设计方案

    DDS信号发生器原理与经典DDS信号发生器设计方案
     

      DDS信号发生器设计

      1、方案设计与论证

      设计的DDS信号发生器系统以STC89C52芯片为核心控制,通过可编程放大电路实现了正弦波、方波的输出功能,其频率步进值和幅度步进值达到了设计要求。

      本设计采用直接数字频率合成。单片机从键盘获得控制信息,控制两路DDS芯片AD9850产生的两路设定频率的正弦波和方波。输出信号经过调整后输入AD7524可以在单片机的控制下完成对信号的程控误差。从DDS模块输出的两路信号经过低通滤波和直流偏置将两路信号输入模拟乘法器AD835,一路作为载波,一路作为调制波,从AD835产生调制波。同时可以将DDS信号输入到CD4046B芯片进行振荡输出调频信号。
     

      整体设计方案:以单片机STC89C52为核心,完成四方面的功能:采用DDS专用芯片AD9850产生正弦波和方波,高带DA转换器AD7524控制AM调制度,接收红外遥控的控制码,同进LCD液晶显示所有数据。其系统如图所示。

      DDS信号发生器原理与经典DDS信号发生器设计方案

      2、理论分析、计算与各模块设计

      (1)DDS波形产生电路设计

      DDS基本原理:正弦波形一个周期离散样点的幅值数字量存于ROM(或RAM)中,按一定的地址间隔(相位增量)读出,由D/A转换成模拟正弦信号,经过低通滤波,滤除D/A带来的小台阶和数字电路产生的毛刺,即可获得所需要的正弦信号。AD9850可以产生正弦波、方波。AD9834内部的相位累加器的字宽为32位,SIN函数表有4096样点值,因此32位的相位累加器输出仅截取12位用于查表。其内部原理框图如下:

      DDS信号发生器原理与经典DDS信号发生器设计方案

      AD9850参数:

      最高参考时钟为125MHz,输出频率分辨率可达0.0291Hz,允许产生最高输出频率62.5MHz。芯片内部提供5bits数字控制相位调制,

      DDS信号发生器原理与经典DDS信号发生器设计方案

      AD9850有32位相位累加器,而ROM为14位,将32位累加器的输出截高位的14位输入正弦(ROM)查询表,从查询表输出给D/A。D/A的输出是两个互补的模拟电流,在12脚处接一个电阻Rset,使满量程输出为10~20mA电流,经过滤波器输出正弦波。

      AD9850主要引脚说明:

      1、(D0~D7):8bit数据输入端。用于下载32bit频率调节字和8bit相位控制字。

      2、(W-CLK):字装载时钟,用于装载并行或串行的频率/相位/控制字

      3、(RSET):DAC外接电阻,该电阻决定DAC输出电流的最大值。对于典型应用(IOUTmax=10mA)时,RSET的值为3.9kΩ,另一端连接到地线。外接电阻RSET与DAC输出电流 IOUT的关系为

      DDS信号发生器原理与经典DDS信号发生器设计方案

      电路原理图如图2-2所示:

      DDS信号发生器原理与经典DDS信号发生器设计方案

      图2-2 DDS波形产生电路

      (2)程控衰减电路设计

      程控衰减电路由D/A转换芯片AD7524构成,主要利用此D/A芯片的可程控电阻网络构成基于AD7524构成的程控衰减器,而在其输出端得到幅度可控的正弦波。由AD7524的8位数据输入端进行控制,可实现1~1/56级衰减。其相关电路如图2-3所示:

      DDS信号发生器原理与经典DDS信号发生器设计方案

      图2-3 程控衰减电路

      (3)模拟AM电路设计

      该电路选用AD835作为乘法器,将载波和调制信号相乘得AM信号,其两路输入信号幅值可达到-1V—+1V,对噪声可形成较强的抑制能力。另外,普通双边带调制需要调制信号叠加直流成分,因此调制信号在输入到乘法器前需经过电平转换电路为调制信号叠加适当的直流。由于前级的调制信号是由程控衰减器输出,所以在程控衰减器初始输出的情况下,可以通过调节电平转换电路的直流偏置,使模拟AM电路的初始输出的调幅波形的调制度调整至1。这样设置可以为之后的程控调制带来方便。通过P8的跳线可以选择调制波为方波,从面实现ASK调制。其电路如图所示。

      DDS信号发生器原理与经典DDS信号发生器设计方案

      图2-4 AM信号产生电路

      (4)模拟FM电路的设计

      频率调频信号的基本特点是它的瞬时频率按调制信号规律变化,因而,一种最容易想到的方法是用调制信号直接控制振荡器的振荡频率,使其不失真地反映调制信号的变化。通常将这种直接调变振荡器频率的方法称为直接调频法。本设计中,使用锁相环集成电路CD4046内部自带的VCO产生FM波。通过P10 的跳线可以选择方波为调制波,从而实现FSK。其电路如5所示。

      DDS信号发生器原理与经典DDS信号发生器设计方案

      图2-5 FM、FSK信号产生电路

      (5)控制与显示电路

      输入控制采用红外遥控器控制,通过HS0038红外一体化接收头解码、放大,将控制码发送给单片机,再由单片机控制DDS模块、程控衰减模块产生不同的波形。

      显示部分使用128*64点阵宽屏液晶,可以显示不同模式下的频率及波形,达到直观、形象的效果。

      此模块如图所示:

      DDS信号发生器原理与经典DDS信号发生器设计方案

      3、程序设计

      主程序流程图如图所示

      DDS信号发生器原理与经典DDS信号发生器设计方案

      4、代码

      AD9850的驱动程序C文件

      #include《intrins.h》

      #include “AD9850I.h”

      #include “lcd12864.h”

      //unsigned char freq[8]; //液晶显示8种步进频率值

      unsigned char freq[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};

      /********************

      函数:AD9850Reset

      功能:AD9850的复位函数

      ********************/

      void AD9850Reset(void)

      {

      AD9850WCLK = 1;

      AD9850FQUD = 1;

      // AD9850ReSet = 0;

      // AD9850ReSet = 1;//复位脚置高电平(10个AD9850的时钟周期)

      // _nop_();_nop_();_nop_();_nop_();_nop_();

      // _nop_();_nop_();_nop_();_nop_();_nop_();//延时,其实不用这么长

      // AD9850ReSet = 0;//复位完成,再拉低

      }

      /*步进按键函数*/

      void f10Mhz(void) //10Mhz步进

      {

      freq[0]=freq[0]+1;

      if(freq[0]》=10)

      {

      freq[0]=0;

      }

      display_led();

      }

      void f1Mhz(void) //1Mhz步进

      {

      freq[1]=freq[1]+1;

      if(freq[1]》=10)

      {

      freq[1]=0;

      }

      display_led();

      }

      void f100Khz(void) //100Khz步进

      {

      freq[2]=freq[2]+1;

      if(freq[2]》=10)

      {

      freq[2]=0;

      }

      display_led();

      }

      void f10Khz(void) //10Khz步进

      {

      freq[3]=freq[3]+1;

      if(freq[3]》=10)

      {

      freq[3]=0;

      }

      display_led();

      }

      void f1Khz(void) //1Khz步进

      {

      freq[4]=freq[4]+1;

      if(freq[4]》=10)

      {

      freq[4]=0;

      }

      display_led();

      }

      void f100Hz(void) //100hz步进

      {

      freq[5]=freq[5]+1;

      if(freq[5]》=10)

      {

      freq[5]=0;

      }

      display_led();

      }

      void f10Hz(void) //10hz步进

      {

      freq[6]=freq[6]+1;

      if(freq[6]》=10)

      {

      freq[6]=0;

      }

      display_led();

      }

      void f1Hz(void) //1hz步进

      {

      freq[7]=freq[7]+1;

      if(freq[7]》=10)

      {

      freq[7]=0;

      }

      display_led();

      }

      /***计算控制字************/

      /***入口:频率数组指针***出口,控制字值*****/

      unsigned long jisuan(unsigned char data *fno)//*fno-0》freq[0.。.7]

      {

      unsigned long dds_no ;

      dds_no=

      (*(fno+7))*FF0+

      (*(fno+6))*FF1+

      (*(fno+5))*FF2+

      (*(fno+4))*FF3+

      (*(fno+3))*FF4+

      (*(fno+2))*FF5+

      (*(fno+1))*FF6+

      (*fno)*FF7 ;

      return(dds_no);

      }

      /********************

      **函数:AD9850SetFre

      **功能:AD9850设定频率控制字函数

      **参数:Fre,float型,要设定的频率,单位Hz

      ********************/

      void AD9850ISetFre()

      {

      unsigned long FTW = 0;//要写入的32位频率控制字(AD9850一次需要写入40位控制字)

      unsigned char part1,part2,part3,part4;

      FTW=jisuan(freq);

      // if(FTW 》 30000000)

      // FTW = 30000000;

      // FTW = (unsigned long) (Fre * AD9850_125M);//计算频率控制字(公式:FTW=(2^32/fosc)*Fre)

      /*以下将32位频率控制字分解*/

      part1 = (unsigned char) (FTW》》24);//取32~25位

      part2 = (unsigned char) (FTW》》16);//取24~17位

      part3 = (unsigned char) (FTW》》8); //取16~9位

      part4 = (unsigned char) (FTW); //取8~1位

      /*以上将32位频率控制字分解*/

      AD9850FQUD = 1;

      AD9850WCLK = 1;

      AD9850DATAPORT = 0x00;//寄存器最高的八位只送0x00

      AD9850WCLK = 0;//WCLK上升沿送数据

      _nop_();

      AD9850WCLK = 1;

      AD9850DATAPORT = part1;

      AD9850WCLK = 0;//WCLK上升沿送数据

      _nop_();

      AD9850WCLK = 1;

      AD9850DATAPORT = part2;

      AD9850WCLK = 0;//WCLK上升沿送数据

      _nop_();

      AD9850WCLK = 1;

      AD9850DATAPORT = part3;

      AD9850WCLK = 0;//WCLK上升沿送数据

      _nop_();

      AD9850WCLK = 1;

      AD9850DATAPORT = part4;

      AD9850WCLK = 0;//AD9850WCLK上升沿送数据

      _nop_();

      AD9850FQUD = 0;//AD9850FQUD上升沿将AD9850缓冲区的40位数据送入DDS Core

      }

      /********************

      **函数:AD9850SetFre

      **功能:AD9850设定频率控制字函数

      **参数:Fre,float型,要设定的频率,单位Hz

      ********************/

      void AD9850IISetFre(float Fre)

      {

      unsigned long FTW = 0;//要写入的32位频率控制字(AD9850一次需要写入40位控制字)

      unsigned char part1,part2,part3,part4;

      if(Fre 》 30000000)

      Fre = 30000000;

      FTW = (unsigned long) (Fre * 34.3597384);//计算频率控制字(公式:FTW=(2^32/fosc)*Fre)

      /*以下将32位频率控制字分解*/

      part1 = (unsigned char) (FTW》》24);//取32~25位

      part2 = (unsigned char) (FTW》》16);//取24~17位

      part3 = (unsigned char) (FTW》》8); //取16~9位

      part4 = (unsigned char) (FTW); //取8~1位

      /*以上将32位频率控制字分解*/

      AD9850FQUD = 1;

      AD9850WCLK = 1;

      AD9850DATAPORT = 0x00;//寄存器最高的八位只送0x00

      AD9850WCLK = 0;//WCLK上升沿送数据

      _nop_();

      AD9850WCLK = 1;

      AD9850DATAPORT = part1;

      AD9850WCLK = 0;//WCLK上升沿送数据

      _nop_();

      AD9850WCLK = 1;

      AD9850DATAPORT = part2;

      AD9850WCLK = 0;//WCLK上升沿送数据

      _nop_();

      AD9850WCLK = 1;

      AD9850DATAPORT = part3;

      AD9850WCLK = 0;//WCLK上升沿送数据

      _nop_();

      AD9850WCLK = 1;

      AD9850DATAPORT = part4;

      AD9850WCLK = 0;//AD9850WCLK上升沿送数据

      _nop_();

      AD9850FQUD = 0;//AD9850FQUD上升沿将AD9850缓冲区的40位数据送入DDS Core

      }

      主程序

      #include 《reg52.h》

      #include “AD9850I.h”

      #include “hs0038.h”

      #include “lcd12864.h”

      void main()

      {

      hs0038_init(); //HS0038初始化,使用了外部中断0///定时器1

      lcd12864_init();

      AD9850Reset();

      while(1)

      {

      Get_Ircode_And_Dis();

      switch (ircode[2])

      { /**************模式选择****************/

      case 0x07:xuanzekey();break;

      case 0x15:quedingkey();break;

      case 0x09:fanhuikey();break;

      /*************频率调整区***************/

      case 0x0c:if(flag1==1) {f10Mhz();}; break;

      case 0x18:if(flag1==1) {f1Mhz(); };break;

      case 0x5e:if(flag1==1) {f100Khz();};break;

      case 0x08:if(flag1==1) {f10Khz(); };break;

      case 0x1c:if(flag1==1) {f1Khz(); } ;break;

      case 0x5a:if(flag1==1) {f100Hz();} ;break;

      case 0x42:if(flag1==1) {f10Hz(); } ;break;

      case 0x52:if(flag1==1) {f1Hz(); } ;break;

      /***************频率确认***************/

      case 0x4a: if(flag1==1)

      {

      pce1=0;

      pce2=1;

      pce3=1;

      AD9850ISetFre();

      };

      break;

      /***************AM调制*********************/

      case 0x16: pce1=1; //片选AD9850 I 实验板U1

      pce2=0; //片选AD9850 I 实验板U2

      pce3=1;

      AD9850IISetFre(1000.0);break;

      case 0x44:if(flag2==1)

      {

      pce1=1;

      pce2=1;

      pce3=0;

      pwr=0;

      AM_mastepdown();

      };

      break;

      case 0x40: if(flag2==1)

      {

      pce1=1;

      pce2=1;

      pce3=0;

      pwr=0;

      AM_mastepup();

      };

      break;

      /***************FM调制*********************/

      case 0x19:AD9850IISetFre(5000.0);break;

      default:break;

      }

      ircode[2]=0; //注意一定要把ircode[2]清零。。。。。

      // AD9850SetFre();

      }

      }

    DDS信号发生器原理与经典DDS信号发生器设计方案
     

      由表可以看出,此DDS信号发生器设计方案在频率稳定度方面,正弦波、三角波、方波在带负载的情况下均十分稳定,这正是DDS专用芯片AD9834的特点。



    DDS信号发生器原理与经典DDS信号发生器设计方案

     

     

     

    注意:本文章转自电子发烧友,根据自己的理解做了少量改动

    展开全文
  • 基于 FPGA Vivado 信号发生器设计(附源工程)

    千次阅读 热门讨论 2020-06-15 10:03:00
    今天给大侠带来基于 FPGA Vivado 信号发生器设计,开发板实现使用的是Digilent basys 3,如有想要入手basys3开发板的,可以联系牛总:18511371833。话不多说,上货。 本篇掌握基于 FPGA Vivado 信号发生器设计...

    今天给大侠带来基于 FPGA Vivado 信号发生器设计,开发板实现使用的是Digilent basys 3,如有想要入手 basys 3 开发板的,可以联系牛总:18511371833。话不多说,上货。

     

    本篇掌握基于 FPGA Vivado 信号发生器设计(附源工程),掌握基于添加文件和IP的Vivado工程设计流程,掌握基于Tcl的Vivado工程设计流程,学习信号发生器的基本组成结构。获取本篇相关源工程代码,可在公众号内回复“信号发生器设计源工程”。

     

    设计原理

     

    信号发生器能够产生频率波形可调的信号输出,目前仅限于1Hz~4999Hz频率范围,波形可选择三角波,方波,锯齿波,以及正弦波。本系统在Basys3上构建了一个简易信号发生器,简化框图如下:

     

    原理:首先,通过按键设置波形的频率,并通过拨码开关设置波形的种类(一共有正弦波、三角波、方波、锯齿波四种)。频率值可以通过数码管显示。片上的输出时钟计算模块能够根据设置好的频率值,计算波形查找表的输出时钟,以及生成查找表的地址。查找表根据波形选择模块,决定输出何种波形数据,并在输出时钟的驱使下,输出波形数据。最后,片上的DA模块将波形数据发送给外部DA。本设计通过Basys3外接Pmod-DA1模块,进行DA输出。

     

    操作步骤

     

    基于添加文件和IP

    1. 新建工程项目

    1) 双击桌面图标打开Vivado 2017.2,或者选择开始>所有程序>Xilinx Design Tools> Vivado 2017.2>Vivado 2017.2;

    2) 点击‘Create Project’,或者单击File>New Project创建工程文件;

    3) 将新的工程项目命名为‘lab5’,选择工程保存路径,勾选‘Create project subdirectory’,创建一个新的工程文件夹,点击Next继续;

    4) 选择新建一个RTL工程,勾选Do not specify sources at this time(不指定添加源文件),先不添加源文件。点击 Next继续;

    5) 选择目标FPGA器件:xc7a35tcpg236-1或Basys3;

    6) 最后在新工程总结中,检查工程创建是否有误。没有问题,则点击Finish,完成新工程的创建。

     

    2. 添加已经设计好的IP和HDL文件

    工程建立完毕,我们将所需的IP文件夹(IP_Catalog)和实验需要使用的HDL文件复制到已经创建的工程文件夹根目录下:

    源文件位于Basys3_workshop\sources\lab5\Src\HDL_source

    复制完成后,如下图所示:

     

    1) 在Vivado界面左侧Flow Navigator中展开PROJECT MANAGER,选择‘Settings’;

     

    2) 弹出窗口中,在左侧Project Settings中展开IP一项,选择‘Repository’,点击右侧的添加IP;

     

    3) 选择复制到工程文件夹根目录下的IP文件夹;

     

    4) 点击OK完成添加;

    5) 添加IP至工程。

    5.1 在Flow Navigator中展开PROJECT MANAGER,选择IP Catalog;

     

    5.2 在右侧IP Catalog窗口的搜索框中搜索‘clocking’,双击‘Clocking Wizard’开始配置IP;

     

    5.3 配置IP。

    5.3.1 将IP的名字由‘clk_wiz_0’修改为‘clock’;

    5.3.2 选择‘Output Clocks’,设置2路输出时钟(100MHz和50MHz);

    5.3.3 在Enable Optional I/O for MMCM/PLL一项中取消勾选‘reset’和‘locked’选项;

     

    5.3.4 Vivado会创建新的文件夹保存配置完成的IP,点击OK继续;

     

    5.3.5 弹出Generate Output Products窗口,在Synthesis Options中选择‘Global’,点击‘Generate’继续。

     

     

    5.4 同样的,在IP Catalog窗口中添加Divider Generator,配置如下图如下图所示:

     

    5.5 同样的,依次在IP Catalog窗口中添加debounce和seg7decimal这两个IP,使用默认IP设置,无需另外配置,并且Generate Output Products,完成后Sources窗格中如下图所示:

     

    6) 添加HDL文件至工程

    6.1 在Flow Navigator中展开PROJECT MANAGER,选择Add Sources;

     

    6.2 在导向窗口中选择‘Add or create design sources’,点击Next继续;

     

    6.3 在Add or Create Design Sources页面中选择‘Add Files’;

     

    6.4 找到lab5根目录,选中添加下图所示的2个HDL文件;

     

    6.5 勾选‘Copy sources into project’,点击Finish完成添加;

     

    6.6 完成后Sources窗格中如下图所示:

     

    7) 添加物理约束(XDC)文件

    7.1 在Flow Navigator中展开PROJECT MANAGER,选择Add Sources;

    7.2 在导向窗口中选择‘Add or create constraints’,点击Next继续;

     

    7.3 在Add or Create Design Sources页面中选择‘Add Files’;

    7.4 找到约束文件路径Basys3_workshop\sources\lab5\Src\Constraint,选中并添加‘signal_gen.xdc’文件;

     

    7.5 勾选‘Copy sources into project’,点击Finish完成添加。

     

    3. 综合、实现、生成比特流文件

    1) 在左侧Flow Navigator中依次点击‘Run Synthesis’、‘Run Implementation’和‘Generate Bitstream’执行综合、实现和生成比特流文件操作。或者,可以直接点击‘Generate Bitstream’,Vivado工具会提示没有已经实现的结果,点击‘Yes’,Vivado工具会依次执行综合、实现和生成比特流文件。

     

    2) 完成后,选择‘Open Hardware Manager’打开硬件管理器。

     

    3) 连接Basys3开发板,点击‘Open target’,选择‘Auto connect’。

     

    4) 连接完成后,点击‘Program device’。

     

    5) 检查弹出框中所选中的bit文件,然后点击Program进行下载。

     

    设计验证

     

    1. 基于Analog Discovery2

    按照下图连接方式,首先将Pmod-DA1模块插入在JC口上方,同时将Analog Discovery2的示波器CH1的输出引线1+(橙色)和1-(橙白色)分别与Pmod-DA1模块的A1和GND相连接。

     

    1) 打开WaveForms软件,连接Analog Discovery2设备

    2) 在左侧的功能选择栏选择‘Scope’,使用示波器

    3) 打开示波器,点击左上角‘Run’按钮,波形输出如下图所示:

     

    2. 基于OpenScope

    按照下图连接方式,首先将Pmod-DA1模块插入在JC口上方,同时将OpenScope的示波器CH1的输出引线1+(橙色)和1-(橙白色)分别与Pmod-DA1模块的A1和GND相连接。

    1) 打开Digilent Agent;

    2) 在Windows工具栏右侧,右键Digilent Agent图标,选择‘Launch WaveForms Live’,在浏览器中打开WaveForms Live;

    3) 选择在实验二中已经添加的设备,点击连接该设备;

     

    4) 在界面右侧将Time设置为2ms,找到并展开Osc Ch1(示波器Ch1),保持默认参数设置,点击右上角开关按钮,打开示波器。

     

    5) 点击界面右上角的‘RUN’按钮,开始运行。在左侧的示波器中观察输出波形结果。

     

    通过DIGILENT Basys3开发板右侧的上下左右键进行频率调节,以及利用低两位的开关来选择输出波形。

     

     

    END

     

    后续会持续更新,带来Vivado、 ISE、Quartus II 、candence等安装相关设计教程,学习资源、项目资源、好文推荐等,希望大侠持续关注。

    大侠们,江湖偌大,继续闯荡,愿一切安好,有缘再见!

     

    往期推荐

    展开全文
  • 基于FPGA的正弦信号发生器设计

    千次阅读 2019-12-07 13:23:06
    用FPGA做正弦信号发生器是我上大学期间在实验室里做的,主要用的ROM-IP和DA数模转化芯片,将数字信号转为模拟信号后,通过示波器进行显示。 我记得当时用FPGA做了正弦、三角波、方波信号,然后通过DA输出在示波器上...

    前言

    用FPGA做正弦信号发生器是我上大学期间在实验室里做的,主要用的ROM-IP和DA数模转化芯片,将数字信号转为模拟信号后,通过示波器进行显示。

          我记得当时用FPGA做了正弦、三角波、方波信号,然后通过DA输出在示波器上显示信号........现在回想起来,自己感觉挺有意思的,当时学习时确实花费了不少时间去搞它。

          好多同学通过关注《FPGA的故事》公众号,咨询我是不是可以讲一下正弦信号发生器的设计?

         为了感谢大家对《FPGA的故事》公众号的关注,我把一些上学期间做的小实验慢慢分享给大家,希望对大家学习FPGA有帮助!

         希望大家继续关注《FPGA的故事》,你们的支持就是我最大的动力!

    应用知识储备说明

    用FPGA做正弦信号发生器,从专业学科角度来说它属于通信行业了。在通信行业里,信号的处理肯定要用到两种信号类型:模拟信号和数字信号(这个概念大家可以自己上网查一下,这里不详细介绍)。这两种信号之间如何进行转化呢,就要用到AD芯片和DA芯片。

    我想大家都知道AD和DA这两个名词吧,我们现在就用正弦信号发生器做个说明吧。

    我把上大学期间做个实验给大家讲一下,如上图所展示的一样。当时我是通过信号发生器产生一定频率的正弦信号,然后再通过AD芯片(模拟转数字)将信号发生器输出的模拟信号转为数字信号;再将转化后的数字信号通过FPGA进行采集,把采集到的数据传递给DA芯片(数字转模拟),最后通过示波器观察信号是不是正弦波。

    今天我们要做的实验,由于没有真实额信号源发生器,以及AD、DA和示波器;只能通过在FPGA中模拟正弦波的数字信号来搞了,然后通过仿真软件进行测试。

    程序设计

    我们这里要用到FPGA的ROM-IP来做实验,原理就是把正弦信号波形的数据存储到ROM中,然后从里面读出来就行了,如下图所示。

    注意:由于大家使用的FPGA芯片不同(alter 或者Xilinx),生成的ROM操作流程也不同,这里不再介绍。

         我们使用波形软件生成自己想要的波形参数,然后把生成的数据转换为coe文件,如下图所示。

    这些准备后,我们调用一个ROM-IP将参数导入,就可以写代码控制ROM了。(此时,感觉自己又回到了大学时代,心情激动.......)

    •                                                                          top程序接口

    名称

    方向

    位宽

    说明

    clk

    Input

    1

    工作时钟

    reset

    Input

    1

    复位信号(active high)

    data

    Output

    8

    波形数据

    代码:

    测试文件:

    仿真结果:如下图所示,对data_out通过鼠标右键选择为模拟信号,数据信号就会变成正弦波形模式。

     

     

     

    展开全文
  • 正弦信号发生器设计制作经验教训

    千次阅读 2017-12-13 16:08:03
    最近做了一个关于信号发生器设计,硬件方面发现有一些坑,所以写下来总结一下。  我们的方案是单片机控制DDS模块产生正弦波,用的单片机是MSP430,DDS是淘宝买的现成模块,模块电路图如下:  二者通过跳线...
  • 51单片机:压控PWM信号发生器设计

    千次阅读 2019-06-08 10:29:34
    51单片机:压控PWM信号发生器设计 经过一个学期的学习,初步入门了51单片机。会写了一点小程序,尝试过在板子上面跑自己设计的代码。当看到自己设计的程序结果由仿真变成现实在你眼前时,确实很开心。51系列虽然很老...
  • 提出基于FPGA设计混沌信号发生器的一种改进方法。首先,采用Euler算法,将连续混沌系统转换为离散混沌系统。其次,基于IEEE-754单精度浮点数标准和模块化设计理念,利用Quartus II软件,采用VHDL和原理图相结合的...
  • 一 前 言本文引用地址: http://www.21ic.com/app/mcu/201203/112517.htm在简易制导武器中,角位移传感器是姿态修正系统的敏感元件,用来测量弹体的角运动参数并以电信号形式给出三个...专用信号发生器就是模拟角...
  • 通过DAC0832实现信号发生器设计

    千次阅读 2020-06-04 10:24:43
    四、根据下图连接,通过DAC0832实现正弦波信号发生器设 1. 正确连接电路 2、只能显示非正弦波等其他波形(10分) 3、正确显示正弦波波形(20分) 4、正确完整的程序代码(10分) #include"reg...
  • 基于单片机的信号发生器设计

    千次阅读 2008-07-06 14:05:00
    本次我选择了基于单片机的信号发生器设计的这个课程设计,因为相对比较简单,就一个89C51和D/A0832就搞定。余老师还是比较好的,像他们软件的要焊接,额,密密麻麻的一大堆线,看着就烦。呵呵,好了,以下要谈谈这次...
  • 一、DDS原理 DDS全称为直接数字频率合成(Direct ...波形存储器:存储一个周期波形的离散信号; 频率控制字:用以控制生成的波形频率。 相位累加:用来控制波形的相位累加,组成完整的波形显示。 相位控制字
  • DDS(直接频率合成)技术是根据奈奎斯特抽样定理及数字处理技术,把一系列的模拟信号进行不失真的抽样,将得到的数字信号存储在存储器中,并在时钟的控制下,通过数模转换,将数字量变成模拟信号的方法。 DDS 模块...
  • 下篇将介绍整个STM32函数信号发生器系统软件设计部分,将着重介绍设计逻辑思路以及重点代码 本文将不对STM32初始化、中断设置、IO口配置部分进行介绍,只介绍DA转换部分的软件设计。 (一)信号波形设计: 六种信号...
  • 基于STM32的函数信号发生器设计(上:硬件设计)

    万次阅读 多人点赞 2015-05-21 10:25:18
    这是一款基于STM32和DAC8871(TI的一款16位数模转换芯片)的可编程函数信号发生器。该系统由STM32子系统、DA转换电路、电压基准电路、Flash存储电路、波形选择电路及显示电路六大部分组成。该装置采用SPI通信方式,...
  • 系统硬件设计 系统框图如图3-1所示 原理图 仿真图 DAC0832芯片原理 这里采用DAC0832与单片机89C51的典型的单缓冲方式接口电路。ILE接高电平,/WR1和/WR2相连后接89C51的/WR,/CS和/XFER相连后接89C51的地址高位...
  • 模电课程设计——信号发生器

    千次阅读 多人点赞 2019-07-13 22:17:44
    设计一个供电电源为交流220V、50Hz的占空比可调的矩形波、三角波信号发生器。主要电路指标要求波形频率为1KHz~10KHz,波形幅值小于12V,其它指标要求尽可能多的信号多样性。本设计设计一个完整的信号发生器,单元...
  • 基于Matlab的信号发生器GUI设计

    千次阅读 2020-11-30 18:01:06
    一、应用背景 传统的台式函数信号发生器具有体积庞大,接口不灵活,波形固定,价格昂贵等缺点,针对此现状,本次根据老师布置的作业完成一个简单的数字信号发生器,可以产生不同幅值,频率的白噪声、正弦波、锯齿波...
  • 基于FPGA的信号发生器设计

    万次阅读 多人点赞 2018-04-10 19:42:35
    基于FPGA的信号发生器设计首先先要介绍的是本设计的主芯片是ALTERA的一款芯片,芯片名称是EP2C5T144C8N。该芯片的LE单元有4608个,PLL锁相环具有2个,IO口管脚具有142个,差分通道55个,嵌入式乘法器26个,RAM的...
  • 在数字电路中, 序列信号是指在同步脉冲作用下循环地产生一串周期性的二进制信号.能产生这种信号的逻辑器件就... 本实验的目的就是设计一个序列信号发生器设计产生序列11100100、11100100、···的计数型序列信号发
  • 学习了明德扬至简设计法和明德扬设计规范,本人设计了一个基于FPGA的可调频调相而且可以输出不同波形的DDS信号发生器。该信号发生器实现了通过按键控制输出不同类型的波形,并可以通过按键改变波形频率和初始相位。...
  • 信号发生器

    千次阅读 2020-09-25 15:20:42
    程序下载到开发板后,示波要能观察到波形。 我的cpld的开发板是emp240的。最好能够通过开发板上按键实现选择输出要的波形,不能的可以分开输出。 设计说明: 这个设计中,我们将四种波形使用选择开关进行...
  • 六、基于Verilog的信号发生器DDS的设计

    万次阅读 多人点赞 2018-08-26 13:29:44
    采用 Verilog 设计了一个简单的信号发生器,可输出正弦波、方波、三角波、锯齿波这 4 种频率、相位和幅值可调的波形。 2、具体功能 module dds( input wire clk, input wire rst_n, input wire ...
  • 基于FPGA的DDS信号发生器设计仿真

    千次阅读 2020-05-16 23:50:05
    基于FPGA的DDS信号发生器产生正弦波sin信号的mif文件建立工程并调用ipcore主要思路仿真仿真结果 本文主要介绍利用FPGA和matlab实现任意频率信号发生器的功能,并进行仿真,使用Quartus Ⅱ+modelsim+matlab实现功能,...
  • 基于51单片机的函数信号发生器

    万次阅读 多人点赞 2020-05-02 09:57:55
    函数信号发生器和函数信号识别器是一直想做的两个项目,但是一直苦于没时间才做的拖拖拉拉。 这一次的项目是个第一版项目,总共可以产生四种波形,分别为方波、三角波、锯齿波及梯形波。每种波形可以通过按键改变...
  • EDA是电子设计自动化,对象是数字电路设计,而正弦信号发生器设计却是一个模拟电路设计,因此需要用到D/A转换器。 根据正弦信号发生器的波形,得知该实验的输入为时间,而输出为振幅。如果将正弦波的振幅放在...
  • FPGA设计——正弦信号发生器

    千次阅读 2016-09-16 09:58:25
    这里讨论基于FPGA设计一款简单的正弦信号发生器。DDS原理Direct Digital frequency Synthesis如下图所示:3. DAC原理这里DAC采用TLC5620,下面分别给出DAC的原理图和时序图。4. ROM文件的生成ROM波形可以通过MIF或...
  • 4.1 信号发生器

    千次阅读 多人点赞 2020-06-24 11:14:10
    文章目录4.1 信号发生器一、设计任务与要求1.1.设计任务与要求二、方案设计与论证三、单元电路设计与参数计算3.1. 总的原理框图及总方案3.2.各组成部分的工作原理四、总原理图及元器件清单4.1.总原理图4.2.元件...
  • 设计一个能产生正弦波、方波和三角波的信号发生器(不要使用集成信号发生器芯片),要求信号发生器任意时刻只有一种波形输出,且波形频率和幅度可调。 二、总体方案设计 分析题目要求,得出本设计可以分为六个模块:...
  • 低频信号发生器系统主要由CPU、D/A转换电路、电流/电压转换电路、按键和波形指示电路、电源等电路组成。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 120,895
精华内容 48,358
关键字:

信号发生器设计