第8章 应用VHDL语言方法设计简易正弦波信号发生器

合集下载

VHDL正弦信号发生器设计

VHDL正弦信号发生器设计

VHDL正弦信号发生器设计第一章绪论 (III)1.1 课题的研究背景与意义 (III)1.2 课题的国内外研究现状 (III)1.3 本文主要研究内容 (IV)第二章主要工具及其应用................................... 错误!未定义书签。

2.1 硬件设计技术...................................... 错误!未定义书签。

2.2 常用工具.......................................... 错误!未定义书签。

2.2.1 EDA .......................................... 错误!未定义书签。

2.2.2 VHDL ......................................... 错误!未定义书签。

2.2.3 DAC0832 ...................................... 错误!未定义书签。

2.3 本章小结.......................................... 错误!未定义书签。

第三章系统设计与实现 (VII)3.1倍频器模块 (VII)3.2主程序模块 (VII)3.3 波形显示模块 (VIII)3.4 频率显示模块 (VIII)第四章软件仿真 (IX)第五章硬件测试 (X)5.1 编译 (X)5.2 引脚的锁定 (XI)5.3 编程下载 (XI)5.4 硬件验证 (XII)5.5 波形显示 (XII)参考文献第一章绪论1.1 课题的研究背景与意义信号发生器作为一种常用的信号源,在现代通信领域和测量领域得到广泛的应用。

本文设计了基本设计方案,在现有单一信号发生器的基础上,加上其它信号模块,通过组合与设计,用数模转换器(D/A)将选中的信号源发出的信号由数字信号转换为模拟信号,再用示波器显示出来,其信号发生器的结构框图如图1-1所示。

VHDL语言设计信号发生器实验报告

VHDL语言设计信号发生器实验报告

实验四用VHDL设计多功能信号发生器一、设计任务基于《VHDL语言》,通过给定的仪器(EDA6000试验箱)设计一个多功能信号发生器,要求:(1)能产生周期性正弦波、方波、三角波、锯齿波以及用户自己编辑的特定波形(选作);(2)输出信号的频率范围为100Hz~200KHz,且输出频率可以调节;(3)具有显示输出波形、频率的功能。

(选作)二、系统顶层框图弦波的数字幅度信息,每个查找表的地址对应正(余)弦波幅度信号,同时输出到数模转换器(DAC)输入端,DAC输出的模拟信号经过低通滤波器(LPF),可以得到一个频谱纯净的正(余)弦波。

二、设计步骤用VHDL语言结合原理图设计实现一个函数信号发生器,输出正弦波、方波和三角波三种波形。

将频率控制、分频、三角波、正弦波、方波发生邓各个模块分别用VHDL语言编程为一个子程序,并把每一个模块转换成图形文件,然后在原理图编辑框调用这些图形模块,连接电路如上图系统顶层框图所示。

通过按键1到按键8控制频率调节f〔7...0〕,用按键6、按键7、按键8控制dlt 、sin 、sqr 波形选通,最后把八位输出接DAC0832通过D/A 转换,从示波器上就能看到波形输出。

按下不同的按键输出不同的波形及频率。

三、系统设计(1)数控分频器模块在时钟的作用下,通过预置分频数DIN ,来改变输出频率。

假如分频系数为N ,波形存储模块存储一个周期的波形,实验里按照一个周期波形采样64个点存储在波形存储模块里。

则输出频率N f f clkout .64=(2).数据存储模块 (存储波形数据)数据存储模块主要存的是正弦波、三角波、锯齿波等一个周期的采样点。

三角波模块可设计一个可逆计数器实现,设计时设置一变量作为工作状态标志,在此变量为0时,当检测到时钟的上升沿进行加同一个数操作;为1时,进行减同一个数操作。

DA 转换采用的DA0832,输入有8个数据端,范围是0到255;而且设置64个时钟周期为一个三角波周期,所有每次加、减为8.锯齿波的存储数据与三角波类似。

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):反馈电阻端。

基于vhdl 的简单信号发生器的设计资料

基于vhdl 的简单信号发生器的设计资料

目录设计任务及要求 (1)1、设计目的 (2)2、设计的主要内容和要求 (2)3、整体设计方案 (2)4、方案选择 (3)5、具体实现设计 (4)5.1正弦波的波形的产生 (4)5.2四种LPM_ROM的调用 (8)5.3四种波形的输出选择 (9)5.4 输出频率的选择 (9)5.5 数码管频率显示 (10)5.6 D/A的控制 (10)6、引脚锁定系统仿真和下载测试 (10)6.1 LPM_ROM的仿真 (10)6.2 引脚设置 (11)6.3系统总逻辑仿真(基于signaltap) (11)7、使用说明 (12)7.1 各相关元件符号名称 (12)7.2 使用方法 (12)8、总结 (13)参考文献 (13)《VHDL与数字系统设计》课程设计设计题目: 简单信号发生器的设计院系: 电子信息与电气工程系专业: 电子科学与技术班级: 电科学生姓名:学号:指导教师:201年月日设计任务及要求本课程设计主要是利用VHDL语言设计一个信号发生器,要求实现以下功能:1.信号发生器的控制模块可以用数据选择器实现,用4选1数据选择器实现对四种信号的输出进行选择。

2.根据输入信号的选择可以产生周期性输出正弦波、方波、三角波、锯齿波四种波形信号。

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

4.实现根据不同输入输出不同频率输出的功能,并且能把频率显示到数码管上。

5.实现多种波形的叠加功能。

6.实现波形幅度的增加功能。

7.上面的1,2,3这三点要求是基本要求,而4,5,6是本次课程设计的发挥部分。

1、设计目的1) 掌握使用EDA工具设计信号发生器系统的设计思路和设计方法,体会使用EDA综合过程中电路设计方法和设计思路的不同,理解层次化设计理念。

2) 熟悉在Quartus II环境中,用文本输入方式与原理图输入方式完成电路的设计,同时掌握使用这两种方式相结合的EDA设计思路。

FPGA VHDL 简易波形发生器 简易信号发生器 EDA课设

FPGA VHDL 简易波形发生器 简易信号发生器 EDA课设

简易信号发生器1引言信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。

它能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波等,在电路实验和设备检测中具有十分广泛的用途。

例如在通信、广播、电视系统中,都需要射频(高频)发射,这里的射频波就是载波,把音频(低频)、视频信号或脉冲信号运载出去,就需要能够产生高频的振荡器。

在工业、农业、生物医学等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振成像等,都需要功率或大或小、频率或高或低的信号发生器。

本设计采用FPGA来设计制作多功能信号发生器。

该信号发生器可以产生锯齿波、三角波、方波等波形。

2 FPGA简介FPGA(Field-Programmable Gate Array)即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。

它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

与传统们阵列和掩模可编程门阵列(MPGA)相比,FPGA具有很多的优点,传统门阵列可以用来设计任何电路,但是只能在工厂中一次性编程,而且还需要针对该电路的特定的掩模。

FPGA是标准通用器件。

使用其代替MPGA,可以将设计时间由几个月缩短至几小时,并且使设计更加简单,从而减少了错误修改和设计指标变更的花费。

FPGA器件在结构上,由逻辑功能块排列为阵列,它的结构可以分为三个部分:可编程快CLB(Configurable Logic Blocks)、可编程I/O模块IOB(Input Block)和可编程内部连线PI(Programmable Interconnect)。

CL B在器件中排列为阵列,周围有环形内部连线,IOB 分布在四周的管脚上。

FPGA也存在缺点,FPGA中,每个可编程的点都有电阻和电容。

电阻和电容的使用减慢了信号的传输速度,所以FPGA的速度比传统门阵列要低,而且,FPGA中互联延迟是不可预测的。

基于VHDL语言的简易信号发生器

基于VHDL语言的简易信号发生器

基于VHDL语言的简易信号发生器1设计方案1.1??系统功能要求函数信号发生器是一种能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波等波形的电路。

函数信号发生器在电路实验和设备检测中具有十分广泛的用途。

现在我们通过对函数信号发生器的原理以及构成设计一个能变换出三角波、正弦波、方波的简易发生器。

1.2??总体框图(。

2??2.1BEGINBEGINIFclrn='0'THENtmp:="00000000";ELSIFclk'EVENTANDclk='1'THENIFf='0'THENIFTHENf:='1';ELSEtmp:=tmp+1;ENDIF;ELSEIFtmp="00000001"THENtmp:="00000000";f:='0';ELSEtmp:=tmp-1;ENDIF;ENDIF;ENDIF;q<=tmp;ENDPROCESS;ENDa;2.2方波模块该模块部分VHDL源程序如下: LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL; USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENDIF;BEGINENDIF;ENDIF;ENDa;2.3LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL; USEIEEE.STD_LOGIC_UNSIGNED.ALL; ENTITYsinISPORT(clk,clrn:INSTD_LOGIC;q:OUTINTEGERRANGE255DOWNTO0); ENDsin; ARCHITECTUREAOFsinISBEGINPROCESS(clk,clrn)VARIABLEtmp:INTEGERRANGE63DOWNTO0;BEGINIFclrn='0'THENq<=0;tmp:=0;ELSEIFclk'EVENTANDclk='1'THENIFtmp=63THENtmp:=0;ELSEtmp:=tmp+1;ENDIF;CASETMPISWHEN00=>q<=255;WHEN01=>q<=254;WHEN02=>q<=252;WHEN03=>q<=249; WHEN04=>q<=245;WHEN05=>q<=239;WHEN06=>q<=233;WHEN07=>q<=225;ENDIF;ENDIF;ENDa;2.4ENTITYsig_controlISPORT(delta,square,sin:INSTD_LOGIC;d0,d1,d2:INSTD_LOGIC_VECTOR(7DOWNTO0);q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDsig_control;ARCHITECTUREbehaveOFsig_controlISSIGNALsel:STD_LOGIC_VECTOR(2DOWNTO0);BEGINsel<=delta&square&sin;PROCESS(sel)BEGINCASEselISWHEN"100"=>q<=d0;WHEN"010"=>q<=d1;WHEN"001"=>q<=d2;WHENOTHERS=>NULL;ENDCASE;ENDPROCESS;ENDbehave;3仿真波形及分析各部分模块完成后,用Quartus对程序编译、仿真、得到的仿真波形,各模块仿真波形及顶层仿真波形如下:3.13.23.3clkclrnQ[7..0]。

VHDL课程设计_函数信号发生器

VHDL课程设计_函数信号发生器

学生姓名:学号:专业:年级班级:课程名称: 可编程数字系统设计实验项目: VHDL设计一信号发生器试验时间: 2014年5月24日指导老师:一、实验目的:熟悉EDA工具,掌握用VHDL语言进行数字系统设计的基本方法和流程,提高工程实践能力二、设计任务设计信号发生器,用VHDL语言描述,用QuartusII工具编译和综合,并在实验板上调试并实现所要求功能和技术指标,撰写实验报告,最后提交验收并答辩。

题目一:设计正弦波发生器题目二:设计锯齿波发生器题目三:设计三角波发生器三、功能要求与技术指标基本功能:(1 )模拟输出:由于FPGA上无D/A转换模块,因此设计中必须包含PWM发生模块,PWM输出后经过RC低通波电路转换为电压幅值正比于占空比的模拟电压。

滤波电路需自行设计。

(2)可以通过按键设定波形的频率,频率可以显示在数码管上。

(3)按钮开关输入须消抖处理。

在完成以上功能的前提下,可增加其它一些实用的功能。

要求:1、每个同学必须完成基本功能,在完成基本功能的前提下可自由发挥。

2、实验报告主要内容包含:设计原理、系统分析、程序设计、仿真/实验结果(例如波形图和实验板运行时的照片)、结论或分析、使用说明等,在最后附上主要源程序。

3、程序代码结构清晰,可读性强,关键语句应注释。

四、设计原理:原理图:原理图(PS:RESTA按键已被删除)频器将FPGA上的晶振进行分频所得的时钟信号作为计数时钟。

最后进行利用比较的方式得到占空比可调的脉冲波。

同时,分频器的分频系数可由键盘和数码管配合的显示数值进行运算反馈回PWM模块,达到频率可调的目的。

此外,另设一输出接至LED2,无法测量波形的情况下,利用呼吸灯的效果可检测PWM模块的完成与频率可调的成功性。

2、键盘设移位复位键,数码管计数键与频率传送键。

同时设立消抖计数值,当按键按下以后进行计数,在按键退出后,停止计数,取最后一次计数作为按键信号完成按键消抖。

按下移位复位键,数码管位选下一位,同时示数复位清零,并且循环移位,当按完4次按键后,数码管全部清零。

第8章应用VHDL语言方法设计简易正弦波信号发生器

第8章应用VHDL语言方法设计简易正弦波信号发生器

第8章应⽤VHDL语⾔⽅法设计简易正弦波信号发⽣器第8章应⽤VHDL语⾔⽅法设计简易正弦波信号发⽣器【要求】掌握运⽤VHDL语⾔设计正弦波形发⽣器的基本⽅法【知识点】理解函数发⽣器的含义理解VHDL设计正弦波形发⽣器理解FPGA对D/A的接⼝和控制技术【重点和难点】VHDL设计正弦波形发⽣器FPGA对D/A的接⼝和控制技术§8.1 ⼯作任务的陈述与背景⼀、⼯作任务⽤VHDL语⾔⽅法设计⼀个正弦波形发⽣器。

基本要求:①学习VHDL设计正弦波形发⽣器;②掌握FPGA对D/A的接⼝和控制技术。

完成波形发⽣器的设计、仿真测试及实验系统上的硬件测试。

⼆、任务背景⾃20世纪60年代以来信号发⽣器有了迅速的发展,出现了函数发⽣器。

作为电⼦系统的重要组成部分,它⼴泛地应⽤在电⼦技术实验、⾃动控制系统和其他科研领域。

早期的信号发⽣器多采⽤模拟电⼦技术,电路形式有采⽤运放及分离元件构成,也有采⽤单⽚集成函数发⽣器专⽤芯⽚。

但采⽤模拟电路组成的函数信号发⽣器,⼀般可靠性较差,频率输出精度、稳定度低,调节不够精确,设计过程复杂、困难,功能不易扩展,尤其对任意波信号产⽣较为困难,难以满⾜科研和⾼精度实验的需要。

现代⾼精度函数发⽣器设计采⽤了EDA 技术,不但⼤⼤缩短了开发研制周期,提⾼了设计效率,输出信号频率精度和稳定度有很⼤提升,⽽⽬使系统具有结构紧读、设计灵活、实现简单、性能稳定的特点。

本章着重介绍采⽤EDA技术,应⽤VHDL语⾔,在ALTERA公司的QuartusⅡ软件环境下,完成频率可调的正弦波发⽣器的程序设计过程,并进⾏逻辑综合、仿真和硬件下载,产⽣正弦波信号。

§8.2 完成⼯作任务的引导⼀、资讯要完成本任务,需要了解以下⽅⾯的知识。

1.函数(波形)信号发⽣器的定义和作⽤函数(波形)信号发⽣器能产⽣某些特定的周期性时间函数波形(C n1,弦波、⽅波、⼆⾓波、锯齿波和脉冲波等)信号,频率范围可从⼏个微赫到⼏⼗兆赫。

正弦信号发生器实验

正弦信号发生器实验

2、对采样点进行量化、编码
D/A转换芯片的工作电压是+5V——量化成127,采用8位数字 来表示 ,其中第八位表示符号位:“1”表示正,“0”表示负;后面 的七位表示电平的大小 :(11111111)B=(+127)D。 把正正弦信号抽样成八个采样点:0、π/4、π/2、3π/4、π、5π/4、 3π/2、7π/4 它们的采样值分别为:0、 0.707、 1、 0.707、 0、 -0.707、 -1、 0.707 把它们扩大三倍后是:0、 2.121、 3、 2.121、 0、 -2.121、 -3、 2.121 把它们量化后是: 0、 54、 76、54、 0、 -54、 -76、-54 编码后是:请同学们写出其8bit二进制编码(注意: “1”表示正, “0”表示负,负数用补码表示(正数取反+1))
5、顶层电路图
考虑一下:此分频器的分频倍数应该 是多少?才能使得最终得到的正弦波 的频率是1KHz
系统时钟: 32.768MHz
D/A数字模拟转换模块采用的是DAC0832芯片,该芯片为双列直 插20脚封装,最高转换速率为1MHz。在实验板中,D/A模块输 入直接与FPGA相连。 6、观察实验结果:用示波器观察OUTPUT的输出波形,看 看频率是否达到设计要求。 由于采样的点只有8个所以输出的波形呈阶梯状与正弦波相比有 一定差距。
3、通过VHDL语每个值对应一个正弦波 的采样值。 建议用CASE语句来写程序。
4、将数字采样值送入D/A转换芯片的对应管脚 程序编译成功后,管脚分配时注意设置参照下表: 表1 DA管脚分配表
DA0 68 DA1 67 DA2 65 DA3 64 DA4 63 DA5 62 DA6 60 DA7 59
正弦信号发生器实验

VHDl语言的信号正弦波发生器1

VHDl语言的信号正弦波发生器1

基于VHDL语言的函数发生器的设计内容摘要VHDL语言是一种用于数字系统的设计和测试的高级硬件描述语言,函数发生器的设计采用自顶向下的系统设计的方法,通过MAX+plusⅡ开发环境进行编辑、综合、波形仿真,并下载到CPLD器件中,采用模块化的设计,对功能的修改和增加,只要修改VHDL源程序,而不必更改硬件电路。

实现数字系统硬件的软件化。

正文文字大小:大中小基于VHDL语言的函数发生器的设计刘冬香摘要: VHDL语言是一种用于数字系统的设计和测试的高级硬件描述语言,函数发生器的设计采用自顶向下的系统设计的方法,通过MAX+plusⅡ开发环境进行编辑、综合、波形仿真,并下载到CPLD器件中,采用模块化的设计,对功能的修改和增加,只要修改VHDL源程序,而不必更改硬件电路。

实现数字系统硬件的软件化。

关键词: VHDL;函数发生器;层次设计;波形仿真;1.引言函数发生器可以用模电、数电、单片机等来实现,这里介绍的是由VHDL语言通过CPLD来实现。

VHDL语言是随着集成电路系统化和高度集成化的发展而逐步发展起来的,是一种用于数字系统的设计和测试的硬件描述语言。

相比传统的电路系统的设计方法,VHDL具有多层次描述系统硬件功能的能力,支持自顶向下和基于库的设计的特点,因此设计者可以不必了解硬件结构。

从系统设计入手,在顶层进行系统方框图的划分和结构设计,在方框图一级用VHDL对电路的行为进行描述,并进行仿真和纠错,然后在系统一级进行验证,最后再用逻辑综合优化工具生成具体的门级逻辑电路的网表,下载到具体的CPLD器件中去,从而实现可编程的专用集成电路(ASIC)的设计。

2.函数发生器的设计思路函数发生器有波形选择开关控制波形的输出,分别能输出正弦波、方波、三角波和锯齿波四种波形,考虑程序的容量,每种波形在一个周期内均取32个取样点。

本设计采用自顶向下的设计方法进行设计。

系统的框图如下图。

CLOCK为系统时钟,CLR为系统清零信号,S是波形选择数码开关,系统获得的数字信号经D/A 转换器即可转换成模拟信号输出波形。

vhdl语言,正弦波振荡器

vhdl语言,正弦波振荡器

语言:第一部分:Initial文件,在rom里面存储正弦波的表,当相位变化时,可以从表中读出相应的正弦波的幅值;如图:以上的相应的幅值可以写一个程序自动计算出来;第二部分,开始构建rom芯片,确定其大小等:代码:LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY lpm;USE lpm.all;ENTITY data_rom ISPORT(address : IN STD_LOGIC_VECTOR (7 DOWNTO 0);inclock : IN STD_LOGIC ;q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0));END data_rom;ARCHITECTURE SYN OF data_rom ISSIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0);COMPONENT lpm_romGENERIC (intended_device_family : STRING;lpm_address_control : STRING;lpm_file : STRING;lpm_outdata : STRING;lpm_type : STRING;lpm_width : NATURAL;lpm_widthad : NATURAL);PORT (address : IN STD_LOGIC_VECTOR (7 DOWNTO 0);inclock : IN STD_LOGIC ;q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );END COMPONENT;BEGINq <= sub_wire0(7 DOWNTO 0);lpm_rom_component : lpm_romGENERIC MAP (intended_device_family => "FLEX10K",lpm_address_control => "REGISTERED",lpm_file => "romd.mif",lpm_outdata => "UNREGISTERED",lpm_type => "LPM_ROM",lpm_width => 8,lpm_widthad => 8)PORT MAP (address => address,inclock => inclock,q => sub_wire0);END SYN;第三部分,构建一个相位叠加器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SINGT ISPORT (CLK : IN STD_LOGIC; --——信号源时?ADDR : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);DOUT : OUT STD_LOGIC_VECTOR (7 DOWNTO 0)); -- ——8位波形数据输出END;ARCHITECTURE DACC OF SINGT ISCOMPONENT data_rom -- ——调用波形数据存储器LPM_ROM文件:data_rom.vhd声明PORT(address : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -- ——6位地址信号inclock : IN STD_LOGIC ; -- ——地址锁存时钟q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END COMPONENT;SIGNAL Q1:STD_LOGIC_VECTOR(7 DOWNTO 0) ; -- ——设定内部节点为地址计数器BEGINPROCESS (CLK) -- ——LPM_ROM地址发生器进程BEGINIF CLK'EVENT AND CLK = '1' THEN Q1 <= Q1 + 1; -- ——Q1作为地址发生器计数器END IF;ADDR<=Q1;END PROCESS;u1 : data_rom PORT MAP (address => Q1, q => DOUT, inclock => clk);END;第四部分:显示电路,abcdefg等library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;ENTITY xianshi ISPORT(en : IN STD_LOGIC;num : IN STD_LOGIC_vector(3 downto 0);a,b,c,d,e,f,g : OUT STD_LOGIC);END xianshi;ARCHITECTURE art OF xianshi ISSIGNAL led : STD_LOGIC_vector(6 downto 0);BEGINProcess(num)beginif en='1' thencase num iswhen "0000" => led<="1111110";when "0001" => led<="0110000";when "0010" => led<="1101101";when "0011" => led<="1111001";when "0100" => led<="0110011";when "0101" => led<="1011011";when "0110" => led<="1011111";when "0111" => led<="1110000";when "1000" => led<="1111111";when "1001" => led<="1111011";when "1010" => led<="1110111";when "1011" => led<="0011111";when "1100" => led<="1001110";when "1101" => led<="0111101";when "1110" => led<="1001111";when others => led<="1000111";end case;end if;end process;a<=led(6);b<=led(5);c<=led(4);d<=led(3);e<=led(2);f<=led(1);g<=led(0);END art;第五部分:decoder和计数器,和mux电路通过定制得到的第六部分:关于频率的计算,因为需要达到1khz,同时,选取了64个采样点,我们就需要在1ms的时间内读完64个样点,每个样点由一个时钟周期得到,所以,确定每个时钟周期的长短为15.625us。

正弦波信号发生器制作

正弦波信号发生器制作

正弦波信号发生器制作一、原理及工作方式1.参照信号源:可以使用晶体振荡器作为参照信号源,晶体振荡器的频率非常稳定,精度高,可以提供准确的参照频率。

2.振荡器:振荡器可以根据参照信号源产生一个与之匹配的频率信号,一般使用的是集成电路中的RC振荡器或LC振荡器。

3.滤波器:在振荡器输出的信号中含有很多谐波成分,需要通过滤波器去掉非基波的频率成分,使输出信号更接近理想的正弦波。

4.放大器:滤波器输出的信号还需要一定的放大才能达到输出阻抗。

正弦波信号发生器的工作方式一般分为模拟和数字两种。

模拟方式主要是通过电路实现信号的生成和放大,传统的信号发生器属于这种方式。

数字方式则是采用数字电路和数字信号处理器来实现信号的生成,这种方式可以实现更高精度和更多功能的信号发生器。

二、制作过程下面是一种基于模拟方式的正弦波信号发生器的制作过程。

1.选择元件:根据所需的频率范围选择适当的振荡器和滤波器,通常可以选择集成电路中的RC振荡器和LC滤波器。

同时还需要选择一款合适的放大器来放大滤波器输出的信号。

2.连接电路:按照电路原理图将选定的元件连接起来,根据元件的引脚和功能进行正确的连线。

3.调试:连接完成后,对电路进行调试。

首先需要确认参照信号源是否正常工作,然后调节振荡器的频率,观察信号的变化。

接下来调整滤波器的频率,使输出信号更接近理想正弦波。

最后调整放大器的放大倍数,使输出信号达到所需的幅度。

三、功能扩展除了基本的频率、幅度和相位调节之外,正弦波信号发生器还可以通过增加其他功能模块来实现更多的功能。

比如:1.频率计:增加频率计模块,可以实时测量输出信号的频率。

2.相位偏移:增加相位调节模块,可以实现对输出信号的相位进行调整。

3.数字控制:使用数字信号处理器来实现对信号发生器的数字控制,可以通过软件界面实现更加便捷的操作和参数调节。

4.波形选择:增加多种波形输出的功能,可以输出正弦波、方波、三角波等多种波形,满足不同实验的需求。

制作一个正弦信号发生器的设计

制作一个正弦信号发生器的设计

制作一个正弦信号发生器的设计
一、正弦信号发生器的概念
正弦信号发生器是一种可以产生所需频率的正弦波信号的设备,可以
帮助开发者测量和分析频率特性,也可以用于相关系统的诊断。

正弦信号
发生器可以产生指定频率的正弦波形,以满足不同系统的需求。

它也可以
通过波形对比法进行精确的波形测量,用于分析电子系统特性。

(1)电路设计
正弦信号发生器的电路设计主要有两种:一种是基于模拟电路的设计,另一种是基于数字电路的设计。

(1)模拟电路
模拟电路设计采用的是电路模块,主要有振荡器、滤波器、缓冲器和
调制电路。

(a)振荡器
振荡器主要由振荡电路和调整元件组成,振荡器的作用是形成振荡的
正弦波,以满足信号发生器产生不同频率的要求。

(b)滤波器
滤波器的作用是滤除振荡器产生的额外噪声,以得到纯净的正弦信号。

(c)缓冲器
缓冲器的主要作用是将振荡器的正弦波输出,缓冲器的作用是减少信
号失真,使正弦波更加完美。

(d)调制电路
调制电路的作用是对信号发生器产生的正弦波进行调制,使其能够输出更加稳定的信号频率。

(2)数字电路
采用数字电路设计的正弦信号发生器。

简易函数发生器的vhdl设计

简易函数发生器的vhdl设计

简易函数发生器的vhdl设计一、介绍本文将详细介绍如何设计一个简易函数发生器的 VHDL 代码。

函数发生器可以产生各种形式的波形,包括正弦波、方波、三角波等等。

这个设计将使用 VHDL 语言编写,并且基于 FPGA 开发板进行测试。

二、需求分析在设计一个函数发生器之前,我们需要确定它的具体需求。

以下是我们需要实现的功能:1. 可以选择不同类型的波形。

2. 可以设置波形的频率和幅度。

3. 可以输出产生的波形信号。

三、设计思路为了实现上述功能,我们需要使用 VHDL 语言编写一个模块。

该模块将包括以下部分:1. 波形生成器 - 负责产生不同类型的波形。

2. 频率和幅度控制器 - 负责控制波形的频率和幅度。

3. 输出缓冲区 - 负责将产生的信号输出到外部设备。

四、模块设计下面是每个模块的详细设计。

1. 波形生成器该模块负责产生不同类型的波形。

我们可以使用 Look-Up Table (LUT) 来实现这个功能。

LUT 是一种内存单元,可以存储预先计算好的值,并在需要时输出这些值。

在本例中,我们将使用 LUT 存储预先计算好的波形值。

2. 频率和幅度控制器该模块负责控制波形的频率和幅度。

我们可以使用一个计数器来实现这个功能。

这个计数器会根据输入的频率值进行计数,并且当计数到达一定值时,它会输出一个脉冲信号。

该模块还需要一个输入端口用于设置幅度。

3. 输出缓冲区该模块负责将产生的信号输出到外部设备。

我们可以使用一个输出寄存器来实现这个功能。

该寄存器会在每个时钟周期中更新,并且输出当前波形的值。

五、完整代码下面是完整的 VHDL 代码:```library IEEE;use IEEE.STD_LOGIC_1164.all;use IEEE.NUMERIC_STD.all;entity FunctionGenerator isport (clk : in std_logic;reset : in std_logic;sel : in std_logic_vector(1 downto 0); freq : in std_logic_vector(15 downto 0); amp : in std_logic_vector(7 downto 0); out_sig : out std_logic);end FunctionGenerator;architecture Behavioral of FunctionGenerator is -- Waveform LUTstype waveform_lut_t is array (0 to 1023) of integer range -128 to 127;constant sin_lut : waveform_lut_t := (0, 3, 6, 9, 12, 15, 18, 21,...-21, -18, -15, -12, -9, -6, -3);constant square_lut : waveform_lut_t := (127, 127, 127, 127,...-128,-128,-128,-128);constant triangle_lut : waveform_lut_t := (...);-- Waveform generatorsignal wave_pos : integer range 0 to (1024*100)-1;signal wave_val : integer range -128 to 127;procedure update_waveform isbegincase sel iswhen "00" => wave_val <= sin_lut(wave_pos(9 downto 0));when "01" => wave_val <= square_lut(wave_pos(9 downto 0));when "10" => wave_val <= triangle_lut(wave_pos(9 downto 0));when others => null;end case;end procedure;-- Frequency and amplitude controlsignal count : unsigned(15 downto 0) := (others => '0'); signal pulse : std_logic;signal amplitude : integer range -128 to +127;begin-- Waveform generation processgen_waveform: process(clk)beginif rising_edge(clk) thenif reset = '1' thenwave_pos <= (others => '0');out_sig <= '0';else-- Update waveform position and valuewave_pos <= wave_pos + freq;update_waveform;out_sig <= std_logic(amplitude * wave_val / 128);-- Update frequency counterif count = freq thenpulse <= '1';count <= (others => '0');elsepulse <= '0';count <= count + 1;end if;end if;end if;end process gen_waveform;-- Amplitude control processgen_amplitude: process(clk)beginif rising_edge(clk) thenif reset = '1' thenamplitude <= 0;elseamplitude <= signed(amp);end if;end if;end process gen_amplitude;end Behavioral;```六、测试方法为了测试这个设计,我们可以使用 FPGA 开发板。

基于VHDL语言正弦波信号发生器--EDA实训报告-

基于VHDL语言正弦波信号发生器--EDA实训报告-

EDA实训报告学生姓名: XXX 学号: XXXXXXXXXXXX学院:理工学院专业:电子科学与技术题目:基于FPGA的正弦波发生器指导教师:安国臣2013年1月课程设计成绩评定表基于FPGA的正弦波发生器摘要:本设计结合了EDA技术和直接数字频率合成(DDS)技术。

EDA技术是现代电子设计技术的核心,是以电子系统设计为应用方向的电子产品自动化的设计技术。

DDS技术则是最为先进的频率合成技术,具有频率分辨率高、频率切换速度快、相位连续、输出相位噪声低等诸多优点。

本文在对现有DDS技术的大量文献调研的基础上,提出了符合FPGA结构的正弦信号发生器设计方案并利用MAXPLUSⅡ软件进行了设计实现。

文中介绍了EDA技术相关知识,同时阐述了DDS技术的工作原理、电路结构,及设计的思路和实现方法。

经过仿真测试,设计达到了技术要求。

关键词:现场可编程门阵列(FPGA);直接数字频率合成(DDS);正弦波信号发生器一、DDS的基本原理正弦波信号发生器是由地址发生器和正弦波数据存储器ROM两块构成,输入为时钟脉冲,输出为8位二进制。

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

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

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

直接数字频率合成器(DDFS)的基本原理:DDS是利用采样定理,根据相位间隔对正弦信号进行取样、量化、编码,然后储存在EPROM中构成一个正弦查询表,通过查表法产生波形。

它是由参考时钟、相位累加器、正弦查询表和D/A转换器组成,如图1所示。

图1 直接数字频率合成器原理框图相位累加器由N位加法器与N位累加寄存器级联构成,其原理框图如图2所示。

每来一个时钟脉冲Fc,N位加法器将频率控制数据K与累加寄存器输出的累加相位数据相加,把相加后的结果Y送至累加寄存器的输入端。

正弦波信号发生器制作

正弦波信号发生器制作
成本与普及度
正弦波信号发生器的成本和普及度也是需要解决的问题。为了降低成本和提高普及度,可以开发具有市 场竞争力的产品,优化生产工艺,降低制造成本,同时加强市场推广和宣传。
THANK YOU
波形转换电路
波形转换电路是将振荡信号转换成正弦波信号的关键部分,通常采用 RC电路或LC电路等。
03功率放大电路源自功率放大电路的作用是将转换后的正弦波信号进行放大,以满足输出功
率的要求。
应用领域
科学研究
正弦波信号发生器在科学研究领域中广泛应用于物理、化 学、生物和材料科学等领域,如振动分析、光谱分析、生 物电信号处理等。
正弦波信号发生器制作
目录
• 正弦波信号发生器简介 • 正弦波信号发生器的硬件设计 • 正弦波信号发生器的软件设计 • 正弦波信号发生器的调试与优化 • 正弦波信号发生器的应用实例 • 正弦波信号发生器的未来发展与挑战
01
正弦波信号发生器简介
定义与特点
定义
正弦波信号发生器是一种能够产生正弦波信号的电子设备。
工程实验
在工程实验中,正弦波信号发生器可用于模拟各种物理量, 如电压、电流、力等,以便进行各种实验和测试。
测试测量
正弦波信号发生器在测试测量领域中广泛应用于各种电子 设备和仪器的测试和校准,如示波器、频谱分析仪、信号 发生器等。
02
正弦波信号发生器的硬件设计
电源电路设计
电源电路
为整个信号发生器提供 稳定的直流电源,通常 采用线性电源或开关电
幅度精度
提高信号幅度的精度,以 满足高精度应用需求。
05
正弦波信号发生器的应用实例
在通信系统中的应用
信号传输
正弦波信号发生器可以产生稳定的正弦波信号,用于通信系 统中的信号传输。这种信号具有恒定的振幅、频率和相位, 能够保证信号传输的质量和稳定性。

基于VHDL的简易波形发生器设计

基于VHDL的简易波形发生器设计

1 引言信号发生器又称信号源或振荡器,在生产实践和科技领域中有着广泛的应用。

它能够产生多种波形,如三角波、锯齿波、矩形波(含方波)、正弦波等,在电路实验和设备检测中具有十分广泛的用途。

例如在通信、广播、电视系统中,都需要射频(高频)发射,这里的射频波就是载波,把音频(低频)、视频信号或脉冲信号运载出去,就需要能够产生高频的振荡器。

在工业、农业、生物医学等领域内,如高频感应加热、熔炼、淬火、超声诊断、核磁共振成像等,都需要功率或大或小、频率或高或低的信号发生器[4]。

此次设计的简易波形发生器应实现的功能有,根据按键选择不同的波形(实现正弦波、方波、三角波);正弦波和三角波频率可调(实现三种频率变换即可);方波的占空比和幅值可调(实现四种占空比变换和两个幅值选择)。

波形发生器的设计方案多种多样,本设计中采用基于VHDL的方案来设计,使用VHDL语言的主要原因之一是通过代码综合,可以采用可编程器件(PLD或FPGA)或ASIC来实现所需的电路。

设计的第一个阶段是编写VHDL代码,编写后的代码保存为一个后缀名为.vhd的文件(注意,文件名和代码中的实体名应保持一致)。

代码编写完毕后进入综合阶段。

综合阶段的第一步是进行代码编译。

代码编译过程把寄存器传输级(RTL:Register Transfer Level)的VHDL代码转换成门级网表。

综合阶段的第二步是优化,主要是根据对电路工作速度和占用硬件资源大小等的要求,对门级网表进行优化。

在综合阶段,可以对设计进行仿真。

仿真通过后,布局布线工具可以在具体的PLD/FPGA器件上对各种电路单元进行布局布线工作,或者生成ASIC掩膜文件,用于ASIC的生产[2]。

本设计利用Quartus II来进行设计与仿真,用它来实现代码输入,编译仿真,以及引脚锁定,并将代码下载到实验箱上调试。

2 波形发生器的设计2.1 总体设计思路波形发生器利用DAC0832实现数模转换,所以对于DAC0832要有8引脚输入,对应于EDA 模块要有8引脚输出;输出波形有3中选择,要有2输入引脚来选择波形;另外对输出波形要能调频或调幅,又要有2输入引脚来选择频率或幅值;最后要有一输入脉冲来实现顺序代码的运行,要有1输入引脚来输入脉冲。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第8章应用VHDL语言方法设计简易正弦波信号发生器【要求】掌握运用VHDL语言设计正弦波形发生器的基本方法【知识点】•理解函数发生器的含义•理解VHDL设计正弦波形发生器•理解FPGA对D/A的接口和控制技术【重点和难点】• VHDL设计正弦波形发生器• FPGA对D/A的接口和控制技术§8.1 工作任务的陈述与背景一、工作任务用VHDL语言方法设计一个正弦波形发生器。

基本要求:①学习VHDL设计正弦波形发生器;②掌握FPGA对D/A的接口和控制技术。

完成波形发生器的设计、仿真测试及实验系统上的硬件测试。

二、任务背景自20世纪60年代以来信号发生器有了迅速的发展,出现了函数发生器。

作为电子系统的重要组成部分,它广泛地应用在电子技术实验、自动控制系统和其他科研领域。

早期的信号发生器多采用模拟电子技术,电路形式有采用运放及分离元件构成,也有采用单片集成函数发生器专用芯片。

但采用模拟电路组成的函数信号发生器,一般可靠性较差,频率输出精度、稳定度低,调节不够精确,设计过程复杂、困难,功能不易扩展,尤其对任意波信号产生较为困难,难以满足科研和高精度实验的需要。

现代高精度函数发生器设计采用了EDA 技术,不但大大缩短了开发研制周期,提高了设计效率,输出信号频率精度和稳定度有很大提升,而目使系统具有结构紧读、设计灵活、实现简单、性能稳定的特点。

本章着重介绍采用EDA技术,应用VHDL语言,在ALTERA公司的QuartusⅡ软件环境下,完成频率可调的正弦波发生器的程序设计过程,并进行逻辑综合、仿真和硬件下载,产生正弦波信号。

§8.2 完成工作任务的引导一、资讯要完成本任务,需要了解以下方面的知识。

1.函数(波形)信号发生器的定义和作用函数(波形)信号发生器能产生某些特定的周期性时间函数波形(C n1,弦波、方波、二角波、锯齿波和脉冲波等)信号,频率范围可从几个微赫到几十兆赫。

函数信号发生器在电路实验、设备检测、通信、宙达、导航、宇航等领域中具有十分广泛的用途。

本次设计只是简单完成正弦波输出的功能。

2.直接数字合成器DDS ( Direct Digtal Synthesizer)知识DDS中变要包括频率控制寄存器、高速相位累加器和正弦计算器二个部分,本次设计参考DDS设计电路结构。

•①频率变化知识。

用户通过输入频率控制码来改变输出信号频率。

•②相位变化知识。

通过相位累加器根据频率控制码在每个时钟周期内进行相位累加来改变相位值。

•③波形信号产生知识。

正弦计算器计算数字化正弦波幅度值,再把幅度值保在芯片的ROM中。

通过查表方式扫描数据输出。

3. DAC控制器的知识DDS芯片输出的一般是数字化的正弦波,因此还需经过高速D/A转换器和低通滤波器才能得到一个可用的模拟频率信号。

使用DAC时要考虑DAC的位数和转换时间。

常用的低速八位DAC为DAC0832。

二、计划采用DDS方式设计波形信号发生器,首先要了解DDS的结构和每个部分的功能,如图8-1所示,本次设计在CPLD/FPGA芯片内部由频率控制字、相位累加器、波形数据ROM二个部分构成,在外部把波形数据循环扫描后输出给DAC转换成模拟信号,通过低通滤波器平滑波形最后输出所需波形。

设计中着重完成以下部分内容。

•①完成频率控制器的设计。

此设计可以通过计数器、分频器设计原理完成。

•②相位控制设计。

对所查表中每个地址进行数据累加,即可改变信号输出相位。

•③计算正弦波各点的幅度离散值。

在此设计中我们把一个正弦波分离成128个点坐标。

由于VHDL只适合整数运算,此各离散值由计算器或公式求出,并存储在ROM中。

三、决策根据图8-1所示的正弦波信号发生器组成框图,分步完成正弦波信号发生器的设计。

其设计步骤可参考如下步骤进行。

•①设计一个分频器,要求能进行频率调整。

•②设计一个相位累加器,相位可以前后移位。

•③通过计算求出正弦波128个离散幅值,并进行储存。

•④将程序下载至FPGA/CPLD芯片,并和DAC0832连接。

•四、实施•如图8-1所示,完整的正弦波形发生器由3部分组成。

• 1.频率控制字设计•由于一个完整的波形由128个离散坐标点构成,所以要完整生成一个波形,则输入时钟需要128个脉冲。

从而可得知要输出1 Hz的正弦波,需要128 Hz的时钟,也就是输入输出分频比128/1。

若对输出信号频率进行控制,可通过对输入时钟分频来改变频率,分频系数可以改变。

•在下面实例中,“ clk”为芯片时钟输入端,可由品振提供高稳定度、高精度脉冲信号。

“d” 和“f”为分频系数控制脚,当f = “0”时,d脚每来一次脉冲,则分频系数自动加1;相反,若f = "1”时,根据d脚的脉冲数自动减。

•图8-2为频率控制的仿真图。

clk_o为输出脚进过分频后的时钟信号,该信号可以接入到下一级相位控制部分,然后进行相位调节。

•如果仿真结果正确,可以将设计的项目生成一个元件符号备用。

其步骤是:选择原理图文件为当前文件后,选择菜单命File → Create/LTpdate→Create Symbol Files for Current File即可。

本电路生成的元件符号如图8-3所示。

频率控制程序参考:process(clk)一基准时钟分频beginif clk'event and clk='1' thent0<=t0+tl;end if;end process;--------------------------------------process(d,f) ---频率控制字beginif d'event and d='1' thenif f='0' thentl<=t1+1;elset1 <=tl-1;end if;end if;end process;Clk_o<=t0(3);2.相位累加器设计对于正弦信号发生器,它的输出可以用下式来描述:(8-1)其中, 是该信号发生器的输出波形; 指输出信号对应的频率。

上式的表述对于时间t 是连续的,为了用逻辑实现该表达式,必须进行离散化处理,用基准时钟进行抽样,令正弦信号的相位为(8-2)在一个clk 周期内,相位的变化为(8-3) 其中,foot 指clk 的频率,2π可以理解为“满”相位。

为了对其进行数字量化,把2π切割成 份,由此每个clk 周期的相位增量 用量化值来表示:(8-4)且 为整数。

与式(8-3)联立,可得 (8-5) 显然,信号发生器的输出可描述为 (8-6) t f out πθ2=clkout clk out f f T f ππθ22==∆)2sin(t f A s out out π=N B 22∙∆≈∆πθθclkout N clk out Nf f B f f B ∙==∆∆2,2θθ)sin()](22sin[)sin(111θθθθπθθ∆∆-+=+∙=∆+=--B B Af B B A A S k k N k out其中, 指前一个clk 周期相位值,同样得出(8-7)由上面的推导可以看出,只要对相位的量化值进行简单的祟加运算,就可以得到正弦信号的当前相位值,而用于叠加的相位量量化值 决定了信号的输出频率 ,并呈现简单的线性关系:(8-8) 相位累加器的输入又可称为频率输入字,事实上当系统基准时钟 为 时, 就等于 。

图8-4为生成元件图,clk 为系统基准时钟分频后的时钟输入; p 为相位控制字端,每输入一个脉冲,波形前后移一个相位; d 为相位方向控制,当d = "0”时,相位后移,相反,当d= "1”时,相位前移。

相位控制仿真图如图8-5所示,当d=“0”时,P 输入每个脉冲后,相位地址Y 输出量发生改变,地址向后增加2。

相位控制程序参考:process(clk) --- 相位地址累加进程beginif clk'event and clk='1' thentt<=tt+1;elsett<=tt-1;end if;end if;end process;3.波形数据存储正弦ROM 的查找表完成 的查表转换,在这里可以理解成相位到幅度的转换,它的相位输入是相位调制器的输出,事实上就是ROM 的数据值输出送往D/A ,转化成模拟信号。

ROM 中的数据为正弦波信号一个周期的离散值,可以通过相关计算求出。

N k k B 2211∙≈--πθθclk out Nf f B ∙=∆2θ若需把正弦波改为锯齿波、方波信号输出,只需改变ROM中的数据值即可达到产生任意波的功能。

求正弦波离散点的公式见式(8-5)因输出数据值范围为0~255,相位离散点为128,则求出每个相位对应的数据:(8-9)波形分割的离散点越大,相隔相位差别越示,输出的波形失真也越示。

但离散点过多,输出信号的频率与输入信号频率分频比过大,难以提高输出信号频率。

图8-6中a[6..0]为相位地址输入,数据宽度为7位,寻址范围为0~127; D[7..0]为波形数据输出,接DAC数据脚,即可把数字量变化为模拟量输出。

ROM中数据与相位地址关系描述:process(a)beginCASE a ISWHEN 00=>D<=255;WHEN O1=>D<=251;WHEN 02=>D<=247;WHEN 03=>D<=243;WHEN 04=>D<=239;WHEN OS=>D<=235;WHEN 06=>D<=231;………… End process;4. 连接DAC0832设计DAC0832是八位D/A转换器,转换周期为1μs,其参考电压与+5 V工作电压相接(实用电路应接精密基准电压)。

DAC0832的引脚功能简述如下。

• ILE: 数据锁存允许信号,高电平有效,系统上己经连接+5V上• :写信号1, 2,低电平有效。

• :数据传送控制信号,低电平有效。

• :基准电压,可正,可负,-10~+10 V 。

• Rfb:反馈电阻端。

• IoutI/Iout2 CPIN11, PIN12)电流输出1和 2。

D/A转换量是以电流形式输出的,所以必须将电流信号变为电压信号。

• AGND/DGND CPIN3, PIN10):模拟地与数字地。

在高速情况下,此一地的连接线必须尽可能短,目系统的单点接地点必须在此连接线的某一点上。

在本次设计中,FPGA芯片的波形数据输出脚D [7..0]分别接到图8-7中的DA7-DAO脚上,DAC0832可以采用直接控制方式与FPGA同步工作,也可使、信号受控于FPGA工作;若直接工作,则将、直接接地即可;若受控于FPGA,则把该竹脚接在FPGA某个控制脚上,当该竹脚输出低电平时,DAC0832输出模拟波形。

相关文档
最新文档