Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ФОСМС2015fokin_12345

.pdf
Скачиваний:
27
Добавлен:
11.06.2015
Размер:
7.6 Mб
Скачать

Компандеры

Логарифмический компрессор μ имеет характеристику «вход-выход» следующего вида:

=

 

=

 

 

ln 1+

 

 

 

(4.1.7a)

 

 

 

 

 

 

 

 

ln 1+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= −1

 

=

 

 

1+

−1

 

(4.1.7b)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Логарифмический компрессор A имеет характеристику «вход-выход» следующего вида:

 

 

 

 

 

 

 

 

при 0 <

≤ 1

 

=

 

=

 

1+ln

 

 

 

 

 

 

 

 

 

 

(4.1.8a)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1+ln

 

 

 

при 1 <

 

≤ 1

 

 

 

 

 

 

 

 

1+ln

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1+ln

 

 

 

при 1 + ln

 

≤ 1

= −1

 

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(4.1.8b)

 

 

 

 

 

exp

1+ln

 

−1

 

при других

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В примере неравномерного квантования с компандером используется 16 уровней для квантования синусоиды. Анализ графиков, представленных на рисунках, позволяет сделать следующие выводы: при равномерном квантовании абсолютная ошибка квантования меньше, а при неравномерном квантовании меньше относительная ошибка квантования.

11

Характеристики компандеров

% sim_Compander x=[-1:0.01:1];

slines = {'-', ':', '--', '-.'}; colors = {'r', 'g', 'b', 'k'};

subplot(2,1,1); mu=[1,10,255]; legendstr1=cell(1,length(mu)); for i=1:length(mu)

[y1,xmax]=mulaw(x,mu(i)); plot(x,y1,strcat(slines{i},colors{i}), 'LineWidth', 2);

hold on;

legendstr1{i}=sprintf('\\mu=%d', mu(i));

end legend(legendstr1,'Location','northwest'); xlabel('x'); ylabel('y'); title('\mu-law');

subplot(2,1,2); A=[1,5,87]; legendstr2=cell(1,length(A)); for i=1:length(A)

[y2,xmax]=Alaw(x,A(i)); plot(x,y2,strcat(slines{i},colors{i}),'LineWidth', 2);

hold on; legendstr1{i}=sprintf('A=%d', A(i)); end

legend(legendstr1,'Location','northwest'); xlabel('x'); ylabel('y'); title('A-law');

function [y,xmax]=mulaw(x,mu,ymax) if nargin<3, ymax=1; end

if nargin<2, mu=255; end xmax=max(abs(x));

y=ymax*log(1+mu*abs(x/xmax))./log(1+mu).*sign(x);

function x=mulaw_inv(y,mu,xmax) if nargin<3, xmax=1; ymax=1;

else ymax=max(abs(y)); end

if nargin<2, mu=255; end x=xmax.*(((1+mu).^(abs(y)/ymax)-1)/mu).*sign(y);

12

Пример работы АЦП

function

[d,dcode]=adc(a,b,c,code_table)

 

 

 

% Analog-to-Digital Conversion

 

 

 

% Input : analog signal a, boundary vector b, centroid vector c,

 

 

 

%

and code_table

 

 

 

% Output: quantized samples d and the corresponding code dcode

 

 

 

N=length(c);

 

 

 

if nargin<4, code_table=[0:N-1]'; end

 

 

 

Na=length(a); % dcode=zeros(Na,size(code_table,2));

 

 

 

for n=1:Na

 

 

 

I=find(a(n)<b(2:N));

 

 

 

if ~isempty(I)

 

 

 

 

d(n)=c(I(1)); dcode(n,:)=code_table(I(1),:);

 

 

 

else

 

 

 

 

 

d(n)=c(N); dcode(n,:)=code_table(N,:);

 

 

 

end

 

 

 

 

еnd

 

 

 

 

function y=deci2bin1(x,l)

 

 

 

% Converts a given decimal number x into a binary number of l bits

 

 

 

if x==0, y=0;

 

 

 

else y=[];

 

 

 

while x>=1, y=[rem(x,2) y]; x=floor(x/2); end

#

x_q16f

code

 

 

 

end

 

1

0.0625

1000

 

 

 

 

if nargin>1, y=[zeros(size(x,1),l-size(y,2)) y]; end

2

0.0625

1000

 

 

 

 

 

3

0.0625

1000

 

 

4

0.1875

1001

t=[0:0.05:2.0]; x=sin(t);

5

0.1875

1001

 

 

 

b0=-1; bN=1; xmax=max(abs([b0 bN]));

6

0.1875

1001

 

 

 

N=16; delta=(bN-b0)/N; % Width of quantization interval

7

0.3125

1010

 

 

 

b=b0+[0:N]*delta; % Boundary vector

8

0.3125

1010

 

 

 

c=b(1:N)+delta/2; % Midpoint vector

9

0.4375

1011

 

 

 

for m=0:N-1

10

0.4375

1011

 

 

 

code_table(m+1,:)=deci2bin1(m,nextpow2(N));

11

0.4375

1011

 

 

 

end

 

12

0.5625

1100

 

 

 

 

[xq16, code]=adc(x,b,c,code_table) % Uniform quantization

13

0.5625

1100

 

 

 

[ts,xq16s]=stairs(t,xq16);

14

0.5625

1100

 

 

 

plot(t,x,'k',ts,xq16s,'b:','LineWidth',2); grid on;

15

0.6875

1101

 

 

 

legend('x','xq16','Location','southeast');

16

0.6875

1101

 

 

 

fprintf('#\tx_q16f\tcode\n');

17

0.6875

1101

 

 

 

for i=1:length(xq16)

18

0.8125

1110

 

 

 

fprintf('%d\t%0.4f\t\t%d%d%d%d\n',i,xq16(i),code(i,:));

19

0.8125

1110

 

 

 

end

 

20

0.8125

1110

 

 

 

 

 

 

21

0.8125

1110

13

Пример квантования с компандером

%dc040e03.m for Example 4.3 (Non-uniform Quantization of sin t) clear, clf

t=[0:0.05:7]; x=sin(t);

b0=-1; bN=1; xmax=max(abs([b0 bN]));

N=16; delta=(bN-b0)/N; % Width of quantization interval b=b0+[0:N]*delta; % Boundary vector

c=b(1:N)+delta/2; % Midpoint vector x_q16=adc(x,b,c); % Uniform quantization bn=mulaw_inv(b/xmax,50)*xmax; cn=mulaw_inv(c/xmax,50)*xmax; xn_q16=adc(x,bn,cn); % Non-uniform quantization subplot(311);

plot(t,x,'k',t,x_q16,'b:',t,xn_q16,'r','LineWidth',2); grid on; legend('x','uniform','non-uniform','Location','southwest'); str1=sprintf('Analog and quantized signals; N=%d', N); title(str1);

e=x-x_q16; en=x-xn_q16; % Absolute error subplot(312);plot(t,e,'b:', t,en,'r','LineWidth', 2); grid on; legend('uniform','non-uniform','Location','southwest'); str2=sprintf('Absolute quantization error'); title(str2);

tmp= abs(x)+0.01; re=e./tmp; ren=en./tmp; % Relative error subplot(313);plot(t,re,'b:', t,ren,'r-','LineWidth', 2); legend('uniform','non-uniform','Location','southwest'); title('Relative quantization error'); grid on;

14

Тема 2. АИМ, ИКМ, ДИКМ, ДМ

Цель: Изучить принципы работы АИМ, ИКМ, ДИКМ, ДМ

Задачи:

сформировать сигналы АИМ и ИКМ; построить их осциллограммы и спектры; сравнить осциллограммы и спектры и сделать выводы

сформировать сигнал ДИКМ; построить осциллограммы сигналов на входе и выходе квантователя передатчика; построить осциллограмму декодированного ДИКМ сигнала в приемнике

сформировать сигнал ДМ; построить осциллограммы сигналов на входе и выходе квантователя передатчика; построить осциллограмму декодированного ДМ сигнала в приемнике

сравнить ошибку квантования в случае ИКМ, ДИКМ, ДМ

План:

Импульсно-кодовая (ИКМ) и амплитудно-импульсная модуляция (АИМ)

Моделирование АИМ

Моделирование ИКМ

Принцип работы ДИКМ

Структура приемопередатчика ДИКМ

Предсказатель ДИКМ

Моделирование работы ДИКМ

Структура приемопередатчика ДМ

Моделирование работы ДМ

Иллюстрация работы ДМ

Содержание отчета: определяется задачами и планом практического занятия

ДЗ: оценить среднеквадратическая ошибку MSQE для ИКМ, ДИКМ и ДМ на примере синусоидального сигнала

15

Импульсно-кодовая (ИКМ)

иамплитудно-импульсная модуляция (АИМ)

ИКМ включает три этапа:

-дискретизация,

-квантование и

-двоичное кодирование в последовательный битовый поток.

ИКМ имеет следующие особенности в сравнении с АИМ:

-Большая помехоустойчивость вследствие большей разницы между уровнями кодированного сигнала ИКМ и квантованного сигнала АИМ

-Сигнал ИКМ изменяется более скачкообразно и быстро по сравнению с АИМ сигналом, поэтому в его спектре содержится больше высокочастотных составляющих.

Таким образом, ширина полосы сигнала ИКМ больше ширины полосы сигнала АИМ и как минимум в раз больше ширины полосы аналогового сигнала ( - число бит для представления квантованного значения ИКМ сигнала)

Программа sim_PCM.m выполняет следующие процедуры:

-Модуляция ИКМ и АИМ синусоидального сигнала

-Добавление шума к модулированным сигналам

-Демодуляция ИКМ и АИМ сигналов

-Оценка мощности переданных сигналов

-Подсчет символьных ошибок демодулированных АИМ и ИКМ сигналов

- Оценка спектра ИКМ и АИМ сигналов

16

 

Моделирование АИМ

%sim_PCM.m

%PAM/PCM(Pulse Amplitude/Code Modulation) system clear all;

T=0.02; nmax=60; t=[0:nmax-1]*T; b0=-1; bN=1; N=8;

delta=(bN-b0)/N;

% Quantization

interval

b=b0+[0:N]*delta;

%

Boundary vector

c=b(1:N)+delta/2;

%

Quantization

level vector

Nb=ceil(log2(N)); N2=2^Nb; % Frequency range

wa=2*pi/T/nmax*[-nmax/2:nmax/2]; wp=2*pi/T/nmax/Nb*[-nmax*Nb/2:nmax*Nb/2]; if N2>N

b(N+1:N2)=b(N)*ones(1,N2-N); c(N+1:N2)=c(N)*ones(1,N2-N);

end code_table=fliplr(de2bi([0:N2-1])); noise_amp=0.5;

%% PAM (Pulse Amplitude Modulation)

tx_pam=[];

% Serial bit pattern

pam_signal_power=0;

 

for n=1:nmax

 

x(n)=sin(6*(n-1)*T);

% Analog signal

xq(n)=adc(x(n),b,c);

 

y(n)=xq(n)+noise_amp*(rand-0.5);

yq(n)=adc(y(n),b,c);

% Detection by RX

pam_signal_power=pam_signal_power+xq(n)*xq(n);

end

tmp=ones(Nb,1)*xq; tx_pam=tmp(:)'; Xts_PAM=abs(fftshift(fft(tx_pam))); pam_signal_power=pam_signal_power/nmax pam_symbol_error=sum(yq~=xq)/nmax

17

Моделирование ИКМ

%%

%% PCM (Pulse Code Modulation)

tx_pcm=[];

% Serial bit pattern

pcm_signal_power=0; A=1;

 

for n=1:nmax

 

[xq(n),code]=adc(x(n),b,c,code_table);

for m=1:Nb

% Nb=length(code)

ym(m)=A*code(m)+noise_amp*(rand-0.5);

ymq(m)=(ym(m)>A/2);

% Detection by RX

end

tx_pcm=[tx_pcm code(1:Nb)]; y_dec(n)=c(strmatch(ymq,code_table)); pcm_signal_power=pcm_signal_power+sum(code.^2);

end Xts_PCM=abs(fftshift(fft(A*tx_pcm)));

pcm_signal_power=A*A*pcm_signal_power/Nb/nmax pcm_symbol_error=sum(y_dec~=xq)/nmax

subplot(611);

plot(t,x,'linewidth', 2); legend('Analog signal'); Xts_AM=abs(fftshift(fft(x)));

subplot(612);

plot(wa,[Xts_AM Xts_AM(1)],'linewidth',2,'color','r'); legend('Analog spectrum');

subplot(613); stairs(tx_pam, 'linewidth', 2); str1=sprintf('PAM signal; N=%d',N);legend(str1); subplot(614);

plot(wp,[Xts_PAM Xts_PAM(1)],'linewidth',2,'color','r'); legend('PAM spectrum');

subplot(615); stairs(tx_pcm, 'linewidth',2); str2=sprintf('PCM signal; N_{bits}=%d',Nb);legend(str2); subplot(616);

plot(wp,[Xts_PCM Xts_PCM(1)],'linewidth',2,'color','r'); legend('PCM spectrum');

18

Принцип работы ДИКМ

В отличие от ИКМ (PCM), при которой каждая выборка обрабатывается отдельно, в случае ДИКМ (DPCM) передатчик TX использует предсказатель, который предсказывает следующую выборку на основе предыдущей и вместо текущей выборки отправляет ошибку предсказания. Приемник ДИКМ RX использует тот же предсказатель, что и передатчик TX для восстановления текущей выборки на основе принятой ошибки предсказания и предыдущей выборки.

В случае ДИКМ при хорошей работе предсказателя и сильной корреляции соседних

выборок

размер = 2 − число бит на выборку интервалов квантования и

диапазон

ошибок предсказания, подлежащих передаче, будут значительно меньше,

чем при ИКМ. Это, по идее, должно позволить уменьшить ошибки квантования по сравнению с ИКМ, или же сократить число передаваемых бит за счет сокращения числа интервалов квантования при равной с ИКМ ошибкой квантования.

Выражения сигналов на входе квантователя и предсказателя передатчика TX можно представить следующим образом:

 

=

 

(4.3.1)

 

 

 

 

 

 

 

 

 

 

 

 

=

 

+

 

 

(4.3.2)

 

 

 

 

 

 

Разность между входным сигналом предсказателя = + и выборкой сигнала , согласно (4.3.1)-(4.3.2), определяется выражением:

 

=

 

+

 

 

=

 

 

=

(4.3.3)

 

 

 

 

 

 

 

 

 

 

 

 

 

Таким образом,

 

 

представляет собой квантованное выборку .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

19

Структура приемопередатчика ДИКМ

 

 

 

 

 

 

 

 

Передатчик/кодер

 

 

 

 

 

 

 

 

 

 

 

Приемник/декодер

 

 

x(t)

 

 

x[n]

 

 

d[n]

 

 

 

 

 

 

 

dq[n]

 

 

 

yq[n]=xq[n]≈x(t)

 

 

 

 

 

 

+

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

+ +

 

 

 

 

 

Дискр-р

 

 

 

 

 

 

 

Квантователь

 

 

 

 

 

 

 

Канал

 

 

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xq[n]

 

Предсказатель

xq[n-1]

z¯¹

xq[n]

+

 

 

 

yq[n]

Предсказатель

yq[n-1]

z¯¹

yq[n]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ak

 

 

 

 

 

 

 

 

 

 

 

ak

 

 

 

Примем следующие обозначения:

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

– аналоговый сигнал

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

- выборка аналогового сигнала

 

 

 

 

 

 

 

 

 

 

 

-

 

- квантованная выборка аналогового сигнала

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

= −

- сигнал на входе квантователя

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

- сигнал на выходе квантователя

 

 

 

 

 

 

 

 

-

 

 

=

+

 

- сигнал на входе предсказателя

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-- сигнал на выходе предсказателя Допустим, что

-поступает на вход приемника без ошибок и

- предсказатель RX настроен на предсказатель TX так, что выполняется

 

=

 

 

 

 

 

 

 

 

 

 

Тогда выход декодера в приемнике можно представить следующим выражением:

=

 

+ =

 

+

=

 

 

(4.3.4)

 

 

 

 

 

 

 

Анализ выражения (4.3.4) говорит о том, что для приема квантованного сигнала по каналу связи достаточно передать квантованную ошибку предсказателя .

20

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]