1 / 50

MICROELECTRÓNICA IE. MSc. José Armando Becerra Vargas

DISEÑO RTL DE PROCESADORES ARITMÉTICOS. MICROELECTRÓNICA IE. MSc. José Armando Becerra Vargas. REQUISITOS DEL CURSO.

zeki
Download Presentation

MICROELECTRÓNICA IE. MSc. José Armando Becerra Vargas

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. DISEÑO RTL DE PROCESADORESARITMÉTICOS MICROELECTRÓNICA IE. MSc. José Armando Becerra Vargas

  2. REQUISITOS DEL CURSO Para abordar temas de diseño jerárquico, descripción a nivel RTL y diseño de procesadores aritméticos en general, el estudiante debe tener conocimientos de los siguientes temas: • Análisis y síntesis de sistemas combinacionales; lógica cableada, Lógica modular y descripción en VHDL de sistemas combinacionales. • Análisis y síntesis de sistemas secuenciales; Máquinas de estado de Mealy y Moore, Diseño de alto nivel y descripción en VHDL de sistemas secuenciales. • Conocimiento básico de arquitectura de computadores; Funcionamiento de una ALU, sistemas que realizan operaciones, Registros, Contadores, Memorias RAM y ROM, descripción en VHDL de sistemas complejos. • Manejo adecuado de las herramientas EDA. Para el caso específico, conocimiento, destreza y manejo del software ISE FOUNDATION de XILINX.

  3. ESTRUCTURA GENERAL DE UN SISTEMA DE TRANSFERENCIA DE REGISTROS

  4. OPERACIÓN DESCRIPCIÓN : El contenido de R1 se transfiere a R2 OPERACIONES DE TRANSFERENCIA Identificación de Registros en operaciones de transferencia:

  5. OPERACIONES DE TRANSFERENCIA Operación condicional: Notación de transferencia entre registros:

  6. OPERACIONES DE TRANSFERENCIA Símbolos usados en el lenguaje de transferencia de Registros:

  7. OPERACIONES DE TRANSFERENCIA Ejemplo de Micro-operaciones Aritméticas:

  8. OPERACIONES DE TRANSFERENCIA Implementación de las operaciones de transferencia:

  9. OPERACIONES DE TRANSFERENCIA Micro-operaciones Lógicas: Ejemplo de operaciones de desplazamiento:

  10. TRANSFERENCIA UTILIZANDO MULTIPLEXORES Ejemplo: Implementación de la operación condicional múltiple.

  11. TRANSFERENCIA UTILIZANDO MULTIPLEXORES Circuito detallado de la implementación de:

  12. TRANSFERENCIA UTILIZANDO MULTIPLEXORES Multiplexores dedicados Un solo Bus

  13. TRANSFERENCIA UTILIZANDO MULTIPLEXORES Ejemplo de Transferencia de Registros utilizando una configuración de un solo BUS.

  14. TIPOS DE BUSES BUS Multiplexado BUS Tri estado con Registros bidireccionales

  15. TIPOS DE BUSES Funcionamiento de un Registro Bidireccional:

  16. TIPOS DE BUSES – ESTRUCTURA CON MEMORIA Conexión de una Memoria al Bus de Datos y al Bus de Direcciones:

  17. UNIDAD DE DATOS Conjunto e Registros (RTL) Unidad Funcional (Operaciones)

  18. UNIDAD FUNCIONAL (ALU) Unidad Aritmético-Lógica (ALU)

  19. ESTRUCTURA COMPLETA DE UNA ALU UNIDAD LÓGICA UNIDAD ARITMÉTICA

  20. CICLO DE MICRO-OPERACIONES DE UNA ALU Tabla de Funciones Mapa de Karnaugh Tabla de Verdad

  21. UNIDAD ARITMÉTICA DE CUATRO BITs Se basa en un diseño totalmente combinacional, los bloques FA, se refieren a sumadores completos de un bit

  22. UNIDAD LÓGICA TABLA FUNCIONAL CIRCUITO LÓGICO El Multiplexor selecciona la función lógica deseada. Pueden existir más de cuatro funciones lógicas, lo que requiere un MUX de mayor capacidad.

  23. UNA ETAPA DE LA ALU

  24. TABLA FUNCIONAL DE LA ALU

  25. DESPLAZADORES (SHIFTERS)

  26. DESPLAZADOR ROTATORIO Tabla Funcional Circuito Lógico

  27. DIAGRAMA GENERAL DE UNA UNIDAD DE DATOS La unidad de datos presentada en la figura, tiene una arquitectura tipo Hardvard (Bus de datos y direcciones separados). El arreglo de registros permite cargar, almacenar y operar fácilmente los datos que se desean procesar.

  28. TABLA PARA LA UNIDAD FUNCIONAL

  29. DETALLE DE LA UNIDAD FUNCIONAL

  30. ESTRUCTURA DE UN PROCESADOR CON ARQUITECTURA TIPO HARDVARD

  31. DIAGRAMA DE BLOQUES DE UN PROCESADOR CON ARQUITECTURA TIPO HARDVARD

  32. EJEMPLOS • Bit Counter • Shift-and-Add Multiplier

  33. BIT COUNTER Sistema que permite contar el número de ‘1s’ presentes en el Registro A, guardando el resultado en el Registro B Pseudo-código para el Bit Counter B = 0; while A≠0 do if a0 = 1 then B = B + 1; end if; Right-shift A; end while ; Se utiliza un lenguaje estándar de programación para describir el algoritmo que se va a utilizar. Luego se describe como diseño ASM

  34. CARTA ASM PARA EL BIT COUNTER Carta ASM para el diseño del DATAPATH del contador de bits ‘1’, describe las micro-operaciones presentes en el diseño.

  35. DIAGRAMA DE TIEMPOS DEL BIT COUNTER

  36. DISEÑO DEL DATAPATH PARA EL BIT COUNTER

  37. CARTA ASM PARA EL CONTROL DEL BIT COUNTER Carta ASM para el diseño de la lógica de control del contador de bits ‘1’. Obsérvese que las señales utilizadas son las señales de STATUS. Z = ‘1’ when A[n] = ‘0’ a0 Bit menos significativo de A s  Señal de inicio START Done Indica que el proceso terminó LB  Load B, Borra el contador B LA Load A, Carga el registro A EB  Incrementa el contador B EA  Desplaza A hacia la derecha

  38. CÓDIGO VHDL PARA DESCRIBIR EL BIT COUNTER (1) -- Descripción en Código VHDL del contador de ‘1s’ -- Declaración de Librerías, cláusula USE LIBRARY ieee ; USEieee.std_logic_1164.all ; LIBRARY work ; USE work.components.shiftrne ; -- Declaración de la entidad ENTITY bitcount IS PORT(Clock, Resetn : INSTD_LOGIC ; LA, s : INSTD_LOGIC ; Data : IN STD_LOGIC_VECTOR(7 DOWNTO 0) ; B : BUFFERINTEGER RANGE 0 to 8 ; Done : OUTSTD_LOGIC ) ; END bitcount ;

  39. CÓDIGO VHDL PARA DESCRIBIR EL BIT COUNTER (2) ARCHITECTURE Behavior OF bitcount IS TYPE State_type IS ( S1, S2, S3 ) ; SIGNAL y : State_type ; SIGNAL A : STD_LOGIC_VECTOR(7 DOWNTO 0) ; SIGNAL z, EA, LB, EB, low : STD_LOGIC ; BEGIN FSM_transitions: PROCESS ( Resetn, Clock ) BEGIN IF Resetn = '0' THEN y <= S1 ; ELSIF (Clock'EVENT AND Clock = '1') THEN CASE y IS WHEN S1 => IF s = '0' THEN y <= S1 ; ELSE y <= S2 ; END IF ; WHEN S2 => IF z = '0' THEN y <= S2 ; ELSE y <= S3 ; END IF ; WHEN S3 => IF s = '1' THEN y <= S3 ; ELSE y <= S1 ; END IF ; END CASE ; END IF ; END PROCESS ;

  40. CÓDIGO VHDL PARA DESCRIBIR EL BIT COUNTER (3) FSM_outputs: PROCESS ( y, A(0) ) BEGIN EA <= '0' ; LB <= '0' ; EB <= '0' ; Done <= '0' ; CASE y IS WHEN S1 => LB <= '1' WHEN S2 => EA <= '1' ; IF A(0) = '1' THEN EB <= '1' ; ELSE EB <= '0' ; END IF ; WHEN S3 => Done <= '1' ; END CASE ; END PROCESS ;

  41. CÓDIGO VHDL PARA DESCRIBIR EL BIT COUNTER (4) -- El DATAPATH es descrito a continuación upcount: PROCESS ( Resetn, Clock ) BEGIN IF Resetn = '0' THEN B <= 0 ; ELSIF (Clock'EVENT AND Clock = '1') THEN IF LB = '1' THEN B <= 0 ; ELSEIF EB = '1' THEN B <= B + 1 ; END IF ; END IF; END PROCESS; low <= '0' ; ShiftA: shiftrne GENERIC MAP ( N => 8 ) PORT MAP ( Data, LA, EA, low, Clock, A ) ; z <= '1' WHEN A = "00000000" ELSE '0' ; END Behavior ;

  42. P = 0; For i = 0 to n – 1 do if bi = 1 then P = P + A; end if; Left-Shift A; End for; Decimal Binaria 13 1 1 0 1 Multiplicando x 11 1 0 1 1 Multiplicador 13 1 1 0 1 13 1 1 0 1 143 0 0 0 0 1 1 0 1 1 0 0 0 1 1 1 1 Producto b. Pseudo - Code a. Método manual • MULTIPLICADOR BINARIO DE n BITS ALGORITMO PARA LA MULTIPLICACIÓN

  43. CARTA ASM PARA EL MULTIPLICADOR BINARIO Carta ASM para el diseño del DATAPATH del multiplicador binario, describe las micro-operaciones presentes en el diseño.

  44. DIAGRAMA DE TIEMPOS PARA EL MULTIPLICADOR

  45. DISEÑO DEL DATAPATH PARA EL MULTIPLICADOR RA  Shift-Left Register RB  Shift-Right Register ADDER  Sumador de 2n bits MUX  Multiplexor 2:1 de 2n bits P  Registro genérico de 2n bits NOR  Compuerta NOR de n entradas Data P  Resultado de la multiplicación B0  LSB del registro B

  46. CARTA ASM PARA EL CONTROL DEL MULTIPLICADOR Carta ASM para el diseño de la lógica de control del Multiplicador Binario. Obsérvese que las señales utilizadas son las señales de STATUS. Z = ‘1’ when B[n] = ‘0’ b0 Bit menos significativo de B s  Señal de inicio START Done Indica que el proceso terminó RB  Shift-Right B RA Shift-Left A Psel  Control del MUX EP  Suma a P el contenido de A

  47. CÓDIGO VHDL PARA DESCRIBIR EL MULTIPLICADOR (1) LIBRARY ieee ; USEieee.std_logic_1164.all ; USEieee.std_logic_unsigned.all ; USE work.components.all ; ENTITY multiply IS GENERIC ( N : INTEGER := 8; NN : INTEGER := 16 ) ; PORT ( Clock : INSTD_LOGIC ; Resetn : INSTD_LOGIC ; LA, LB, s : INSTD_LOGIC ; DataA : INSTD_LOGIC_VECTOR(N–1 DOWNTO 0) ; DataB : INSTD_LOGIC_VECTOR(N–1 DOWNTO 0) ; P : BUFFERSTD_LOGIC_VECTOR(N–1 DOWNTO 0) ; Done : OUTSTD_LOGIC ) ; END multiply ;

  48. CÓDIGO VHDL PARA DESCRIBIR EL MULTIPLICADOR (2) ARCHITECTURE Behavior OF multiply IS TYPE State_type IS ( S1, S2, S3 ) ; SIGNAL y : State_type ; SIGNAL Psel, z, EA, EB, EP, Zero : STD_LOGIC ; SIGNAL B, N_Zeros : STD_LOGIC_VECTOR(N–1 DOWNTO 0) ; SIGNAL A, Ain, DataP, Sum : STD_LOGIC_VECTOR(NN–1 DOWNTO 0) ; BEGIN FSM_transitions: PROCESS ( Resetn, Clock ) BEGIN IF Resetn = '0’ THEN y <= S1 ; ELSIF (Clock'EVENT AND Clock = '1') THEN CASE y IS WHEN S1 => IF s = '0' THEN y <= S1 ; ELSE y <= S2 ; END IF; WHEN S2 => IF z = '0' THEN y <= S2 ; ELSE y <= S3 ; END IF; WHEN S3 => IF s = '1' THEN y <= S3 ; ELSE y <= S1 ; END IF; END CASE ; END IF ; END PROCESS;

  49. CÓDIGO VHDL PARA DESCRIBIR EL MULTIPLICADOR (2) FSM_outputs: PROCESS ( y, s, B(0) ) BEGIN EP <= '0' ; EA <= '0' ; EB <= '0' ; Done <= '0' ; Psel <= '0'; CASE y IS WHEN S1 => EP <= '1‘ ; WHEN S2 => EA <= '1' ; EB <= '1' ; Psel <= '1‘ ; IF B(0) = '1' THEN EP <= '1' ; ELSE EP <= '0' ; END IF ; WHEN S3 => Done <= '1‘ ; END CASE ; END PROCESS ;

  50. CÓDIGO VHDL PARA DESCRIBIR EL MULTIPLICADOR (3) - - Define the datapath circuit Zero <= '0' ; N_Zeros <= (OTHERS => '0' ) ; Ain <= N_Zeros & DataA ; ShiftA: shiftlne GENERICMAP ( N => NN ) PORT MAP ( Ain, LA, EA, Zero, Clock, A ) ; ShiftB: shiftrne GENERIC MAP ( N => N ) PORT MAP ( DataB, LB, EB, Zero, Clock, B ) ; z <= '1' WHEN B = N_Zeros ELSE '0' ; Sum <= A + P ; - - Define the 2n 2-to-1 multiplexers for DataP GenMUX: FOR i IN 0 TO NN–1 GENERATE Muxi: mux2to1 PORT MAP ( Zero, Sum(i), Psel, DataP(i) ) ; END GENERATE; RegP: regne GENERIC MAP ( N => NN ) PORT MAP ( DataP, Resetn, EP, Clock, P ) ; END Behavior ;

More Related