DspBuilder使用讲解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第9章 DDS设计
数据线位宽
相 位 字 输 入同 步 寄存器
N
频 率 字 输 入同 步 N 寄存器
clk 系统时钟
N
M
M
寄存器
相位调制器 相位累加器
正 弦 ROM 查找表
正弦信号输出 D/A
Βιβλιοθήκη Baidu
余 弦 ROM 查找表
余弦信号输出 D/A
图9-2 正交信号发生器
第9章 DDS设计
幅度调制在很多场合是需要的。我们改进基本DDS 结构,在正弦ROM表后、D/A前放置一个幅度控制模 块,一般采用乘法器来实现。如图9-3。
第9章 DDS设计
剩下的模块构成幅度控制部分,模块参数如下: Product模块:(Product) 库:Altera DSP Builder中Arithemtic库 参数“Pipeline”设为“2” 参数“Clock Phase Selection”设为“1” 不选择“Use LPM”
第9章 DDS设计
库:Altera DSP Builder中Bus Manipulation库 参数“Bus Type”设为“signed Integer” 参数“Node Type”设为“Input port” 参数“number of bits”设为“32”
第9章 DDS设计
Phaseword模块:(Altbus) 库:Altera DSP Builder中Bus Manipulation库 参数“Bus Type”设为“signed Integer” 参数“Node Type”设为“Input port” 参数“number of bits”设为“16”
(9-2) (9-3)
第9章 DDS设计
其中fclk指clk的频率,对于,可以理解成“满”相 位。为了对进行数字量化,把切割成2N份,由此,每 个clk周期的相位增量可用量化值来表述为
B
2π
2N
且 为 整 数 。 与 (9-3) 式 联 立 , 可 得 :
B f out
2N
f clk
第9章 DDS设计
图9-4 DDS子系统SubDDS
第9章 DDS设计
图中,DDS子系统SubDDS共有三个输入,分别为 Freqword( 频 率 字 输 入 ) 、 Phaseword( 相 位 字 输 入 ) 和 Amp(幅度控制输入);一个输出,为DDSout。输入/输 出模块的参数设置如下: Freqword模块:(Altbus)
“++” 选择“Pipeline” 参数“Clock Phase Selection”设为“1”
第9章 DDS设计
BusConversion2模块:(BusConversion) 库:Altera DSP Builder中Bus Manipulation库 参数“Input Bus Type”设为“signed Integer” 参数“Input [number of bits].[]”设为32 参数“Output Bus Type”设为“Signed Integer” 参数“Output [number of bits].[]”设为“10” 参数“Input Bit Connected to Output MSB”设为“31” 参数“Input Bit Connected to Output LSB”设为“22” 使用“Round”
B
2N
f out f clk
(9-4)
第9章 DDS设计
显然,信号发生器的输出可描述为:
Sout
Asin(k 1 Δ )
A
sin
2π 2N
B k1
BΔ
Afsin
B k1
B
(9-5) 其中,指前一个clk周期的相位值,同样可以得出
B 2 N f out / fclk故相位累加器的输入又可称为频率
字输入,事实上,当系统基准时钟fckj是2N时,就等于 fout。频率字输入在图9-1中还经过了一组同步寄存器, 使得当频率字改变时不会干扰相位累加器的正常工作。
第9章 DDS设计
相位调制器接收相位累加器的相位输出,在这里加 上一个相位偏移值,主要用于信号的相位调制,如 PSK(相移键控)等。在不使用时可以去掉该部分,或者 加一个固定的相位字输入。相位字输入也需要用同步 寄存器保持同步。需要注意的是,相位字输入的数据 宽度M与频率字输入N往往是不相等的,M<N。
第9章 DDS设计
正弦ROM查找表完成的查表转换,也可以理解成相 位到幅度的转换,它的输入是相位调制器的输出,事 实上就是ROM的地址值;输出送往D/A,转化成模拟 信号。由于相位调制器的输出数据位宽M也是ROM的 地址位宽,因此在实际的DDS结构中N往往很大,而M 总为10位左右。M太大会导致ROM容量的成倍上升, 而输出精度受D/A位数的限制未有很大改善。因此,在 实际应用中,对于ROM容量的缩小,人们提出了很多 解决方法。
第9章 DDS设计
下面给出一些关于基本DDS结构的常用参量计算。
1. DDS的输出频率fout 由DDS工作原理推导的公式中很容易得出输出频率 的计算:
f out
B 2N
f clk
(9-7)
是频率输入字,fclk是系统基准时钟的频率值,N是
相位累加器的数据位宽,也是频率输入字的数据位宽。
BusConversion3模块:(BusConversion) 库:Altera DSP Builder中Bus Manipulation库 参数“Input Bus Type”设为“signed Integer” 参数“Input [number of bits].[]”设为“20” 参数“Output Bus Type”设为“Signed Integer” 参数“Output [number of bits].[]”设为“10” 参数“Input Bit Connected to Output MSB”设为“18” 参数“Input Bit Connected to Output LSB”设为“9” 使用“Round” 使用“Saturate” 最后,建立子系统。至此,基本DDS模型就建立完成。
第9章 DDS设计
相 位 调 整 部 分 由 Parallel Adder Subtractor1 模 块 和 BusConversion2模块构成,参数如下:
Parallel Adder Subtractor1模块:(Parallel Adder Subtractor) 库:Altera DSP Builder中Arithmetic库 参数“Number of Inputs”设为“2”,“Add(+)Sub(-)”设为
“++” 选择“Pipeline” 参数“Clock Phase Selection”设为“1”
第9章 DDS设计
Delay模块:(Delay) 库:Altera DSP Builder中Storage库 参数“Depth”设为“1” 参数“Clock Phase Selection”设为“1”
Phaseword1模块:(Altbus) 库:Altera DSP Builder中Bus Manipulation库 参数“Bus Type”设为“signed Integer” 参数“Node Type”设为“Internal Node” 参数“number of bits”设为“32”
第9章 DDS设计
9.2.2 DDS模型的使用 在此调用上面设计的DDS子系统SubDDS,构建一个
简单的DDS应用模型,见图9-5。
第9章 DDS设计
图9-5 DDS的使用
第9章 DDS设计
输入相位字为0,频率字为2000000,幅度控制值为 124,设置Simulink的仿真停止时间Stop Time为5,仿 真步进Fixed Step Size设为1e-3。
Bk 1
k1
2π
2N
(9-6)
第9章 DDS设计
由上面的推导可以看出,只要对相位的量化值进 行简单的累加运算,就可以得到正弦信号的当前相位 值;而用于累加的相位增量量化值决定了信号的输出 频率fout,并呈现简单的线性关系。直接数字合成器 DDS就是根据上述原理而设计的数字控制频率合成器。
图9-1所示是一个基本的DDS结构,主要由相位累加 器、相位调制器、正弦ROM查找表和D/A构成。图中 的相位累加器、相位调制器、正弦ROM查找表是DDS 结构中的数字部分,由于具有数控频率合成的功能, 又合称为NCO(Numerically Controlled Oscillators)。
第9章 DDS设计
下面开始仿真。图9-6显示了仿真结果。
第9章 DDS设计
图9-6 仿真结果
第9章 DDS设计
9.3 FSK调制器设计
其中Sout是指该信号发生器的输出信号波形,fout指 输出信号对应的频率。上式的表述对于时间t是连续的, 为了用数字逻辑实现该表达式,必须进行离散化处理。 用基准时钟clk进行抽样,令正弦信号的相位:
2πfoutt
在一个clk周期Tclk内,相位的变化量为:
Δ
2πf outTclk
2πf out f clk
第9章 DDS设计
第9章 DDS设计
9.1 DDS的基本原理 9.2 DDS的模块设计 9.3 FSK调制器设计
第9章 DDS设计
9.1 DDS的基本原理
我们知道,对于正弦信号发生器,它的输出可以 用下式来描述:
Sout Asint Asin(2πfoutt).
(9-1)
第9章 DDS设计
第9章 DDS设计
相位字输入
幅度调制
频率字输入 相位累加器 clk
相位调制器
正 弦 ROM 查找表
送 D/A
图9-3 幅度调制
第9章 DDS设计
9.2 DDS的模块设计
9.2.1 建立DDS模型 首先在Simulink中新建一个模型,调用DSP Builder模
块构成图9-4所示的基本DDS子系统SubDDS。
第9章 DDS设计
由 Delay 模 块 和 Parallel Adder Subtractor 模 块 以 及 Phaseword1模块构成相位累加器,其参数如下:
Parallel Adder Subtractor模块:(Parallel Adder Subtractor) 库:Altera DSP Builder中Arithmetic库 参数“Number of Inputs”设为“2”,“Add(+)Sub(-)”设为
Amp模块:(Altbus) 库:Altera DSP Builder中Bus Manipulation库 参数“Bus Type”设为“signed Integer” 参数“Node Type”设为“Input port”
第9章 DDS设计
参数“number of bits”设为“10”
DDSout模块:(Altbus) 库:Altera DSP Builder中Bus Manipulation库 参数“Bus Type”设为“signed Integer” 参数“Node Type”设为“Output port” 参数“number of bits”设为“10”
第9章 DDS设计
2. DDS的频率分辨率 或称频率最小步进值,可用频率输入值步进一个
最小间隔对应的频率输出变化量来衡量。由(9-7)易得
f out
f clk 2N
(9-8)
3. DDS的频率输入字的计算
的计算公式如下:
B
2N
f out f clk
第9章 DDS设计
对于通信上的应用,往往需要得到一对正交的正弦信 号,以便进行正交调制和正交解调。在用模拟的压控振 荡器VCO时,输出一组完全正交的信号较为困难,而对 于DDS而言,只要在基本DDS结构中增加一块ROM查 找表,在两块ROM中分别放置一对正交信号即可(如一 个放置sin表、另一个放置cos表),如图9-2所示。
数据线位宽
相 位 字 输 入同 步 寄存器
N
频 率 字 输 入同 步 N 寄存器
clk 系统时钟
N
M
M
寄存器
相位调制器
相位累加器
正 弦 ROM 查找表
正弦信号输出 D/A
图9-1 基本DDS结构
第9章 DDS设计
相位累加器是整个DDS的核心,在这里完成上文原 理推导中的相位累加功能。相位累加器的输入是相位 增量,又由于与输出频率fout是简单的线性关系:,