Especificações de Banda Básica

Canal Físico

 

Como já foi dito anteriormente o espectro do Bluetooth é dividido em 79 canais (nos países que apresentam limitações na faixa de ISM são 23) de rádio freqüência, então o canal físico é definido como sendo a seqüência aleatória de saltos.

Cada piconet tem sua própria seqüência de saltos, que é controlada pelo dispositivo mestre, e o clock deste define a fase da seqüência (todos os dispositivos dotados desta tecnologia têm um clock). Saltos sucessivos correspondem a diferentes freqüências, e são feitos a uma taxa nominal de 1600 saltos/s. Numa piconet todos os dispositivos estão sincronizados no tempo e nos saltos do canal usado.

 

 Slots de Tempo

 

Um canal físico é dividido em slots de tempo, cada um destes corresponde a uma freqüência de salto. Os slots têm 625 ms de tamanho e são numerados de acordo com o clock do dispositivo mestre da piconet, essa numeração vai de 0 a 227-1 sendo cíclica.

Os dispositivos mestre e escravo devem transmitir os pacotes dentro dos slots de tempo. Para conseguir uma comunicação full-duplex utiliza-se um esquema TDD (Time Division Duplex), onde o quadro é formado por um pacote de envio e um de recepção, isto significa que mestre e o escravo se alternam na transmissão de dados.

O terminal mestre só pode transmitir nos slots com números pares e o terminal escravo só pode transmitir nos impares. O início do pacote a ser enviado deve estar alinhado com o início do slot de tempo, e pode ter uma duração de múltiplos slots (1, 3 ou 5).

Quadros compostos por múltiplos slots proporcionam maiores taxas, pois eliminam o tempo ocioso entre cada pacote e diminuem a relação cabeçalho/dados. A taxa de dados bruta máxima em um canal físico do Bluetooth é de 1Mbit/s. A tabela abaixo descreve detalhadamente as taxas de transferência de dados assíncronos dependendo do número de slots ocupados e da relação de tráfego entre mestre e escravo.

 

Nº de slots

Simétrica

Assimétrica

Maior

Menor

1

172,8

172,8

172,8

3

390,4

585,6

86,4

5

733,9

723,8

57,6

Tabela 2 - Taxas máximas de dados (Kbits/s)

 

Durante a transmissão de cada pacote a freqüência deve permanecer a mesma, então se o pacote durar apenas um slot de tempo, a freqüência a ser usada deve ser extraída do clock atual do dispositivo, se durar mais de um slot a freqüência é fixada a partir do valor do clock no primeiro slot. Como está ilustrada na figura abaixo, a freqüência a ser usada logo após um pacote de múltiplos slots é definida a partir do valor atual de clock.

 

Figura 4 -TDD com pacotes de múltiplos slots

 

Link Físico

 

Foram definidos dois tipos de link físico para comunicação entre unidades mestre e escravo[1]: SCO (Synchronous Connection-Oriented) e ACL (Asynchronous Connection-Oriented). O link SCO é ponto-a-ponto, ou seja, entre o mestre e um escravo, e sua utilização se dá em intervalos regulares de slots reservados. O ACL é ponto-a-multiponto, entre o mestre e todos os escravos, este link funciona nos intervalos não reservados pelo SCO e pode estabelecer conexões com todos os escravos inclusive os que já estão em links SCO.

Link SCO

Este link suporta conexões ponto-a-ponto simétricas, e é usado normalmente para tráfego de voz. O SCO é considerado como uma conexão comutada a circuito, pois reserva slots de tempo.  Usando SCO, um dispositivo escravo pode estabelecer até três links com um mestre, ou dois links com mestres distintos, reciprocamente o dispositivo mestre pode estabelecer até três links SCO com o mesmo escravo ou dois com escravos diferentes.

Pacotes SCO não podem ser retransmitidos, e o mestre deve enviá-los em intervalos de tempo regulares (Tsco) para o escravo nos slots reservados para a direção mestre-escravo. É possível que o escravo responda com um pacote SCO no próximo intervalo de tempo destinado para direção escravo-mestre.

Para estabelecer um link SCO o mestre deve enviar uma mensagem de setup através do protocolo LMP (Link Management Protocol). Esta mensagem tem o intuito de especificar os slots reservados e para tanto deve conter parâmetros de tempo e offset DC.

Existe um flag de inicialização na mensagem de setup que é usado para prevenir sobreposições de clock. Este flag indica qual o tipo de inicialização deve ser usada, pois existem dois: o tipo um é usado quando o bit mais significativo do clock do mestre é 0 e tipo dois quando é 1.

 

 Link ACL

Como já foi dito anteriormente, os slots de tempo que não são reservados para os links SCO, podem ser usados pelo mestre para trocar pacotes com escravos quaisquer. O link ACL cria uma conexão comutada por pacotes entre a unidade mestra e todas as unidades escravas que estão ativas na piconet. Só pode existir um link deste tipo entre o mestre e um escravo.

Um link do tipo ACL pode ser usado em modo assíncrono como também em modo periódico[2], mesmo assim para a maioria dos pacotes ACL, a integridade dos dados é garantida através da retransmissão de pacotes. Se não existirem dados sendo transmitidos no link ACL e não houver a necessidade de votações (polling), nenhuma transmissão dever ser feita.

 

Pacotes

 

Os pacotes têm um formato que é composto por 3 sub-divisões como é mostrado pala figura abaixo:

 

Figura 5 – Formato do pacote Bluetooth

 

O código de acesso (Access Code) é formado por 72 bits e o cabeçalho (Header) por 54, ambos tem tamanho fixo. Enquanto que o Payload pode variar de 0 a 2745. Existem diversos tipos de pacote e podem existir pacotes formados somente com algumas dessas sub-divisões, ou seja, pacotes só com código de acesso, com código de acesso e cabeçalho, e completo.

 Código de Acesso

 

O código de acesso é usado para três funções: identificação, sincronização e compensação de offset DC. Ele é constituído por preâmbulo (preamble), palavra de sincronização(sync word) e possivelmente um trailer.

 

Figura 6 - Formato do código de acesso

 

Existem três tipos diferentes de código de acesso: código de acesso de canal (CAC – Channel Access Code), código de acesso de dispositivo (DAC – Device Access Code) e código de acesso de requisição de informação (IAC – Inquiry Access Code). Cada um destes tipos é usado por um modo de operação diferente.

O CAC identifica uma piconet (este código esta presente em todos os pacotes do canal da piconet), o DAC é usado em procedimentos de sinalização especiais e por último, o IAC pode ser usado para se verificar quais dispositivos estão no raio de ação de maneira genérica (procura qualquer dispositivo) ou de maneira específica (procura por um tipo específico de dispositivo).

Cabeçalho

 

No cabeçalho estão as informações sobre o controle de link, estas estão distribuídas em seis campos diferentes:

 

Figura 7 – Formato do cabeçalho

 

Este campo indica o endereço de um membro ativo da piconet. Um dispositivo escravo recebe este endereço temporário quando entra na piconet, e o mesmo é usado em todas as comunicações feitas por essa unidade. Quando a unidade mestra necessita mandar uma mensagem de broadcast, o endereço usado é o 000.

 

Este campo é usado para identificação do tipo de pacote. Existem 16 tipos e a interpretação deste código depende do tipo de link físico que está associado ao canal. Existem quatro tipos que são comuns e os outros, doze, são específicos de cada tipo de link. Este código também indica quantos slots de tempo o pacote irá ocupar, possibilitando que as outras unidades deixem de escutar o canal por aquele período.

 

Tabela 3 - Tipos de Pacote

Este campo composto por um único bit é usado no controle de fluxo em um link do tipo ACL. Quando o buffer do dispositivo receptor está cheio, uma indicação de parada é feita (FLOW=0) para cessar a transmissão temporariamente. Outros pacotes que não os ACL ainda podem ser recebidos. Quando o buffer se esvazia uma indicação de partida é enviada (FLOW=1). Se nenhuma indicação for feita ou o cabeçalho trazendo a indicação contiver erro, é assumido FLOW=1.

 

Este outro bit é indicação de reconhecimento, isto significa que é através dele que o transmissor é informado do sucesso da transferência de um pacote de dados de payload. Quando a recepção não é feita com sucesso, um NACK (ARQN=0) é enviado, quando é um ACK (ARQN=1) é retornado. O sucesso na recepção do pacote é verificado através de um código de redundância (Cyclic Redundancy Check - CRC).

 

O SEQN é usado para descartar pacotes retransmitidos por engano, isto é feito comparando-se este bit de pacotes consecutivos. A cada transmissão de pacote de dados com CRC, este bit é invertido, criando assim uma numeração seqüencial. Quando ocorre uma retransmissão por um erro na mensagem de ACK, o receptor recebe dois pacotes iguais e descarta o segundo, pois o primeiro já foi recebido corretamente.

 

HEC significa Header-Error-Check que serve para garantir a integridade do cabeçalho.  Esta integridade é garantida através de uma verificação na qual o HEC recebido é comparado com o HEC calculado no destino, se forem diferentes todo o pacote é descartado. Para calcular o HEC, inicializa-se o circuito de cálculo com um valor de 8 bits, o UAP (Upper Adress Part) do mestre ou do escravo dependendo do caso, e calcula-se o HEC para o 10 bits do cabeçalho. O HEC consiste em uma palavra de 8 bits em representação octal.

Payload

O campo de Payload se divide em 2 outros sub-campos: o campo síncrono para voz e o campo assíncrono para dados. Quando os pacotes são ACL, o Payload só tem o campo para dados, e quando os pacotes são SCO tem só o campo de voz. Existe a possibilidade de pacotes contendo ambos os campos, mas é uma exceção.

Este campo tem tamanho fixo dependendo do tipo de pacote. Nos pacotes do tipo HV (High Quality Voice) são 240 bits e nos pacotes DV (Data and Voice) 80bits. Em ambos os casos não há a presença de cabeçalho de payload.

 

O campo de dados é formado por três partes, cabeçalho de payload, corpo e possivelmente CRC. O cabeçalho tem um ou dois bytes de tamanho e especifica o canal lógico, o controle de fluxo no canal e indica o tamanho do payload. O corpo contem a informação transmitida e determina taxa E/S (throughput). O CRC é o código de verificação cíclica de redundância.

Resumo dos pacotes:

 

Tabela 4 - Pacotes de controle de link

 

Tabela 5 - Pacotes ACL

 

Tabela 6 - Pacotes SCO

 

FEC é um código corretor de erro que pode ter taxas de 1/3 e 2/3.

 

 

 Canais Lógicos

 

Na arquitetura Bluetooth foram definidos cinco canais lógicos: canais de controle LC e LM, e canais de usuário UA, UI e US. Os canais de controle são usados nos níveis de controle e gerenciamento de link, já os canais de usuário são usados para carregar informações síncronas, assíncronas e periódicas do usuário. Todos os canais são carregados no payload dos pacotes com exceção do canal LC que segue no cabeçalho do pacote.

 

Canal LC (Link Control)

 

O canal de controle de link é mapeado no cabeçalho dos pacotes e está presente em todos os pacotes exceto nos pacotes de ID, pois este não apresenta cabeçalho. Neste canal, segue informações de controle de link baixo nível como ARQs, controle de fluxo e caracterização de payload.

 

Canal LM (Link Manager)

 

No canal de gerenciamento de link são trocadas informações entre os gerenciadores de link do mestre e dos escravos. Normalmente são usados pacotes do tipo DM protegidos.

 

Canais UA/UI (User Asynchronous/Isochronous Data)

 

O canal UA carrega dados assíncronos do  L2CAP, esses dados podem ser transmitidos em um ou mais pacotes.

O canal de dados periódicos é temporizado por pacotes iniciais em níveis mais altos da arquitetura.

 

Canal US (User Syncronous Data)

 

Este canal carrega os dados síncronos do usuário sobre o link SCO.

 

 

 


Voltar  para página de arquitetura

Ir para a próxima camada da arquitetura


[1] Na versão 1.2 da especificação do Bluetooth já foram definidos outros tipos de link: eSCO (Extended Synchronous Connection-Oriented), ASB (Active Slave Broadcast), PSB (Parked Slave Broadcast)

[2]Modo periódico está sendo usado como tradução para isochronous mode, pois isochronous significa algo caracterizado por ter uma duração igual e por ocorrer em intervalos iguais.