
MICROCONTROLADOR
11
Elektor
nes que describimos en la entrega del último
mes. El campo de comentarios se inicia des-
pués de los símbolos “/*” y finaliza con los
símbolos “*/”. El fichero tiene una cabecera
muy larga que está descrita como comentario,
de manera que se proporcione una breve his-
toria del mismo, junto con las distintas ver-
siones generadas. Una buena idea en este
caso es asegurarnos de realizar siempre una
copia de seguridad antes de realizar grandes
cambios sobre el fichero.
A continuación de la cabecera del fichero
se inicia la siguiente línea con la palabra clave
module seguida por el nombre del módulo
(drehzahl para el contador de dos revolucio-
nes). Seguidamente, se definen las entradas y
las salidas. No es obligatorio separar todas las
entradas de todas las salidas, de modo que
pueden mezclarse, aunque esto no ayudará a
organizar el fichero, de manera que todo que-
dará bastante más indefinido. Al final de cada
línea se puede añadir un comentario para dar
una pequeña descripción de la señal. Más
tarde, pueden adicionarse los números de los
terminales en el campo de componentes para
mayor información. La información de los dis-
tintos terminales para nuestro proyecto actual
se ha introducido en otro fichero.
Entradas y salidas
DZ_IN: entrada de arranque procedente
de la bobina del vehículo. La señal será filtrada
y sus niveles desplazados hasta conseguir los
umbrales de una señal TTL.
CLK: entrada de reloj global controlada por
las salidas del oscilador de cristal C4_OUT.
C4_IN: entrada del oscilador de cristal.
MODE [2... 0]: estas tres señales, prove-
nientes del conmutador DIP de tres circuitos, se
emplean para seleccionar los diferentes modos
del visualizador. Cuando hay varias señales pue-
den agruparse juntas bajo el mismo nombre, de
manera que pueden referenciarse como una
señal individual o un grupo: MODE [1] es tan
sólo una señal, mientras que MODE [1... 0] hace
referencia a los dos últimos bits de menor peso
y MODE [2... 0] a los tres últimos bits.
ZYL [2... 0]: estas tres entradas, proce-
dentes del conmutador DIP, permiten selec-
cionar la cantidad de cilindros de que se com-
pone el motor. Esto permite que el circuito
pueda usarse con diferentes motores sin tener
que reprogramar la CPLD.
LICHT: reduce la intensidad de luz de los
diodos LEDs cuando se encienden las luces
internas del vehículo.
Tabla 2
/*==============================================================*/
/* FlipFlops */
always @ (posedge CLK or negedge RESET)
begin
if (RESET == 0)
begin
M <= 9’d0;
MRES <= 1’b0;
V <= 11’d0;
VRES <= 1’b0;
DZ_IN_1D <= 1’b0;
DZ_IN_2D <= 1’b0;
TOR <= 1’b0;
TOR_D <= 1’b0;
TOR_NF <= 1’b0;
LED <= 16’d0;
LED_R <= 16’d0;
end
else
begin
M <= Next_M;
MRES <= Next_MRES;
V <= Next_V;
VRES <= Next_VRES;
DZ_IN_1D <= Next_DZ_IN_1D;
DZ_IN_2D <= Next_DZ_IN_2D;
TOR <= Next_TOR;
TOR_D <= Next_TOR_D;
TOR_NF <= Next_TOR_NF;
LED <= Next_LED;
LED_R <= Next_LED_R;
end
end
/*==============================================================*/
Tabla 4
/*==============================================================*/
always @ (M or ZYL)
begin
if ( (M == 9’d478) && (ZYL == 3’d0) ||
(M == 9’d238) && (ZYL == 3’d1) ||
(M == 9’d158) && (ZYL == 3’d2) ||
(M == 9’d118) && (ZYL == 3’d3) ||
(M == 9’d78) && (ZYL == 3’d4) ||
(M == 9’d58) && (ZYL == 3’d5) ||
(M == 9’d38) && (ZYL == 3’d6) ||
(M == 9’d28) && (ZYL == 3’d7) )
Next_MRES = 1’b1;
else
Next_MRES = 1’b0;
end
/*==============================================================*/
Tabla 3
/*==============================================================*/
/* Reloj del oscilador */
always @ (C4_IN)
begin
C4_OUT = !C4_IN;
end
/*==============================================================*/
Comentários a estes Manuais