正弦信号发生器的设计

合集下载

正弦信号发生器的设计实验报告(2013070619)

正弦信号发生器的设计实验报告(2013070619)

正弦信号发生器的设计
一、实验目的
1、进一步熟悉QuartusII软件的使用,掌握可编程器件的开发设计的过程。

2、掌握QuartusII中国宏模块的使用方法,重点是LMP_ROM与FPGA硬件资源的使用方法。

3、进一步熟悉GW48-PK2 EDA实验系统。

二、实验内容
采用图形输入方法完成以下正弦信号发生器的设计。

其中6为二进制加法计数器采用兆功能库的arithmetic中的lpm_counter来实现。

ROM元件采用storage中的lpm_rom实现。

ROM数据表中的正弦信号为64字节。

操作如下:
1、新建工程文件,取名为SIN。

2、创建初始化文件,为SIN.mif。

3、建立LPM_ROM.
4、建立LPM_COUNTER文件
5、绘制电路图及编译
6、仿真波形的建立与存盘
7、仿真波形前的检查、仿真,检查结果
8、波形仿真前的检查,进行仿真,检查结果。

9、绑定管脚,进行仿真
10、下载程序,在实验箱上验证结果。

11、重复前面的步骤,设计多波形的信号发生器。

(老师对不起,由于我实验的照片找不到了,就借用了同学的多波形的图片。

)。

基于DSP设计正弦信号发生器

基于DSP设计正弦信号发生器

基于DSP设计正弦信号发生器一.设计目的设计一个基于DSP的正弦信号发生器二.设计内容利用基于CCS开发环境中的C54X汇编语言来实现正弦信号发生装置。

三.设计原理一般情况,产生正弦波的方法有两种:查表法和泰勒级数展开法。

查表法是使用比较普遍的方法,优点是处理速度快,调频调相容易,精度高,但需要的存储器容量很大。

泰勒级数展开法需要的存储单元少,具有稳定性好,算法简单,易于编程等优点,而且展开的级数越多,失真度就越小。

本文采用了泰勒级数展开法。

