Projete um circuito verificador de paridade para a informação gerada pelo circuito do exercício anterior.
Passo 1
O que o enunciado pede:
- Projetar um circuito verificador de paridade para a informação gerada pelo circuito do exercício anterior.
Informações relevantes dadas no enunciado:
- Apenas foi dada a instrução acima (não foram enviados detalhes do circuito anterior).
Informações que faltam (necessárias para um projeto totalmente específico):
- Quantos bits de dados são enviados (valor de
). - Se o bit de paridade é do tipo par (even) ou ímpar (odd).
- Se o bit de paridade é anexado aos bits de dados como um único bit extra (caso típico) e em que posição.
- Se o circuito precisa sinalizar “erro” (flag) ou “válido” (ack), e formatos de saída desejados.
- Restrições tecnológicas (somente NAND/NOR disponíveis, limite de portas, requisitos de atraso).
Como esses dados não foram fornecidos, vou assumir o caso mais comum e dar um projeto genérico e parametrizável que cobre os dois tipos de paridade e qualquer número de bits
. Também dou um exemplo concreto para
(caso muito frequente em exercícios).
Passo 2
Conceito básico de paridade (aula curta e prática).
- Paridade é um bit extra
incorporado à mensagem de forma a detectar erros de transmissão simples. - Paridade par (even parity): o número total de bits ‘1’ na palavra de dados acrescido de
é par. - Paridade ímpar (odd parity): o número total de bits ‘1’ na palavra de dados acrescido de
é ímpar. - Operador lógico fundamental: XOR (ou exclusivo). Propriedade útil: o XOR de um conjunto de bits é
se o número de 1’s for ímpar; é se o número de 1’s for par. - Se
, então <=> os dados têm um número ímpar de 1’s.
- Se
- Assim a verificação de paridade é feita calculando o XOR de todos os bits recebidos (dados + bit de paridade) e inspecionando o resultado.
Passo 3
Definição das variáveis e do sinal de saída (explicando cada símbolo).
- Seja
os bits de dados recebidos. - Seja
o bit de paridade recebido (gerado pelo transmissor). - Definir a soma XOR total
- Interpretação de
: - Para paridade par: se
a palavra está correta (nenhum bit com erro ímpar detectado); se foi detectado erro. - Para paridade ímpar: o transmissor garante que
quando não há erro. Logo, se então está correto; se detecta erro.
- Para paridade par: se
- Portanto, sinais úteis a produzir:
- sinal
que indica erro detectado. - sinal
que indica palavra válida.
- sinal
Relações lógicas:
- Para paridade par:
- Para paridade ímpar:
Passo 4
Projeto lógico com portas XOR (etapas práticas para implementar na prova).
- A implementação mais direta: construir uma “árvore XOR” que calcule
. - Método para construir a árvore XOR:
- Agrupar os bits em pares e aplicar XOR em cada par.
- Em seguida XOR dos resultados intermediários em etapas, até restar um único bit
. - XOR final com
(ou incluir já em uma das folhas).
- Complexidade de portas:
- Para
bits de dados + 1 bit , o número de entradas a XORar é . - Uma árvore balanceada usa aproximadamente
portas XOR (mais precisamente, número de portas XOR = número de termos a combinar menos 1). Ex.: para 5 entradas são 4 XORs em árvore balanceada.
- Para
- Exemplo de construção passo-a-passo para
(caso concreto):- Calcular
. - Calcular
. - Calcular
. (pode-se fazer e depois .) - Saída
para paridade par, ou para paridade ímpar.
- Calcular
Passo 5
Implementação quando só há portas NAND/NOR/AND/OR (transformações práticas).
- Fórmula básica do XOR em termos de AND/OR/NOT:
- Para implementar com NAND apenas, usa-se a identidade:
e De Morgan. Uma implementação comum com NANDs:-
. -
. -
. -
.
-
- Para mais de dois termos, aplicar XOR em árvore usando a construção acima para cada XOR de par de sinais.
- Observação prática: usar XOR nativo (se disponível no kit/FPGA) é mais simples e tem menor atraso.
Passo 6
Atenção a sincronização e atraso (coisa de prova / projeto prático).
- Em circuitos reais, atenção ao atraso de propagação: uma árvore XOR profunda aumenta atraso. Para grandes
, balanceie a árvore XOR (XOR de pares, depois pares dos resultados, etc.) para minimizar profundidade. - Se
e os dados chegam em tempos diferentes, sincronize-os (por exemplo, registe os bits num clock antes da verificação) para evitar falsos alarmes. - Paridade detecta apenas número ímpar de bits errados; múltiplos erros pares passam despercebidos. Se exigir detecção maior, usar CRC ou códigos Hamming.
Passo 7
Exemplos numéricos rápidos para fixar (como treinar na prova).
- Suponha
, dados .- Calcule XOR dos dados:
. -
; ; . Então XOR dos dados = . - Para paridade par, transmissor deve escolher
de modo que . Se chegar e nenhum erro, . - Se um bit for invertido em trânsito e agora
, indica erro detectado.
- Calcule XOR dos dados:
- Treine montando a árvore XOR no papel para palavras de 3, 4 e 8 bits para ganhar rapidez em prova.
Passo 8
Resumo operacional pronto para implementar (o projeto que entregar na prova).
- Entrega textual do projeto:
- Entradas:
. - Circuito: árvore XOR que computa
. - Saídas:
- para paridade par:
e . - para paridade ímpar:
e .
- para paridade par:
- Implementação física: usar portas XOR em árvore; se só houver NAND, usar a implementação de XOR com NAND mostrada no Passo 5; balancear árvore para reduzir atraso; registrar sinais se necessário.
- Entradas:
- Esse projeto é parametrizável pelo número de bits
e pelo tipo de paridade.
Resposta
Para paridade par:
Para paridade ímpar: