ELECTRÓNICA DIGITAL - etsist.upm.es±o... · Electrónica Digital (Plan 2000) Diseño Semidirigido...

34
ELECTRÓNICA DIGITAL Departamento de Sistemas Electrónicos y de Control Curso 2009/2010 DISEÑO SEMIDIRIGIDO

Transcript of ELECTRÓNICA DIGITAL - etsist.upm.es±o... · Electrónica Digital (Plan 2000) Diseño Semidirigido...

ELECTRÓNICA DIGITAL

Departamento de Sistemas Electrónicos y de Control Curso 2009/2010

DISEÑO SEMIDIRIGIDO

Electrónica Digital (Plan 2000) Diseño Semidirigido

2

ÍNDICE

1 Presentación ................................................................................................. 3 2 Análisis de requisitos .................................................................................... 5

2.1 Especificaciones funcionales ................................................................. 5 2.2 Características de las especificaciones ................................................. 5 2.3 Requisitos no funcionales ...................................................................... 5 2.4 Análisis de las especificaciones ............................................................ 5 2.5 Análisis de las interfaces de usuario ..................................................... 9

3 Propuesta y análisis de soluciones ............................................................. 11 3.1 Exploración del Espacio de Diseño ..................................................... 12

3.1.1 Solución para el circuito generador de señales ............................... 12 3.1.2 Solución para las Interfaces de Usuario .......................................... 15 3.1.3 Refinamiento de las soluciones escogidas ...................................... 15

4 Diseño Jerárquico ....................................................................................... 16 4.1 Diseño jerárquico del bloque Controlador del Teclado ........................ 18

4.1.1 Barrido del teclado ........................................................................... 19 4.2 Diseño jerárquico del bloque Controlador del Display ......................... 21 4.3 Diseño del bloque Síntesis de la Señal ............................................... 22

5 Realización y verificación del prototipo ....................................................... 25 6 Anexo: Hojas de resultados ........................................................................ 28

Electrónica Digital (Plan 2000) Diseño Semidirigido

3

1 PRESENTACIÓN

En esta práctica se van a realizar las operaciones que habitualmente se llevan a cabo para diseñar un circuito digital cableado a partir de una serie de especificaciones. El objetivo es que el alumno asimile una metodología que le permita afrontar diseños complejos y que practique las técnicas y procedimientos apropiados para cada fase del diseño.

El modelo de ciclo de diseño que se va a utilizar se representa en la Figura 1. La estructura de la práctica se corresponde con las distintas fases de este proceso. Para cada fase se describen los aspectos más relevantes que afectan al desarrollo de las tareas que se deben realizar.

ANÁLISIS DE REQUISITOS

PROPUESTA Y ANÁLISISDE SOLUCIONES

DISEÑO JERÁRQUICO

DISEÑO LÓGICO

VERIFICACIÓN DELSISTEMA

ANÁLISIS DE REQUISITOSANÁLISIS DE REQUISITOS

PROPUESTA Y ANÁLISISDE SOLUCIONES

DISEÑO JERÁRQUICO

DISEÑO LÓGICO

VERIFICACIÓN DELSISTEMA

Figura 1

Se incluyen, además, un conjunto de ejercicios con el objeto de que practique algunas de las tareas descritas. Es importante que complete estos ejercicios, pero también que lea este documento en su totalidad. Tenga en cuenta que el objetivo es que asimile la metodología y practique las técnicas de diseño de manera que, una vez terminada, pueda enfrentarse al diseño –esta vez sin ayuda– con mayores garantías de éxito. Para realizar los ejercicios que se proponen en esta práctica se le entregan varios proyectos Max+plus II que contienen partes del diseño (completa o parcialmente realizadas) y el diseño completo. En concreto, los proyectos que se entregan son:

• teclado

• display

• ejer_dds

• generador

Electrónica Digital (Plan 2000) Diseño Semidirigido

4

Para realizar esta práctica debe seguir el siguiente procedimiento:

1. Deberá leer los tres primeros capítulos de este documento y realizar los ejercicios 1 y 2 antes de la primera clase de laboratorio destinada a la realización de la práctica. Su profesor comprobará que ha realizado este trabajo mediante un cuestionario o una entrevista personal.

2. En las clases de laboratorio deberá completar el resto de los ejercicios.

3. Al finalizar los ejercicios deberá entregar a su profesor las hojas de resultados y guardar en su PC los ficheros de los proyectos en los que haya trabajado.

Electrónica Digital (Plan 2000) Diseño Semidirigido

5

2 ANÁLISIS DE REQUISITOS

2.1 Especificaciones funcionales Se pide diseñar un circuito capaz de generar una señal cuadrada cuya

frecuencia y ciclo de trabajo puedan ser programados por el usuario. El rango de frecuencias generables deberá ir desde 1 Hz hasta, al menos, 100 kHz, aunque sería deseable aumentar el límite superior (el inferior es indiferente), teniendo en cuenta que el error máximo admisible, dentro del rango, debe ser inferior al 2%. Para el ciclo de trabajo bastará con una resolución del 5%, aunque se deberá estudiar la posibilidad de aumentarla. Se indica, además, la conveniencia de que la respuesta a los cambios en la programación sea lo más rápida posible y que el sistema debe comenzar a funcionar generando una señal de 10 kHz con un ciclo de trabajo del 50%.

2.2 Características de las especificaciones La primera información que se conoce sobre un proyecto de desarrollo de un

circuito suele consistir en una descripción de su funcionamiento cuya extensión, precisión y claridad variará en cada caso. En general suele estar clara la función o funciones básicas del sistema que se quiere diseñar, aunque no estén claramente definidas todas sus características o no se haya reparado en algún detalle que obligue a añadir –o permita eliminar- algún requisito. A veces la funcionalidad propuesta es tentativa y se esperan ocurrencias (del diseñador) para enriquecer la idea original o encontrar alternativas. La descripción de la funcionalidad suele venir mezclada con otros requisitos que condicionan la realización del proyecto, como, por ejemplo, con qué medios ha de realizarse (tecnológicos y/o humanos), cuánto tiene que costar (el producto, prototipo y/o la ingeniería de desarrollo), o en cuánto tiempo debe estar –o sería deseable que estuviese– terminado.

Un ingeniero de diseño desea empezar a trabajar siempre a partir de unas especificaciones claras y completas de la funcionalidad requerida, y de una declaración del resto de factores que condicionan la ejecución del proyecto, para poder ejecutar los estudios y trabajos que avalen o descarten la viabilidad del diseño. Siendo todo esto compatible, por supuesto, con que existan especificaciones provisionales y durante su análisis se desechen o sustituyan por otras si su realización se ve comprometida por algún motivo (o se encuentra que resultan manifiesta y convenientemente mejorables). Incluso en estas ocasiones debe quedar claro cuál es el margen de maniobra de que se dispone para imaginar y buscar alternativas que puedan formar parte de las especificaciones finales.

2.3 Requisitos no funcionales El diseño deberá realizarse en una tarjeta PRINCE en un plazo de dos

semanas1.

2.4 Análisis de las especificaciones Las especificaciones funcionales del generador de señal presentan algunas

vaguedades. Se establecen unos rangos y resoluciones mínimos que, se sugiere,

1 Este requisito resulta, evidentemente, necesario por condiciones derivadas de la ejecución de la práctica en el laboratorio de Electrónica Digital, pero debe entenderse que en cualquier situación análoga en el campo profesional existirán condicionantes que den lugar a obligaciones de semejante naturaleza.

Electrónica Digital (Plan 2000) Diseño Semidirigido

6

debería intentarse ampliar, también resulta evidente la falta de referencias a las interfaces de usuario. Los requisitos tecnológicos y de ejecución no parecen, en principio, un obstáculo importante.

Empezando el trabajo de análisis por la información más gruesa, un diseñador de circuitos digitales con algo de experiencia se inclinaría, probablemente, por arriesgar las siguientes opiniones:

1.- Que la complejidad de las funciones que hay que realizar es baja: Se trata de generar señales cuadradas periódicas de una determinada frecuencia (algo que resulta factible realizar, por ejemplo, obteniéndolas por división de frecuencia a partir de una frecuencia de reloj patrón), conformando además su ciclo de trabajo (esto no parece tampoco muy difícil). El diseño lógico se abordará, evidentemente, utilizando técnicas de diseño síncrono.

2.- La necesidad de implementar el diseño utilizando la tarjeta PRINCE permite definir algunos parámetros de interés: la frecuencia de reloj de las tarjetas es de 14.7456 MHz y el FPGA disponible tiene una densidad de 30000 puertas y puede encajar típicamente diseños síncronos con frecuencias en torno a los 25-30 MHz.

3.- En conclusión, lo primero que hay que dilucidar es la viabilidad de los rangos y resoluciones exigidos teniendo en cuenta que el diseño va a ser síncrono y el reloj del circuito tiene la mencionada frecuencia de 14.7456 MHz.

Los cálculos y procedimientos de averiguación y análisis que pueden tener que acometerse en el desempeño profesional pueden ser muy variados –aunque en ocasiones el ingeniero esté especializado en un campo de aplicación y tenga un profundo conocimiento del análisis y problemática de las cuestiones científicas y técnicas que se relacionan con él–, por lo que resulta muy conveniente disponer de unos sólidos conocimientos científicos y técnicos (de matemáticas, física, mecánica, telecomunicaciones, informática, etc.) y, por supuesto, ingenio, para poder desarrollar eficientemente estas tareas. En ocasiones, cuando los problemas tienen una dimensión considerable y la importancia del proyecto lo justifica, este trabajo se realiza en equipo, aunando los conocimientos de grupos de personas de los que pueden formar parte expertos en diferentes áreas. Pero cuando esto no ocurre, el estudio hay que enfrentarlo apoyándose fundamentalmente en los conocimientos y cualidades propias.

En el caso que se presenta, el análisis principal es matemático. Se trata de calcular el error con que se pueden generar frecuencias de reloj de hasta 100 kHz a partir de un reloj de 14’7456 MHz, teniendo en cuenta que la resolución para su generación es de un ciclo del reloj patrón (esto se deriva del hecho de que el diseño sea síncrono). Además hay que precisar si el ciclo de trabajo puede simultáneamente fijarse con la resolución deseada.

Para generar una señal cuadrada de una determinada frecuencia a partir de otra de frecuencia mayor (el reloj del circuito, en nuestro caso), hay que calcular el número de ciclos de reloj de la señal de mayor frecuencia que se necesitan para generar el periodo de la de frecuencia menor. En general, el número de periodos necesarios para generar la frecuencia exacta no será un valor entero; por ejemplo, para obtener 100 kHz a partir de 14.7456 MHz, hay que dividir por:

14.745.600/100.000 = 147’456

Electrónica Digital (Plan 2000) Diseño Semidirigido

7

Si, como en nuestro caso, para simplificar la realización del circuito, se determina que el número de periodos va a ser entero, la mejor aproximación a la frecuencia deseada se obtiene dividiendo por el entero más próximo a este valor, 147:

14.745.600/147 = 100.310’2 Hz

El ajuste del valor de división a un valor entero da lugar a un error en la frecuencia generada, en este caso de:

310’2 x 100/100000 = 0’31%

Es evidente que el impacto de la aproximación sobre la exactitud de la señal generada depende, en primer lugar, de la magnitud del factor de división entero y, en segundo lugar, de la parte decimal del valor exacto (la variación máxima sería de 0’5 unidades si se ajusta al entero más cercano o de 1 si se ajusta sistemáticamente al mayor o menor). El error del ajuste tenderá a disminuir al generarse señales de frecuencia menor, por ejemplo, para una señal de 7 Hz:

14.745.600/7 = 2.106.514’28 → 2.106.514 → 14.745.600/2.106.514 = 7’000001 Hz

El error es de 0’000001 x 100 / 7 = 0’000014%, un error 20.000 veces menor.

Una forma rápida de establecer una cota para el error cometido (sin recurrir a la teoría de cálculo matemático discreto), es evaluar el error para la frecuencia más alta del rango con una variación de 1 unidad respecto al factor exacto de división, por ejemplo, en este caso:

14.745.600/146’456 = 100.682’8 Error = 0’683% 14.745.600/148’456 = 99.326’3 Error = 0’674%

Es evidente que el rango superior de frecuencia se puede alcanzar cumpliendo los requisitos de exactitud (error < 2%), pero resulta necesario también saber hasta donde podría ampliarse.

Puede realizarse un estudio más riguroso recurriendo a las matemáticas. La relación entre el valor de la frecuencia generada y el factor de división es:

XKF =

Donde F es el valor de la frecuencia que se genera, K una constante y X el factor de división. La variación de F ante un cambio infinitesimal de X viene dada por el producto de la derivada de la expresión anterior por el diferencial de X:

dXX

KdF 2−

=

La variación de la frecuencia (en tanto por uno) se obtiene dividiendo el módulo de la expresión anterior por el valor de la frecuencia:

XdX

FdF

=

Esta expresión permite establecer una cota para el porcentaje de error de la frecuencia generada:

100100 ×Δ

=×Δ

XX

FF

Electrónica Digital (Plan 2000) Diseño Semidirigido

8

Es obvio, a partir del análisis de esta expresión, que las suposiciones anteriormente anticipadas son ciertas: cuanto menor sea la magnitud del factor de división y mayor la de la aproximación, mayor es el error. Repitiendo el análisis anterior con ayuda de esta expresión, obtenemos una cota de error (para cualquier frecuencia menor o igual que 100 kHz):

%683'0100456'146

1(%) =×=ΔFF

Ejercicio 1

Averigüe, utilizando la expresión obtenida para la cota de error, hasta dónde se podría ampliar el margen de frecuencias programables, teniendo en cuenta únicamente el error de exactitud en la generación por división.

La segunda cuestión a dilucidar es si, dentro del margen de frecuencias, se va a poder alcanzar la resolución para el ciclo de trabajo. En relación con esto, está claro que decir que la resolución es del 5% es lo mismo que decir que se podrán definir ciclos de trabajo del 5%, 10%, 15% y así, sucesivamente, hasta el 95%. Para que ello sea posible, resulta suficiente con que el periodo de la señal generada sea divisible en al menos 20 partes.

Una cuestión diferente es la exactitud con que se puede fijar el ciclo de trabajo deseado2. El análisis es parecido al realizado para el valor de la frecuencia; el ciclo de trabajo se podrá controlar haciendo que durante un periodo de la señal generada ésta esté a nivel alto los periodos de reloj calculados mediante la ecuación:

Periodos de reloj a nivel alto = Periodos de reloj en un ciclo de salida x Ciclo de trabajo/100

Puesto que, al igual que en el cálculo anterior, hay que ajustar el valor a un número entero, se producirá un error que, también, es mayor cuanto menor sea la parte entera del valor ajustado; en esta aplicación, el caso peor se da cuando el ciclo de trabajo y el número de periodos de reloj en cada periodo de la señal generada es mínimo, de hecho, la expresión analítica que establece una cota de error es parecida a la obtenida anteriormente:

100(%)....

×Δ

XX

TCTC

Donde C.T es el ciclo de trabajo y X es el número de ciclos a nivel alto. La cota de error para el ciclo de trabajo para 100 kHz, sería:

%74'1510035'61

2 Este análisis se refiere a la exactitud del ciclo de trabajo tomando como referencia el valor de frecuencia

ya ajustado (con error), y no el valor de frecuencia exacto.

Electrónica Digital (Plan 2000) Diseño Semidirigido

9

Ejercicio 2 Teniendo en cuenta los análisis realizados, determine qué elemento del sistema

cambiaría si deseará conseguir una mayor precisión en la frecuencia o el ciclo de trabajo generados. Razone, brevemente, cómo debe adaptarse este componente a distintas especificaciones de rangos y errores.

Después de haber realizado estos análisis, se considera que puede alcanzarse un rango de frecuencias programables entre 1Hz y 200 kHz y una resolución del ciclo de trabajo del 5%, fijándose este objetivo en las especificaciones del diseño.

2.5 Análisis de las interfaces de usuario Una vez determinada la realización del sistema en las condiciones mencionadas,

se pasa a considerar el problema de la interfaz de usuario. Se realizan las siguientes consideraciones:

1.- Se necesita una interfaz que permita que el usuario indique el valor de frecuencia o ciclo de trabajo que desea programar.

2.- Para la realización de esta interfaz se podría utilizar el teclado o, alternativamente, los microinterruptores y pulsadores de la tarjeta PRINCE; para decidirse por una de las dos alternativas, se repasan las ventajas e inconvenientes –desde un punto de vista funcional– de ambas opciones:

Con el teclado hexadecimal de la tarjeta PRINCE se puede implementar un protocolo de programación que permita establecer la frecuencia o el ciclo de trabajo en decimal y utilizar las teclas correspondientes a los dígitos hexadecimales para la ejecución de comandos (es necesario distinguir si lo que se programa es la frecuencia o el ciclo de trabajo, dar la orden de entrada de valor, poder borrar un dígito en caso de error al pulsar, etc.). El principal problema de está opción son las perspectivas sobre la complejidad del diseño: habrá que realizar un controlador de teclado, un intérprete de teclas, poner los medios para manejar los dígitos que se van tecleando…

Una interfaz basada en los microinterruptores y los pulsadores promete requerir un diseño mucho más sencillo. Pero la definición de valores mediante interruptores es tediosa y resulta fácil equivocarse al establecer valores… En general suele evitarse el uso de este tipo de procedimientos, salvo para la configuración de sistemas (una programación que se mantiene durante largos periodos de tiempo).

3.- También parece necesaria una interfaz en la que el usuario pueda comprobar los valores programados en cada momento. En la tarjeta PRINCE se puede presentar información visual mediante displays de 7 segmentos o mediante un display LCD. La problemática es en cierto grado parecida a la de la interfaz de entrada:

La lógica para el control de los displays de 7 segmentos es trivial, pero la capacidad de representación es bastante limitada (sólo números y algunas letras) y se dispone únicamente de 4 displays –habría que idear algún procedimiento para representar valores de frecuencia mayores que 9999–.

Electrónica Digital (Plan 2000) Diseño Semidirigido

10

El display LCD permite realizar una interfaz mucho más brillante, presentando valores numéricos y mensajes de texto con efectos visuales, pero se trata de un dispositivo pensado para ser manejado por un microprocesador. Su manejo desde un circuito cableado requiere un desarrollo de una complejidad considerable, salvo que se consiga un módulo ya diseñado3 que controle el display.

Tras considerar las ventajas e inconvenientes expuestos y ponderando, en parte la calidad y en parte el tiempo de desarrollo, se opta por una interfaz de entrada basada en teclado y una interfaz de visualización basada en el display LCD.

Se propone la siguiente especificación de la interfaz de usuario:

El usuario podrá programar la frecuencia y el ciclo de trabajo utilizando un teclado que dispone de los 10 dígitos decimales y 6 teclas de función (A, B, C, D, E y F).

Para cambiar la frecuencia programada, se pulsará la tecla F, se introducirá el valor y se pulsará la tecla E.

Para cambiar el ciclo de trabajo, se pulsará la tecla C, se introducirá el valor y se pulsará la tecla E.

El último dígito pulsado se podrá borrar con la tecla B.

Con la tecla D se borran todos los dígitos introducidos.

Una vez pulsadas 6 ó 2 teclas numéricas (según se esté programando la frecuencia o el ciclo de trabajo), se bloqueará la entrada de números hasta que se borre algún dígito o se pulse la tecla E.

Si se teclea un valor para el ciclo de trabajo que no es múltiplo de 5, se redondeará automáticamente al múltiplo de 5 inferior, salvo que se trate de un número inferior a 5, en cuyo caso se redondeará a este valor (5).

Mientras se está programando un valor, se presentará en el display el parcial tecleado hasta el momento, precedido de una indicación que distinga entre frecuencia y ciclo de trabajo.

El display mostrará continuamente el valor de frecuencia y ciclo de trabajo programados.

Una vez tratado el problema de las interfaces, se puede dar prácticamente por concluido, el análisis de los requisitos y el estudio de viabilidad. Se dispone de unas especificaciones completas,4 se considera que son realizables y puede, si acaso, dudarse del plazo de ejecución demandado, aunque tampoco parece muy descabellado –se manifestarán reservas al respecto. Por tanto, se da por concluida, en principio, la tarea de análisis de requisitos.

3 Es frecuente que al realizar un diseño pueda reutilizarse algún módulo que el diseñador haya realizado

para otra aplicación, o que se adquieran módulos prediseñados por terceros si el coste de los mismos compensa el tiempo y esfuerzo que conllevaría realizarlos.

4 En realidad hay algún detalle de la operación del sistema que no ha sido especificado (aparecerá más adelante y se definirá entonces). Además, es posible que al analizar las posibles soluciones de realización del circuito se reconsidere algún aspecto de las especificaciones (esto también ocurrirá, como podrá comprobar en los siguientes apartados).

Electrónica Digital (Plan 2000) Diseño Semidirigido

11

3 PROPUESTA Y ANÁLISIS DE SOLUCIONES

Una vez detalladas las funciones del sistema, y habiendo determinado la viabilidad de su realización con los recursos hardware disponibles, procede comenzar la búsqueda de soluciones5 para escoger la que se considere más conveniente y utilizarla para realizar el diseño lógico del circuito. De lo que se está hablando aquí es de encontrar un algoritmo, una idea o un esquema general que sirva para resolver el problema de diseño que supone la realización de las funciones detalladas en las especificaciones.

Es habitual que exista un buen número de alternativas para resolver cualquier problema de diseño (el conjunto de alternativas se conoce con el nombre de Espacio de Diseño). La calidad de un diseño depende en gran medida de la bondad de la solución seleccionada. Para obtener una buena solución hay que hacer correctamente tres cosas:

Encontrar un conjunto de opciones de diseño que cubran las principales alternativas de realización.

Analizar, aplicando los criterios oportunos, las distintas opciones para poder realizar una evaluación de las mismas que permita distinguir la mejor.

Refinar la solución elegida para optimizarla antes de abordar un diseño más detallado.

La primera cuestión es la más interesante y ardua, también la menos sistemática. Se trata de utilizar documentación científico-técnica y las habilidades creativas del diseñador para materializar procedimientos y algoritmos que solucionen el problema de diseño, cumpliendo simultáneamente los requisitos adicionales que puedan existir; para acometerla se han de entender todos los aspectos relevantes de la aplicación que se desea resolver. La dificultad de esta tarea es muy variable, pero depende, esencialmente, de dos factores: la complejidad y rareza (ausencia de parecido con casos conocidos) de las funciones que hay que diseñar y, en gran medida también, del rigor de los requisitos no funcionales existentes (frecuencia de funcionamiento y recursos hardware disponibles, sobre todo). La experiencia del diseñador y su imaginación son esenciales en esta tarea.

El análisis de las soluciones tiene un carácter más rutinario. El ingeniero debe estimar los siguientes parámetros:

El coste en recursos hardware (el área) de la solución.

La posibilidad de que los elementos de la solución puedan operar a la frecuencia de reloj necesaria.

El coste del desarrollo de la solución (tiempo y dinero).

Dependiendo del diseño y las circunstancias, podría haber otras características que sería necesario valorar.

Al realizar esta tarea hay que ser consciente de que las estimaciones no van a ser nunca exactas, pero que sí van a servir para comparar soluciones o permitir

5 En este ejemplo se da por sentado que solo se contemplan soluciones con lógica cableada. En un caso

real, una decisión que se debe haber tomado previamente, tras haber realizado los análisis oportunos, es si el sistema se va a diseñar con lógica cableada, utilizando un microprocesador o con un sistema mixto.

Electrónica Digital (Plan 2000) Diseño Semidirigido

12

detectar problemas para la realización de algunas alternativas que pueden consecuentemente quedar descartadas o relegadas. En esta tarea la experiencia vuelve a ser esencial, sobre todo como instrumento para afinar las valoraciones.

El último paso consiste en la depuración de la solución elegida, para simplificarla y optimizar el uso de recursos antes de enfrentar el problema de construcción de la jerarquía de diseño. Es una tarea de prediseño en la que se puede determinar la reutilización de operadores –esto consiste en utilizar un mismo módulo para la ejecución de tareas que no se solapan en el tiempo- o la transformación de algunas operaciones para mejorar características de velocidad o área.

Una última consideración antes de volver al caso práctico: La exploración del espacio de diseño para buscar una solución para una realización definitiva se mezcla de diversas maneras con la fase de análisis de requisitos. Al realizar ésta se evalúa, de manera más o menos vaga, alguna solución para pronosticar la viabilidad del diseño. Puede suceder que durante el análisis de soluciones se encuentren líneas de diseño completamente diferentes que resulten más ventajosas. En cualquier caso, debe elegirse la mejor solución que cumpla las especificaciones del diseño, debiendo quedar claramente fijada para que se convierta en la referencia inmediata para las verificaciones que se realicen en las subsiguientes fases del ciclo de diseño.

3.1 Exploración del Espacio de Diseño De aquí en adelante, se considera que las especificaciones del diseño son las

siguientes: rango de frecuencias programable entre 1 Hz y 200 KHz y resolución del ciclo de trabajo del 5%.

3.1.1 Solución para el circuito generador de señales Empezando por la búsqueda de soluciones para la función principal del sistema,

la generación de señales de frecuencia y ciclo de trabajo programable, la idea más simple e inmediata de la que se puede partir es:

Propuesta A: Realizar la división aritmética del valor de la frecuencia del reloj, 14’7456 MHz, entre el valor de la frecuencia que se desea generar (capturada utilizando los recursos de la interfaz de usuario) y utilizar el cociente de la división para, por un lado, determinar el factor por el que debe dividir la frecuencia de reloj un circuito divisor y, por otro, calcular a partir de ese mismo cociente (que es el número de periodos del reloj de 14’7456 MHz que hay en un periodo de la señal generada), cuántos periodos de reloj debe estar a nivel alto la salida para que el ciclo de trabajo sea el deseado.

Una idea derivada de esta:

Propuesta A (variación): Dividir la frecuencia del reloj por el valor de la frecuencia programada multiplicado por veinte. Con el factor obtenido se puede generar una señal que tiene 20 veces la frecuencia deseada, dividiendo esta, a su vez, por veinte se puede obtener la frecuencia buscada y se facilita el control del ciclo de trabajo (es evidente que cada veinteava parte de la señal coincide con un escalón de resolución del ciclo de trabajo).

Otra idea, sencilla, sería:

Propuesta B: Generar, a partir del reloj de 14’7456 MHz una señal de 1 Hz para utilizar ésta como entrada de un circuito multiplicador de frecuencia programable, que se maneja con el valor de frecuencia indicado

Electrónica Digital (Plan 2000) Diseño Semidirigido

13

por el usuario, generando, de ese modo, una señal de la frecuencia deseada. Para controlar el ciclo de trabajo, se puede contar el número de periodos de reloj de la señal generada para calcular el número de ciclos que la señal de salida debe estar a nivel alto y utilizar ese valor para corregir la forma de la señal de salida generada por el multiplicador.

Y, por último:

Propuesta C: Recurrir a un DDS6 (Síntesis Digital Directa). Está técnica permite generar señales de frecuencia variable, utilizando una memoria (en la que se almacenan las muestras de la señal) direccionada por la fase instantánea de la señal. La fase instantánea se genera utilizando un circuito acumulador que se incrementa, en cada ciclo de reloj, una cantidad igual a la frecuencia programada; cuando el valor acumulado es mayor o igual al de la frecuencia de reloj del circuito, el acumulador se inicializa, por tanto, la señal de inicialización tiene una frecuencia de valor igual al de la frecuencia programada (si la frecuencia de la señal de reloj es mucho mayor que la frecuencia programada). La aplicación de esta solución a la generación de señales cuadradas permite prescindir de la memoria, simplificando el circuito. El control del ciclo de trabajo puede implementarse, además, fácilmente utilizando un comparador y alguna lógica adicional.

Debido a la sencillez de la aplicación elegida como ejemplo, no quedan muchas ideas más que barajar, pero el puñado de ideas propuestas permite ilustrar el proceso de valoración y selección de soluciones.

A la hora de valorar las ideas, más o menos difusas, expuestas más arriba, es necesario, en primer lugar, asegurarse de que son compatibles con los requisitos fijados en la fase anterior del ciclo de diseño, después, hay que valorar el área, velocidad y complejidad de desarrollo que se pueda pronosticar que acarrea cada solución, así como otras características que parezcan interesantes, para poder elegir entre las opciones propuestas. A continuación se analizan, una por una, las diferentes propuestas anteriores:

Propuesta A: Esta propuesta se deriva directamente del análisis de requisitos; se basa en el conocimiento de que los divisores de frecuencia programables son circuitos elementales y en que los valores necesarios para definir la frecuencia de la señal de salida se pueden obtener con la exactitud exigida utilizando un circuito que realice la división aritmética del valor de la frecuencia de reloj entre el de la frecuencia deseada. El único reparo a esta solución es que los divisores aritméticos (especialmente si trabajan con datos con un número considerable de bits) son circuitos bastante complejos, lo que puede dar lugar a problemas para conseguir que funcionen a la frecuencia de reloj requerida –de cualquier modo, se sabe que esto es algo que se puede arreglar mediante un diseño apropiado del operador. En conclusión, la propuesta puede dar lugar a algunas complicaciones relativas al área y velocidad de los operadores aritméticos que se requiere emplear para realizarlas. La complejidad del desarrollo no es grande, ya que se dispone de herramientas para la generación de circuitos divisores y, alternativamente, se conocen arquitecturas para la implementación de este tipo de módulos.

Propuesta A (variación): Esta propuesta intenta reducir la complejidad del diseño razonando que se puede componer una señal de la frecuencia

6 La estructura de este circuito se describirá detalladamente más adelante.

Electrónica Digital (Plan 2000) Diseño Semidirigido

14

deseada dividiendo por veinte una señal que tenga una frecuencia veinte veces mayor. La obtención de la señal de frecuencia 20 veces mayor se obtiene calculando el factor de división que se necesita para generarla con la ecuación:

Factor = (Fclk / 20) / Frecuencia programada De este modo el divisor aritmético es más sencillo –hay que dividir una constante de menor valor– y se simplifica el control del ciclo de trabajo. Esta solución, aunque es mucho más simple que la original y, por tanto, ocupa menos recursos, presenta el inconveniente de que aumenta el error en la frecuencia de la señal generada, resultando incompatible con las especificaciones del sistema.

Propuesta B: Esta propuesta se basa en que a partir de la frecuencia de reloj se puede obtener una señal de 1 Hz. Utilizando esta señal como entrada de un multiplicador de frecuencia programable que se controle con el valor de frecuencia programada por el usuario, se generará la señal deseada. Los circuitos necesarios para realizar esta operación se pueden realizar utilizando únicamente contadores, registros y divisores de frecuencia y, por tanto, su realización puede ser rápida, fácil. Pero presenta un problema importante: el circuito multiplicador de frecuencia programable tarda un tiempo igual a dos ciclos de la señal de entrada en estabilizarse y generar una señal de salida correcta (obsérvese que las condiciones de la aplicación hacen que este tiempo, en el caso peor, sea 2 segundos, un tiempo considerable…). Lo que sí se puede asegurar de esta solución es que es compatible con los requisitos de exactitud en la generación de la frecuencia de salida. El control del ciclo de trabajo podría realizarse como en la Propuesta A. En resumen, la propuesta presenta el problema del tiempo que tarda el circuito en generar correctamente la señal de salida desde que se cambia la programación.

Propuesta C: Esta opción lleva asociado un circuito muy simple, ya que con un acumulador y un comparador resulta suficiente para generar una señal de la frecuencia deseada, y basta con añadir una sencilla lógica adicional para poder controlar el ciclo de trabajo. Tiene el inconveniente de que el periodo de la señal generada puede variar en ocasiones en un ciclo de reloj (el circuito se aproxima al valor programado de frecuencia con gran exactitud si se hace la media de los periodos de la señal generada). Este problema –si es que lo es- puede resolverse con una sencilla modificación del circuito. Por otra parte, es capaz de adaptarse inmediatamente a cambios en la programación y, por último, cumple las especificaciones del diseño, ya que el error máximo cometido en la generación de la frecuencia o el ciclo de trabajo son exactamente los que se calcularon en el análisis de las especificaciones.

De acuerdo con los análisis expuestos, hay que decidirse entre tres opciones, la Propuesta A, B o C. La C es la más sencilla. La B es más sencilla que la A (no mucho más). Las tres soluciones respetan los requisitos fijados y, la única diferencia notable, es el tiempo que tardan en prepararse para generar la señal de salida cuando se programa un cambio en el ciclo de trabajo o el valor de la frecuencia, en este sentido, las soluciones A y C son mucho más rápidas (en unos cuantos ciclos de reloj, o sea, en pocos microsegundos, pueden calcular los parámetros necesarios y generar

Electrónica Digital (Plan 2000) Diseño Semidirigido

15

correctamente la señal). En conclusión, se elige la opción C, por su sencillez, que consistirá en un circuito DDS con algunas modificaciones para conseguir que la duración del periodo de la señal de salida sea constante y añadiendo lógica adicional que permita el control del ciclo de trabajo de la señal.

3.1.2 Solución para las Interfaces de Usuario El diseño de la interfaz LCD se evitará utilizando un módulo prediseñado, que

requerirá alguna lógica adicional para adaptarlo a la aplicación. El diseño de la lógica asociada al teclado se realizará a partir del control de un teclado matricial, añadiendo los elementos adicionales necesarios.

3.1.3 Refinamiento de las soluciones escogidas Debido a la sencillez de la solución escogida, no resulta preciso realizar

optimizaciones sobre el circuito, aunque sí hay que adaptarlo a los requisitos de nuestra aplicación; en concreto, tomando en consideración un circuito DDS de referencia, hay que eliminar la memoria de muestras, sustituyéndola por un comparador, y añadir lógica que controle el ciclo de trabajo.

Con lo contado hasta aquí puede darse por terminado el análisis de las soluciones para la aplicación del ejemplo. Sólo cabe –y resulta necesario además– decir que lo relatado en estas páginas puede, en realidad, equivaler a una meditación relativamente breve (cuando se trata, como en nuestro ejemplo, de una aplicación sencilla) o del trabajo de varias semanas (si el proyecto es de gran envergadura); se ha intentado simplemente ilustrar los aspectos más interesantes de las distintas tareas con una intención pedagógica.

Electrónica Digital (Plan 2000) Diseño Semidirigido

16

4 DISEÑO JERÁRQUICO

Una vez analizados los requisitos del sistema y discutidas las posibles soluciones, el siguiente paso, previo al diseño lógico, es el diseño jerárquico.

Un diseñador de circuitos digitales conoce un conjunto de subsistemas combinacionales y secuenciales con los cuales puede construir sistemas más complejos y conoce, además, una serie de técnicas – de diseño de circuitos lógicos– que le permiten diseñar otros bloques cuyas funciones no se corresponden con ninguno de los subsistemas mencionados anteriormente.

Sin embargo, salvo en sistemas muy simples, las técnicas y conocimientos anteriores, no permiten abordar directamente el diseño del sistema completo. En un diseño de mediana complejidad, como el que se trata en esta guía, es necesario aplicar técnicas de diseño jerárquico.

En esencia, el objetivo del diseño jerárquico es poder manejar la complejidad de un determinado diseño y reducirla hasta que sea abordable y resoluble mediante los elementos –o por los procedimientos– de diseño lógico que conoce. Para ello, el método a seguir consiste en descomponer la función (o funciones) objeto de diseño en problemas más sencillos7, hasta que resulten realizables.

En este proceso de descomposición jerárquica suele ser necesario repetir, para un bloque determinado, el proceso de análisis de soluciones descrito en el apartado 2. Tal como se describió allí, los criterios para determinar la mejor opción serán el área ocupada, la velocidad de proceso y el cumplimiento de las especificaciones. A su vez, es muy posible que la solución elegida, requiera de una nueva iteración en la jerarquía para llegar a bloques realizables directamente.

Hasta ahora se ha explicado qué es el diseño jerárquico y cuál es el propósito al que sirve, resta por indicar cómo se lleva a cabo. Establecer la jerarquía de un diseño es una labor en la que la experiencia del diseñador y su ingenio juegan un papel importante. No obstante, la metodología para abordarlo, debe apoyarse en las siguientes pautas:

Identificar las funciones (u operaciones) que deben realizarse.

Encontrar o idear algoritmos para la realización de dichas funciones.

Concebir arquitecturas que materialicen dichos algoritmos.

La descomposición jerárquica del diseño debe ser ordenada y realizarse estableciendo claramente la funcionalidad e interfaces (conjunto de entradas y salidas) de cada bloque en que se descomponga el diseño.

A continuación se va a abordar el diseño jerárquico del Generador de Señal extremando el detalle en aras de mantener el enfoque pedagógico de esta guía.

La figura 2 muestra el diagrama de más alto nivel del sistema. En él se muestra el generador como un único bloque y se representan también los recursos de la tarjeta PRINCE que se van a utilizar en el diseño.

7 Esta es una metodología de diseño que también se conoce como metodología top-down.

Electrónica Digital (Plan 2000) Diseño Semidirigido

17

Figura 2

En la figura se representa también la interfaz del Generador que se define a continuación:

Señal fila: Salida de 4 bits para realizar el muestreo periódico de las filas del teclado matricial poniendo a cero, secuencialmente, cada una de ellas.

Señal columna: Entrada de 4 bits para leer las columnas del teclado matricial. Estas líneas disponen de un pull-up por lo que, junto con la señal anterior, permiten identificar la pulsación de tecla.

Señal clk: Entrada de reloj procedente del oscilador de 14’7456 MHz.

Señal reset: Entrada de reset asíncrono. Se activará manualmente a través del pulsador S4 de la tarjeta, por lo que la señal es activa a nivel bajo.

Señal dato_lcd: Salida de 8 bits correspondiente al bus de datos del display LCD.

Señal ctrl_lcd: Salida de 3 bits correspondiente a las señales de control del display LCD.

Señal salida: Salida de la señal generada por el circuito.

La funcionalidad del bloque Generador de Señal es, obviamente, la especificada en los apartados 2.1 y 3.1 y por tanto resulta ocioso detallarla en este nivel de la jerarquía.

Observe que la figura 2, junto con la descripción anterior, sirve para:

Establecer los recursos de la tarjeta que es preciso utilizar.

Especificar la entrada/salida necesaria.

Relacionando los dos anteriores, establecer algunos requisitos de las señales de entrada y salida (niveles activos, por ejemplo) derivados del hecho de prototipar el diseño sobre la tarjeta PRINCE.

El siguiente paso consiste en descomponer el bloque Generador de Señal en bloques más simples. Del análisis realizado en los apartados anteriores puede plantearse una primera descomposición funcional como la mostrada en la Figura 3. Hay que indicar que las interfaces mostradas en el diagrama de la figura son tentativas, es decir, cabe la posibilidad de, al seguir descendiendo en la jerarquía –y concretando, por tanto, el diseño– surja la necesidad de intercambiar alguna señal más –o menos– entre los bloques mostrados.

0 1 2 3

4 5 6 7

8 9 A B

C D E F

GENERADORDE

SEÑAL4

4

fila

columna 8

dato_lcd

3

ctrl_lcd

clk

salida

reset

DISPLAYLCD

0 1 2 3

4 5 6 7

8 9 A B

C D E F

0 1 2 3

4 5 6 7

8 9 A B

C D E F

GENERADORDE

SEÑAL44

44

fila

columna 88

dato_lcd

33

ctrl_lcd

clk

salida

reset

DISPLAYLCD

Electrónica Digital (Plan 2000) Diseño Semidirigido

18

Figura 3

En los siguientes apartados se especifica la funcionalidad e interfaces de parte8 de los bloques mostrados en la figura 3 y se realiza o propone su diseño jerárquico.

4.1 Diseño jerárquico del bloque Controlador del Teclado Este bloque realiza básicamente las tres operaciones siguientes:

Barrido del teclado matricial por filas y lectura de las columnas para detectar e identificar la tecla pulsada.

Análisis de la tecla pulsada para determinar si se trata de un dato o de una tecla de función. En este último caso, realiza las funciones precisas en función del comando de que se trate.

Transformación del dato introducido (tanto de frecuencia, como de ciclo de trabajo) de BCD a binario, ya que este formato facilita el diseño del bloque Síntesis de la Señal.

La interfaz del bloque es la siguiente:

Señales fila, columna, clk y reset: véase la descripción de la figura 2.

Señal consigna: Salida de 18 bits correspondiente a la representación binaria de la configuración deseada. Dado que el máximo valor programable son 200.000 Hz –para el caso de la frecuencia–, son precisos 18 bits para representar dicho número.

Señal frecuencia: Salida que indica –con un pulso a nivel alto de duración un período de clk–9 al bloque Síntesis de la Señal que debe leer en la señal consigna un nuevo valor de la frecuencia.

8 De los que se ha considerado que ilustran mejor el proceso de diseño jerárquico, evitando hacer una

descripción exhaustiva del diseño que resultaría demasiado extensa. 9 Esta es una solución muy frecuente para el intercambio de datos entre bloques: el bloque que pone el

dato lo acompaña de una señal en la cual pone un pulso de duración un único período de reloj y que se

Síntesis de la señal

4

fila

4

columna

clk

salida

reset

Controladordel Teclado

8

dato_lcd

3

ctrl_lcdControladordel Display

18

consigna

frecuencia

ciclo

clk reset

prg_cicloprg_frec

24

dato

clk reset

Síntesis de la señal

44

fila

44

columna

clk

salidasalida

reset

Controladordel Teclado

88

dato_lcd

33

ctrl_lcdControladordel Display

18

consigna1818

consigna

frecuenciafrecuencia

ciclociclo

clkclk resetreset

prg_cicloprg_frec

2424

dato

clk reset

Electrónica Digital (Plan 2000) Diseño Semidirigido

19

Señal ciclo: Salida que indica –con un pulso a nivel alto de duración un período de clk– al bloque Síntesis de la Señal que debe leer en la señal consigna un nuevo valor del ciclo de trabajo.

Señal dato: Salida de 24 bits correspondiente a la representación BCD de los valores introducidos –o en proceso de introducción– a través del teclado. Dado que el máximo valor programable son 200.000 Hz –para el caso de la frecuencia–, son precisos 6 dígitos BCD (24 bits) para representar dicho número.

Señal prg_frec: Salida que indica –a nivel alto– al bloque Controlador del Display que el usuario está introduciendo valores correspondientes a la frecuencia deseada.

Señal prg_ciclo: Salida que indica –a nivel alto– al bloque Controlador del Display que el usuario está introduciendo valores correspondientes al ciclo de trabajo.

A la vista de la especificación funcional de este bloque realizada más arriba, cabe pensar en una descomposición jerárquica como la mostrada en la Figura 4. A continuación, con el objeto de continuar ilustrando el proceso de diseño jerárquico, se va a completar la descripción del bloque Barrido del teclado10.

Figura 4

4.1.1 Barrido del teclado Este bloque realiza el control del teclado matricial de la tarjeta PRINCE para

detectar e identificar la tecla pulsada. El bloque proporciona el código binario de la tecla, así como una señal de validación que indica la ocurrencia de una pulsación.

La interfaz del bloque es la siguiente:

Señales fila, columna, clk y reset: véase la descripción de la figura 2.

Señal tecla: Salida que presenta el código binario correspondiente a la tecla pulsada.

produce cuando el dato ya está estable –además el dato puede también permanecer estable tras el pulso–. El bloque que recibe el dato, utiliza el pulso como clock-enable para registrar el dato.

10 No se detallará el diseño del resto de los bloques, si está interesado en conocer su realización puede revisar los módulos del proyecto Max+plus II teclado.

Conversor BCD a Binario

4

fila4

columna

clk reset

Barridodel teclado

tecla_p prg_ciclo

Registro de teclas

4

tecla

clkreset

24

datoctrl

N

consigna18

clkreset Procesador

de teclas

clkreset

prg_frecprg_ciclotecla_E

frecuenciaciclo

tecla_Eprg_frec

Conversor BCD a Binario

4

fila44

fila4

columna44

columna

clkclk resetreset

Barridodel teclado

tecla_ptecla_p prg_cicloprg_ciclo

Registro de teclas

4

tecla44

tecla

clkresetclkclk

resetreset

2424

datoctrl

NN

consigna18

consigna1818

clkresetclkclk

resetreset Procesador de teclas

clkresetclkclk

resetresetprg_frec

prg_cicloprg_frec

prg_ciclotecla_Etecla_E

frecuenciaciclofrecuenciafrecuenciaciclociclo

tecla_Etecla_Eprg_frecprg_frec

Electrónica Digital (Plan 2000) Diseño Semidirigido

20

Señal tecla_p: Salida que indica –con un pulso a nivel alto de duración un período de clk– a otros bloques la presencia de un código de tecla válido en tecla.

La figura muestra una nueva iteración en la jerarquía del bloque Barrido del teclado.

Figura 5

A continuación se describen brevemente los bloques mostrados en la

Figura 5:

Sincronizador y eliminación de espurios: Este bloque sincroniza las entradas asíncronas columna y además incluye lógica para eliminar posibles espurios en las mismas. El muestreo efectivo de columna debe hacerse a una frecuencia menor que la del reloj, usando una señal de habilitación. El bloque genera las salidas col_sin, versión síncrona y filtrada de la señal columna y col_p, versión registrada de columna necesaria para detener el barrido cuando se ha pulsado una tecla.

Generador de fila: Este bloque genera el patrón periódico “1110”, “1101”, “1011”, “0111” que valida, en cada instante, una sola fila de teclas. Para ello basta un contador binario de dos bits y un codificador que para cada valor de cuenta del contador genere a su salida uno de los patrones. El contador se incrementa periódicamente (cuando lo indica un timer11) y cuenta solamente si no hay tecla pulsada (señal enable activa).

Detector de tecla pulsada: Este bloque analiza la señal col_sin y si alguno de sus cuatro bits es cero, genera en tecla_p un pulso de nivel alto y duración un período de clk. Además, analiza los cuatro bits de col_p y pone a cero enable si alguno de ellos es cero, con objeto de detener el contador del bloque Generador de fila.

Generador de código de tecla: Bloque combinacional que, a partir de los valores presentes en fila y col_sin, genera el código binario de la tecla pulsada.

La realización de estos bloques ya puede acometerse utilizando módulos funcionales (contadores, decodificadores, etc.) y las metodologías de diseño de circuitos combinacionales y secuenciales, así que constituyen el nivel más bajo de la jerarquía y no procede continuar iterando el proceso de descomposición.

11 Un timer es un circuito que genera una señal de tiempo periódica. Se implementa utilizando un

contador para crear un circuito divisor de la frecuencia de reloj. Por simplicidad, no se muestra en la figura.

4

fila

4

columnaSincronizador y eliminación de espurios

tecla_p

4

tecla

clkreset

4

col_sin

Generadorde filaclk

reset

ticenable

Detector de tecla pulsada

clkreset

Generador de código de

tecla

enable4

col_ptic

4

fila44

fila

4

columna44

columnaSincronizador y eliminación de espurios

tecla_ptecla_p

4

tecla44

tecla

clkresetclkclk

resetreset4

col_sin44

col_sin

Generadorde filaclk

resetclkclk

resetreset

ticticenableenable

Detector de tecla pulsada

clkresetclkclk

resetreset

Generador de código de

tecla

enableenable4

col_p44

col_ptictic

Electrónica Digital (Plan 2000) Diseño Semidirigido

21

Ejercicio 3 Revise los esquemas scan_teclado.gdf y antirebote.gdf del proyecto teclado

para identificar la materialización de los bloques de la figura 5. Identifique, en los esquemas del anexo, la lógica correspondiente a los bloques de la figura 5.

No se va a detallar el diseño del resto de los bloques del controlador de teclado, si está interesado en conocer los pormenores de su diseño, puede revisarlos en el proyecto Max+plus II teclado.

4.2 Diseño jerárquico del bloque Controlador del Display Este bloque presenta en el display LCD los valores de frecuencia y ciclo de

trabajo programados. El diseño de este bloque se ha realizado utilizando un bloque prediseñado para el control de un display LCD y otros dos módulos adicionales realizados expresamente para nuestra aplicación

El uso de bloques prediseñados para la realización de circuitos lógicos cableados es cada día más frecuente. En la actualidad es necesario afrontar el diseño de circuitos complejos en plazos de tiempo muy cortos. Algunos de los bloques que forman parte de la jerarquía del diseño pueden realizar funciones que se correspondan con las de bloques que ya se han realizado durante la ejecución de otro proyecto o que están disponibles (pagando un derecho de uso o, en ocasiones, gratuitamente) a través de empresas o fabricantes de circuitos. El uso de módulos prediseñados acorta el tiempo que se tarda en desarrollar el circuito y debe evaluarse su utilización contrastando las ventajas (acortan el tiempo de diseño y reducen los gastos de desarrollo) e inconvenientes (en general hay que pagar una considerable cantidad de dinero para disponer de ellos) que acarrea su uso.

Para utilizar un bloque prediseñado en la realización de un diseño hay que saber la función que realiza y como se maneja su operación mediante las señales de su interfaz. El controlador de display utilizado en el diseño (Figura 6) es capaz de manejar un display LCD como el que incorpora la tarjeta PRINCE.

