Diseñar un circuito que indique si un número codificado en BCD es primo (1) o no (0).
Respuestas a la pregunta
Antes de empezar hay que aclarar la cantidad de cifras BCD que tiene la combinación de entrada. A falta de ese dato vamos a suponer que son dos números BCD.
Ahora bien. En esta situación las combinaciones pueden ir entre 0 y 99, siendo todos los números primos entre 0 y 99: 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89 y 97.
Hay dos formas de encarar el problema:
- Adoptar una combinación de 8 bits tomando como no válida toda combinación en la cual uno de los cuartetos sea mayor a 9, obligándonos a trazar un mapa de Karnaugh de 256 posiciones.
- Partir el diseño en tres funciones lógicas. Dos que identifiquen cada dígito de las unidades o de las decenas y una que de positivo en cuanto ambas cifras coincidan con un número primo.
Nos acogemos a la segunda opción. Cada dígito BCD pasará a un decodificador de 4 a 16, ó de 4 a 10 líneas, como el CD4028. Así, cada dígito BCD tendrá una señal que se pondrá en estado alto en cuanto dicha combinación esté en la entrada.
La segunda fase es la que consistirá en una puerta AND por cada número primo. Las decenas tienen su CD4028 y las unidades tienen su CD4028. Entonces cada puerta AND se conectará en sus entradas a la salida del CD4028 de las decenas cuya cifra de decenas coincida con el número buscado y hará lo propio con el CD4028 de las unidades. Así para el 2, una puerta AND se conectará a Q2 del primer CD4028 y Q0 del segundo, para el 47, se conectará una entrada al Q7 del 4028 de las unidades y al Q4 del 4028 de las decenas y así. Y el circuito queda como en la imagen adjunta.
A medida que aumentan las cifras la complejidad aumenta exponencialmente por lo tanto se recomienda utilizar un circuito integrado tipo FPGA.