AG真人2026世界杯中国官网 FPGA中NCO相位截断导致的杂散若何扼制?

在FPGA中终了NCO(数控颠簸器)时,相位截断是导致输出频谱产生杂散(Spur)的主要原因之一。相位截断是指为了减少波形查找表(ROM)的存储深度,只使用相位累加器输出的高位手脚ROM地址,而丢弃低位。这还是由引入了周期性的相位舛误,在频域发扬为非谐波关联的杂散频率重量,平直影响系统的无杂散动态规模(SFDR)4。
1. 相位截断杂散的成因分析相位累加器的输出是一个位宽为 N(举例32位)的线性递加序列。梦想的NCO会使用完竣的 N 位相位值来寻址一个深度为 2^N 的ROM,但这在物理上无法终了。本色缱绻中,咱们只取高 M 位(如12位)手脚ROM地址,丢弃低 N-M 位(如20位)。这种量化舛误是周期性的,其周期与频率驱散字(FCW)和截断位宽联系3。 杂散能量与周期性的数学关系:设相位累加器位宽 N, 截取的高位地址位宽 M, 则相位截断舛误 e(n) 是一个在 [0, 2^(N-M)-1] 区间内周期性变化的序列。该舛误序列会调制ROM输出的正弦波幅度,在输出频谱中产生以 f_out 为中心,终止为 f_spur = (GCD(FCW, 2^(N-M)) * f_clk) / 2^N 的杂散谱线,AG真人2026世界杯中国官网其中GCD默示最大左券数4。
2. 中枢扼制时期扼制相位截断杂散的中枢想路是龙套其周期性,将聚会的杂散能量“打散”为分歧更均匀的配景噪声,从而提升SFDR。主要时期包括相位抖动注入和ROM压缩优化。
2.1 相位抖动注入(DITHERING)这是最灵验且平庸应用的标准。其旨趣是在进行相位截断前,将一个非关联的立时序列(抖动)加到相位累加器的低位上,从而将截断舛误的详情趣周期性滚动为立时性,使杂散能量扩散为底噪3, 6。 终了标准对比:抖动类型旨趣优点时弊适用场景加性抖动(在截断前添加) 将伪立时数发生器的输出加到相位累加器的低
L
位上,然后进行截断。
终了粗浅,能灵验龙套周期性。
会引入出奇的宽带噪声,微弱劣化信噪比(SNR)。
对SFDR条件严苛,可收受一定SNR亏蚀的应用。 乘性抖动(在ROM输出后添加) 在ROM输出的幅度数据上重迭一个眇小的立时扰动。
对输出频谱款式影响更可控。
对扼制由相位截断引起的杂散效力不如加性抖动平直。
适用于同期存在多种舛误源(如幅度量化舛误)需要扼制的场景。 Verilog终了示例:加性相位抖动 verilog
module phase_acc_with_dither #(
parameter PHASE_WIDTH = 32,
parameter TRUNC_WIDTH = 20, // 被截断的低位宽度 (N-M)
parameter DITHER_WIDTH = 4 // 抖动位宽,频繁为2-4位
)(
input wire clk,
input wire rst_n,
input wire [PHASE_WIDTH-1:0] fcw_i,
output wire [PHASE_WIDTH-TRUNC_WIDTH-1:0] phase_truncated_o // 截断后的高位地址
);
reg [PHASE_WIDTH-1:0] phase_acc;
wire [TRUNC_WIDTH-1:0] phase_low_bits;
wire [DITHER_WIDTH-1:0] dither_seq;
reg [PHASE_WIDTH+DITHER_WIDTH-1:0] phase_with_dither;
// 1. 线性响应移位寄存器(LFSR)生成伪立时抖动序列[ref_6]
lfsr #(.WIDTH(DITHER_WIDTH)) u_lfsr (
.clk(clk),
.rst_n(rst_n),
.rand_out(dither_seq)
);
// 2. 相位累加
always @(posedge clk or negedge rst_n) begin
if (!rst_n)
verilog
// Verilog示例:基于1/4周期ROM的正弦波生成(无抖动)
米兰体育MiLan(中国)官网首页module sine_gen_quarter_rom #(
parameter ADDR_WIDTH = 10, // 对应1/4周期ROM的地址宽度,总深度为2^ADDR_WIDTH
parameter DATA_WIDTH = 16
)(
input wire clk,
input wire [ADDR_WIDTH+1:0] phase_msb, // 输入为完竣的相位高位(包含象限信息)
output reg signed [DATA_WIDTH-1:0] sine_out
);
// 1/4周期正弦波ROM, 深度为 2^ADDR_WIDTH
reg [DATA_WIDTH-1:0] quarter_sine_rom [0:(1[π,2π)
wire quadrant_lsb = phase_msb[ADDR_WIDTH]; // 次高位:0->[0,π/2)U[π,3π/2), 1->[π/2,π)U[3π/2,2π)
// 地址映射逻辑:将0-2π的相位映射到0-π/2的地址
assign rom_addr = (quadrant_lsb == 1'b0) ?
phase_msb[ADDR_WIDTH-1:0] :
~phase_msb[ADDR_WIDTH-1:0]; // 欺诈对称性,第二半区间取反
always @(posedge clk) beginAG真人2026世界杯中国官网

备案号: