Pular para o conteúdo principal

Questão de Arquitetura de Computadores — Hexadecimal — FGV 2024

Arquitetura de ComputadoresHexadecimal
Código
fg085487
Banca
FGV
Órgão
INPE
Ano
2024
Nível
Superior
Cargo
Tecnologista Júnior I - Desenvolvimento de Software Embarcado
A figura a seguir foi retirada de uma comunicação síncrona SPI usando o mostrador digital MAX 7219.Imagem associada para resolução da questãoFonte: Módulos e Sensores: Guia de Interface com o Arduino. Editora Interciência.Sabe-se que a amostragem é no flanco de subida do relógio. Os dois bytes comunicados, em hexadecimal, são
  1. A06 e 03.
  2. B0C e 03.
  3. C07 e 03.
  4. D0C e 01.
  5. E06 e 01.
Revelar gabarito e comentário

GabaritoD — 0C e 01.

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Resolução

Gabarito: letra D — a conta chega a 0C e 01 — alternativa D.

A ideia por trás

A comunicação SPI é um protocolo síncrono em que o mestre gera um sinal de clock e os dados são enviados bit a bit, um bit por pulso de clock. No MAX7219, cada transmissão tem dois bytes: o primeiro é o endereço do registrador (que seleciona qual função ou dígito será configurado) e o segundo é o dado (o valor a ser escrito nesse registrador).

A leitura dos bits é feita no flanco de subida do clock, ou seja, no momento em que o clock passa de 0 para 1. Os bits são transmitidos do mais significativo (MSB) para o menos significativo (LSB). Para converter em hexadecimal, agrupam-se os bits de 4 em 4, formando nibbles, e cada nibble é convertido segundo a tabela padrão (0000=0, 0001=1, ..., 1100=C).

Esta questão cobra exatamente a leitura correta da forma de onda: identificar os 16 pulsos de clock, ler o nível da linha de dados em cada flanco de subida, agrupar os bits em nibbles e converter para hexadecimal. O erro mais comum é ler no flanco de descida ou inverter a ordem dos bits.

O que a questão dá

  • comunicação SPI com clock e linha de dados (DIN)

  • amostragem no flanco de subida do clock

  • dois bytes transmitidos, um após o outro

O que queremos: os dois bytes comunicados, em hexadecimal

Passo 1 — Contar os pulsos de clock

Cada byte tem 8 bits, e cada bit é transmitido em um pulso de clock. Como são dois bytes, há 16 pulsos no total. Identificar esses pulsos é o primeiro passo para saber onde ler cada bit.

16 pulsos\boxed{16\ \text{pulsos}}
NÃO CAIA NESSA!

Contar apenas 8 pulsos e esquecer que são dois bytes.

Passo 2 — Ler os bits no flanco de subida

A amostragem é no flanco de subida, então em cada pulso de clock, no momento em que o clock sobe de 0 para 1, devemos verificar se a linha de dados está em nível alto (1) ou baixo (0). Isso dá a sequência de bits de cada byte.

Primeiro byte: 00001100; segundo byte: 00000001

NÃO CAIA NESSA!

Ler no flanco de descida (quando o clock cai) — isso inverte os bits e leva a valores errados.

Passo 3 — Agrupar os bits em nibbles

Hexadecimal usa 4 bits por dígito, então cada byte de 8 bits vira dois nibbles. Separar os bits em grupos de 4 é o passo intermediário para a conversão.

Primeiro byte: 0000 1100; segundo byte: 0000 0001

NÃO CAIA NESSA!

Agrupar os bits na ordem errada, por exemplo, do LSB para o MSB, o que trocaria os nibbles.

Passo 4 — Converter cada nibble para hexadecimal

Com os nibbles separados, basta usar a tabela de conversão: 0000=0, 0001=1, 0010=2, ..., 1100=C. Isso transforma os grupos de 4 bits nos dígitos hexadecimais.

Por que esta fórmula: A tabela de conversão binário-hexadecimal é a relação direta entre os 16 possíveis nibbles e os dígitos 0-F.

nibblediˊgitonibble \rightarrow d\acute{i}gito

De onde vem cada valor: nibblenibble = passo 3

00000,1100C,000110000 \rightarrow 0, 1100 \rightarrow C, 0001 \rightarrow 1

Primeiro byte: 0C; segundo byte: 01

NÃO CAIA NESSA!

Confundir o nibble alto com o baixo, trocando 0C por C0 ou 01 por 10.

Resposta: 0C e 01 — alternativa D

Link permanente: /questoes/fg085487