Practica 2 - Sumador de dos bits
Objetivos
· Entender
la implementación de una función lógica involucrando diferentes tipos de
compuertas digitales.
· Reforzar
el manejo de la plataforma PSoC 5 y el montaje de circuitos digitales.
Introducción
Un sumador completo, suma
números binarios junto con las cantidades de acarreo. Un sumador completo de
dos bits añade tres bits, a menudo escritos como A, B y Cin, donde A y B son
los sumandos y Cin es el acarreo que proviene de la anterior etapa menos
significativa. El sumador completo suele ser un componente de una cascada de
sumadores, que suman 8, 16, 32, etc. números binarios de bits. El circuito
produce una salida de dos bits, al igual que el semisumador denominadas acarreo
de salida (Cout) y suma S.
Un sumador completo se puede implementar de maneras
diferentes, tales como con un circuito a transistores o compuesto de otras
puertas.
Materiales
para la practica
• Protoboard
• Cables
• Diodos emisores de luz
• Resistencias de 220Ω, 330Ω y 4.7kΩ
• Dipswitch o pulsadores
• Tarjeta PSoC 5
• Computador con PSoC Creator
Descripción
de la practica realizada
En la práctica realizada se
implementó un sumador de dos bits, este tiene 4 bits de entrada el cual le dará
la orden al PSoC usando la tabla de verdad para hallar los resultados de esta
presionando unos pulsadores y este arroja los resultados
Se realizó la siguiente tabla
de verdad teniendo en cuenta que (A=A1A0 y B = B1B0) S = S2S1S0
|
A1
|
A0
|
BI
|
B0
|
S2
|
S1
|
S0
|
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
|
0
|
0
|
0
|
1
|
0
|
0
|
1
|
|
0
|
0
|
1
|
0
|
0
|
1
|
0
|
|
0
|
0
|
1
|
1
|
0
|
1
|
1
|
|
0
|
1
|
0
|
0
|
0
|
0
|
1
|
|
0
|
1
|
0
|
1
|
0
|
1
|
0
|
|
0
|
1
|
1
|
0
|
0
|
1
|
1
|
|
0
|
1
|
1
|
1
|
1
|
0
|
0
|
|
1
|
0
|
0
|
0
|
0
|
1
|
0
|
|
1
|
0
|
0
|
1
|
0
|
1
|
1
|
|
1
|
0
|
1
|
0
|
1
|
0
|
0
|
|
1
|
0
|
1
|
1
|
1
|
0
|
1
|
|
1
|
1
|
0
|
0
|
0
|
1
|
1
|
|
1
|
1
|
0
|
1
|
1
|
0
|
0
|
|
1
|
1
|
1
|
0
|
1
|
0
|
1
|
|
1
|
1
|
1
|
1
|
1
|
1
|
0
|
De igual manera basándonos en
las operaciones lógicas se implementó el circuito lógico en el programa PSoC
creator, creando un código funcional que se viera reflejado en la protoboard en
los leds (Carris de salida) emitiendo una señal la cual será la respuesta a
cada función lógica implementada por el Switch.
A continuación el código implentado.
#include "project.h"
uint8 fun(uint8 letra);
char var_rx;
uint8 ev_rx = 0;
uint8 ev_tim=0;
uint8 fun(uint8 letra);
uint8 arregloz []={0};
uint16 contador=0;
uint8 letra=0;
uint8 fun(uint8 rx_isr);
uint8 estado=0;
uint8 P=0;
uint8 bloqueo=1;
CY_ISR(rx_isr)
{
ev_rx = 1;
}
CY_ISR(TIM_ISR)
{
ev_tim = 1;
}
int main(void)
{
CyGlobalIntEnable; /* Enable global interrupts. */
//LCD_Char_1_DisplayOn();
LCD_Char_1_Start();
UART_1_Start();
Tim_int_StartEx(TIM_ISR);
isr_1_StartEx(rx_isr);
Tiempo_Start();
LCD_Char_1_Position(0,0);
LCD_Char_1_PrintString("Santiago y ");
LCD_Char_1_Position(1,0);
LCD_Char_1_PrintString("Diego");
LCD_Char_1_Position (1,6);
LCD_Char_1_PutChar(LCD_Char_1_CUSTOM_0);
LCD_Char_1_Position (1,7);
LCD_Char_1_PutChar(LCD_Char_1_CUSTOM_1);
LCD_Char_1_Position (1,8);
LCD_Char_1_PutChar(LCD_Char_1_CUSTOM_2);
LCD_Char_1_Position (1,9);
LCD_Char_1_PutChar(LCD_Char_1_CUSTOM_3);
LCD_Char_1_Position (1,10);
LCD_Char_1_PutChar(LCD_Char_1_CUSTOM_4);
CyDelay (4000);
LCD_Char_1_Position(0,0);
LCD_Char_1_PrintString(" ");
LCD_Char_1_Position(1,0);
LCD_Char_1_PrintString(" ");
for(;;)
{
if (Pin_Read()==1){
estado=1;
if(bloqueo==0)
{
LCD_Char_1_Position(1,0);
LCD_Char_1_PrintString("Abierto ");
}else {
LCD_Char_1_Position(1,0);
LCD_Char_1_PrintString(" ");
}
}
else {
estado =0;
if(bloqueo==0)
{
LCD_Char_1_Position(1,0);
LCD_Char_1_PrintString("Cerrado ");
}else {
LCD_Char_1_Position(1,0);
LCD_Char_1_PrintString(" ");
}
}
if(ev_rx == 1)
{
ev_rx = 0;
var_rx=UART_1_GetChar();
fun(var_rx);
}
}
} //Funciones
uint8 fun(uint8 letra){
UART_1_PutChar (arregloz[0]);
arregloz[0]=letra;
if (letra=='b'){
bloqueo=1;
LCD_Char_1_Position(0,0);
LCD_Char_1_PrintString("Bloqueado ");
LCD_Char_1_Position(1,1);
LCD_Char_1_PrintString(" ");
}else {
if (letra=='d'){
bloqueo=0;
LCD_Char_1_Position(0,0);
LCD_Char_1_PrintString("Desbloqueado ");
LCD_Char_1_Position(1,0);
LCD_Char_1_PrintString(" ");
}
}
return estado;
}
/* [] END OF FILE */
Montaje en el microcontrolador
Resultados
y análisis de resultados
Como se puede observar en el video, se
ingresan los bits que se van a sumar mediante los switchs, y en los LED’s se
muestra el resultado de la respectiva suma. De esta manera, cumpliendo con los
objetivos de la práctica.
Conclusiones
·
Operaciones como la factorización (factor
común), se pueden aplicar a las funciones lógicas resultantes de la tabla de
verdad.
·
Se entiende porque la compuerta XOR se
considera prácticamente una primitiva, puesto que se usa mucho, como en el caso
de esta práctica que mediante esta compuerta se pudo deducir considerablemente
el largo de las ecuaciones que se ingresaron al programa.
+
A continuación se observa el funcionamiento.
Comentarios
Publicar un comentario