У мене є сумніви щодо (Редагувати: це пізніше було видалено з питання):
Розподіл цих компонентів шуму AM і PM можна вважати рівномірними до тих пір, поки вхідний сигнал не буде пов'язаний з тактовою частотою вибірки.
Розглянемо сигнал: ім'я
та його квантування:
сигнал( t ) = cos( t ) + j sin( t )
qu a n t i z e d _ s i g n a l( t ) =круглий( Ncos( t ) )N+ j ×круглий( Nгріх( t ) )N
для кроку квантування обох компонентів I і Q ( у вас на рисунку ).1 / НN= 5
Рисунок 1. Слід сигналу (синя лінія) та його квантування (чорні крапки) та перенесення між ними, щоб побачити, в якому напрямку різні частини сигналу квантовані, для . "Морфінг" - це просто набір додаткових параметричних графіків уN= 5сигнал( t ) + ( 1 - a ) qу а н т яz e d _ s i g n a l( t )a = [15,25,35,45] .
Похибка фази внаслідок помилки квантування:
p h a s e _ e r r or( t ) = атан( Ім( qu a n t i z e d _ s i g n al( t ) ) , Re( qu a n t i z e d _ s i g n al( t ) ) )- Атан( Ім( сигнал( t ) ) , Re( сигнал( t ) ) )= атан( кругла( Nгріх( т ) ) , кругла( Ncos( т ) ) ) - атан( Nгріх( т ) , Ncos( t ) )= атан( кругла( Nгріх( т ) ) , кругла( Ncos( т ) ) ) - мод( t - π, 2 π) + π
Віднімання обгорнутих фаз ризиковано, але в цьому випадку воно працює.
Малюнок 2. для .p h a s e _ e r r o r( t )N= 5
Це лінійна функція. Усі відрізки рядків перетинають нульовий рівень, але закінчуються на різних інших рівнях. Це означає, розглядаючи як єдину випадкову змінну, що у функції щільності ймовірності значення біля нуля завищені. Отже не може мати рівномірний розподіл.тp h a s e _ e r r o r( t ) ,p h a s e _ e r r o r( t )
Розглядаючи власне питання, дивлячись на фіг. 1, з достатньо високою та такою частотою складної синусоїди, що протягом кожного інтервалу вибірки сигнал обертається через кілька меж квантування, помилки квантування у зразках фактично є фіксованою послідовністю псевдослучайності числа, що походять від вигадок теорії чисел. Похибки залежать від частоти і від а також від початкової фази, якщо частота є підмножиною кратного частоти вибірки, в цьому випадку помилка квантування - це повторювана послідовність, яка не містить усіх можливих значень помилок квантування. У межі великогоNN,Nрозподіли помилок I та Q є рівномірними, а помилки фази та величини - псевдовипадкові числа, що надходять від розподілів, які залежать від фази сигналу. Залежність від фази існує, оскільки сітка прямокутної квантування має орієнтацію.
У межі великого похибка фази та похибка величини є перпендикулярними компонентами складної помилки. Похибка величини може бути виражена пропорційно до нескінченно малої стадії квантування, а похибка фази може бути виражена пропорційно етапу квантування. На фазі сигналу похибка величини знаходиться у кутовому напрямку а похибка фази - у кутовому напрямку . Складна похибка квантування розподіляється рівномірно на етапі квантування квадратиком, орієнтованим по осях I і Q, з кутами в координатах, виражених пропорційно кроку квантування:N,арцинααα + π/ 2
[ (1/2,1/2 ) ,( - 1 / 2 , 1 / 2 ) ,( - 1 / 2 , - 1 / 2 ) ,( 1 / 2 , - 1 / 2 ) ]
Обертання цих координат або рівнозначне їх проектування на пропорційну похибку фази та осі помилки пропорційної величини дає як однакову функцію лінійної щільності лінійної густини ймовірності плоскої вершини з вузлами:
[cos( α )2-гріх( α )2,cos( α )2+гріх( α )2,-cos( α )2+гріх( α )2,-cos( α )2-гріх( α )2] = [2-√cos( α + π/ 4),2-√гріх( α + π/ 4),-2-√cos( α + π/ 4),-2-√гріх( α + π/ 4) ]
Малюнок 3. Вузли спільної лінійної функції щільності плоскості розповсюдженості (PDF) пропорційної похибки фази та похибки пропорційної величини з урахуванням кута сигналу . У PDF прямокутний. Деякі вузли зливаються також при даючи трикутний PDF з найгіршим випадком великої асимптотичної оцінки 1) максимальна похибка абсолютної величини етапи квантування та 2) максимальна абсолютна похибка фази рази етапу квантування.αα ∈ { - π, - π/ 2,0,π/ 2,π}α ∈ { - 3 π/ 4,-π/ 4,π/ 4,3π/ 4}N2-√/ 22-√/ 2арцин
На проміжних етапах PDF виглядає так:
Малюнок 4. Спільний PDF у форматіα = π/ 8.
Як запропонував Ден, PDF - це також згортання прямокутних PDF s помилок I та Q, що проектуються на осі величини та похибки фази. Ширина одного із проектованих PDF-файлів дорівнює, а ширина іншого -. Їх комбінована дисперсія - рівномірна над .| cos( α ) || гріх( α ) |cos2( α ) / 12 +гріх2( Α ) / 12 = 1 / 12 ,α
Можуть бути деякі "псевдолукі" комбінації початкової фази та раціональне числове відношення частоти складної синусоїди та частоти вибірки, які дають лише невелику помилку для всіх зразків у повторюваній послідовності. Через симетричність помилок, показаних на рис. 1, в максимальному абсолютному розумінні помилок ті частоти мають перевагу, для якої кількість очок, відвіданих у колі, кратна 2, тому що удача (низька помилка) потрібна в лише половина балів. Помилка в решті точок - це дублікати того, що вони є на перших, із знаками перевертання. Принаймні кратні 6, 4 та 12 мають ще більшу перевагу. Я не впевнений, яке саме тут правило, тому що це, здається, не все в тому, щоб бути кратним чогось. Це ' s дещо про симетрії сітки в поєднанні з арифметикою модуля. Тим не менш, псевдовипадкові помилки є детермінованими, тому вичерпний пошук виявляє найкращі домовленості. Знайти найкращі домовленості в сенсі абсолютної помилки кореневого середнього квадрата (RMS) найпростіше:
Малюнок 5. Вгору) Найменші можливі похибки абсолютної квантування RMS у складному осциляторі IQ для різних глибин біта генератора, використовуючи квадратну сітку квантування . Вихідний код для вичерпного пошуку псевдолуцьких домовленостей знаходиться в кінці відповіді. Внизу) Фрагмент, що показує для порівняння (світло - синього) в асимптотической оцінка похибки квантування абсолютного RMS, для де є кількість біт генератора.N→ ∞1 / 6---√/ Н,N=2к- 1 ,k + 1
Амплітуда найвизначнішої частоти помилок ніколи не перевищує абсолютної похибки RMS. Для 8-бітового генератора особливо вдалим вибором є ці точок, розташованих приблизно на одиничному колі:12
{ ( 0 , ± 112 ) ,( ± 112 , 0 ) ,( ± 97 , ± 56 ) ,( ± 56 , ± 97 ) }112.00297611139371
Дискретний складний синусоїд, який проходить через ці точки на складній площині у збільшенні кутового порядку, має лише п’яте гармонічне спотворення, і це на дБ порівняно з основним, що підтверджено вихідним кодом Октави в кінці відповіді.- 91,5
Щоб отримати низьку абсолютну похибку квантування RMS, частоти не повинні проходити через точки в порядку, як у приблизних фазах для частоти на більше частоти вибірки. Наприклад, частота разів частота вибірки буде проходити через ті самі точки, але в іншому порядку: . Я думаю, що це працює так, як це відбувається, тому що 5 і 12 є копрієм .[ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 ] ⋅ 2 π/ 121 / 125 / 12[ 0 , 5 , 10 , 3 , 8 , 1 , 6 , 11 , 4 , 9 , 2 , 7 ] ⋅ 2 π/ 12
Щодо можливих ідеальних домовленостей, помилка може бути рівно нульовою у всіх точках, якщо частота синусоїди становить одну четверту частоти вибірки (приріст фази на зразок). На квадратній сітці інших подібних досконалих композицій немає . На шестикутній сітці або на неквадратичній прямокутній сітці з однією з осей I або Q, розтягнутої на коефіцієнт (завдяки чому вона еквівалентна кожному другому ряду на сітці соти), приріст фази на зразок спрацював би ідеально. Таке масштабування можна зробити в аналоговій області. Це збільшує кількість осей симетрії сітки, що призводить до переважно сприятливих змін у псевдолуцькому розташуванні:π/ 23-√π/ 3
Малюнок 6. Найменші можливі похибки абсолютної квантування RMS в складному осциляторі IQ для різних глибин біта генератора, використовуючи прямокутну сітку квантування з однією з осей, масштабовану на3-√ .
Зокрема, для 8-бітового осцилятора з 30 балами на колі найменша можлива абсолютна помилка RMS становить -51,3 дБ на квадратній сітці та -62,5 дБ на неквадратичній прямокутній сітці, де найменша абсолютна помилка RMS Псевдолукі послідовність має помилку:
Рисунок 7. Значення похибки на площині IQ 8-бітовою псевдооліповою послідовністю довжиною 30 використовують переваги осей симетрії, знайдених у сітці квантування, розтягнутої на коефіцієнт по горизонталі. Очки походять від лише трьох псевдолуких складних чисел, розгорнутих навколо осей симетрії.3-√
Я не маю практичного досвіду роботи з тактовими сигналами IQ, тому я не впевнений, які речі мають значення. З генерацією тактового сигналу, використовуючи цифро-аналоговий перетворювач (ЦАП), я б підозрював, що, якщо не будуть використані хороші псевдолуки, краще мати нижній рівень білого шуму, ніж мати гармонійний спектр шуму з більш високим шипи, що виникають від повторюваної послідовності помилки квантування (див. Когерентний вибірки та розподіл шуму квантування ). Ці спектральні шипи, як і білий шум, можуть просочуватися через паразитарну ємність і мати небажані ефекти в інших частинах системи або впливати на електромагнітну сумісність (ЕМС) пристрою. Як аналогія, технологія розширення спектру покращує ЕМС шляхом перетворення спектральних шипів на нижню пікову шуму.
Наступний вихідний код для вичерпного пошуку псевдолуких домовленостей у C ++ випливає. Ви можете запустити його протягом ночі, щоб знайти найкращі домовленості принаймні до 16-бітових осциляторів для .1 ≤ M≤ 100
// Compile with g++ -O3 -std-c++11
#include <stdio.h>
#include <math.h>
#include <complex>
#include <float.h>
#include <algorithm>
// N = circle size in quantization steps
const int maxN = 127;
// M = number of points on the circle
const int minM = 1;
const int maxM = 100;
const int stepM = 1;
// k = floor(log2(N))
const int mink = 2;
const double IScale = 1; // 1 or larger please, sqrt(3) is very lucky, and 1 means a square grid
typedef std::complex<double> cplx;
struct Arrangement {
int initialI;
int initialQ;
cplx fundamentalIQ;
double fundamentalIQNorm;
double cost;
};
int main() {
cplx rotation[maxM+1];
cplx fourierCoef[maxM+1];
double invSlope[maxM+1];
Arrangement bestArrangements[(maxM+1)*(int)(floor(log2(maxN))+1)];
const double maxk(floor(log2(maxN)));
const double IScaleInv = 1/IScale;
for (int M = minM; M <= maxM; M++) {
rotation[M] = cplx(cos(2*M_PI/M), sin(2*M_PI/M));
invSlope[M] = tan(M_PI/2 - 2*M_PI/M)*IScaleInv;
for (int k = 0; k <= maxk; k++) {
bestArrangements[M+(maxM+1)*k].cost = DBL_MAX;
bestArrangements[M+(maxM+1)*k].fundamentalIQNorm = 1;
}
}
for (int M = minM; M <= maxM; M += stepM) {
for (int m = 0; m < M; m++) {
fourierCoef[m] = cplx(cos(2*M_PI*m/M), -sin(2*M_PI*m/M))/(double)M;
}
for (int initialQ = 0; initialQ <= maxN; initialQ++) {
int initialI(IScale == 1? initialQ : 0);
initialI = std::max(initialI, (int)floor(invSlope[M]*initialQ));
if (initialQ == 0 && initialI == 0) {
initialI = 1;
}
for (; initialI*(int_least64_t)initialI <= (2*maxN + 1)*(int_least64_t)(2*maxN + 1)/4 - initialQ*(int_least64_t)initialQ; initialI++) {
cplx IQ(initialI*IScale, initialQ);
cplx roundedIQ(round(real(IQ)*IScaleInv)*IScale, round(imag(IQ)));
cplx fundamentalIQ(roundedIQ*fourierCoef[0].real());
for (int m = 1; m < M; m++) {
IQ *= rotation[M];
roundedIQ = cplx(round(real(IQ)*IScaleInv)*IScale, round(imag(IQ)));
fundamentalIQ += roundedIQ*fourierCoef[m];
}
IQ = fundamentalIQ;
roundedIQ = cplx(round(real(IQ)*IScaleInv)*IScale, round(imag(IQ)));
double cost = norm(roundedIQ-IQ);
for (int m = 1; m < M; m++) {
IQ *= rotation[M];
roundedIQ = cplx(round(real(IQ)*IScaleInv)*IScale, round(imag(IQ)));
cost += norm(roundedIQ-IQ);
}
double fundamentalIQNorm = norm(fundamentalIQ);
int k = std::max(floor(log2(initialI)), floor(log2(initialQ)));
// printf("(%d,%d)",k,initialI);
if (cost*bestArrangements[M+(maxM+1)*k].fundamentalIQNorm < bestArrangements[M+(maxM+1)*k].cost*fundamentalIQNorm) {
bestArrangements[M+(maxM+1)*k] = {initialI, initialQ, fundamentalIQ, fundamentalIQNorm, cost};
}
}
}
}
printf("N");
for (int k = mink; k <= maxk; k++) {
printf(",%d-bit", k+2);
}
printf("\n");
for (int M = minM; M <= maxM; M += stepM) {
printf("%d", M);
for (int k = mink; k <= maxk; k++) {
printf(",%.13f", sqrt(bestArrangements[M+(maxM+1)*k].cost/bestArrangements[M+(maxM+1)*k].fundamentalIQNorm/M));
}
printf("\n");
}
printf("bits,M,N,fundamentalI,fundamentalQ,I,Q,rms\n");
for (int M = minM; M <= maxM; M += stepM) {
for (int k = mink; k <= maxk; k++) {
printf("%d,%d,%.13f,%.13f,%.13f,%d,%d,%.13f\n", k+2, M, sqrt(bestArrangements[M+(maxM+1)*k].fundamentalIQNorm), real(bestArrangements[M+(maxM+1)*k].fundamentalIQ), imag(bestArrangements[M+(maxM+1)*k].fundamentalIQ), bestArrangements[M+(maxM+1)*k].initialI, bestArrangements[M+(maxM+1)*k].initialQ, sqrt(bestArrangements[M+(maxM+1)*k].cost/bestArrangements[M+(maxM+1)*k].fundamentalIQNorm/M));
}
}
}
Вихід вибірки, що описує перший приклад послідовності, знайдений за допомогою IScale = 1
:
bits,M,N,fundamentalI,fundamentalQ,I,Q,rms
8,12,112.0029761113937,112.0029761113937,0.0000000000000,112,0,0.0000265717171
Вибір вибірки, що описує другий приклад послідовності, знайдений за допомогою IScale = sqrt(3)
:
8,30,200.2597744568315,199.1627304588310,20.9328464782995,115,21,0.0007529202390
Код Octave для тестування першої прикладу послідовності:
x = [112+0i, 97+56i, 56+97i, 0+112i, -56+97i, -97+56i, -112+0i, -97-56i, -56-97i, 0-112i, 56-97i, 97-56i];
abs(fft(x))
20*log10(abs(fft(x)(6)))-20*log10(abs(fft(x)(2)))
Код Octave для тестування другої приклади послідовності:
x = exp(2*pi*i*(0:29)/30)*(199.1627304588310+20.9328464782995i);
y = real(x)/sqrt(3)+imag(x)*i;
z = (round(real(y))*sqrt(3)+round(imag(y))*i)/200.2597744568315;
#Error on IQ plane
star = z-exp(2*pi*i*(0:29)/30)*(199.1627304588310+20.9328464782995i)/200.2597744568315;
scatter(real(star), imag(star));
#Magnitude of discrete Fourier transform
scatter((0:length(z)-1)*2*pi/30, 20*log10(abs(fft(z))/abs(fft(z)(2)))); ylim([-120, 0]);
#RMS error:
10*log10((sum(fft(z).*conj(fft(z)))-(fft(z)(2).*conj(fft(z)(2))))/(fft(z)(2).*conj(fft(z)(2))))