Você está na página 1de 16

Telecomunicações

LEEC

Desmodulador de QPSK

Autores:
mariamadalenarob@tecnico.ulisboa.pt
Maria Madalena Barros (100026)
miguel.t.elias.de.oliveira@tecnico.ulisboa.pt
Miguel Oliveira (103551)

Grupo 31

2023/2024 – 1º Semestre, P1
IST ULisboa

Conteúdo

1 Introdução 2

2 Modulação PSK 2
2.1 BPSK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.1.1 Bit error rate (BER) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 QPSK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2.1 Bit error rate (BER) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

3 Resultados Experimentais 4
3.1 BPSK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1.1 GNU Radio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.1.2 Análise dos resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.2 QPSK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.1 GNU Radio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3.2.2 Análise dos resultados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

4 Impacto do TED gain 14

5 Conclusões 15

Telecomunicações 1 LEEC
IST ULisboa

1 Introdução
Neste segundo trabalho laboratorial, o objetivo principal é projetar um desmodelador QPSK
com sincronização de sı́mbolo, através do GNU Radio. Analisa-se também o comportamento
do sistema BPSK e QPSK, ajustando os parâmetros: Loop Bandwidth do módulo Symbol Sync
e Noise Voltage.

2 Modulação PSK
A modulação de fase por chaveamento (PSK - Phase Shift Keying) é uma forma de mo-
dulação digital que utiliza mudanças de fase da onda portadora para representar os dados.
Cada variação de fase representa um determinado conjunto de bits, tornando possı́vel enviar
múltiplos bits por sı́mbolo.

2.1 BPSK
No BPSK (Binary phase-shift keying), apenas duas fases distintas são usadas para represen-
tar os dados binários, 0 e 1. Geralmente, as fases utilizadas 0°e 180°. Isso resulta nos seguintes
sinais de transmissão:

• Para o bit ”0”, é usado um sinal com fase de 180°

• Para i bit ”1”, é usado um sinal com fase de 0°

Essa técnica de modulação é obtida multiplicando o sinal digital retangular (modulante) e


uma portadora de frequência mais alta. Como se pode ver na figura 1

Figura 1: Modulação BPSK

Os dados binários são frequentemente transmitidos com os seguintes sinais:


(
x0 (t) = a0 × ϕ(t), para o sı́mbolo 0
x1 (t) = a1 × ϕ(t), para o sı́mbolo 1
em que: !
T
t− 2
ϕ(t) = cos(2πfc t)rect (1)
T

Telecomunicações 2 LEEC
IST ULisboa

é o vetor da base que gera o espaço vetorial, e a0 = −A e a1 = A. Os sinais x0 (t) e x1 (t), com
x0 (t) = −x1 (t).
Podemos então invocar a seguinte representação em constelação:

Figura 2: Diagrama de Constelação BPSK

Esta é uma forma mais simples de PSK e é eficiente em termos de largura de banda, mas
mais suscetı́vel a erros devidos ao ruı́do.

2.1.1 Bit error rate (BER)


O bit error rate do BSPK em condições de ruı́do branco gaussiano aditivo (AWGN) pode
ser calculado da seguinte maneira:
 
1 d
Pe ≈ erf c √ (2)
2 2 N0

Onde d2 = 2 e N0 = [0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 3.5, 4.0]

2.2 QPSK
No QPSK (Quadrature phase-shift keying), a informação é codificada em quatro estados de
fase ( -135°, 135°, -45°, 45°), e são necessários dois bits para identificar um estado de fase. Isto
diminui a taxa de transmissão, reduzindo também a largura de banda necessária.

Telecomunicações 3 LEEC
IST ULisboa

(a) Diagrama de Constelação QBSK (b) Modulação QPSK para diferentes ângulos

Figura 3: Esquemas do QPSK

As equações que descrevem as quatro fases em QPSK, representadas na Figura 3b:

A cos (2πfc t − 135◦ ), para 00





A cos (2πf t + 135◦ ), para 01

c
(3)


 A cos (2πfc t + 45◦ ), para 11
A cos (2πfc t − 45◦ ), para 10

2.2.1 Bit error rate (BER)


O bit error rate do QSPK é calculado da seguinte maneira:
 
1 d
Pe ≈ erf c √ (4)
2 2 N0

3 Resultados Experimentais
Em ambas as montagens usamos as variáveis LoopBW e noise v para mudar os valores de
Loop Bandwidth no bloco Symbol Sync e de Noise Voltage no bloco Channel Model, respetiva-
mente.

Figura 4: Variáveis

Telecomunicações 4 LEEC
IST ULisboa

3.1 BPSK
3.1.1 GNU Radio

Figura 5: Modelador BPSK

No Vector Source define os bits que se pretende transmitir, neste caso o vetor é:

[240, 240, 240, 15, 15, 15, 240, 240, 240, ] + [9, 62, 67, 10, 0, 26, 10, 35, 51]

+[15, 15, 15, 240, 240, 240, 15, 15, 15, 0, 0, 0, 0, 0, 0, 0, 0]


O bloco Constellation Object controla mais facilmente o bloco Constellation Modulator. A
constelação BPSK possui dois pontos, como foi referido na introdução teórica: +1 (para o bit
1) e -1 (para o bit 0). Assim o parâmetro Constellation points é definido como [0, 1]. O throttle
controla a taxa de amostragem do sinal - neste caso gera amostras a uma taxa de 32K.
No Channel Model é onde está a variável noise v, que permite variar o ruı́do do canal,
variando também a quantidade de erros do desmodulador.
O Symbol Sync garante que cada grupo de 8 amostras seja tratado de maneira eficaz,
determinando o melhor momento para a amostragem. É neste bloco que se varia o Loop
Bandwidth para determinar o ruı́do mı́nimo para cada ruı́do do canal.

Figura 6: Tradutor BPSK

O Binary Slicer converte os sinais negativos em 0 e os positivos em 1. E, finalmente, o pack


K bits, agrupa 8 bits recebidos consecutivamente num byte e por fim, o output é guardado num
ficheiro.
O diagrama de constelação obtida foi o seguinte:

Telecomunicações 5 LEEC
IST ULisboa

Figura 7: Diagrama de constelação de BPSK

3.1.2 Análise dos resultados


Para comparar o ficheiro dos bits enviados (bpsk sent.dat) com o ficheiro dos bits recebidos
(bpsk rec.dat) modificou-se ligeiramente o top blocks.py (código gerado automaticamente pelo
GNU Radio), de modo a fazer com que as variáveis LoopBW e noise v variem automaticamente.
Os resultados obtidos para cada valor de LoopBW e noise v vão sendo colocados numa tabela:
1 def main ( top_block_cls = top_block , options = None ) :
2
3 if StrictVersion ( " 4.5.0 " ) <= StrictVersion ( Qt . qVersion () ) <
StrictVersion ( " 5.0.0 " ) :
4 style = gr . prefs () . get_string ( ’ qtgui ’ , ’ style ’ , ’ raster ’)
5 Qt . QApplication . se tGraph icsSys tem ( style )
6 qapp = Qt . QApplication ( sys . argv )
7
8 n_LoopBW = 50
9 maximum_BW = 0.5
10 increment = maximum_BW /( n_LoopBW )
11 noise_V = [0.5* x for x in range (0 , 9) ]
12 LoopBW = [ x * increment for x in range (0 , n_LoopBW ) ]
13
14 import openpyxl
15 # cria o ficheiro excel para registar os resultados para cada valor de
noise e loopBW
16 workbook = openpyxl . Workbook ()
17 worksheet = workbook . active
18
19 worksheet . cell ( row =1 , column =1 , value = " Noise , LoopBW " )
20
21 for i , loop in enumerate ( LoopBW ) :
22 # Regista os valores do LoopBW ao longo da primeira coluna
23 worksheet . cell ( row = i +2 , column =1 , value = str ( loop ) )
24

Telecomunicações 6 LEEC
IST ULisboa

25 for i , noise in enumerate ( noise_V ) :


26 # Regista os valores do noise ao longo da primeira linha
27 worksheet . cell ( row =1 , column = i +2 , value = str ( noise ) )
28 for j , loop in enumerate ( LoopBW ) :
29 # Cria um novo top_block para cada valor de noise e loopBW
30 tb = top_block_cls ()
31 # Define o novo valor de noise e loopBW para o top_block
32 tb . set_noise_v ( noise )
33 tb . set_LoopBW ( loop )
34 # Inicia o top_block
35 tb . start ()
36 # Espera que o top_block termine
37 tb . wait ()
38 # Calcula o n m e r o de bits diferentes entre o que foi enviado e
o que foi recebido
39 different_bits = diff ()
40 # Regista o n m e r o de bits diferentes na c l u l a correspondente
41 worksheet . cell ( row = j +2 , column = i +2 , value = different_bits )
42
43 workbook . save ( " output . xlsx " )

Listing 1: top block script para variar LoopBW e Noise Voltage


Na função diff(), compara-se o ficheiro dos bits enviados (bpsk sent.dat) com o ficheiro dos
bits recebidos (bpsk rec.dat) e retorna o número de bits diferentes.
A partir do código pode-se construir uma tabela, que permite perceber quais os valores
ótimos de Loop Bandwidth para cada valor de Noise Voltage. Para nı́veis baixos de ruı́do, o
aumento ou diminuição da largura de banda do loop de retroação vai ter pouco efeito, dado
que o ruı́do não é forte o suficiente para levar a interferências intersimbólicas significativas.
O aumento do ruı́do vai levar ao aumento da interferência. Para valores de ruı́do maiores, o
aumento da largura de banda - que leva a um maior perı́odo de amostragem do sinal para a
retroação - vai conduzir a resultados diferentes em nº de erros. Para os valores 2.0 e 2.5, o
aumento da largura de banda vai levar à diminuição do nº de erros, já que o sinal original
ainda se destaca em relação ao ruı́do, e o tempo acrescentado de amostragem leva a uma maior
probabilidade de encontrar os máximos do sinal original. Porém, para valores de ruı́do maiores,
o aumento da largura de banda vai aumentar significativamente o nº de erros dado a tensão do
ruı́do se aproximar da do sinal original.

Telecomunicações 7 LEEC
IST ULisboa

Noise, LoopBW 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 Soma
0.0 0 0 2 9 18 25 34 42 45 175
0.01 0 0 2 9 17 25 30 42 45 170
0.02 0 0 2 7 17 25 29 41 44 165
0.03 0 0 2 6 17 24 27 39 42 157
0.04 0 0 2 4 14 23 27 38 42 150
0.05 0 0 1 4 14 21 27 37 42 146
0.06 0 0 0 4 14 18 24 34 41 135
0.07 0 0 0 4 12 18 25 32 37 128
0.08 0 0 0 4 12 18 24 31 36 125
0.09 0 0 0 3 11 17 24 33 38 126
0.1 0 0 0 4 9 18 23 32 38 124
0.11 0 0 0 4 8 18 21 32 38 121
0.12 0 0 0 4 6 18 21 32 37 118
0.13 0 0 0 3 6 16 20 31 36 112
0.14 0 0 0 3 6 16 20 29 35 109
0.15 0 0 0 3 6 13 20 28 35 105
0.16 0 0 0 4 6 12 20 27 38 107
0.17 0 0 0 4 6 11 20 26 38 105
0.18 0 0 0 4 6 11 20 27 37 105
0.19 0 0 0 3 5 12 18 27 37 102
0.2 0 0 0 3 5 11 18 26 37 100
0.21 0 0 0 3 5 11 17 27 35 98
0.22 0 0 0 3 5 11 17 30 33 99
0.23 0 0 0 3 5 10 17 30 33 98
0.24 0 0 0 3 5 9 17 29 35 98
0.25 0 0 0 3 5 9 18 27 36 98
0.26 0 0 0 2 5 7 18 27 43 102
0.27 0 0 0 1 5 7 17 26 49 105
0.28 0 0 0 1 5 7 16 26 87 142
0.29 0 0 0 1 5 8 17 25 92 148
0.3 0 0 0 1 5 8 18 27 97 156
0.31 0 0 0 1 6 8 18 28 101 162
0.32 0 0 0 1 6 8 17 47 101 180
0.33 0 0 0 1 6 9 17 79 103 215
0.34 0 0 0 1 6 9 17 81 100 214
0.35000000000000003 0 0 0 1 6 9 17 93 106 232
0.36 0 0 0 1 6 9 18 95 107 236
0.37 0 0 0 1 6 9 18 100 110 244
0.38 0 0 0 1 6 10 17 100 112 246
0.39 0 0 0 1 6 10 21 101 112 251
0.4 0 0 0 1 6 10 21 102 113 253
0.41000000000000003 0 0 0 1 6 10 78 108 111 314

Telecomunicações 8 LEEC
IST ULisboa

0.42 0 0 0 1 6 10 78 114 110 319


0.43 0 0 0 1 6 10 93 117 109 336
0.44 0 0 0 1 6 12 96 117 114 346
0.45 0 0 0 1 6 12 99 117 88 323
0.46 0 0 0 1 6 12 102 117 84 322
0.47000000000000003 0 0 0 1 6 12 103 116 83 321
0.48 0 0 0 1 6 12 107 116 87 329
0.49 0 0 0 1 6 12 111 111 94 335

Soma 0 0 11 133 379 650 1712 2819 3303

Tabela 1: BPSK - Tabela que relaciona o nº de erros em bits e o valor da Loop Bandwidth,
para cada valor da Noise Voltage. Os valores mı́nimos de erros para cada nı́vel de ruı́do estão
assinalados a verde. O valor de erros somados para cada nı́vel de ruı́do e de largura de banda
também estão assinalados.

Figura 8: Progressão dos erro, para cada patamar de ruı́do, enquanto Loop Bandwidth varia

Ao analisar o número total de erros na tabela, observa-se que o menor número de erros
ocorre quando o parâmetro Loop Bandwidth assume valores entre 0.21 e 0.25 rad/samples. Isso
sugere que nesse intervalo de valores, o sistema apresenta um desempenho mais robusto em
termos de minimização de erros.
No entanto, ao observar a figura 8, é possı́vel notar uma tendência de aumento no número
de erros, especialmente quando o nı́vel de ruı́do é mais elevado. Assim, em situações de maior
ruı́do, o aumento do Loop Bandwidth, a partir de um certo ponto, leva ao aumento significativo
de erros.

Telecomunicações 9 LEEC
IST ULisboa

Por outro lado, nos patamares de ruı́do mais baixos, as variações no número de erros não são
tão significativas. No entanto, nota-se que, tendo um Noise Voltage entre [1.5, 2.5], a escolha
de valores mais baixos para o Loop Bandwidth podem resultar na ocorrência de alguns erros.

3.2 QPSK
3.2.1 GNU Radio

Figura 9: Modelador QPSK

O esquema é semelhante ao anterior do BPSK. O bloco Constellation Object muda refletindo


a mudança de modulação, passando a consistir de 4 sı́mbolos no plano imaginário. O número
de sı́mbolos por amostra.

Figura 10: Tradutor QPSK

Este esquema também é semelhante ao anterior, porém tendo em conta que este sinal
terá uma parte imaginária, temos de extrair separadamente a parte real (no bloco Complex
to Real ) e a parte imaginária (no bloco Complex to Imaginary). Estes dois sinais passam
depois pelo Interleave, de modo a que os sı́mbolos alternem entre as pares real e imaginária
que o processamento subsequente seja feita de uma forma mais sincronizada. O diagrama de
constelação obtido foi o seguinte:

Telecomunicações 10 LEEC
IST ULisboa

Figura 11: Diagrama de constelação de QPSK

3.2.2 Análise dos resultados


Para conseguir ir alterando os valores de LoopBW e noise v, usa-se um algoritmo parecido
ao usado para o BPSK (no Listing 1).

Telecomunicações 11 LEEC
IST ULisboa

Noise, LoopBW 0.0 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 Soma
0.0 0 0 0 1 7 9 12 18 24 71
0.01 0 0 0 1 7 8 12 17 26 71
0.02 0 0 0 1 5 8 11 17 24 66
0.03 0 0 0 0 5 8 12 20 22 67
0.04 0 0 0 0 4 8 13 20 24 69
0.05 0 0 0 0 4 8 14 21 24 71
0.06 0 0 0 0 4 7 15 20 22 68
0.07 0 0 0 0 3 6 16 20 25 70
0.08 0 0 0 0 3 6 17 20 25 71
0.09 0 0 0 0 3 7 19 20 25 74
0.1 0 0 0 0 3 7 18 20 26 74
0.11 0 0 0 0 2 7 18 18 23 68
0.12 0 0 0 0 2 7 18 18 24 69
0.13 0 0 0 0 2 7 17 17 23 66
0.14 0 0 0 0 2 7 16 17 24 66
0.15 0 0 0 0 2 6 14 17 25 64
0.16 0 0 0 0 2 6 12 15 25 60
0.17 0 0 0 0 2 6 12 15 25 60
0.18 0 0 0 0 3 6 12 18 26 65
0.19 0 0 0 0 3 6 12 20 29 70
0.2 0 0 0 0 4 5 13 23 31 76
0.21 0 0 0 0 4 5 12 23 33 77
0.22 0 0 0 0 4 5 13 24 34 80
0.23 0 0 0 0 4 5 13 28 37 87
0.24 0 0 0 0 4 6 17 25 72 124
0.25 0 0 0 0 4 7 18 25 74 128
0.26 0 0 0 0 4 6 19 28 67 124
0.27 0 0 0 1 4 6 20 29 69 129
0.28 0 0 0 0 4 5 20 70 104 203
0.29 0 0 0 0 4 5 21 70 102 202
0.3 0 0 0 0 3 5 22 71 104 205
0.31 0 0 0 0 3 6 21 66 103 199
0.32 0 0 0 0 2 7 24 55 92 180
0.33 0 0 0 0 2 8 32 104 92 238
0.34 0 0 0 0 2 8 40 102 90 242
0.35000000000000003 0 0 0 0 2 9 65 102 107 285
0.36 0 0 0 0 2 10 76 102 99 289
0.37 0 0 0 0 2 11 59 90 104 266
0.38 0 0 0 0 2 11 55 103 105 276
0.39 0 0 0 0 2 11 48 103 96 260
0.4 0 0 0 0 2 10 53 89 94 248
0.41000000000000003 0 0 0 0 2 10 90 89 97 288

Telecomunicações 12 LEEC
IST ULisboa

0.42 0 0 0 0 2 11 103 104 97 317


0.43 0 0 0 0 2 39 108 102 95 346
0.44 0 0 0 0 2 34 101 85 82 304
0.45 0 0 0 0 1 60 103 84 95 343
0.46 0 0 0 0 1 78 89 108 81 357
0.47000000000000003 0 0 0 0 2 53 101 111 80 347
0.48 0 0 0 0 4 52 65 103 85 309
0.49 0 0 0 0 5 56 61 99 97 318

SOMA 0 0 0 4 153 684 1772 2585 3009

Tabela 2: QPSK - Tabela que relaciona o nº de erros em bits e o valor da Loop Bandwidth,
para cada valor da Noise Voltage. Os valores mı́nimos de erros para cada nı́vel de ruı́do estão
assinalados a verde. O valor de erros somados para cada nı́vel de ruı́do e de largura de banda
também estão assinalados.

Figura 12: QPSK - Progressão dos erro, para cada patamar de ruı́do, enquanto Loop Bandwidth
varia

Como antes visto no BPSK, para valores pequenos de ruı́do há pequena quantidade de erros,
porém estes começam a aparecer para valores mais baixos de ruı́do. Isto pode ser justificado
por ser mais provável acontecer erros numa constelação com o dobro dos pontos. De novo, há
um aumento do nº de erros com o aumento da tensão de ruı́do, e para valores maiores de ruı́do,
o aumento da largura de banda da retroação leva ao aumento dos erros. Nota-se que o valor
ótimo para a Loop Bandwidth se situa entre 0.20 e 0.30 para altos valores de ruı́do.

Telecomunicações 13 LEEC
IST ULisboa

4 Impacto do TED gain


O TED Gain afeta bastante o processo do cálculo da taxa de amostragem apropriada para
garantir uma sincronização precisa entre os dados recebidos e o tempo de amostragem. No caso
desta estar incorretamente parametrizado, a parametrização do Loop Bandwidth deixa de ter
tanto impacto.
O cálculo deste ganho depende do roll-off do RRC e do timing error detector utilizado
(ML-TED):

Figura 13: TED Gain vs rolloff factor

Assim, chega-se ao valor de cerca de 4.34 de TED-Gain para um rolloff de 0.75.


Dado esse novo valor de TED Gain, obtemos o seguinte:

(a) BPSK (b) QPSK

Figura 14: Progressão dos erro, para cada patamar de ruı́do, enquanto Loop Bandwidth varia,
para o novo TED Gain

Telecomunicações 14 LEEC
IST ULisboa

Observa-se, então, o impacto da parametrização do TED Gain. Para cada patamar de


ruı́do, à medida que se aumenta o Loop Bandwidth, a variação no número de Erros de Bits é
bastante menos acentuada do que no caso em que TED Gain é de 1.

5 Conclusões
Podemos comparar os erros obtidos pelos dois tipos de modulação usando um gráfico BER,
em que se consegue perceber os diferentes comportamentos relativamente ao nı́vel de ruı́do.

Figura 15: Gráfico Bit-error ratio (BER)

É visı́vel que os dois seguem curvas muito parecidas, de forma logarı́tmica, tal como é a
forma da curva teórica. Porém o QPSK tem maior BER do que o BPSK.
Isto é explicado pelo QPSK envolver uma constelação com o dobro de quantidade de pontos,
com duas dimensões. Para uma mesma probabilidade de erro para cada dimensão, existem o
dobro das zonas correspondentes a um determinado sı́mbolo, e logo maior probabilidade de erro
no geral. A eficiência espetral do QPSK é o dobro da BPSK, como é provado nas equações
seguintes:

rb = log2 (M )
1−α
B = rs
2
BRF = 2B
rb log2 (M )
Eficiência espetral = =
BRF 1+α
BPSK e QPSK correspondem a M = 2 e M = 4, respetivamente. Logo:
1
Eficiência espetralBP SK =
1+α
1
Eficiência espetralQP SK =
2+α
Logo, a eficácia da modulação QPSK é maior do que a de BPSK.

Telecomunicações 15 LEEC

Você também pode gostar