• Nenhum resultado encontrado

4.3 GiDEL ProcWizard

5.1.3 Transceptor Módulo de controle

O módulo Trans_CTRL encapsula toda a lógica necessária que gera a sinalização de controle para todos os demais módulos. Essa lógica controla a geração do pacote de dados, o checksum CRC, a entrada de dados por meio da FIFO_Input, e as retransmissões, caso sejam necessárias. Também é de responsabilidade desse módulo indicar para a arquitetura por meio do sinal tx_error se houve algum erro na transmissão dos dados. Este é o caso, por exemplo, do número de retransmissões ter sido atingido. Por fim, O sinal i_flush indica ao controle do transceptor o encerramento de entrada de dados na FIFO. Dessa forma, é possível completar o pacote de dado com zeros, se necessário, mantendo o padrão de transmissão. A figura 5.10 apresenta os sinais desse módulo.

Figura 5.10: Saída de dados do módulo Trans_CTRL

A seguir seus principais sinais são descritos:

? fifo_empty: Sinal de entrada no módulo de controle que é proveniente da FIFO de

entrada. Indica a máquina de controle que existem dados a serem enviados.

? tx_error: Sinal de saída que indica para o sistema que está utilizando o canal de

comunicação que houve alguma falha no barramento e a transmissão foi abortada.

? i_flush: Sinal de entrada utilizado pelo sistema que indicará a máquina de controle

que a inserção de dados na FIFO de entrada foi terminada. Esse sinal é importante para que o último pacote seja enviado corretamente.

? o_flush_ready: Sinal que indica ao sistema que o último pacote foi enviado com

sucesso.

? rst_fifo_pkg: Sinal de reset utilizado para apagar os dados da FIFO de retransmissão

deixando-a preparada para armazenar o próximo pacote a ser enviado.

? rd_fifo_pkg: Sinal de leitura da FIFO de pacotes. Esse sinal é utilizado pela máquina

de controle para fazer leituras nessa FIFO.

? rd_fifo_input: Sinal de leitura da FIFO de entrada. Esse sinal é utilizado pela máquina

de controle para fazer leituras dos dados a serem transmitidos pelo barramento.

? tx_sel: Sinal de controle de seleção de entrada do multiplexador Mux_Tx. Controla

se a saída desse multiplexador corresponderá à saída da FIFO de entrada, de pacotes, ou do checksum.

? rt_sel: Sinal de controle de seleção de entrada do multiplexador Mux_Rx. Controla a

retroalimentação da FIFO de pacotes.

? endofpacket: Sinal que indica ao módulo CRC_GEN o final do pacote de dados. ? startofpacket: Sinal que indica ao módulo CRC_GEN o início do pacote de dados. ? ack: Sinal de sinalização enviado pelo receptor indicando que o pacote foi recebido

com sucesso.

? nack: Sinal de sinalização enviado pelo receptor indicando que houve falha na

transmissão do pacote.

? out_of_sync: Sinal de sinalização que indica ao transceptor que o módulo receptor

não está sincronizado.

? o_sync_start: Sinal de saída para o receptor para indicar que o início da configuração

de fase de relógio da PLL pode ser realizada.

? i_sync_ready: Sinal de sinalização que indica ao transceptor que a configuração da

PLL foi realizada com sucesso e que o processo de envio de dados pode ser iniciado. Para o módulo Trans_CTRL iniciar o controle de transmissão de dados, estes já devem estar armazenados na FIFO_Input. Uma vez que esses dados são escritos nessa FIFO de entrada e o sinal fifo_empty assume o nível lógico baixo, o transceptor já inicia o processo de retirada de dados dessa FIFO e os encaminha para o envio no barramento. Antes que isso aconteça é importante que ambos transceptor e receptor estejam sincronizados. Somente com esses módulos sincronizados é que pode-se dar início a transferência de dados pelo canal. Assim, o transceptor verifica primeiramente o sinal de out_of_sync que corresponde ao sinal que indica se o relógio do

70 5.1. MÓDULO DE TRANSMISSÃO - TRANSCEPTOR receptor está sincronizado com o da fonte, ou transceptor. Logo em seguida é necessário esperar que a configuração de fase da PLL seja feita para dar início a transmissão. Essa sinalização de configuração de PLL se dá por meio do sinal de entrada i_sync_ready. Esse sinal é emitido pelo receptor assim que a configuração de fase de PLL for alcançada. Geralmente, isso se dá logo após o início do funcionamento do ambos os módulos. O sincronismo é realizado por uma PLL embutida no receptor. Os processos de geração de out_of_sync e i_sync_ready serão detalhados ao longo do trabalho.

à medida que os dados do pacote são encaminhados para o módulo Trans_PHY, gera- se o checksum referente ao mesmo e ambos os dados do pacote e código CRC são enviados conforme já mencionado anteriormente. Em seguida, aguarda-se o valor do sinal de ack ou nack. Caso o sinal ack possua nível lógico alto, verifica-se se a FIFO_Input está vazia. Se não estiver, inicia-se a transmissão de um novo pacote; se estiver vazia, finaliza-se a transmissão. A transmissão será reiniciada no momento que o sinal fifo_empty assuma o nível lógico baixo novamente, indicando que novos dados foram inseridos para serem transmitidos. Caso o sinal nack possua nível lógico alto, verifica-se se o número máximo de retransmissões foi atingido; Se não, inicia-se a retransmissão do pacote a partir da PKG_FIFO; se sim, sinaliza-se que ocorreu um erro na transmissão e encerra-se a mesma. Nesse caso, não é possível reiniciar a transmissão, exceto reinicializando os módulos. O fluxograma da figura 5.11 exemplifica todo o processo de transmissão.

Figura 5.11: Fluxograma de transmissão de pacotes

Com a demonstração do funcionamento do Trans_CTRL finaliza-se a apresentação do módulo transceptor. A próxima seção irá detalhar o módulo de recepção.

Documentos relacionados