一个角度为θ的正弦和余弦函数,可以展开成泰勒级数,取其前5项进行近似得:式中:x为θ的弧度值,x=2πf/fs(fs是采样频率;f是所要发生的信号频率。

正弦波的波形可以看作由无数点组成,这些点与x轴的每一个角度值相对应,可以利用DSP处理器处理大量重复计算的优势来计算x轴每一点对应的y的值(在x轴取N个点进行逼近)。

整个系统软件由主程序和基于泰勒展开法的SIN子程序组成,相应的软件流程图如图。

三.总体方案设计本设计采用TMS320C54X系列的DSP作为正弦信号发生器的核心控制芯片。

通过计算一个角度的正弦值和余弦值程序可实现正弦波,其步骤如下:1.利用sinx和cosx子程序,计算0°~45°(间隔为0.5°)的正弦和余弦值2.利用sin(2x)=2sin(x)cos(x)公式,计算0°~90°的正弦值(间隔为1°)3.通过复制,获得0°~359°的正弦值4.将0°~359°的正弦值重复从PA口输出,便可得到正弦波四.软件操作DSP 集成开发环境 CCS是 Code Composer Studio 的缩写,即代码设计工作室。

它是 TI 公司推出的集成可视化 DSP 软件开发工具。

DSP CCS 内部集成了以下软件工具:◆ DSP 代码产生工具(包括 DSP 的 C 编译器、汇编优化器、汇编器和链接器)◆ CCS 集成开发环境(包括编辑、建立和调试 DSP 目标程序)◆ 实时基础软件 DSP/BIOS (必须具有硬件开发板)◆ RTDX、主机接口和 API(必须具有硬件开发板)在 CCS 下,用户可以对软件进行编辑、编译、调试、代码性能测试(profile)和项目管理等工作。

EDA正弦波信号发生器的设计

EDA正弦波信号发生器的设计

利用LPM 设计正弦信号发生器一、设计目的:进一步熟悉maxplu sII 及其LPM 设计的运用。

二、设计要求:1、利用原理图输入方式。

2、信号数据点值自行想法实现。

3、得出正确时序仿真文件。

三、设计原理:图1 正弦信号发生器结构框图图1所示的正弦波信号发生器的结构由三部分组成计数器或地址发生器(这里选择8位),正弦信号数据ROM (8位地址线,8位数据线),含有256个8位数据(一个周期)。

四、VHDL 顶层设计。

设计步骤:1、建立.mif 格式文件建立C 语言文件sin.cpp ,运行产生sin.exe 文件。

sin.cpp 程序代码:#include <iostream>#include <cmath>#include <iomanip>using namespace std;int main(){int i;float s;VHDL 顶层设计sin.vhd8位计数器 (地址发生器) 正弦波数据 存储ROM 产生波形数据cout<<"WIDTH=8;\nDEPTH=256;\n\nADDRESS_RADIX=HEX;\nDA TA_R ADIX=HEX;\n\nCONTENT\nBEGIN\n";for(i=0;i<256;i++){s=sin(atan(1)*8*i/256);cout<<" "<<i<<" : "<<setbase(16)<<(int)((s+1)*255/2)<<";"<<endl;}cout<<"END"<<endl;return 0;}把上述程序编译后,在DOS命令行下执行命令:sin.exe > sin.mif;将生成的sin.mif 文件。

vhdl语言正弦波信号发生器设计

vhdl语言正弦波信号发生器设计

AS正弦波信号发生器设计一、实验内容1.设计一正弦信号发生器,采用ROM进行一个周期数据存储,并通过地址发生器产生正弦信号。

(ROM:6位地址8位数据;要求使用两种方法:VHDL编程和LPM)2.正弦信号六位地址数据128,140,153,165,177,188,199,209,219,227,235,241,246,250,253,255,255,254,252,248,244,238,231,223,214,204,194,183,171,159,147,134,121,109,96,84,72,61,51,41,32,24,17,11,7, 3,1,0,0,2,5,9,1420,28,36,46,56,67,78,90,102,115,127。

二、实验原理正弦波信号发生器是由地址发生器和正弦波数据存储器ROM两块构成,输入为时钟脉冲,输出为8位二进制。

1.地址发生器的原理地址发生器实质上就是计数器,ROM的地址是6位数据,相当于64位循环计数器。

2.只读存储器ROM的设计(1)、VHDL编程的实现①基本原理:为每一个存储单元编写一个地址,只有地址指定的存储单元才能与公共的I/O相连,然后进行存储数据的读写操作。

②逻辑功能:地址信号的选择下,从指定存储单元中读取相应数据。

(2)、基于LPM宏功能模块的存储器的设计①LPM:Library of Parameterized Modules,可参数化的宏功能模块库。

②Quartus II提供了丰富的LPM库,这些LPM函数均基于Altera器件的结构做了优化处理。

③在实际的工程中,设计者可以根据实际电路的设计需要,选择LPM库中适当的模块,并为其设置参数,以满足设计的要求,从而在设计中十分方便的调用优秀的电子工程技术人员的硬件设计成果。

三、设计方案1.基于VHDL编程的设计在地址信号的选择下,从指定存储单元中读取相应数据系统框图如下:2.基于LPM宏功能模块的设计LPM宏功能具有丰富的由优秀的电子工程技术人员设计的硬件源代码可供调用,我们只需要调用其设计的模块并为其设计必要的参数即可。

EDA实验-正弦波信号发生器设计

EDA实验-正弦波信号发生器设计

实验八正弦信号发生器的设计一、实验目的1、学习用VHDL设计波形发生器和扫频信号发生器。

2、掌握FPGA对D/A的接口和控制技术,学会LPM_ROM在波形发生器设计中的实用方法。

二、实验仪器PC机、EDA实验箱一台Quartus II 6.0软件三、实验原理如实验图所示,完整的波形发生器由4部分组成:• FPGA中的波形发生器控制电路,它通过外来控制信号和高速时钟信号,向波形数据ROM 发出地址信号,输出波形的频率由发出的地址信号的速度决定;当以固定频率扫描输出地址时,模拟输出波形是固定频率,而当以周期性时变方式扫描输出地址时,则模拟输出波形为扫频信号。

•波形数据ROM中存有发生器的波形数据,如正弦波或三角波数据。

当接受来自FPGA的地址信号后,将从数据线输出相应的波形数据,地址变化得越快,则输出数据的速度越快,从而使D/A输出的模拟信号的变化速度越快。

波形数据ROM可以由多种方式实现,如在FPGA外面外接普通ROM;由逻辑方式在FPGA中实现(如例6);或由FPGA中的EAB模块担当,如利用LPM_ROM实现。

相比之下,第1种方式的容量最大,但速度最慢;,第2种方式容量最小,但速度最最快;第3种方式则兼顾了两方面的因素;• D/A转换器负责将ROM输出的数据转换成模拟信号,经滤波电路后输出。

输出波形的频率上限与D/A器件的转换速度有重要关系,本例采用DAC0832器件。

DAC0832是8位D/A转换器,转换周期为1µs,其引脚信号以及与FPGA目标器件典型的接口方式如附图2—7所示。

其参考电压与+5V工作电压相接(实用电路应接精密基准电压).DAC0832的引脚功能简述如下:•ILE(PIN 19):数据锁存允许信号,高电平有效,系统板上已直接连在+5V上。

•WR1、WR2(PIN 2、18):写信号1、2,低电平有效。

•XFER(PIN 17):数据传送控制信号,低电平有效。

•VREF(PIN 8):基准电压,可正可负,-10V~+10V.•RFB(PIN 9):反馈电阻端。

正弦信号发生器设计

正弦信号发生器设计

正弦信号发生器作者:程锟、晏婷婷、覃雄伟摘 要:本设计以凌阳SPCE061A 单片机为核心,基于直接数字频率合成(DDS )技术制作了一个频率值能任意调节的多功能信号源。

该信号源在1KHZ~10MHZ 范围能输出稳定可调的正弦波,并具有AM 、ASK 和PSK 等调制功能。

信号输出部分采用电流放大型宽带运放做电流放大,再用宽带电压运放做电压放大,很好地解决了带宽和带负载能力的要求。

系统采用液晶显示模组CPCL501显示和键盘控制功能,在Ω50负载电阻下输出的电压峰-峰值p p V -≥1V 可调。

一、方案论证与选择1.题目分析:本设计要求可以输出较宽频带且频率稳定度足够高的正弦信号,并且具有一定的负载能力,同时可输出指标满足要求的AM 、ASK 、PSK 信号。

综合题目指标要求及相关分析,得到该设计的功能框架图如图一所示。

本设计可分为以下几个部分:频率合成模块、AGC (自动增益控制)模块、幅度控制模块、功率放大模块、调制模块及人机交流模块。

图一 功能模块框图2.方案比较(1)正弦信号发生模块方案一:采用反馈型LC 振荡原理。

选择合适的电容、电感就能产生相应的正弦信号。

其中电容采用变容二极管,通过控制二极管的电压来改变电容, 最终控制输出信号频率。

此方案器件比较简单,但是难以达到高精度的程控调节,而且稳定度不高。

方案二:采用FPGA 器件。

将某一标准正弦信号经过高速采样后送到外部存储器中储存好,然后用一个计数器产生地址读出存储器中的数据后送到D/A 转换器件中输出,可以通过改变计数器的参数,改变地址信号,实现,也可以通过处理数据改变信号的幅度。

但是此方案的输出波形受时钟影响较大,且不易于控制步进和进行功能扩展。

方案三:采用直接频率合成集成芯片AD9851。

AD9851是AD 公司生产的DDS 芯片,带并行和串行加载方式,AD9851 内含可编程DDS 系统和高速比较器,能实现全数字编程控制的频率合成。

简易正弦信号发生器设计

简易正弦信号发生器设计

简易正弦信号发生器设计
一、实验目的
1.进一步熟悉QuartusII及LPM-RAM宏模块与FPGA硬件资源的使用方法。

二、实验设备
计算机、和软件QuartusII和EDA/SOPC试验箱
三、试验内容
简易正弦信号发生器设计,要求ROM是8位数据线,8位地址线。

四、试验原理
打开QuartusII软件,在连接试验电路之前调入LPM-RAM-DQ宏模块,PLM-COUNER模块和74244芯片,再连接电路图,试验原理设计图如下:
图1-1键入64个正弦信号数据
图1-2简易正弦信号发生器顶层电路设计
五、实验结果
试验结果如下图:
图1-3综合后的RLT图
图1-4仿真波形图3.引脚锁定方案图
图1-5引脚锁定方案图
图1-6编程下载模式图
六、试验小节
一学期匆匆而过,通过大半学期的学习,我们学到了很多处理问题的技巧。

不过我们还要熟记很多单词,大多数的单词我们还不认识,相信通过进一步的学习,我们一定能学好这个软件。

我们也将以浓厚的兴趣和积极的态度去学习。

相信我们一定会有更加长足的进步。

DDS正弦信号发生器的设计

DDS正弦信号发生器的设计

高级数字系统设计实验——DDS正弦信号发生器设计姓名学号专业:通信与信息系统指导老师实验三 DDS 正弦信号发生器一、实验要求:利用LPM_ROM 设计一个DDS 正弦信号发生器,要求ROM 表长度为8位,频率控制字为8位,输出频率分辨率优于1Hz 。

二、设计方案 1、 方案流程图:由频率控制字提供,累加器在系统时钟控制下,来一个上升沿就累加一次频率控制字的值,累加器的位数高于8位,所以用其高8位作为正弦查表的地址,根据地址就能寻址到表内的值,该值通过DAC 转换再通过示波器就能显示波形。

累加器溢出一次就相当于正弦表寻址一圈,正弦信号经历一个周期。

2、参数设定系统时钟fclk :设定为50KHz ,频率控制字M :8位,取值范围:1~28-1, 分辨率:f=nfclk2 n 为累加器的位数,当系统时钟的频率越低,相位累加器的位数越高,所得到的频率分辨率就越高,累加器:为了使输出频率的分辨率能达到1Hz ,选定为16位, 输出频率:fout=n M fclk 2*=16250000M *=6553650000M*, 当M=1时,输出频率最小,fout=0.7629Hz ,当M=255时,输出频率最大,fout=0.7629*255=194.5496Hz 。

3、模块建立 1)累加器LIBRARY IEEE;USE IEEE.std_logic_1164.all;USE IEEE.std_logic_ARITH.ALL;USE IEEE.std_logic_unsigned.ALL;ENTITY add ISPORT(fclk : IN STD_LOGIC; --接入系统时钟rst : IN STD_LOGIC; --复位端fcontrol:IN STD_LOGIC_VECTOR(7 DOWNTO 0);--频率控制字8位asum:OUT STD_LOGIC_VECTOR(15 DOWNTO 0));--输出累加和END ENTITY;ARCHITECTURE behav OF add ISSIGNAL a:STD_LOGIC_VECTOR(15 DOWNTO 0);--累加器的暂存值SIGNAL fc:STD_LOGIC_VECTOR(7 DOWNTO 0);--频率控制字的寄存器BEGINfc<=fcontrol;PROCESS(fc,a,fclk,rst)BEGINIF(rst = '1' ) THENa <=(others=>'0');--复位端高电平有效ELSIF( fclk'event AND fclk = '1') THENa<=a+fc; --系统时钟来一个上升沿就累加一次频率控制字的值ELSENULL;END IF;asum<=a;--寄存器的值赋值给输出端END PROCESS;END behav;2)ROM表ROM表可以通过LPM宏功能模块来实现,通过MegaWizard管理器可以构建我们所需的存储单元,因为频率控制字为8位,DAC 采用实验箱上的THS5651为10位并行高速DAC,所以需要256个存储单元,每个单元为10bits。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三、设计代码(或原理图)、仿真波形及分析
定制ROM元件,利用MegaWizard Plug-In Manager定制正弦信号数据ROM步骤如下:
1、设置MegaWizard Plug-In Manager初始对话框。在Tools菜单中选择“MegaWizard Plug-In Manager”,选择“Create a new custom…”项,即定制一个新的模块。点击“Next”后,在左栏选择“MemoryCompiler”项下的ROM;1-PORT,再选“ACEX1K”器件和HDL语言方式,最后键入ROM1文件存放的路径和文件名:e:\sin_gnt\asm\ROM1,点击“Next”。
2、选择ROM控制线和地址、数据线。在对话框中选择地址与数据的位宽分别为8和64,选择地址所存控制信号inclock,并选择数据文件ROM1hex。最后完成ROM文件ROM1.V的生成。然后打开此文件ROM1.V.,而ROM1.V与顶层工程文件ROM.HEX在同一文件夹中!且后缀hex
3、测试ROM模块。由于此时QuartusII的工程设置在顶层文件,现在启动全程编译:选择Processing菜单的“Start Compilation”项。此时将不会出现前面的错误信息。但应该注意,如果编译进程信息出现警告语句:“Warning:Can’t find Memory Initialization…”,说明ROM1中未能调入初始化文件的波形数据。文件调用语句路径是否正确。
学生实验报告
系别
电子信息学院
课程名称
《EDA综合实验》
班级
14无线技术
实验名称
正弦信号发生器的设计
姓名
实验时间
2016年10月17日
学号
指导教师
王红航
成绩
批改时间
2016年月日
报告内容
一、实验目的和任务
进一步熟悉QuartusⅡ及其LPM_ROM与FPGA硬件资源的使用方法。
定制LPM电子设计自动化,对象是数字电路设计,而正弦信号发生器的设计却是一个模拟电路设计,因此需要D/A转换器。
根据正弦信号发生器的波形,得知该实验的输入为时间,而输出为振幅。如果将正弦波的振幅放在存储单元为64的ROM中,根据ROM的功能得知,ROM中的数据与地址是一一对应关系,因此设计由时间和振幅的对应关系转换为时间和地址的对应关系。据此,要得到正弦信号,需要设计一个6位二进制计数器。下图为总体设计框图。
4、阅读编译报告。编译成功后,观察编译处理流程,包括数据网表建立、逻辑综合、适配、配置文件装配和时序分析。最下栏是编译处理信息;右栏是编译报告,这可以在Processing菜单项的“Compilation Report”处见到。
COUNTER文件的定制。
四、实验结论与心得
在编写顶层文件的程序是,遇到了不少问题,特别是个元件之间的连接,以及信号的定义,总是有错误,在细心的检查下,终于找出了错误的警告,排除困难后程序编译就通过了,其次,在连接各个模块的时候一定要注意各个输入、输出引脚的线宽,因为每个都不一样,只要让各个线宽互相匹配,才能得出正确结果,否则,出现任何一点小的误差就会导致整个文件系统的编译出现错误提示。
相关文档
最新文档