Creando una máquina de clasificación (máquina de estados finitos) [cerrado]

-3

Así que aquí está mi tarea:

Diseñar una máquina de clasificación. La idea es diseñar un registro de escritura de dos puertos de lectura de dos puertos archivo con k registros. Los datos se almacenan en registros utilizando algunos interruptores de entrada (dirección y los datos son especificados por los interruptores). Luego hay dos contadores, C1 y C2. Un cuatro la máquina de estado ordena los números de la siguiente manera.

Cargar los registros con valores iniciales. Arranque la máquina en estado S0.

Estado S0: C1 se inicializa a 0. Vaya al estado S1.

Estado S1: C2 se inicializa a C1 +1. (Necesita agregar 1 circuito). Ir al estado S2.

Estado S2: Lea dos registros de dos direcciones especificadas por C1 y C2. Llámalos D1 y D2. Introduzca D1 y D2 en un circuito maximizador / minimizador. Produce MAX y MIN en dos puertos. En el borde del reloj MAX se escribe en el registro C1 y MIN se escribe en el registro C2. (Esto swaps max y min).

Si C1 = k-2 entonces ve al estado S3 De lo contrario, si C2 = k-1, aumente C1 y vaya al estado S1 El incremento C2 y pasar al estado S2

Estado S3: Los registros se muestran en las pantallas de 7 segmentos. Hecho.

Esto es lo que he encontrado hasta ahora:

Cuandoziyzjsonambos1,sesuponequeelcircuitodebedetenerse,supongo...Simplementenoséquédebohacerconellosenloquerespectaaconectarlosacualquiercosa.EntoncesnotengoideadequéhacerconlasalidadeBltAynosédóndeseobtienelaentradadeBoutmux.TampocosédedóndevienenlashabilitacionesdeAinyBin.

asímeencantaríaquealguienmeayudaraconesto:P.

P.S.Básicamentecopiéundiagramadeunlibrodetexto.Sesuponequeelnuestroes"ligeramente diferente", pero honestamente no tengo ni idea de lo que estoy haciendo. Nos enseñaron cómo hacer cosas como esta y todo lo que hace el libro de texto es mostrarnos un ASM y luego mostrar el circuito sin ninguna explicación. Así que sí ... apesta. Básicamente, no tengo idea de cómo pasa de un gráfico vago de ASM a un circuito de control de ruta de datos.

    
pregunta Tyler Dahle

1 respuesta

3

Tengo un interés particular en la clasificación de hardware, por lo que voy a intentarlo, a pesar de los problemas con la pregunta.

En términos muy generales, para cualquier algoritmo de clasificación en el lugar, tendrá que poder leer dos valores fuera de la RAM (archivo de registro), compararlos, y si están en el orden incorrecto , escríbalos de nuevo en las ubicaciones opuestas desde donde se leyeron.

El primer paso es crear una ruta de datos que pueda realizar esos pasos.

  • La mayoría de los FPGA tienen bloques de RAM estática (BRAM) que tienen puertos duales, lo que facilita esa parte. Alimenta una dirección a cada puerto y obtiene los dos valores de datos que necesita comparar en las salidas de datos.

  • La siguiente parte es crear un módulo que compare los dos valores y produzca una señal lógica que sea verdadera si es necesario intercambiarlos. Esto usualmente toma la forma de un sustractor binario con una pequeña lógica en el signo y lleva bits del resultado para determinar A > B, A≥B, A < B o A≤B, lo que necesite.

  • Finalmente, si se necesita el intercambio, debe enrutar las dos salidas de datos del BRAM de vuelta a las entradas de datos, pero en los puertos opuestos. Luego, cuando afirma la habilitación de escritura en cada puerto, obtiene el valor del otro puerto.

El segundo paso es identificar las conexiones entre la lógica de control y la ruta de datos.

  • Dos direcciones, una para cada puerto de BRAM.
  • La señal de estado del módulo de comparación.
  • Una habilitación de escritura que va a ambos puertos de la BRAM.

La lógica de control también necesitará algún tipo de señal de entrada de "inicio" y una señal de salida de "hecho".

Puede ser un poco complicado si considera que la lógica de generación de direcciones es parte de la ruta de datos o la lógica de control. Depende del tipo de algoritmo de clasificación que desee implementar. Si el direccionamiento es estrictamente secuencial, puede usar contadores binarios arriba / abajo y hacerlos parte de la ruta de datos. Luego, sus entradas de control (y el estado de subdesbordamiento / desbordamiento) se convertirán en conexiones adicionales desde / hacia la lógica de control.

El tercer paso es comenzar a dibujar un diagrama de tiempo que muestre qué cambia cuándo, tanto para la ruta de datos como para las señales de control. ¿Cuándo son válidos los datos / estado, y cuándo deben ser estables las salidas de control (direcciones y habilitaciones de escritura) y cuándo pueden cambiar?

El cuarto paso es crear una definición de máquina de estado que cumpla con los requisitos derivados del paso anterior. Finalmente, a continuación, elige una tecnología de implementación adecuada para la máquina de estado, como por ejemplo, lógica aleatoria o microcodificación.

¿Algo de esto ayuda? ¿Tiene alguna pregunta específica sobre alguna parte?

Por su pregunta, tengo la impresión de que se ha adelantado al pensar en la máquina de estado antes de tener una idea sólida de qué es lo que necesita controlar.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas