T

Tanori93

Usuario (México)

Primer post: 23 dic 2014
63
Posts
978
Puntos totales
0
Comentarios
M
Microprocesador en lenguaje C (Ejemplo de funcionamiento)
InfoporAnónimo4/8/2015

Diagrama DESCRIPCIÓN DE COMPONENTES Y SUS FUNCIONES Memoria: contiene el conjunto de instrucciones a ejecutarse (programa) así como también pueden ser almacenados en la misma, datos temporales. PC (Program Counter o Contador de Programa): registro contador que lleva la secuencia del programa. Contiene la dirección de la instrucción que esta próxima a ejecutarse. Cada vez que se ejecuta una instrucción, el PC se incrementa en uno para poder direccionar la siguiente instrucción. MAR (Memory Address Register o Registro de Direcciones de Memoria): registro que direcciona la memoria, ya sea para leer de ella una instrucción o para leer o escribir un dato en cualquier localidad. MBR (Memory Buffer Register o Registro Separador de Memoria): es el registro que captura toda información que sale de la memoria. En la realidad el registro MBR y el Buffer asociado pueden quedar constituidos en un solo registro bidireccional para leer o escribir en la memoria. IR (Instruction register o registro de instrucción): es el registro que se encarga de recibir el código de operación de la instrucción que se va a ejecutar, para proceder a decodificarlo. ID (Instruction decoder o Decodificador de instrucción): es un decodificador cuya función es decodificar el código de operación. T (Contador de tiempo): su función es incrementarse con cada pulso de reloj para proporcionar la secuencia de señales de tiempo que realizan las microoperaciones. TD (Time decoder o decodificador de tiempo): decodificador que proporciona salidas discretas de tiempo según el avance del contador de tiempo T. OSC (Oscilador): genera la señal de reloj. ALU (Arithmetic Logic Unit o unidad lógica - aritmética): en ella se llevan a cabo todas las operaciones lógicas y aritméticas que el computador será capaz de realizar. A (Acumulador): registro que almacena (acumula) los resultados de operaciones realizadas en la ALU. F (flags o registro de banderas): registro en el que se guarda en forma de 8 bits individuales el estado del computador después que la ALU ha realizado una operación, como por ejemplo: si existió carry, si el resultado fue cero o si el número es positivo o negativo. B (Buffer de entrada): Buffer que permite tomar datos del exterior del computador. C (Registro de salida): registro que se comunica con el exterior del computador y que permite enviar información hacia afuera del mismo. Circuiteria de control: Tiene como entradas la decodificación de la instrucción qi y la decodificación del tiempo ti y produce salidas que permiten el control de todas las líneas que controlan a los dispositivos que conforman el computador. Codigo en C #include <stdio.h> #include <conio.h> void main(){ int memoria[5] = {19,19,19,128,20}; int pc = 0, mar = 0, mbr = 0, ir = 0, tiempo = 0, acomulador = 0, constante = 2, control = 1, registro; gotoxy(33,2); printf("Computadora digital" ); // posibles lecturas y escrituras de memoria while(control <= 1000){ control = control + 1; // ciclo fetch o de busqueda if(tiempo == 0){ mar = pc; tiempo++; } if(tiempo == 1){ mbr = memoria; pc = pc + 1; tiempo++; } if(tiempo == 2){ ir = mbr; tiempo++; } // secuencia de microoperaciones switch(ir){ // lda nn case 0: if(tiempo == 3){ mar = pc; tiempo++; } if(tiempo == 4){ mbr = memoria; pc = pc + 1; tiempo++; } if(tiempo == 5){ acomulador = mbr; tiempo = 0; } break; // lda (nn) case 1: if(tiempo == 3){ mar = pc; tiempo++; } if(tiempo == 4){ mbr = memoria; pc = pc + 1; tiempo++; } if(tiempo == 5){ mar = mbr; tiempo++; } if(tiempo == 6){ mbr = memoria; tiempo++; } if(tiempo == 7){ acomulador = mbr; tiempo = 0; } break; // add nn case 2: if(tiempo == 3){ mar = pc; tiempo++; } if(tiempo == 4){ mbr = memoria; pc = pc + 1; tiempo++; } if(tiempo == 5){ acomulador = acomulador + mbr; tiempo = 0; } break; // add (nn) case 3: if(tiempo == 3){ mar = pc; tiempo++; } if(tiempo == 4){ mbr = memoria; pc = pc + 1; tiempo++; } if(tiempo == 5){ mar = mbr; tiempo++; } if(tiempo == 6){ mbr = memoria; tiempo++; } if(tiempo == 7){ acomulador = acomulador + mbr; tiempo = 0; } break; // sub nn case 4: if(tiempo == 3){ mar = pc; tiempo++; } if(tiempo == 4){ mbr = memoria; pc = pc + 1; tiempo++; } if(tiempo == 5){ acomulador = acomulador - mbr; tiempo = 0; } break; // sub (nn) case 5: if(tiempo == 3){ mar = pc; tiempo++; } if(tiempo == 4){ mbr = memoria; pc = pc + 1; tiempo++; } if(tiempo == 5){ mar = mbr; tiempo++; } if(tiempo == 6){ mbr = memoria; tiempo++; } if(tiempo == 7){ acomulador = acomulador - mbr; tiempo = 0; } break; // mul nn case 6: if(tiempo == 3){ mar = pc; tiempo++; } if(tiempo == 4){ mbr = memoria; pc = pc + 1; tiempo++; } if(tiempo == 5){ acomulador = acomulador * mbr; tiempo = 0; } break; // mul (nn) case 7: if(tiempo == 3){ mar = pc; tiempo++; } if(tiempo == 4){ mbr = memoria; pc = pc + 1; tiempo++; } if(tiempo == 5){ mar = mbr; tiempo++; } if(tiempo == 6){ mbr = memoria; tiempo++; } if(tiempo == 7){ acomulador = acomulador * mbr; tiempo = 0; } break; // sta (nn) case 8: if(tiempo == 3){ mar = pc; tiempo++; } if(tiempo == 4){ mbr = memoria; pc = pc + 1; tiempo++; } if(tiempo == 5){ mar = mbr; tiempo++; } if(tiempo == 6){ memoria = acomulador; tiempo = 0; } break; // jmp (nn) case 9: if(tiempo == 3) { mar = pc; tiempo++; } if(tiempo == 4){ mbr = memoria; tiempo++; } if(tiempo == 5){ pc = mbr; tiempo = 0; } break; // inc a case 10: if(tiempo == 3){ acomulador = acomulador + 1; tiempo = 0; } break; // dec a case 11: if(tiempo == 3){ acomulador = acomulador - 1; tiempo = 0; } break; // mul a case 12: if(tiempo == 3){ acomulador = acomulador * constante; tiempo = 0; } break; // mpm a case 13: if(tiempo == 3){ acomulador = acomulador * acomulador; tiempo = 0; } break; // rst a case 14: if(tiempo == 3){ acomulador = 0; tiempo = 0; } break; // nva a case 15: if(tiempo == 3){ acomulador = pc; tiempo = 0; } break; // nvt a case 16: if(tiempo == 3){ acomulador = tiempo; tiempo = 0; } break; // mpt a case 17: if(tiempo == 3){ acomulador = acomulador * tiempo; tiempo = 0; } break; // mmt a case 18: if(tiempo == 3){ acomulador = acomulador + tiempo; tiempo = 0; } break; // in a,b case 19: if(tiempo == 3){ clrscr (); gotoxy(33,2); printf("Computadora digital" ); gotoxy(2,4); printf("Introduce un numero: " ); scanf("%d", &registro); acomulador = registro; tiempo = 0; } break; // out c,a case 20: if(tiempo == 3){ gotoxy(2,4); printf("El contenido del acomulador es igual a: %d", acomulador); control = 1001; tiempo = 0; } break; // en caso de lectura irreconosible de memoria default: if(tiempo == 3){ acomulador = acomulador; tiempo = 0; } break; } // fin de la sentencia de control switch } // fin cliclo while getchar(); getchar(); } En el siguiente link se encuentra el set de instrucciones https://www.dropbox.com/s/29s943pcnk8i5nu/CICLO%20FETCH%20O%20DE%20BUSQUEDA.docx?dl=0 Ejemplo de programa, carga en memoria las siguientes constantes: int memoria[5] = {0,4,2,8,20}; resultado igual a 12. Solución 1 - carga el acumulador con 4 con la microoperación 0 2 - suma al contenido del acomulador 8 con la microoperación 2 3 - muestra en pantalla el valor de 4 + 8 con la microoperación 20

10
0
P
pic18f4550 + mcp41010
Ciencia EducacionporAnónimo1/4/2018

link: https://www.youtube.com/watch?v=-_D1tsrXpvU&feature=youtu.be Compilador: PIC C Compiler

0
0
P
Pic18f4550 + mcp4921
Ciencia EducacionporAnónimo1/3/2018

Compilador: PIC C Compiler

0
0
P
Pic18f4550 + pcf8570
Ciencia EducacionporAnónimo1/9/2018

link: https://www.youtube.com/watch?v=89BPK21HkPU&feature=youtu.be Compilador: PIC C Compiler

0
0
D
Diseño de un segundero en VHDL para fpga Basys 2
Ciencia EducacionporAnónimo12/24/2014

Código para el modulo VHDL library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.std_logic_unsigned.all; entity Segundero is Port ( Reloj : in STD_LOGIC; Salida : inout STD_LOGIC); end Segundero; architecture Behavioral of Segundero is signal contador : integer := 0; begin process(reloj) begin if reloj'event and reloj = '1' then contador <= contador + 1; if contador = 49999999 then Salida <= not Salida; contador <= 0; end if; end if; end process; end Behavioral; Codigo UCF NET "Reloj" LOC = b8; NET "Salida" LOC = g1;

11
1
D
Diseño de una ALU personalizada en VHDL para fpga basys 2
Ciencia EducacionporAnónimo1/12/2015

DEFINICIÓN En computación, la unidad aritmético lógica, también conocida como ALU (siglas en inglés de arithmetic logic unit), es un circuito digital que calcula operaciones aritméticas (como suma, resta, multiplicación, etc.) y operaciones lógicas (si, y, o, no), entre dos o mas números. Código para el modulo de VHDL -- ALU DE 4 BITS library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity ALU is Port ( A,B : in STD_LOGIC_VECTOR (4 downto 0); C : out STD_LOGIC_VECTOR (4 downto 0); OPERACION : in STD_LOGIC_VECTOR (2 downto 0)); end ALU; architecture Behavioral of ALU is begin PROCESS(OPERACION) BEGIN CASE OPERACION IS WHEN "000" => C <= A + B; WHEN "001" => C <= A - B; WHEN "010" => C <= A + 1; WHEN "011" => C <= B + 1; WHEN "100" => C <= A AND B; C(4) <= '0'; WHEN "101" => C <= A OR B; C(4) <= '0'; WHEN "110" => C <= A XOR B; C(4) <= '0'; WHEN OTHERS => C <= NOT (A OR B); C(4) <= '0'; END CASE; END PROCESS; end Behavioral; Código para el modulo UCF NET "A[0]" LOC = P11; NET "A[1]" LOC = L3; NET "A[2]" LOC = K3; NET "A[3]" LOC = B4; NET "A[4]" LOC = C12; # IGNORAR NET "B[0]" LOC = G3; NET "B[1]" LOC = F3; NET "B[2]" LOC = E2; NET "B[3]" LOC = N3; NET "B[4]" LOC = A13; #IGNORAR NET "C[0]" LOC = M5; NET "C[1]" LOC = M11; NET "C[2]" LOC = P7; NET "C[3]" LOC = P6; NET "C[4]" LOC = N5; NET "OPERACION[0]" LOC = G12; NET "OPERACION[1]" LOC = C11; NET "OPERACION[2]" LOC = M4;

5
0
Simulación de un restador de 2 bits en Multisim
Simulación de un restador de 2 bits en Multisim
Ciencia EducacionporAnónimo1/14/2015

Sin descripción

0
0
C
Codigo en C que cambia la IP de la computadora
Ciencia EducacionporAnónimo1/16/2015

#include <windows.h> int main() { ShellExecute (NULL, "open", "C:\WINDOWS\system32\cmd.exe", "/c "ipconfig/renew"", NULL, SW_SHOW ); }

0
0
C
Codigo en C para apagar la computadora
Ciencia EducacionporAnónimo1/16/2015

#include <windows.h> int main() { ShellExecute (NULL, "open", "C:WINDOWSsystem32cmd.exe", "/c "shutdown -P"", NULL, SW_SHOW ); }

11
0
Reproducir un sonido en Visual Studio 2012
Reproducir un sonido en Visual Studio 2012
Ciencia EducacionporAnónimo1/16/2015

En el siguiente link se encuentra la aplicación https://www.dropbox.com/s/l1ip0i1x0mmbr29/Aplicacion.rar?dl=0 Nota: - El audio poa00876 que se encuentra en el archivo .rar copiarlo al disco local C: - Agregar el componente Windows Media Player:

0
0
...
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.