
MICROCONTROLADOR
13
Elektor
hacer una división de los mismos, pero esto
podría producir interferencias, de modo que
es mejor dividir la frecuencia de reloj.
Las sentencias de la Tabla 4 describen las
condiciones de temporización necesarias para
generar la señal de reset MRES para un conta-
dor M de 9 bits. Si observamos la sentencia
veremos un primer paréntesis, empezando por
su lado izquierdo, en el que la salida M del con-
tador se compara con un valor decimal, en el
lado derecho del paréntesis. El valor de esta
expresión solamente será 1 cuando la salida del
contador sea igual al valor decimal. Mientras
tanto permanecerá con un valor igual a 0. A
continuación nos encontramos con dos símbo-
los, “&&”, que nos indican la realización de una
operación AND, junto con otro paréntesis que
contiene la descripción de las tres entradas
ZYL (CYL), provenientes del conmutador DIP
de tres circuitos . El valor de los conmutadores
se compara con tres bits que representan un
número decimal comprendido entre 0 y 7. Sola-
mente cuando las sentencias incluidas en cada
paréntesis son verdad, se genera un 1 lógico.
Cada línea tiene dos líneas verticales que indi-
can que esta expresión se enlazará con la
siguiente línea a través de una función OR.
Esto significa que es suficiente con que las sen-
tencias de una de las líneas sea verdad para
que el pulso de reset MRES pase a valer un 1
lógico. En cualquier otro caso su valor será 0.
Así, por ejemplo, la línea 4 pasará a valer 1
cuando el contador alcance el valor de 118 y el
conmutador DIP tenga seleccionado el valor
de 3. En el siguiente flanco de subida de la
señal CLK, el contador pasará a valer 119 y la
señal MRES cambiará su estado a “1” lógico.
En el siguiente pulso de reloj el contador
pasará a tener un valor de 0 y esto hará que la
señal MRES pase también a su estado “0”
lógico. En este momento, el contador está listo
para comenzar de nuevo su cuenta ascen-
dente con el siguiente flanco de reloj. Por lo
tanto, contará desde 0 a 119, lo que equivale
a un total de 120 pulsos de reloj.
El comportamiento del contador M viene
definido por los valores introducidos en la
Tabla 5. Cuando la señal MRES está a nivel
alto, el siguiente valor del contador M será de
0. En el resto de los casos su próximo valor
será el de M + 1. En el flanco de reloj positivo
consecutivo el valor del contador se incre-
mentará en una unidad más o pasará a valer
0, dependiendo del estado de la señal MRES.
La Tabla 6 indica que la señal de entrada,
proveniente de la bobina de encendido, DZ_IN,
simplemente se amplifica, siendo su salida
DZ_IN_B. La salida amplificada utiliza dos
resistencias externas para construir una fun-
ción de “trigger Schmitt” con la señal DZ_IN.
La señal de entrada de encendido no estará
sincronizada con la frecuencia de reloj interno.
Tabla 7
/*==============================================================*/
/* Contador V */
always @ (V or VRES or MRES or TOR)
begin
if (VRES == 1’b1)
Next_V = 11’d0;
else
if (!VRES & MRES & TOR)
Next_V = V + 1’b1;
else
Next_V = V ;
end
/*==============================================================*/
Tabla 9
/*==============================================================*/
/* Copiando sobre un registro de salida */
always @ (LED_R or LED or TOR_NF)
begin
if ( TOR_NF )
Next_LED_R[15:0] = LED[15:0];
else
Next_LED_R[15:0] = LED_R[15:0];
end
/*==============================================================*/
Tabla 8
/*==============================================================*/
/* LEDs */
/* Mode 0 1000 a 6000 rpm, res. 333 */
/* Mode 1 750 a 4500 rpm, res. 250 */
/* Mode 2 4125 a 6000 rpm, res. 125 */
/* Mode 3 2500 a 10000 rpm, res. 500 */
always @ (LED[15] or MODE or VRES)
begin
if ( LED[15] && (V == 204) && (MODE == 0) ||
LED[15] && (V == 272) && (MODE == 1) ||
LED[15] && (V == 204) && (MODE == 2) ||
LED[15] && (V == 122) && (MODE == 3) )
Next_LED[15] = 1’b0;
else
if ( VRES & !LED[15])
Next_LED[15] = 1’b1;
else
Next_LED[15] = LED[15];
end
/*==============================================================*/
.
.
/*==========================================================*/
always @ (LED[0] or MODE or VRES)
begin
if ( LED[0] && (V == 1228) && (MODE == 0) ||
LED[0] && (V == 1637) && (MODE == 1) ||
LED[0] && (V == 297) && (MODE == 2) ||
LED[0] && (V == 491) && (MODE == 3) )
Next_LED[0] = 1’b0;
else
if ( VRES & !LED[0])
Next_LED[0] = 1’b1;
else
Next_LED[0] = LED[0];
end
/*==============================================================*/
Kommentare zu diesen Handbüchern