Figura 6

Dispone de una memoria RAM síncrona interna con 32 palabras de 7 bits en la que hay que escribir los caracteres que se desea mostrar en el display. La memoria sólo puede escribirse cuando el controlador señala su disponibilidad manteniendo desactivada la salida LCD_busy. Para escribir un carácter en una posición de memoria hay que indicar la posición en la que se quiere escribir (LCD_addr), el valor en código ASCII del carácter (LCD_char) y activar (a nivel alto) la señal de escritura (LCD_wr). Cuando se desea que el controlador vuelque el contenido de la memoria sobre el display, basta con activar la señal LCD_rfsh. Mientras el controlador realiza esta operación, mantiene activa la señal LCD_busy, que indica que no debe intentar accederse a la memoria de escritura de caracteres.

LCD CONTROLLER5 LCD_ADDR7 LCD_CHAR

CLK

RSTN

LCD_WR

LCD_RFSH

8DATA_LCD

CS_DISP

SEL_DISP

R/W_DISP

LCD_BUSY

LCD CONTROLLER5 LCD_ADDR7 LCD_CHAR7 LCD_CHAR

CLKCLK

RSTN

LCD_WR

LCD_RFSH

8DATA_LCD

CS_DISP

SEL_DISP

R/W_DISP

LCD_BUSY

Electrónica Digital (Plan 2000) Diseño Semidirigido

22

Ejercicio 4 El proyecto Max+plus II display contiene la jerarquía de diseño del controlador del display LCD. Además del bloque prediseñado, hay otros dos bloques, uno de ellos codificado en VHDL. Utilice el esquema del circuito, en el fichero display.gdf , para dibujar un diagrama de bloques completo de la jerarquía de diseño del módulo. Deberá describir detalladamente la función de los módulos y de las señales de sus interfaces. Por último, debe explicar como funciona el conjunto para mantener actualizada la información que se muestra en el display LCD.

Nota 1: Para entender la lógica descrita en el módulo codificado en VHDL, lea atentamente los comentarios que se intercalan en el código.

Nota 2: En el módulo prediseñado que controla el display LCD, el tiempo que transcurre desde que se da una orden de volcado de información sobre el display (activando su entrada LCD_rfsh) hasta que indica que está disponible para la escritura de información en su memoria interna (desactivando LCD_busy) es de unos pocos milisegundos.

4.3 Diseño del bloque Síntesis de la Señal De acuerdo con la representación de la jerarquía de alto nivel del sistema de la

Figura 3, el módulo denominado Síntesis de la Señal es el encargado de generar la señal de salida siguiendo las pautas generales marcadas por la solución elegida en la fase de Análisis del Espacio de Diseño. En la figura 7 puede observarse el diagrama de bloques de un DDS12 modificado para generar señales cuadradas. El circuito incrementa, cada ciclo de reloj, el valor de un acumulador en una cantidad igual a la frecuencia programada mientras el valor acumulado sea menor que la frecuencia de reloj del circuito (en nuestro caso 14,7456 MHz); cuando se alcanza o rebasa este valor, el acumulador se inicializa.

Figura 7

El número de ciclos que transcurren entre dos inicializaciones del acumulador es:

N = Frecuencia de Reloj/Frecuencia Programada

12 El circuito de la figura 7 difiere bastante de un circuito DDS “típico”. Su operación se explica sin recurrir

directamente a la de un DDS para simplificar su comprensión.

ComparadorFrecuencia

AcumuladorValor acumulado

Frecuenciade Reloj

Inicialización

Comparador

V. acum.Salida

Freq. Reloj/2

ComparadorFrecuencia

AcumuladorValor acumulado

Frecuenciade Reloj

Inicialización

Comparador

V. acum.Salida

Freq. Reloj/2

Electrónica Digital (Plan 2000) Diseño Semidirigido

23

Este valor se corresponde con el número de periodos de reloj del circuito que hay en un periodo de la señal programada; por tanto, el acumulador se inicializa con un periodo que se corresponde con el de la frecuencia programada, o dicho de otro modo, la frecuencia de la señal de inicialización que se genera es igual a la de la frecuencia programada, durando el pulso a nivel alto 1 periodo del reloj del circuito. El cronograma de la figura 8 muestra, simplificadamente, cómo operaría el circuito para generar una señal de 200 kHz.

Figura 8

Para que la señal de salida tenga un ciclo de trabajo de, por ejemplo, el 50%, basta con añadir al circuito un comparador que ponga un 1 a la salida cuando el valor del acumulador sea menor o igual a la mitad de la frecuencia de reloj del circuito.

Ejercicio 5 En el proyecto Max+plus II ejer_DDS se encuentra un diseño preliminar del

circuito DDS para generar una señal de frecuencia programable y ciclo de trabajo del 50%.

El diseño realizado presenta dos problemas:

• El circuito incumple una regla de diseño síncrono, detecte e indique cuál y corrija el circuito. Indique qué efectos tiene sobre la señal de salida la modificación realizada.

• Realice una simulación con retardos del circuito, una vez solventado el problema mencionado en el punto anterior, observará que aparecen glitches en la salida. Averigüe e indique por qué y corrija el circuito para que desaparezcan.

Cuando haya arreglado el circuito, simúlelo para comprobar que su funcionamiento es satisfactorio.

Para que el circuito pueda adaptarse a la aplicación que se está desarrollando, es necesario que pueda controlarse el ciclo de trabajo de la señal de salida. Añada la lógica necesaria para que esto sea posible. Adapte también el módulo para que puedan conectarse en sus entradas el valor de la frecuencia programada (18 bits, en lugar de los 24 que tiene el diseño que se le entrega) y del ciclo de trabajo (7 bits).

Cuando haya realizado todas las modificaciones simule el circuito para comprobar que funciona correctamente.

Nota: La entrada cambio se activa, durante un ciclo de reloj, cuando se modifica el valor de la frecuencia programada.

200000 400000 600000 14600000 14800000

74 Ciclos de Reloj

Reloj

Inicializ.

Acumul. 200000200000 400000 600000 14600000 14800000

74 Ciclos de Reloj

Reloj

Inicializ.

Acumul. 200000

Electrónica Digital (Plan 2000) Diseño Semidirigido

24

Ejercicio 6

El diseño del bloque Síntesis de la Señal requiere una aplicación sencilla de las técnicas de diseño jerárquico. Además de la función desempeñada por el circuito realizado en el ejercicio anterior, hay que definir otro bloque que capture y registre la frecuencia y el ciclo de trabajo programados.

Diseñe la jerarquía del bloque Síntesis de la Señal y complete el diseño del bloque lógico adicional que defina. Conecte los bloques (en un nuevo proyecto Max+plus II, gen_dds) y simule el conjunto para asegurar su correcto funcionamiento. Compruebe que la interfaz del bloque se corresponde con lo especificado en el nivel jerárquico superior.

Nota: Para diseñar el nuevo módulo, debe tener en cuenta que, al inicializar el circuito (con la señal de reset asíncrono), se desea que comience a funcionar generando una señal de frecuencia de 10 kHz con un ciclo de trabajo del 50%.

Electrónica Digital (Plan 2000) Diseño Semidirigido

25

5 REALIZACIÓN Y VERIFICACIÓN DEL PROTOTIPO

Una vez completado el diseño lógico del circuito y después de haber verificado su correcto funcionamiento mediante simulaciones, hay que materializar el diseño utilizando la tecnología de realización que se haya elegido. En nuestro ejemplo se trata de encajar el diseño en un FPGA de ALTERA; debido a ello nos centraremos en los problemas relativos al uso de este tipo de dispositivos.

El prototipo de la aplicación debe probarse sobre una tarjeta PRINCE que dispone de un FPGA EPF10K30RC208-4 (o 10K20). Estos dispositivos disponen de un número de recursos de entrada/salida (pines) que exceden en mucho a los requeridos por el circuito, de modo que sólo podrían surgir dos problemas en el proceso de realización del circuito sobre el FPGA: que el diseño necesite más recursos lógicos de los disponibles o que no sea posible alcanzar la frecuencia de funcionamiento deseada. Estos problemas pueden resolverse, en ocasiones, variando la configuración de las herramientas CAD que se utilizan para encajar el diseño en el dispositivo; si esta opción falla, no queda más remedio que modificar el diseño (para reducir la lógica requerida o aumentar su velocidad) o utilizar un dispositivo diferente (más grande o rápido).

Ejercicio 7 Compile el proyecto Max+plus II generador, que se corresponde con la jerarquía completa de diseño, generando un modelo de simulación con retardos y los ficheros de programación, sin modificar ninguna opción de compilación del proyecto.

1. Utilice el analizador de tiempos para determinar la frecuencia máxima de funcionamiento del circuito. Indique razonadamente si el valor obtenido impide la realización del diseño sobre la tarjeta Prince. Si su respuesta es afirmativa, sugiera alternativas para arreglar el problema.

2. Averigüe el porcentaje de recursos lógicos del FPGA que utiliza el circuito. Indique además el número neto de células lógicas y flip-flops usados.

3. Pruebe el funcionamiento del diseño sobre la tarjeta. Indique si funciona correctamente. Indique si el funcionamiento observado es compatible con el resultado obtenido en el análisis de tiempos realizado.

En el menú assign del compilador, seleccione la opción Global Project Logic Synthesis y, en la ventana que aparece seleccione, en el campo Define Synthesis Style, la opción Fast y desplace el control Optimize a la posición Speed.

4. Compile el proyecto generando un modelo de simulación con retardos y los ficheros de programación. Utilice el analizador de tiempos para determinar la frecuencia máxima de funcionamiento del circuito. Indique razonadamente si el valor obtenido impide la realización del diseño sobre la tarjeta Prince. Si su respuesta es afirmativa, sugiera alternativas para arreglar el problema.

5. Averigüe el porcentaje de recursos lógicos del FPGA que utiliza el circuito. Indique además el número neto de células lógicas y flip-flops usados. Compare los valores con los de la anterior compilación.

6. Pruebe el funcionamiento del diseño sobre la tarjeta. Indique si funciona correctamente. Indique si el funcionamiento observado es compatible con el resultado obtenido en el análisis de tiempos realizado.

Electrónica Digital (Plan 2000) Diseño Semidirigido

26

Electrónica Digital (Plan 2000) Diseño Semidirigido

27

ELECTRÓNICA DIGITAL

Departamento de Sistemas Electrónicos y de Control Curso 2009/2010

DISEÑO SEMIDIRIGIDO

Anexo: hojas de resultados

Electrónica Digital (Plan 2000) Diseño Semidirigido

28

6 ANEXO: HOJAS DE RESULTADOS

Ejercicio 1 Averigüe, utilizando la expresión obtenida para la cota de error, hasta dónde se

podría ampliar el margen de frecuencias (en kHz) programables, teniendo en cuenta únicamente el error de exactitud en la generación por división.

Ejercicio 2 Teniendo en cuenta los análisis realizados, determine qué elemento del sistema

cambiaría si deseará conseguir una mayor precisión en la frecuencia o el ciclo de trabajo generados. Razone, brevemente, cómo debe adaptarse este componente a distintas especificaciones de rangos y errores.

Electrónica Digital (Plan 2000) Diseño Semidirigido

29

Ejercicio 3 Revise los esquemas scan_teclado.gdf y antirebote.gdf del proyecto teclado

para identificar la materialización de los bloques de la figura 5. Identifique, en el esquema adjunto, la lógica correspondiente a los bloques de la figura 5.

Electrónica Digital (Plan 2000) Diseño Semidirigido

30

Ejercicio 4 El proyecto Max+plus II display contiene la jerarquía de diseño del controlador del display LCD. Además del bloque prediseñado, hay otros dos bloques, uno de ellos codificado en VHDL. Utilice el esquema del circuito, en el fichero display.gdf , para dibujar un diagrama de bloques completo de la jerarquía de diseño del módulo. Deberá describir detalladamente la función de los módulos y de las señales de sus interfaces. Por último, debe explicar como funciona el conjunto para mantener actualizada la información que se muestra en el display LCD.

Nota 1: Para entender la lógica descrita en el módulo codificado en VHDL, lea atentamente los comentarios que se intercalan en el código.

Nota 2: En el módulo prediseñado que controla el display LCD, el tiempo que transcurre desde que se da una orden de volcado de información sobre el display (activando su entrada LCD_rfsh) hasta que indica que está disponible para la escritura de información en su memoria interna (desactivando LCD_busy) es de unos pocos milisegundos.

Electrónica Digital (Plan 2000) Diseño Semidirigido

31

Electrónica Digital (Plan 2000) Diseño Semidirigido

32

Ejercicio 5 En el proyecto Max+plus II ejer_DDS se encuentra un diseño preliminar del

circuito DDS para generar una señal de frecuencia programable y ciclo de trabajo del 50%.

El diseño realizado presenta dos problemas:

1. El circuito incumple una regla de diseño síncrono, detecte e indique cuál y corrija el circuito. Indique qué efectos tiene sobre la señal de salida la modificación realizada.

2. Realice una simulación con retardos del circuito, una vez solventado el problema mencionado en el punto anterior, observará que aparecen glitches en la salida. Averigüe e indique por qué y corrija el circuito para que desaparezcan.

Cuando haya arreglado el circuito, simúlelo para comprobar que su funcionamiento es satisfactorio.

Para que el circuito pueda adaptarse a la aplicación que se está desarrollando, es necesario que pueda controlarse el ciclo de trabajo de la señal de salida. Añada la lógica necesaria para que esto sea posible. Adapte también el módulo para que puedan conectarse en sus entradas el valor de la frecuencia programada (18 bits, en lugar de los 24 que tiene el diseño que se le entrega) y del ciclo de trabajo (7 bits).

Cuando haya realizado todas las modificaciones simule el circuito para comprobar que funciona correctamente.

Nota: La entrada cambio se activa, durante un ciclo de reloj, cuando se modifica el valor de la frecuencia programada.

1.

2.

Electrónica Digital (Plan 2000) Diseño Semidirigido

33

Ejercicio 6

El diseño del bloque Síntesis de la Señal requiere una aplicación sencilla de las técnicas de diseño jerárquico. Además de la función desempeñada por el circuito realizado en el ejercicio anterior, hay que definir otro bloque que capture y registre la frecuencia y el ciclo de trabajo programados.

Diseñe la jerarquía del bloque Síntesis de la Señal y complete el diseño del bloque lógico adicional que defina. Conecte los bloques (en un nuevo proyecto Max+plus II, gen_dds) y simule el conjunto para asegurar su correcto funcionamiento. Compruebe que la interfaz del bloque se corresponde con lo especificado en el nivel jerárquico superior.

Nota: Para diseñar el nuevo módulo, debe tener en cuenta que, al inicializar el circuito (con la señal de reset asíncrono), se desea que comience a funcionar generando una señal de frecuencia de 10 kHz con un ciclo de trabajo del 50%.

Ejercicio 7

Compile el proyecto Max+plus II generador, que se corresponde con la jerarquía completa de diseño, generando un modelo de simulación con retardos y los ficheros de programación, sin modificar ninguna opción de compilación del proyecto.

1. Utilice el analizador de tiempos para determinar la frecuencia máxima de funcionamiento del circuito. Indique razonadamente si el valor obtenido impide la realización del diseño sobre la tarjeta Prince. Si su respuesta es afirmativa, sugiera alternativas para arreglar el problema.

2. Averigüe el porcentaje de recursos lógicos del FPGA que utiliza el circuito. Indique además el número neto de células lógicas y flip-flops usados.

3. Pruebe el funcionamiento del diseño sobre la tarjeta. Indique si funciona correctamente. Indique si el funcionamiento observado es compatible con el resultado obtenido en el análisis de tiempos realizado.

Electrónica Digital (Plan 2000) Diseño Semidirigido

34

En el menú assign del compilador, seleccione la opción Global Project Logic Síntesis y, en la ventana que aparece seleccione, en el campo Define Síntesis Style, la opción Fast y desplace el control Optimize a la posición Speed.

4. Compile el proyecto generando un modelo de simulación con retardos y los ficheros de programación. Utilice el analizador de tiempos para determinar la frecuencia máxima de funcionamiento del circuito. Compare los valores con los de la anterior compilación.

5. Averigüe el porcentaje de recursos lógicos del FPGA que utiliza el circuito. Indique además el número neto de células lógicas y flip-flops usados. Compare los valores con los de la anterior compilación.

6. Pruebe el funcionamiento del diseño sobre la tarjeta. Indique si funciona correctamente. Indique si el funcionamiento observado es compatible con el resultado obtenido en el análisis de tiempos realizado.