基于FPGA的信号发生器设计

发布者:mb5362443最新更新时间:2011-09-27 关键字:信号发生器 手机看文章 扫描二维码
随时随地手机看文章
   

FPGA 芯片为载体, 通过QuartusII 的LPM_ROM 模块和VHDL 语言为核心设计一个多功能信号发生器,根据输入信号的选择可以输出递增锯齿波、递减锯齿波、三角波、阶梯波和方波等5 种信号,通过QuartusII 软件进行波形仿真、定时分析,仿真正确后,利用实验板提供的资源,下载到芯片中实现预定功能。

  信号发生器又称为波形发生器, 是一种常用的信号源,广泛应用于电子电路、通信、控制和教学实验等领域。它是科研及工程实践中最重要的仪器之一, 以往多用硬件组成,系统结构比较复杂,可维护性和可操作性不佳。随着计算机技术的发展,信号发生器的设计制作越来越多的是用计算机技术,种类繁多,价格、性能差异很大。用FPGA 或CPLD 来实现,它的优点是可以进行功能仿真,而且FPGA 和CPLD 的片内资源丰富,设计的流程简单。用FPGA 所构成的系统来产生波形信号,这个系统既能和主机系统相连,用相应的上层软件展示波形信号, 又方便程序的编写, 而且还有A/D0809接口可以产生模拟信号的输出和外面的示波器相连。

  1 正弦信号发生器的LPM 定制

  正弦信号发生器由计数器或地址发生器(6 位)、正弦信号数据ROM (6 位地址线,8 位数据线, 含有64 个8 位数据, 一个周期)、原理图顶层设计和8 位D/A ( 实验中用DAC0832 代替)。

  其框图如图1 所示。其中信号产生模块将产生所需的各种信号,这些信号的产生可以有多种方式,如用计数器直接产生信号输出,或者用计数器产生存储器的地址,在存储器中存放信号输出的数据。信号发生器的控制模块可以用数据选择器实现, 用8 选1 数据选择器实现对5 种信号的选择。

 

图1 信号发生器结构框图

  最后将波形数据送入D/A 转换器,将数字信号转换为模拟信号输出。用示波器测试D/A 转换器的输出,可以观测到5 种信号的输出。

  1.1 定制初始化数据文件

  QuartusII 能接受的LPM_ROM 模块中的初始化数据文件的格式有两种:。mif 格式文件和。hex 格式文件。实际应用中只要使用其中一种格式的文件即可。下面采用。mif 格式文件,调出产生ROM 数据文件大小的选择窗。根据64 点8 位正弦数据的情况,可选ROM 的数据数Number 为64,数据宽Word size 取8 位。单击OK 按钮,将出现图2 所示的空的。mif数据表格,表格中的数据格式可通过鼠标右键单击窗口边缘的地址数据弹出的窗口选择。

 

图2 .mif 数据表格

  将波形数据填入mif 文件表中也可以使用QuartusII 以外的编辑器设计MIF 文件,其格式如下:

  #include

  #include "math.h"

  main()

  {int i;float s;

  for (i=0;i<1024; i++)

  { s = sin(atan(1)*8*i/1024);

  printf("%d : %d;\n",i,(int)((s+1)*1023/2)); }}

  把上述程序编译成程序后, 可在DOS 命令行下执行命令:

  romgen > sin_ rom. mif;

1.2 定制LPM 元件

  打开Mega Wizard Plug_In Manager 初始对话框, 选择Create a new custom… 项。单击Next 按钮后,选择Storage 项下的LPM_ROM, 再选择ACEX1K 器件和VHDL 语言方式;最后输入ROM 文件存放的路径和文件名:F:\sing_gnt\data_rom (定制的ROM 元件文件名),单击Next 按钮,选择ROM 控制线、地址线和数据线。这里选择地址线位宽和ROM 中数据数分别为6 和64; 选择地址锁存控制信号inclock。

  对于地址信号发生器的设计。方法一:用VHDL 语言设计6 位计数器,产生其元件符号;方法二:仍采用LPM 定制的方法。

 

1.3 完成顶层设计

  按图3 画出顶层原理图,然后进行编译,波形仿真如图4所示。

 

图3 简易正弦信号发生器顶层电路设计

 

图4 当前工程仿真波形输出

  对当前设计通过执行Quartus II 的命令Create ∠ Update/ Create Symbol Files for Current File,可以为设计电路建立一个元件符号,以便被顶层设计多功能信号发生器所调用。

  2 其他信号部分原程序

  其他各信号发生器可参照正弦信号发生器的设计方法设计或直接采用VHDL 硬件描述语言进行设计。

  LIBRARY IEEE;--递增锯齿波的设计

  USE IEEE.STD LOGIC 1164.ALL;

  USE IEEE.STD LOGIC UNSIGNED.ALL;

  ENTITY signal2 IS --递增锯齿波signal1

  PORT(clk,reset:IN std_logic;--复位信号reset, 时钟信号clk

  q:OUT std_logic_vector (7 DOWNTO 0));--输出信号q

  END signal2;

  ARCHITECTURE b OF signal2 IS

  BEGIN

  PROCESS(clk,reset)

  VARIABLE tmp:std_logic_vector(7 DOWNTO 0);

  BEGIN

  IF reset='0' THEN

  tmp:="00000000";

  ELSIT rising_ege(clk)THEN

  IF tmp="11111111"THEN

  tmp:="00000000";

  ELSE

  tmp:=tmp+1; --递增信号的变化

  END IF;

  END IF;

  q<=tmp:

  END PROCESS;

  END b;

 

LIBRARY IEEE;--方波的设计

  USE IEEE.STD_LOGIC_1164.ALL;

  USE IEEE.STD_LOGIC_UNSIGNED.ALL;

  entity signal5 is --方波signal5

  PORT(clk,reset:in std_logic; --复位信号reset,时钟信号clk

  q:out std_logic_vector (7 DOWNTO 0)); --输出信号q,8 位数字信号

  END signal5;

  ARCHITEECTURE a OF signal5 IS

  SIGNAL; a:std_logic;

  BEGIN

  PROCESS(clk,reset)

  YARIABLE tmp:std_logic_vector(7 downto 0);

  BEQIN

  IF reset='0' then

  a<='0';

  elsif rising_edge(clk)THEN

  IF tmp="11111111" THEN

  tmp:="00000000";

  ELSE

  tmp:=tmp+1;

  END IF;

  if tmp<="10000000" then

  a<='1';

  else

  a<='0';

  END IF;

  END IF;

  END PROCESS;

  PROCESS(clk,a)

  BEGIN

  IF rising_edge(clk)THEN

  IF a='1' THEN

  q<="11111111";

  ELSE

  q<="00000000";

  END IF;

  END IF;

  END PROCESS;

  END a;

  3 顶层电路的设计

  将上述6 个模块生成符号,供顶层电路调用。这些模块分别是:递减锯齿波信号产生模块signall、递增锯齿波信号产生模块signal2、三角波信号产生模块signal3、阶梯波信号产生模块signal4、方波信号产生模块signal5 和数据选择器mux51。顶层电路的连接如图5 所示。

 

图5 信号发生器顶层电路

4 D/A 转换器的连接

  选择一个D/A 转换器,将数据选择器的输出与D/A 转换器的输入端连接。D/A 转换器的可选范围很宽,这里以常用的DAC0832 为例。DAC0832 的连接电路如图6 所示。

 

图6 DAC0832 的连接电路

  5 实现与测试

  信号发生器顶层电路的仿真波形如图7 所示,这里只就输入选择信号等于5 时的情况进行仿真,此时输出波形是方波,输出的数字信号为周期性的全0 或全1。

 

图7 信号发生器顶层电路的仿真波形

  信号发生器的底层电路模块也可以分别进行仿真,例如对阶梯波信号产生模块signal4 进行仿真,仿真波形如图8 所示,输出的数字信号为阶梯状变化。

 

图8 阶梯波信号产生模块signal4 的仿真波形

  6 结束语

  硬件电路设计主要是设计相关模块的设计思想的可视化,是相关模块的电路图的汇总和其相关仿真波形的集锦,该部分条理清晰,思路明确,从中我们可以清晰地看到该设计方案的具体模块和整个设计的原理结构实图;程序设计这一部分主要阐述该设计的设计方法与设计思想,进一步从软件设计上揭示设计构思,主要包含了整个设计所用到的模块的硬件描述语言的设计, 本文设计思路清晰,通过QuartusII 软件进行波形仿真成功,特别是正弦信号发生器的LPM 定制对于编程不是特别强的人员提供另一种途径来实现,加深理解EDA 的层次设计思想,很好的把握住了教学的改革方向,更好的锻炼了学生理论联系实践的能力。


 

关键字:信号发生器 引用地址:基于FPGA的信号发生器设计

上一篇:LEON2应用于DCPU的FPGA仿真
下一篇:Fraunhofer IIS成为Tensilica授权的设计中心合作伙伴

推荐阅读最新更新时间:2024-05-02 21:36

单片机AT89C52和D/A转换器DAC0832芯片为核心的信号发生器设计
信号发生器是一种常用的信号源,广泛应用于电子 电路 、自动控制系统和教学实验等领域。信号的产生有模拟电路、专用硬件和软件产生等方法。采用模拟电路搭建函数信号发生器,可同时产生方波、三角波、正弦波,但不能产生任意波形,存在波形质量差、控制难、可调范围小,电路复杂和体积大等缺点,且 频率 调节不方便。专用硬件方法产生的信号频率分辨率高、稳定性好、在线调整方便,如目前在通讯系统中应用广泛的直接数字频率合成(DDS)技术,例如AD9854是一种典型的信号产生方法,但是价格昂贵。 利用单片机通过程序设计方法产生低频信号,其频率底线较低,具有线路简单、结构紧凑、体积小、价格低廉、频率稳定度高、抗干扰能力强、用途广泛等优点,且如需要产生
[单片机]
单片机AT89C52和D/A转换器DAC0832芯片为核心的<font color='red'>信号发生器</font>设计
自适应信号发生器方案与实现
  在测试、研究或调整电子元器件、电子电路及设备时,为测定电路的一些电参量,如测量频率响应、噪声系数,为电压表定度等,常需要提供符合要求的电信号,模拟实际工作中所用待测设备激励信号。当进行系统的稳态特性测量时,需使用振幅、频率已知的正弦信号源。而进行系统的瞬态特性测试时,又需使用前沿时间、脉冲宽度和重复周期已知的矩形脉冲源。并且要求信号源输出信号的参数,如频率、波形、输出电压或功率等,能在一定范围内进行精确调整,有很好的稳定性,有输出指示。而这种测试信号源一般采用信号发生器。   用于产生被测电路所需特定参数的电测试信号,本设计可以产生可变频率及幅度的方波、正弦波及三角波,并通过简易的方法来对输出信号频率和幅度进行自适应调整及功
[测试测量]
自适应<font color='red'>信号发生器</font>方案与实现
信号发生器里的信号源
信号源是根据用户对其波形的命令来产生信号的电子仪器。信号源主要给被测电路提供所需要的已知信号(各种波 形),然后用其它仪表测量感兴趣的参数。可见信号 源在电子实验和测试处理中,并不测量任何参数,而是根据使用者的要求,仿真各种测试信号,提供给被测电路,以达到测试的需要。 凡是产生测试信号的仪器,统称为信号源,也称为信号发生器,它用于产生被测电路所需特定参数的电测试信号。 信号源的分类和作用 信 号源有很多种分类方法,其中一种方法可分为混和信号源和逻辑信号源两种。其中混和信号源主要输出模拟波形;逻辑信号源输出数字码形。混和信号源又可分为函 数信号发生器和任意波形/函数发生器,其中函数信号发生器输出标准波形,如正弦波、方波等,任意波
[测试测量]
轻装上阵·信号无忧 | 超便携函数/波形信号发生器DG900 Pro/800 Pro系列亮眼登场!
2023年11月,普源精电 (RIGOL) 推出全新DG900 Pr/800 Pro系列超便携函数/任意波形发生器!该系列产品运用RIGOL专有的SiFi® Ⅱ高保真信号合成技术,可以产生低噪声、低失真、低抖动的信号。DG900 Pr/800 Pro提供最高200MHz输出频率和最高1.25GSa/s采样率,提供16bit垂直分辨率,任意波表长度高达32Mpts,同时最高60MHz方波输出频率与3ns方波上升时间,性能精确可靠。 性能提升的同时,DG800 Pro/900Pro函数/波形信号发生器整机精致小巧,供电电源选择多样,且具有7英寸彩色大屏,在满足测量需求的同时也为工程师带来了非一般的人机交互体验! 超便携
[测试测量]
轻装上阵·信号无忧 | 超便携函数/波形<font color='red'>信号发生器</font>DG900 Pro/800 Pro系列亮眼登场!
文氏桥低频信号发生器原理图
这里介绍的两个电路,性能都很好,适合自己动手制作。图中的两只100kΩ的电阻和两只1600pF的电容决定了RC串并联选频电路的振荡频率,计算公式为f=1÷(6.28×R×C)。图中RC电路选定的频率为l000Hz。有一点要留意,串并联网络里上下两只电阻和电容的数值必须相同。文氏桥低频信号发生器原理图:
[模拟电子]
文氏桥低频<font color='red'>信号发生器</font>原理图
信号发生器的使用方法及注意事项
信号发生器的使用方法: 选用与验电器相同电压等级的验电信号发生器。手持验电器工作部分(验电器头)将发生器的电极头接触被测验电器的电极头,按动 工作 开关,此时验电器发出声光信号表明验电器的性能完好,如无声光指示表明验电器有故障,应修理或更换后使用。检测近电报警安全帽时只须将高压信号发生器的电极头靠近报警器按动 工作 开关即可。 信号发生器使用的注意事项: 1.信号发生器设有 电源指示 ,使用时指示灯不亮,应更换电池后再使用。 2.信号发生器不用时应放在干燥通风处,以免受潮。
[测试测量]
安捷伦扩展信号发生器和分析仪频率范围
安捷伦科技公司近日宣布为旗下的信号发生器和分析仪引入一系列 Virginia Diodes Inc.(VDI)的频率扩展模块。VDI是一家设计、制造和销售毫米波及太赫兹器件、元件与系统的公司。 VDI模块可以覆盖高达 1.1 THz 的毫米波频率,能够扩展安捷伦信号发生器和分析仪的应用范围,从而满足持续增长的下一代无线研究(也称为 5G)需求。VDI 模块同样适用于毫米波通信回程系统和 IEEE 802.11ad 等新兴无线标准以及广泛的航空航天与国防应用。 当前应用需要提升频率来支持增加的调制带宽,同时避免频谱拥堵,这对测量提出了严重挑战。安捷伦信号发生器和分析仪与 VDI 的频率扩展模块结合,可支持设计人员精确生成并分析复杂
[测试测量]
基于DSP与AD9852的任意信号发生器
  直接数字式频率合成( DDS ) 技术是继直接频率合成和间接频率合成之后,随着数字集成电路和微电子技术的发展而迅速发展起来的第三代频率合成技术。DDS技术具有相对带宽宽、频率转换 时间短、频率分辨率高等优点,输出相位连续,频率、相位和幅度均可实现程控,常用于高精度频率合成和任意信号发生。本文在发动机电控单元( ECU )硬件在 环仿真系统的设计中,使用TMS320 LF2407A控制2片AD9852产生2路同步的任意信号,仿真发动机工作时的真实信号。   1 AD9852和TMS320LF2407A简介   AD9852是美国Analog Devices公司生产的新型直接数字频率合成器,具有频率转化速度快、频谱纯度高、工作温
[测试测量]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved