基于Matlab_DSPBuilder的正弦信号发生器设计.
- 格式:doc
- 大小:182.00 KB
- 文档页数:16
基于Matlab/DSP Builder的正弦信号发生器设计引言近年来随着通信技术的不断发展,信号的正确传输显得日益重要,也就是说要有一个可靠的能产生稳定确信号的发生器,基于Matlab/DSP Builder的正弦信号发生器是利用Matlab/DSP Builder的模块进行的模快化设计,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了、易懂、易学。
使硬件在软件的控制下协调运作。
DSP Builder可以帮助设计者完成基于FPGA的DSP系统设计设计,除了图形化的系统建模外,还可以完成及大部分的设计过程和仿真,直至将设计文件下载到DSP开发板上。
此次实验的目的就是将两者的优势有机的结合在一起,利用DSP的优势开发正弦信号发生器。
在设计中主要采用DSP Builder库中的模块进行系统的模型设计,然后再进行Simulink仿真。
1.设计思想1.1 DSP Builder特点DSP Builder系统级(或算法级)设计工具,它架构在多个软件工具之上,并把系统级(算法仿真建模)和RTL(硬件实现)两个领域的设计工具连接起来,最大程度的发挥了两种工具的优势。
DSP Builder依赖于MathWorks公司的数学分析工具Matlab/Simulink,可以在Simulink中进行图形化设计和仿真,同时又通过Signal Compilder把Matlab/Simulink的设计文件(.mdl)转换成相应的硬件描述语言VHDL设计文件(.vhd),以及用于控制和编译的tcl脚本。
而对后者的处理可以用Quartus II来实现。
1.2 QuartusII特点QuartusII提供了完整的多平台设计环境,能满足各种特定设计的需要,是单芯片可编程系统(SOPC)设计的综合性环境和SOPC开发的基本设计工具,并且为Altera DSP开发包进行系统模型设计提供了集成综合环境。
QuartusII完全支持VHDL的设计流程,其内部嵌有VHDL逻辑综合器。
基于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)和项目管理等工作。
基于DSP的正弦信号发生器1.正弦信号在各种科学和工程领域中广泛应用,如通信系统、音频处理、医学诊断等。
因此,制作一个能够生成正弦信号的设备是非常必要的。
传统的方法是使用模拟电路,但这种方法需要用到很多电子元器件,难以控制和调整。
同时,传统的模拟电路还容易受到电磁干扰、温度等环境因素的影响,导致输出的信号失真。
因此,数字信号处理(DSP)技术逐渐成为生成正弦波信号的常见方法,能够实现高精度、低失真的输出。
2. 设计概述本文介绍一种基于DSP的正弦信号发生器的设计。
该设计采用TMS320C5505数字信号处理芯片和信号解调电路,通过软件和硬件设计,实现了一个高精度、低失真的正弦信号发生器。
2.1 硬件设计本设计采用了TMS320C5505数字信号处理器集成电路作为主控芯片。
该芯片具有低功耗、高性能、灵活性和易于开发等优点。
除此之外,还需要电源模块、时钟模块、信号解调模块等。
2.2 软件设计本设计采用了C语言进行程序设计。
使用Code Composer Studio作为开发环境,将程序编译后烧录到芯片中。
代码的主要实现过程为:1.生成一个只包含一周期正弦波形的信号2.将该信号送入DA(Digital to Analog)转换器,使其变为模拟信号3.经过信号解调器后输出到外部接口信号的生成采用的是Taylor级数展开,可以实现高精度的波形生成。
信号解调电路主要是由低通滤波器、防干扰电路和放大电路等模块组成。
3. 实验结果经过实验测试,本设计输出的正弦波信号的频率可以在0~10kHz范围内任意设定。
信号的失真率小于0.1%。
同时,本设计还支持正弦波的相位调节和幅度调节等功能。
通过外部的控制,可以实现信号的精准控制和调节。
4.本文介绍了一种基于DSP的正弦信号发生器的设计,通过使用数字信号处理技术,实现了高精度、低失真的正弦波信号的生成。
该设计具有灵活性和可扩展性,可以为各种科学和工程领域提供高精度的正弦信号源。
正弦波信号发生器一、实验目的1.了解用泰勒级数展开法计算角度正弦值和余弦值;2.了解产生正弦信号的方法;3.熟悉使用汇编语言编写较复杂的程序;4.熟悉在CCS 环境下计算角度正弦值和余弦值及产生正弦波的方法;二、实验原理泰勒级数展开法是根据泰勒展开式进行计算来实现正弦信号,它能精确地计算出一个角度的正弦和余弦值,且只需要较小的存储空间。
正弦函数和余弦函数可以展开成泰勒级数,其表达式:递推公式: sin()2cos()sin[(1)]sin[(2)]cos()2cos()sin[(1)]cos[(2)]nx x n x n x nx x n x n x =---=--- 由递推公式可以看出,在计算正弦和余弦值时,需要已知cos(x )、sin(n -1)x 、sin(n -2)x 和cos(n -2)x 。
用这种方法求少数点还可以,如产生连续正弦波、余弦波,则积累误差太大,不可取。
下面主要用泰勒级数展开法求正弦和余弦值,以及产生正弦波的方法。
三、实验内容与步骤1.用泰勒级数展开法计算sin(x)的值;(1)在 CCS 中新建项目:sinx.pjt ,建立文件sinx.asm 、vectors.asm 和sinx.cmd 。
并将此三个文件加入到项目中。
******************************************************* 用泰勒级数开展开式计算一个角度的正弦值 **sin(x)=x(1-x*x/2*3(1-x*x/4*5(1-x*x/6*7(1-x*x/8*9))))*******************************************************.title "sinx.asm".mmregs .def startSTACK: .usect "STACK",10start: STM #STACK+10,SPLD #d_x,DPST #6487H,d_x ;x-->d_x CALLsin_start end:B end sin_start:35792222sin()3!5!7!9! 111123456789(((())))x x x x x x x x x x x =-+-+=----⨯⨯⨯⨯24682222cos()12!4!6!8! 11112345678((()))x x x x x x x x x =-+-+=----⨯⨯⨯.def sin_startd_coeff .usect "coeff",4.datatable: .word 01C7H ;c1=1/(8*9).word 030BH ;c2=1/(6*7).word 0666H ;c3=1/(4*5).word 1556H ;c4=1/(2*3)d_x .usect "sin_vars",1d_squr_x .usect "sin_vars",1d_temp .usect "sin_vars",1d_sinx .usect "sin_vars",1c_1 .usect "sin_vars",1.textSSBX FRCTSTM #d_coeff,AR5RPT #3MVPD #table,*AR5+STM #d_coeff,AR3STM #d_x,AR2STM #c_1,AR4ST #7FFFH,c_1SQUR *AR2+,A ;A=x^2ST A,*AR2 ;(AR2)=x^2||LD *AR4,B ;B=1MASR *AR2+,*AR3+,B,A ;A=1-x^2/72,T=x^2MPYA A ;A=T*A=x^2(1-x^2/72)STH A,*AR2 ;(d_temp)=x^2(1-x^2/72)MASR *AR2-,*AR3+,B,A ;A=1-x^2/42(1-x^2/72),T=x^2(1-x^2/72)MPYA *AR2+ ;B=x^2(1-x^2/42(1-x^2/72))ST B,*AR2 ;(d_temp)=x^2(1-x^2/42(1-x^2/72))||LD *AR4,B ;B=1MASR *AR2-,*AR3+,B,A ;A=1-x^2/20(1-x^2/42(1-x^2/72))MPYA *AR2+ ;B=x^2(1-x^2/20(1-x^2/42(1-x^2/72)))ST B,*AR2 ;(d_temp)=B||LD *AR4,B ;B=1MASR *AR2-,*AR3+,B,A ;A=1-x^2/6(1-x^2/20(1-x^2/42(1-x^2/72)))MPYA d_x ;B=x(1-x^2/6(1-x^2/20(1-x^2/42(1-x^2/72))))STH B,d_sinx ;sin(theta)RET.end*******************************************************中断向量文件vectors.asm******************************************************.title "vectors.asm".ref start.sect ".vectors"B start.end*******************************************************链接命令文件******************************************************vectors.objsinx.obj-O sinx.out-m sinx.map-estartMEMORY{PAGE 0:EPROM: org=0090H,len=0F70HVECS: org=0080H,len=0010HPAGE 1:SPRAM: org=1000H,len=1000HDARAM: org=2000H,len=2000H}SECTIONS{.text :>EPROM PAGE 0.data :>EPROM PAGE 0STACK :>SPRAM PAGE 1sin_vars :>DARAM PAGE 1coeff :>DARAM PAGE 1.vectors :>VECS PAGE 0}(2)编译、链接项目文件sinx.pjt。
基于DSP的正弦波信号发生器设计————————————————————————————————作者:————————————————————————————————日期:目录第1章绪论 (1)1 DSP简介 (1)第2章总体方案的分析和设计 (2)2.1 总体方案设计 (2)2.2正弦波信号发生器 (2)第3章硬件设计 (3)3.1硬件组成 (3)3.2控制器部分 (4)3.4人机接口部分 (5)第4章软件设计 (6)4.1流程图 (6)4.2 正弦信号发生器程序清单 (7)第5章总结 (12)参考文献 (12)第1章 绪论1 DSP 简介数字信号处理(Digital Signal Processing ,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。
20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。
数字信号处理是一种通过使用数学技巧执行转换或提取信息,来处理现实信号的方法,这些信号由数字序列表示。
在过去的二十多年时间里,信号处理已经在通信等领域得到极为广泛的应用。
图一是数字信号处理系统的简化框图。
此系统先将模拟信号转换为数字信号,经数字信号处理后,再转换成模拟信号输出。
其中抗混叠滤波器的作用是将输入信号x (t)中高于折叠频率的分量滤除,以防止信号频谱的混叠。
随后,信号经采样和A/D 转换后,变成数字信号x(n)。
数字信号处理器对x(n)进行处理,得到输出数字信号y (n),经D/A 转换器变成模拟信号。
此信号经低通滤波器,滤除不需要的高频分量,最后输出平滑的模拟信号y(t)。
图1.1 数字信号处理系统简化框图数字信号处理是以众多学科为理论基础的,它所涉及的范围极其广泛。
例如,在数学领域,微积分、概率统计、随机过程、数值分析等都是数字信号处理的基本工具,与网络理论、信号与系统、控制论、通信理论、故障诊断等也密切相关。
近来新兴的一些学科,如人工智能、模式识别、神经网络等,都与数字信号处理密不可分。
基于Matlab/DSP Builder 多波形信号发生器的设计
1 引言
传统的波形发生器多采用模拟分立元件实现,产生的波形种类要受到电
路硬件的限制,体积大,灵活性和稳定性也相对较差。
采用FPGA 器件直接实
现多种波形信号发生器,配以相应的外围器件实现的波形发生器具有设计简单、外围电路少、频率稳定性高、可靠性高、输出波形稳定、现场可编程等优点,
因而在现代电子设计中,常常采用FPGA 器件来实现多种波形信号发生器,利
用FPGA 实现多种波形信号发生器的方法也很多,但其设计方法均过于复杂,
要求设计人员对VHDL 语言要相当熟悉,才能编写相应的程序。
采用Matlab/DSP Builder 建立模型来实现多种波形信号发生器,其设计简单,不需要编程,也能根据需要设计出相应的多波信号发生器[1][2][4][6]。
2、多波信号发生器的数学模型
2.1 锯齿波的产生
在Matlab/Simulink 下,有一模块名叫Increment Decrement 模块,由于Increment Decrement 模块随着时间的变化而不断的从0 计数到255 ,到了255 后清0,接着又从0 开始计数这样周期性的产生锯齿波。
2.2 正弦波的产生
利用Increment Decrement 不断计数,根据计数找到查找表的地址取出里面的值,正弦函数的调用格式为Sin(【起始值:步进值:结束值】),该模块
为一个输入为6 位输出值为8 位的正弦查找表模块。
2.3 方波的产生
由于产生的正弦波的值从0 到255,我们可以使用一个比较器进行比较,根据比较值的大小产生占空比不同的方波,此处我们设置一个值为127 的常数,。
基于DSP Builder的高精度正弦信号发生器的设计闫璞【摘要】该文基于DSP Builder设计了一款新型高精度、高性能、宽频率范围的正弦信号发生器;通过DSP builder设计一个幅度调制模型使正弦波发生器产生的波形能够进行幅度调制.系统通过调试后,能成功产生正弦波形信号,其精度高、波形稳定、失真小.【期刊名称】《中国新技术新产品》【年(卷),期】2018(000)023【总页数】2页(P46-47)【关键词】信号发生器;DSP技术;DSP Builder【作者】闫璞【作者单位】兰州理工大学技术工程学院,甘肃兰州730050【正文语种】中文【中图分类】TN9110 前言在现代电子测量中,人们对于信号源的要求不断提高,除了频率准确度和稳定的要求外,还要求输出有较宽的频率范围和更高的稳定度和准确度。
本论文基于DSP Builder设计了一款新型高精度、高性能、宽频率范围的正弦信号发生器。
1 正弦信号发生器的预期要求及设计原理该文运用DSP Builder设计正弦波发生器和幅度调制器并将正弦波发生器产生的正弦波通过幅度调制器进行调制,预期达到的要求见表1。
表1 预期要求预期要求预期性能正弦波输出频率范围 10 Hz~10 MHz具有频率设置功能,频率步进 100 Hz输出信号频率稳定度优于10-4输出电压幅值无明显失真本设计中,为了一步步罗列DSP Builder 基于手动流程的的使用方法,我们列举了一个正弦波发生模块的设计,并且这个正弦波是可控的。
如图1所示是一个正弦波发生器。
图1 正弦波发生器模块原理图1.1 设计流程设计流程如下:1)打开 Matlab工作环境。
2)完成工作库的建立。
3)了解simulink 库管理器。
4)simulink 的模型文件。
5)放置 SignalCompiler。
6)添加 Increment Decrement模块。
7)设置 IncCount。
8)添加 SinLUT 模块:( LUT)。
第1章绪论1.1 引言数字信号处理器(DSP)是在模拟信号变成数字信号以后进行高速实时处理的专用处理器。
DSP芯片以其独特的结构和快速实现各种数字信号处理算法的突出优点,发展十分迅速。
数字信号发生器是在电子电路设计、自动控制系统和仪表测量校正调试中应用很多的一种信号发生装置和信号源。
而正弦信号是一种频率成分最为单一的常见信号源,任何复杂信号(例如声音信号)都可以通过傅里叶变换分解为许多频率不同、幅度不等的正弦信号的叠加,广泛地应用在电子技术试验、自动控制系统和通信、仪器仪表、控制等领域的信号处理系统中及其他机械、电声、水声及生物等科研领域。
目前,常用的信号发生器绝大部分是由模拟电路构成的。
当这种模拟信号发生器用于低频信号输出时,往往需要的RC值很大,这样不但参数准确度难以保证,而且体积和功耗都很大。
而由数字电路构成的低频信号发生器,虽然其低频性能好,但体积较大,价格较贵。
而本文借助DSP运算速度高,系统集成度强的优势设计的这种信号发生器,比以前的数字式信号发生器具有速度更快,且实现更加简便。
1.2DSP简介数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。
20世纪60年代以来,随着计算机和信息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。
数字信号处理是一种通过使用数学技巧执行转换或提取信息,来处理现实信号的方法,这些信号由数字序列表示。
在过去的二十多年时间里,信号处理已经在通信等领域得到极为广泛的应用。
图一是数字信号处理系统的简化框图。
此系统先将模拟信号转换为数字信号,经数字信号处理后,再转换成模拟信号输出。
其中抗混叠滤波器的作用是将输入信号x(t)中高于折叠频率的分量滤除,以防止信号频谱的混叠。
随后,信号经采样和A/D 转换后,变成数字信号x(n)。
数字信号处理器对x(n)进行处理,得到输出数字信号y(n),经D/A转换器变成模拟信号。
基于Matlab/DSP Builder 任意波形信号发生器的两种设计0 引言在当今的科技信息社会中,尤其是在电子设计和信号测试系统中,通常需要一些复杂、特定频率的信号,通常的信号发生器难以满足要求,市场上出售的一些任意信号发生器的价格昂贵,体积较大,不能满足实际的需要。
Altera DSP Builder 是一款系统级的设计工具,依赖于Mathworks 公司的数学分析工具Matlab/Simulink,可以在Sireulink 中进行图形化设计和仿真,同时又可以通过signalCompiler 把Matlab/Simulink 的模型文件(.mdl)转换成相应的硬件描述语言VHDL,本文用两种方法,即传统型的任意信号发生器和基于直接数字频率合成(DDS)的任意信号发生器,在DSPBuilder 的开发工具下实现任意信号发生器的设计,不涉及到编程,操作简单。
1 传统型任意信号发生器的设计1.1 设计原理传统型任意信号发生器原理比较简单,将时钟源作为地址发生器(计数器)的输入时钟,通过改变时钟源的频率,可以实现调整地址发生器(计数器)产生地址的变化速率,从而达到改变输出波形与输出频率的目的。
当地址发生器输出值等于待生成波形数据存储器中波形数据的地址时,待生成波形数据存储器将输出此数据到高速D/A 转换,将其变为模拟信号,经低通滤波器后输出所需波形。
D/A 的输出频率fuot 与待生成波形数据存储器的波形数据点数N 以及时钟源的频率fclk 关系为:由式(1)可知,只要改变数据波形点数N 就能控制输出信号的频率。
1.2 系统设计根据图1 所示的原理框图,在Matlab/DSP Builder 平台上,建立传统型任意信号发生器的Simulink 模型,如图2 所示。
在图2 中,Increment Decrement 模块起到一个地址发生器的作用,随着时。
摘要DDS是一种新型的频率合成技术,具有较高的的频率分辨率,可以实现快速的频率切换,并且在改变时能够保持相位的连续,很容易实现频率、相位和幅度的数控调制。
因此,在现代电子系统及设备的频率设计中,尤其在通信领域,直接数字频率合成器的应用尤为广泛。
本课程设计的主要内容是利用Quartus II9.0中的FPGA直接设计DDS。
以及以MATLAB09a的Simulink为设计平台、以DSP Builder为中间媒介、而将QuartusII 作为底层设计工具置于后台设计DDS。
且第二种设计途径最大程度地发挥了各种工具的优势。
关键词:DDS;QuartusII9.0;FPGA;MATLAB09a;Simulink;DSP Builder目录1绪论 (1)1.1DDS研究的目的和意义 (1)1.2国内研究现状 (1)1.3研究思路和方法 (4)2相关理论 (5)2.1DDS理论 (5)2.2相关器件FPGA (7)3系统分析与设计 (9)3.1总体设计 (9)3.2各模块设计 (9)4硬件设计 (11)4.1实体设计 (11)4.2子系统设计 (12)5软件设计 (17)5.1流程图设计 (17)5.2程序设计 (18)5.3QuartusII直接调用DSP Builder生成的VHDL文件 (22)6仿真调试及结果分析 (25)6.1仿真调试 (25)6.2仿真结果分析 (26)7结论 (28)致谢 (29)参考文献 (30)第1章绪论1.1DDS研究的目的和意义频率合成器是电子系统的心脏,是决定电子系统性能的关键设备,随着现代无线电通信事业的发展,移动通信、雷达、制导武器和电子对抗等系统对频率合成器提出越来越高的要求,低相噪、高纯频谱和高速捷变的频率合成器一直是频率合成技术发展的主要目标,DDS 技术的发展将有力地推动这一目标的实现。
频率合成技术从30 年代发展到现在,已经进入成熟阶段。
目前最常用的频率合成方案有两种,直接混频级联法和数字锁相环法。
DSP课程设计–正弦信号发生器的设计简介正弦信号发生器是一种常见的电子信号发生器。
在数字信号处理中,正弦信号是非常重要的一种基础信号。
在本次课程设计中,我们将使用MATLAB软件设计一个正弦信号发生器。
设计步骤步骤一:信号采样我们的信号采样频率为fs,即每秒采样多少个点。
首先我们需要设置采样频率。
信号采样频率的选取需要满足采样定理,保证采样信号能够完全还原原信号。
我们使用MATLAB的“fs”命令设置采样频率。
假设我们的采样频率为10KHz,代码为:fs = 10000; % 设置采样频率为10KHz步骤二:生成时域正弦信号根据正弦波方程,我们可以生成时域上的正弦信号:f0 = 1000; % 正弦信号的频率为1kHzA = 1; % 正弦信号的幅度为1Vt = 0:1/fs:1; % 假设信号长度为1秒y = A * sin(2 * pi * f0 * t);代码中,我们生成了一个正弦信号,频率为1kHz,幅度为1V,信号长度为1秒,并将其存放在y变量中。
步骤三:对信号进行FFT变换为了验证我们生成的信号是否正确,我们需要对信号进行FFT变换。
FFT变换可以将一个时域信号转化为频域信号。
我们使用MATLAB的“fft”命令对信号进行FFT变换。
代码如下:Y = fft(y); % 对信号y进行FFT变换,得到频域信号YL = length(y); % 计算信号的长度P2 = abs(Y/L); % 取FFT变换结果的绝对值,然后除以长度LP1 = P2(1:L/2+1);P1(2:end-1) = 2*P1(2:end-1);f = fs*(0:(L/2))/L; % 生成频率坐标轴代码中,我们使用FFT变换对信号y进行变换,并将结果存放在Y变量中。
然后我们根据FFT变换结果,得到频率分量以及对应的幅度分量。
步骤四:绘制频域正弦信号最后,我们使用MATLAB的plot函数绘制频域信号采样结果图。
基于DSPBuilder的正弦信号源优化设计及其FPGA实现作者:杨应琼李明来源:《现代电子技术》2008年第11期摘要:主要介绍了直接数字频率合成器的原理和特点,研究了用DSP Builder实现正弦信号发生器的设计方法,继承了传统DDS信号源调频、调相迅速的优点,给出了查找表压缩优化方法。
并应用Altera公司推出的DSP Builder和QuartusⅡ进行了仿真实现。
实际结果表明,此设计方法在节约芯片资源的基础上达到了较高了精度。
关键词:正弦信号源;直接数字频率合成;压缩存储查找表;现场可编程门阵列中图分类号:TN911 文献标识码:B文章编号:1004-373X(2008)11-029-Design of an Optimized Sine-Abstract:This paper mainly describes the principle and features of Direct Digital Frequency Synthesizer(DDS),studies ways of designing DDS based on DSP Builder,inherits the virtue of fast transition of frequency and phase,which is possessed by traditional DDS.Meanwhile,puts forward the optimized method of look-up table compression,besides,implements the simulation through DSP Builder and QuartusⅡ born from Altera Company.The actual results show that a system designed by this method is resource-Keywords:sine-wave generator;DDS;look-up table compression;FPGA实现信号源常用的方法是频率合成法,其中直接数字频率合成法是继直接频率合成法和间接频率合成法之后,随着电子技术迅速发展的第三代频率合成技术。
SinCtrlAlteraDSPBuilderProductSignalTapII通过本例的学习可以掌握DSP Builder的使用方法。
这个简单的正弦波发生器,主要由4部分构成:IncCount是阶梯信号发生模块,产生一个按时钟线性递增的地址信号,送往SinLUT。
SinLUT是一个正弦函数值的查找表模块,由递增的地址获得正弦波的离散值输出。
由SinLUT输出的8位正弦波数据经过一个延时模块Delay后,送往Product乘法模块,与SinCtrl相乘,SinCtrl是一位输入,SinCtrl通过Product完成对正弦波输出有无的控制。
SinOut是整个正弦波发生器模块的输出,送往D/A即可获得正弦波模拟输出信号。
5.2.1建立设计模型<1)运行Matlab,Matlab的主窗口被分成3部分:Command Window、Workspace/Current Directory、Command History。
<2)建立工作目录。
在建立一个新的设计模型前,先要建立一个文件夹,作为工作目录,来保存相应的设计文件,在进行设计之前要先切换到该文件夹下。
新建和切换到工作目录可以在命令窗口中使用Matlab 命令,也可以在Current Directory窗口中实现。
<3)启动Simulink,建立模型。
在命令窗口中,键入Simulink,按回车键,启动Matlab图形化仿真工具Simulink,出现了Simulink Library Browser窗口,在窗口的左侧为Simulink Library 列表,右侧窗口显示的则是,被选中的库中的组件、子模块列表。
安装完DSP Builder之后,在Simulink 库列表中可以看到Altera DSP Builder的库出现在列表中。
在下面设计中,主要使用该库中的组件、模块来完成各项设计,再使用Simulink库来完成模型的仿真和验证。
选择File菜单,然后单击new,在弹出的子菜单中选择Model,出现了一个未命名的模型窗口。
基于Matlab/DSP Builder的正弦信号发生器设计引言近年来随着通信技术的不断发展,信号的正确传输显得日益重要,也就是说要有一个可靠的能产生稳定确信号的发生器,基于Matlab/DSP Builder的正弦信号发生器是利用Matlab/DSP Builder的模块进行的模快化设计,软件的设计采用模块化结构,使程序设计的逻辑关系更加简洁明了、易懂、易学。
使硬件在软件的控制下协调运作。
DSP Builder可以帮助设计者完成基于FPGA的DSP系统设计设计,除了图形化的系统建模外,还可以完成及大部分的设计过程和仿真,直至将设计文件下载到DSP 开发板上。
此次实验的目的就是将两者的优势有机的结合在一起,利用DSP的优势开发正弦信号发生器。
在设计中主要采用DSP Builder库中的模块进行系统的模型设计,然后再进行Simulink仿真。
1.设计思想1.1 DSP Builder特点DSP Builder系统级(或算法级设计工具,它架构在多个软件工具之上,并把系统级(算法仿真建模和RTL(硬件实现两个领域的设计工具连接起来,最大程度的发挥了两种工具的优势。
DSP Builder依赖于MathWorks公司的数学分析工具Matlab/Simulink,可以在Simulink中进行图形化设计和仿真,同时又通过Signal Compilder把Matlab/Simulink的设计文件(.mdl转换成相应的硬件描述语言VHDL 设计文件(.vhd,以及用于控制和编译的tcl脚本。
而对后者的处理可以用Quartus II 来实现。
1.2 QuartusII特点QuartusII提供了完整的多平台设计环境,能满足各种特定设计的需要,是单芯片可编程系统(SOPC设计的综合性环境和SOPC开发的基本设计工具,并且为Altera DSP开发包进行系统模型设计提供了集成综合环境。
QuartusII完全支持VHDL的设计流程,其内部嵌有VHDL逻辑综合器。
QuartusII也可以利用第三方的综合工具,如:Leonardo Spectrum、Synplify Pro、FPGA Compiler,并能直接调用这些工具。
同样QuartusII具备仿真功能,同时也支持第三方的仿真工具,如:ModelSim 。
此外,QuartusII与Matlab和DSP Builder结合,可以进行基于FPGA的DSP系统开发,是DSP硬件系统实现的关键EDA工具。
1.3 DSP的一般设计流程图1—1所示的是DSP Builder的一般设计流程的框图,它针对不同情况提供了两套设计流程,即自动流程和手动流程。
它们的在设计输入、图形化仿真、分析功能等步骤是几乎一样的,只是设计模型采用DSP Builder的Simulink库。
再往后若采用自动流程,则几乎可以忽略硬件的具体实现过程,直至在Matlab 中完成FPGA的配置下载过程;但若想采用第三方综合器和仿真器,就需要采用手动流程,有设计者制定综合、适配条件,最后用QuartusII产生相应的编程文件用于FPGA的配置。
图1—1DSP Builder设计流程框图1.4 系统的工作原理正弦信号发生器的结构由4个部分组成:数据计数器或地址发生器(6位;正弦信号数据ROM(6位地址线,8位数据线,含有一个周期共64个8位数据; VHDL语言顶层设计;8位D/A转换。
如图1-2所示,顶层文件Singt.vhd在FPGA中实现,包含两个部分:ROM的地址信号发生器,由6位计数器担任;一个正弦数据ROM,由LPM__ROM模块构成。
LPM__ROM底层是FPGA中的EAB、ESB或M4K等模块。
地址发生器的时钟CLK的输入频率f与每周期的波形数据点数(在此选择64点,以及D/A 输出的频率f的关系是:f= f/64图1—2 正弦信号发生器结构图本系统是一正弦波发生器。
它通过IncCount产生一个按时钟线性递增的地址信号,送往SinLUT。
SinLUT由递增的地址获得正弦波的量化值输出。
由SinLUT 输出的8位正弦波数据经过一个延时模块后送往乘法模由SinLUT输出的8位正弦波数据经过一个延时模块后送往乘法模块Product与SinCtrl相乘。
由于SinCtr是一位(bit输入,SinCtr通过Product就完成了对正弦波输出有无的控制。
SinOut是整个正弦波发生器模块的输出,送往D/A即可获得正弦波的输出(模拟信号。
设计完成以后,将其转化成VHDL语言,再通过QuartusII对将模块进行编译。
这个过程包括分析/综合、适配、装配、时序分析等等.最后在实验箱上模拟。
图1—3 正弦波发生器模块原理图:2.技术实现2.1总体设计本正弦信号发生器由6位的地址信号发生器IncCount产生一个按时钟线性递增的地址信号,送到含有64个8位数据的正弦信号数据ROMSinLUT,由SinLUT 输出的8位正弦波数据经过一个延时模块后送往乘法模由SinLUT输出的8位正弦波数据经过一个延时模块Delay后送往乘法模块与一位控制信号相乘,再输出即可。
然后用QuartusII直接完成适配和时序仿真,最后下载至实验箱模拟。
2.2设计及实现部分2.2.1 建模准备在Matlab界面里建立一个新的文件夹(mkdir /zhangkui/yezi,作为工作目录,并把Matlab当前的Work目录切换到新建文件夹下。
Simulink是基本模型库。
在以下的DSP Builder应用中,主要是使用该库中的组件、子模块来完成各种设计,再使用“simulink”库来完成模型的仿真验证。
新建一个simulink的模型文件(后缀为.mdl就会出现是新模型窗口。
2.2.2 建立模型文件⑴把AltLab库管理器中的Signal Compilder组件拖到Signal Compilder到新模型窗口中。
当在simulink库管理器中选中模块(Block后,在库管理器的提示栏中会显示对应模块的说明,有简单的功能介绍。
⑵Increment Decrement模块是DSP Builder库中Arithmetic(算术模块。
把Arithmetic条中的Increment Decrement模块拖到新建模型窗口中。
将Increment Decrement的名字修改为“IncCount”。
然后把IncCount模块做成一个线性递增的地址发生器,然后对IncCount的参数进行相应的设置。
在IncCount模块的参数设置对话框“Block Parametres:IncCount”中,在“参数设置”对话框的上半部分是该模块的功能描述和使用说明:对话框的下半部分的参数设置部分,对于Increment Decrement模块共有下面几种参数可以设置:①总线类型(Bus Type;②输出位宽(Number of bits;③增减方向(Direction;④开始值(Starting Value;⑤是否使用控制输入(Use control Inputs;⑥时钟相位选择(Clock Phase Selection;对于总线类型(Bus Type,在下列列表框中共有3种选择:A、有符号整数(Signed Integer;B、有符号小数(Signed Fractional;C、无符号整数(Unsiged Integer;在这里选择“Signed Integer”,即有符号整数。
对于输出位宽,由于正弦查找表(SinLUT地址为6位,所以设置位宽设置为6。
IncCount是一个按时钟增1是计数器,Direction设置为Increment(增量方式。
Use Control Input项不选。
因为如果选中此项,此模块会出现两个输入端分别是复位端和时钟端。
通常在simulink图中的元件的复位和时钟端(如果存在的话是分别默认接于低电平和与全局时钟相连的。
Clock Phase Selection可设置为1(二进制其它的设置采用Increment Decrement模块的默认设置。
图2—1 递增递减模块改为IncCount⑶把Gate库中LUT拖到新建模型窗口名字修改为“Sin LUT”。
设置参数,把输出(Output[number of bits]改为8,查找表地址线宽(LUT Address Width设为6。
总线数据类型选择为有符号整数(Signed Integer;在MATLAB Array 编辑框中输入计算查找表内容的计算式。
在此直接使用sin(正弦函数,在这里sin函数的格式调用为:Sin[起始值:步进值:结束值]SinLUT是一个输入地址为6位,输入值位宽为8的正弦查找表模块,且输入地址总线为有符号数,可以设置起始值为0、结束值为2∏、结束值为2∏/2^6。
计算式可写成:127*sin([0:2*pi/2^6]:2*pi 其中pi就是常数∏。
上式的数值变化范围是-127~+127,总值为256,恰好的8位二进制数是最大值。
但应注意,如果带边地址线宽,如8,以上的2的6次方要改为2的8次方,即:127*sin([0:2*pi/2^6]:2*pi如果将SinLUT模块的总线数据类型设置为无符号整数(Unsiged Integer,且输出位宽(Number of bits改为10,若想得到完整满度的波形输出,则上式应该为:511*sin([0:2*pi/2^6]:2*pi+512 在“Use LPM”(LPM:library of Pparameterrized Modules参数化模块库处若选中,表示允许Quartus II 利用目标库中的嵌入式RAM(在EAB、ESB或M4K 模块中来构成SinLUT,即将生成的正弦波数据放在嵌入式RAM构成的ROM中,这样可以节省大量的逻辑资源,否则SinLUT只能用芯片中的LCs来构成。
图2—2 LUT模块改为Sin LUT⑷Storage库下的Delay模块Delay模块是一个延时环节,在这里可以不修改其默认参数设置。
Delay模块的“参数设置”对设置如下,参数Depthd是描述信号延时深度的参数。
但Depth为1时,信号传输函数为1/z,表示为通过Delay 模块的信号延时一个时钟周期;当Depth为整数n,其传输函数为1/z^n,表现为通过Delay模块的信号延时n 个周期。
Delay模块在硬件上可以采用寄存器(锁存器来实现。
图2—3 Delay模块及其参数设置窗口Clook Phase Selection参数主要是控制采样的。
当设置为1时就表示每一个主频脉冲后数据都能通过;如果设置为01则表示每隔一个脉冲通过一个数据;若设置为0011每隔两个脉冲通过两个数据;0100则表示Delay在每隔2个时钟被使能通过,而在第1、3、4个失踪时被禁止通过等等。