电话: 邮箱:
博 学 而 笃 志   切 问 而 近 思 SEEK BROAD KNOWLEDGE · ASK EARNESTLY

斗鱼体育新闻

斗鱼体育新闻

斗鱼体育app(中国)官网下载 FPGA中NCO相位截断导致的杂散若何扼制?

发布日期:2026-05-27 00:36 来源:未知 作者:admin 浏览次数:

斗鱼体育app(中国)官网下载 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 的杂散谱线,斗鱼体育app其中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

米兰体育2026世界杯指定中国官网

if (!rst_n)

verilog

// Verilog示例:基于1/4周期ROM的正弦波生成(无抖动)

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) begin斗鱼体育app(中国)官网下载