Máquina de estados finitos para x / 3

1

Me pidieron que diseñara un FSM para generar x / 3 sin el resto.

Esto debe implementarse utilizando un sistema síncrono definido de la siguiente manera:

entrada: en cada ciclo de reloj t, un bit x [t]

salida: en cada ciclo de reloj t, un bit y [t]

funcionalidad:

sea x un número representado por la concatenación de los bits de entrada donde x [t] es el LSB

sea y un número representado por concatenación de los bits de salida donde y [t] es el LSB

entonces y es el resultado de x / 3 (la función de piso con x / 3 como argumento)

por ejemplo:

t 1 2 3 4

x [t] 1 0 1 0

y [t] 0 0 1 1

Estoy incluyendo dos intentos, pero ninguno de ellos en realidad está dando el resultado correcto, sino el resto (es decir, x mod 3), ¿verdad? Ambos estaban destinados a rendir x / 3 y, sin embargo, parece que ambos producen el resto en su lugar.

    
pregunta peripatein

1 respuesta

2

Creo que ya hiciste lo correcto. La tabla se ve así:

$$ \ begin {array} {r | cc} &erio; \ textrm {bits:} \\  &erio; 0 & \ quad1 \\ \ hline \ textrm {estados:} \ quad0 & 0: '0 \ textrm' & \ quad1: '0 \ textrm' \\ 1 & 2: '0 \ textrm' & \ quad 0: '1 \ textrm' \\ 2 & 1: '1 \ textrm' & \ quad 2: '1 \ textrm' \ end {array} $$

Usted ingresa (comienza) en el estado 0 y luego se indexa en la tabla a medida que llegan los bits. Así que el diagrama de estado se ve como:

Heagregadolaspartesde"emisión", ya que esto es lo que se necesita para que usted obtenga el cociente. (Obviamente, el resto es el estado mismo). Necesitará algún método para acumular los bits que se emiten (registro de desplazamiento, por ejemplo).

Aquí están los resultados para todos los valores de entrada de cuatro bits:

$$ \ begin {array} {r | cc} \ textrm {input} & \ textrm {salida emitida} & \ textrm {resto (estado)} \\ \ hline 0000 & 0000 & 0 \\ 0001 & 0000 & 1 \\ 0010 & 0000 & 2 \\ 0011 & 0001 & 0 \\ 0100 & 0001 & 1 \\ 0101 & 0001 & 2 \\ 0110 & 0010 & 0 \\ 0111 & 0010 & 1 \\ 1000 & 0010 & 2 \\ 1001 & 0011 & 0 \\ 1010 & 0011 & 1 \\ 1011 & 0011 & 2 \\ 1100 & 0100 & 0 \\ 1101 & 0100 & 1 \\ 1110 & 0100 & 2 \\ 1111 & 0101 & 0 \ end {array} $$

    
respondido por el jonk

Lea otras preguntas en las etiquetas