beliat
Animal
- Registrado
- 2009/04/29
- Mensajes
- 2.401
- Sexo
Resulta que estoy armando un sistema Contador de ciclos de cierta secuencia de un número binario de 3 bits, estas secuencias corresponden a la combinación de las luces de dos semáforos de 3 luces cada uno, rojo,verde y amarillo( en ese orden).
El contador contará cada vez que se cumpla la siguiente secuencia completa correspondiente al encendido y apagado de las luces en ambos semáforos:
1. En el inicio debe estar encendida solo la luz roja, por lo que se tiene : 100 en cada semáforo.
2. Luego deben estar encendidas la luz roja y la luz amarilla, por lo que se tiene: 101 en cada semáforo.
3. Luego deben estar encendida la luz amarilla y la verde, por lo que se tiene :011 en cada semáforo.
4. Luego debe estar encendida sólo la luz verde, por lo que se tiene: 010 en cada semáforo.
5. se vuelve al paso 3.
6. se vuelve al paso 2.
7. se vuelve al paso 1.
Cómo se puede inferir, hay 6 variables (las 3 luces por cada semáforo) , por lo que el total de combinaciones de luces que se pueden dar corresponden a 2^6=64, de esas 64 sólo las 7 secuencias anteriores de pares de 3 bits deben ser tomadas en cuenta para completar un ciclo completo que llegaran a un contador que las acumulará hasta llegar hasta 999.999 y los irá mostrando en 5 displays.
El sistema contador ya lo diseñé y no tiene ningún problema, salvo que me tira un error después de ciertos conteos (error que creo debe ser por la frecuencia de conmutación que le doy a la señal de onda cuadrada al inicio del contador, también hice este con un switch, debido a que la frecuencia en que se cumplirá cada ciclo no es constante, y tb me tire un error en un tiempo mucho más largo eso si) .
Mi principal problema es con el filtro de bits que se deben dar para completar un ciclo que llegará al contador a través de un 1 lógico. Yo lo diseñé con 7 pares de comparadores (74HC85) conectados en serie, debido a que son 6 bits los que se deben comparar con las 6 entradas aleatorias( 3 de cada semáforo). la cuarta entrada de cada comparador sólo las conecté a tierra, para que de esa forma me compare los 6 bits que necesito. hice esto de manera que me comparara primero los bits de una entrada aleatoria con los del paso 1, las salidas mayor y menor las conecté a tierra, con lo que sólo me quedará la salida igual de estos pares de comparadores de 6 bits, esta salida va conectada a una puerta and (74Ls08D) de dos entradas, la otra entra va conectada a 5(V) (1 lógico). con lo que el primer par comparador,al final de la puerta and, arrojará 1 sólo cuando se cumpla el requerimiento del paso 1, es decir, 100 100.....luego, dicha salida la conecté a la entrada(A=B) del siguiente para comparador, este par de comparadores comparará los bits 101 101 de ambos semáforos (correspondiente al paso 2) , de igual forma a lo anterior, saldrá 1 de la salida de este para comparador cuando la entrada aleatoria sea igual a lo requerido......
estos pasos se repiten conectando los otros 5 pares de comparadores de menera que se cumpla la secuencia de código que necesito....al final de este sistema comparados va una puerta and que me dará como salida un 1 cuando se cumpla un ciclo completo, esto va conectado al sistema contador y se mostrará en los displays.
El problema de esto es que no me funciona, ya revisé las conecciones, y la teoría muy bien, y no encuentro el error...de hecho revisé cada par comparador, le asigné a cada numero binario del comparador el mismo valor, de manera que la salida A=B me diera uno y conecté en esa salida un led para ver si me encendía y no pasó nada....los comparadores están perfectamente alimentados con 5 volts y aterrizados y no encuentro cuál es el error....incluso fuí más riguroso y simulé cada comparador con puertas lógicas y nunca se me encendio el led.....luego tambien simulé una simple puerta and de dos entradas y les dí a ambas entradas un valor de 5 volts, por lo que su salida debiera ser un uno lógico...conecté una resistencia de 330 ohms y en serie un led y tampoco encendio.....
todo lo anterior lo simulé en multisim, sería de gran ayuda para mi que me ayudaran con el sistema comparador que usaré como filtro del código , porque no entiendo la falla....si tienen alguna otra idea será bienvenida, a mi no se me ocurre otra.
PD:sorry por el largo de la pregunta pero no pude resumirlo más. ...
El contador contará cada vez que se cumpla la siguiente secuencia completa correspondiente al encendido y apagado de las luces en ambos semáforos:
1. En el inicio debe estar encendida solo la luz roja, por lo que se tiene : 100 en cada semáforo.
2. Luego deben estar encendidas la luz roja y la luz amarilla, por lo que se tiene: 101 en cada semáforo.
3. Luego deben estar encendida la luz amarilla y la verde, por lo que se tiene :011 en cada semáforo.
4. Luego debe estar encendida sólo la luz verde, por lo que se tiene: 010 en cada semáforo.
5. se vuelve al paso 3.
6. se vuelve al paso 2.
7. se vuelve al paso 1.
Cómo se puede inferir, hay 6 variables (las 3 luces por cada semáforo) , por lo que el total de combinaciones de luces que se pueden dar corresponden a 2^6=64, de esas 64 sólo las 7 secuencias anteriores de pares de 3 bits deben ser tomadas en cuenta para completar un ciclo completo que llegaran a un contador que las acumulará hasta llegar hasta 999.999 y los irá mostrando en 5 displays.
El sistema contador ya lo diseñé y no tiene ningún problema, salvo que me tira un error después de ciertos conteos (error que creo debe ser por la frecuencia de conmutación que le doy a la señal de onda cuadrada al inicio del contador, también hice este con un switch, debido a que la frecuencia en que se cumplirá cada ciclo no es constante, y tb me tire un error en un tiempo mucho más largo eso si) .
Mi principal problema es con el filtro de bits que se deben dar para completar un ciclo que llegará al contador a través de un 1 lógico. Yo lo diseñé con 7 pares de comparadores (74HC85) conectados en serie, debido a que son 6 bits los que se deben comparar con las 6 entradas aleatorias( 3 de cada semáforo). la cuarta entrada de cada comparador sólo las conecté a tierra, para que de esa forma me compare los 6 bits que necesito. hice esto de manera que me comparara primero los bits de una entrada aleatoria con los del paso 1, las salidas mayor y menor las conecté a tierra, con lo que sólo me quedará la salida igual de estos pares de comparadores de 6 bits, esta salida va conectada a una puerta and (74Ls08D) de dos entradas, la otra entra va conectada a 5(V) (1 lógico). con lo que el primer par comparador,al final de la puerta and, arrojará 1 sólo cuando se cumpla el requerimiento del paso 1, es decir, 100 100.....luego, dicha salida la conecté a la entrada(A=B) del siguiente para comparador, este par de comparadores comparará los bits 101 101 de ambos semáforos (correspondiente al paso 2) , de igual forma a lo anterior, saldrá 1 de la salida de este para comparador cuando la entrada aleatoria sea igual a lo requerido......
estos pasos se repiten conectando los otros 5 pares de comparadores de menera que se cumpla la secuencia de código que necesito....al final de este sistema comparados va una puerta and que me dará como salida un 1 cuando se cumpla un ciclo completo, esto va conectado al sistema contador y se mostrará en los displays.
El problema de esto es que no me funciona, ya revisé las conecciones, y la teoría muy bien, y no encuentro el error...de hecho revisé cada par comparador, le asigné a cada numero binario del comparador el mismo valor, de manera que la salida A=B me diera uno y conecté en esa salida un led para ver si me encendía y no pasó nada....los comparadores están perfectamente alimentados con 5 volts y aterrizados y no encuentro cuál es el error....incluso fuí más riguroso y simulé cada comparador con puertas lógicas y nunca se me encendio el led.....luego tambien simulé una simple puerta and de dos entradas y les dí a ambas entradas un valor de 5 volts, por lo que su salida debiera ser un uno lógico...conecté una resistencia de 330 ohms y en serie un led y tampoco encendio.....
todo lo anterior lo simulé en multisim, sería de gran ayuda para mi que me ayudaran con el sistema comparador que usaré como filtro del código , porque no entiendo la falla....si tienen alguna otra idea será bienvenida, a mi no se me ocurre otra.
PD:sorry por el largo de la pregunta pero no pude resumirlo más. ...