Circuitos Electrónicos. Primer parcial curso 2006-07 Ante el creciente interés por las apuestas deportivas, el Departamento Técnico de las Loterías y Apuestas del Estado os ha encargado la actualización de su sistema de verificación de premios. En la actualidad, el sistema cuenta con un Lector de quinielas, el cual envía mediante un canal síncrono paralelo cada una de las 15 apuestas de una columna, expresando con un 1 en las líneas DATO1, DATOX y DATO2 la apuesta realizada. Estos tres valores estarán disponibles cuando la señal DATO_VALIDO valga 1 (ver cronograma de la Figura 2). La duración de los pulsos de datos y su cadencia son variables, pudiendo durar varios ciclos de reloj. Con objeto de recordar la quiniela ganadora, se dispone de 15x3 interruptores que almacenan los resultados de cada partido, expresando con un 1 el signo correspondiente (1, X ó 2). El sistema debe leer todas las apuestas de una columna e indicar si ha recibido premio según los valores indicados en la Tabla I. El resultado de una evaluación se mantendrá en las salidas hasta que finalice la siguiente. ACIERTOS PREMIO B1 B0 PLENO_15 15 1 1 1 1 14 1 1 1 0 13 1 1 0 0 12 1 0 1 0 11 1 0 0 0 <11 0 0 0 0 Tabla I. Indicación de premios. Figura 1. Cronograma de las señales de entrada. Figura 2. Cronograma de las señales de entrada. Se desea diseñar un circuito digital síncrono que calcule los premios. Dicho sistema se compone de los bloques funcionales representados en la Figura 1: CAPTURA: almacena los datos de entrada cada vez que se active DATO_VALIDO. COMPARADOR: compara la apuesta actual con la ganadora. Ésta se define por los interruptores citados (suponer que son valores de entrada digitales constantes). La señal ACIERTO debe dar un 1 indicando que se ha acertado dicho partido. EVALUADOR_PREMIOS: tras pasar las 15 apuestas se debe generar las salidas de premio conforme la Tabla 1. CONTADOR: sirve para saber cuando se han leido 14 apuestas, indicándolo con un 1 en CUENTA_14. AUTOMATA: se encarga de indicar cuando se procesa una de las primeras 14 apuestas con un 1 en PROCESA_APUESTA, o un 1 en PROCESA_PLENO15 cuando se trata del pleno al 15. Se pide: 1.- Diseñar el bloque CAPTURA (1 punto). 2.- Diseñar el bloque CONTADOR (1 punto). 3.- Diseñar el bloque AUTOMATA, incluyendo Diagrama y Tabla de Transición (1 punto), esquema lógico (2 puntos). Si este circuito tuviera el camino crítico del sistema, cuánto tardaría en evaluar 1 millón de columnas? (1 punto). 4.- Diseñar el bloque COMPARADOR (2 puntos). 5.- Diseñar el bloque EVALUADOR_PREMIOS (2 puntos). Nota 1: Se recuerda que son 14 apuestas más una adicional denominada pleno al quince. Es necesario acertar las 14 primeras para que se tenga en cuenta ésta última apuesta. Nota 2: También se recuerda la existencia de apuestas dobles o triples. Nota 3: Se suponen señales de reloj (CLK) y reset asíncrono (/RESET) globales del sistema. Nota 4: Tras analizar una columna, el sistema debe quedar preparado para evaluar la siguiente. Nota 5: Se permiten puertas de 2 entradas (t PD(puerta) =10ns), multiplexores 16 a 1, y biestables tipo D (t PD(biest) =10ns). TIEMPO: 2h 30min
SOLUCIÓN 1.- Bloque CAPTURA. Para capturar los tres datos mientras nos lo indique la señal DATO_VALIDO, sólo hacen falta tres celdas elementales de almacenamiento, mostradas en la Figura 1, donde se realimenta la salida del estado para retener el dato. El multiplexor 2 a 1 usado se muestra en la Figura 2. Figura 1. Registro para capturar los tres datos. Figura 2. Multiplexor 2 a 1. 2.- Bloque CONTADOR. Este circuito se basa en la celda del contador incremental serie con reset. Esta celda la denominamos CELDA_CONT. El biestable T se realiza empleando un biestable D y una puerta XOR. El reset síncrono se implementa mediante un multiplexor (ver Figura 3). Figura 3. Celda elemental (CELDA_CONT) de un contador con reset síncrono. Figura 4.Contador de 4 bits. La condición de haber llegado a 14 se puede obtener con la ayuda de puertas AND: Figura 5. Circuito para almacenar la condición de 14 (=1110).
3.- Bloque AUTOMATA. 3.1.-Diagrama y Tabla de Transición de estados. Este autómata tiene dos funciones: por una parte tiene que distinguir entre el procesado de las primeras 14 apuestas y la número 15, ya que debe avisar al bloque EVALUADOR_PREMIOS para su correcto resultado. Por otra parte, no debemos olvidar que la duración del pulso DATO_VALIDO y los tiempos muertos entre los mismos son variables, por lo que hay que garantizar que solamente se procesan los datos una vez por cada indicación. 0X 11 0/00 10 Estado DATO_VALIDO APUESTA14 SALIDAS Descripción del estado 00 01 11 10 Procesa Apuesta Procesa_ Pleno15 3/01 0X 1/10 (0) (0) (0) 3 1 0 0 Espera de dato (1) 2 2 2 2 1 0 Procesar apuesta normal (2) 0 0 (2) (2) 0 0 Espera fin apuesta X0 2/00 XX (3) 2 - - 2 0 1 Procesar Pleno 15 1X Figura 6. Diagrama de estados. Tabla 1. Tabla de transición de Estados. Realizando una máquina de Moore y codificando los estados, se tiene la Tabla 2. DATO_VALIDO APUESTA14 SALIDAS ESTADO 00 01 11 10 Procesa Apuesta Procesa_Pleno15 Q 1 Q 0 DATO_VALIDO APUESTA14 Q 1 Q 0 00 01 11 10 DATO_VALIDO APUESTA14 Q 1 Q 0 00 01 11 10 (00) (00) 11 01 0 0 00 10 10 10 10 1 0 01 00 00 (10) (10) 0 0 10 10 - - 10 0 1 11 00 0 0 1 1 01 0 0 0 0 11 0 - - 0 00 0 0 0 0 00 0 0 1 0 01 1 1 1 1 11 1 - - 1 00 0 0 1 1 Tabla 2. Codificación de estados D 0 =DATO_VALIDO*Q 1 * Q 0 D 1 =DATO_VALIDO*(Q 1 +APUESTA14)+Q 0 De la misma Tabla 2 se obtiene PROCESA_APUESTA=Q 1 * Q 0 y PROCESA_PLENO_15= Q 1 * Q 0. 3.2.- Esquema lógico. No debemos olvidar que el estado de reposo se ha codificado con el valor 00, por lo que debemos activar las señales de /CLR de ambos biestables con el reset asíncrono /RST. Figura 7. Esquema resultante de la máquina de estados.
3.3.- Camino crítico del sistema. Como podemos ver en el circuito combinacional de entrada obtenido en el apartado anterior, el camíno crítico es el de la señal D1 en su dependencia con DATO_VALIDO, debiendo pasar esta última señal por U48, U49A y U43A. Por ello: T crit = t PD(AND) + 2 x t PD(OR) =30ns; T min = T cirt + t PD(biest) =40ns. Dado que hacen falta al menos tres ciclos de reloj por apuesta T apuesta = 3*T min, el tiempo en evaluar una columna como mínimo es T columna = 15*3*T min = y por consiguiente, el tiempo en evaluar 1 millón de columnas será T=1e6*15*3*40e-9=1.8s. Hay que hacer notar que este resultado no es realista, dado que no se está considerando el tiempo que deberá esperarse para que el sistema mecánico del lector avance a una nueva columna y un nuevo boleto, que sin duda serán tiempos muy superiores a los necesarios por la electrónica. 4.- Bloque COMPARADOR. Este bloque comparador es un circuito totalmente combinacional, donde se va comparando cada apuesta con el resultado válido almacenado como ceros y unos por los interruptores. Por ello, agrupando los datos por columnas, sólo es necesario emplear un multiplexor 16 a 1 por cada una, y barrer los distintos resultados en función de las señales del contador que nos indica el número de la apuesta que estamos procesando. Como solución alternativa se podría emplear registros de desplazamiento, pero esta solución implicaría un mayor número de puertas. La comparación de cada apuesta se realiza con una puerta AND, dado que sólo se quiere determinar si existen sendos unos. Nótese que una XNOR daría un uno tanto para cuando hay unos en las entradas como cuando hay ceros, dando falsos aciertos. Por último, la OR de las tres comparaciones nos da un uno en ACIERTO si la apuesta ha sido correcta. Nótese que las apuestas dobles o triples sólo darían un uno en la comparación correcta. Por último, hay que tener en cuenta que la señal ACIERTO permanece con el valor correspondiente hasta que no lleguen otros datos indicados por la señal DATO_VALIDO, y deberá ser procesada una única vez por el autómata, tal y como se ha diseñado. Hay que hacer notar que los inversores U16A, U17A y U18A son necesarios en la realización que se muestra por haber empleado los multiplexores 74150 que niegan su salida. Caso de emplearse multiplexores convencionales, estos inversores no hacen falta. Figura 8. Bloque COMPARADOR.
5.- Bloque EVALUADOR_PREMIOS. Este bloque esta constituido por dos bloques fundamentales. El primero es un contador para obtener el número de aciertos. Para ello se emplea un contador con reset síncrono como el ya usado. La única diferencia es que se activa la cuenta cuando se haya acertado y nos indique el autómata que se procese la apuesta. Con ello se garantiza que solamente se tiene en cuenta una vez. Este contador se empleará para contabilizar únicamente las primeras 14 apuestas. Figura 9. Contador de apuestas acertadas. El segundo bloque es el encargado de procesar la apuesta 15, codificar los resultados y almacenarlos en registros de captura. Se emplean puertas AND de 4 entradas que se realizarían con tres puertas AND de dos entradas en cascada. Figura 10. Circuito para obtener el resultado de la columna. Empleando la estrategia de determinación directa de aciertos, el codificador de premios se puede plantear directamente, como se muestra la Figura 11. Figura 11.Bloque codificador de premios. Sin embargo, y aunque esta solución es la más inmediata, se podrían sustituir las cuatro puertas AND de 4 entradas y el circuito de la Figura 11 por otro más compacto empleando síntesis de circuitos combinacionales. Figura 12. Circuito que obtiene el pleno al quince cuando se han acertado los primeros 14 resultados.
Simulación del circuito. Se adjuntan las simulaciones correspondientes a dos columnas, una primera con 15 aciertos y otra con 12. Estas simulaciones han sido divididas en dos pantallas para facilitar su lectura. (a) (b) Figura 13. Simulación del circuito cuando se tienen 15 aciertos.
(a) (b) Figura 14. Simulación del circuito cuando se tienen 12 aciertos. Nota final: Existen alternativas válidas a la solución aquí planteada, que se han tenido en cuenta en la corrección del examen.