Diseño de Circuitos Lógicos Combinatorios (2)

Slides:



Advertisements
Presentaciones similares
Lenguajes de Descripción de Hardware
Advertisements

Métodos de diseño en VHDL.
SENTENCIAS SECUENCIALES
Insercion de datos..
Introducción al VHDL VHDL orientado a la síntesis de circuitos en Dispositivo Lógicos Programables.
Semáforo Versión .TDF AHDL
Introducción Diseño digital contemporáneo
Diseño Digital usando Verilog
Lenguaje de Descripción de Hardware.
VHDL.
Interfaces de entrada / salida
Interfases de Entrada / Salida
VHDL Breve introducción.
Others, soporte para síntesis. Los agregados tienen la habilidad de usar la sentencia others, la cual asignará un valor a todos los otros elementos de.
Diseño lógico combinacional mediante VHDL
Diseño Lógico Combinacional con VHDL
Estructura general de un programa en el servidor de Bases de Datos.
Introducción a VHDL Agenda Un poco de historia Definiciones generales Entidades Arquitecturas Configuraciones.
Capítulo.3 - Diseño Lógico Combinacional con VHDL
REDES COMBINATORIAS 2 MAQUINAS DIGITALES
LA ARQUITECTURA O LA FUNCIONALIDAD DEL SISTEMA DefiniciónDefiniciónDefinición Declaración y reglas sintácticas.Declaración y reglas sintácticas.Declaración.
Universidad Autónoma de Nuevo León Facultad de Ingeniería Mecánica y Eléctrica Octubre 2012 Sistemas Digitales Electrónica Digital I Diseño Combinacional.
Mtr. Adrián Monge Monge Educación 2015 Maestría, Mención en Administración de Proyectos ULACITMaestría, Mención en Administración de Proyectos 2012 Licenciatura,
[ Arquitectura de Computadores ] SISTEMAS DIGITALES Präsentat ion Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia.
2012-BM5A. Unos tips antes de empezar: C# es Case Sensitive (sensible a mayúsculas) Pepe ≠ pepe ≠ pEpE Las asignaciones se hacen con “=” y las comparaciones.
Trabajar con módulosTrabajar con variables públicasCrear procedimientos Pasar argumentos por valor y por referencia Referencia rápida.
ESTRUCTURAS DE DATOS Y ALGORITMOS Samuel Peñaló
PROGRAMACIÓN I CENTRO DE ESTUDIOS INTEGRADOS EL MARISCAL - CEIM Ing. Luisa Fernanda Arenas Castañeda Feb 6 de 2016.
Algebra de Boole SISTEMAS DIGITALES I.  En 1854 el matemático inglés George Boole formalizó un sistema algebraico de dos valores para expresar cierto.
Estructuras de control Por Diego Caro A. udec.cl}
El procesador Datapath y control. Universidad de SonoraArquitectura de Computadoras2 Introducción En esta parte del curso contiene: Las principales técnicas.
Administración de Sistemas Gestores de Bases de Datos.
U.M.S.A. ETN-601 Sistemas Digitales Decodificador 3 a 8 Aux. David Marza Herrera.
CONSIDERACIONES DE RUIDO EN SISTEMAS PCM ING. JAVIER GARCIA.
Organización del Computador 1 Lógica Digital 1 Algebra de Boole y compuertas.
Control, adquisición y monitoreo con Arduino y Visual Basic .net
Ingeniero en Computación José Alfredo Cobián Campos
Pablo Huerta Pellitero
Algebra de Boole Sistemas Digitales I.
Sistemas Digitales EdC-ISW (Grupo 2- Francisco Pérez)
Facultad de Ingeniería Mecánica y Eléctrica
Olimpiadas Chilenas de Informática - Formación
Unidad aritmético-lógica
El procesador Diseño del control.
Circuitos combinacionales II
Diseño de Circuitos Lógicos Secuenciales
Cicuitos Combinatorios y Algebra Booleana
Diseño Secuencial El cambio es la única cosa en el universo que no cambia. Helmuth Wilhem Científico alemán.
Titulación: Grado en Ingeniería de Computadores
5. SQL Procedural.
Instrucciones y excepciones
Bucles y estructuras de decisión
En VHDL existen tres tipos de declaraciones concurrentes;
PLDs Dispositivos lógicos programables
Hardware Description Language
Programación en VHDL.
Diego Hernández R Pascal Variables Diego Hernández R
Tema 5 Representación y Técnicas de Diseño de Algoritmos
Tema 3: Operadores Antonio J. Sierra.
Bucles y estructuras de decisión
PROGRAMACIÓN (2).
(1) Basic Language Concepts © Sudhakar Yalamanchili, Georgia Institute of Technology, 2006.
Compuertas lógicas Estos circuitos pueden visualizarse como máquinas que contienen uno o más dispositivos de entrada y exactamente un dispositivo de salida.
Diego Hernández R Pascal Variables Diego Hernández R
Diego Hernández R. Archivos Diego Hernández R.
Programación Estructurada
Procedimientos y Funciones
Tema 8. Estructuras de decisión. Clases 1 y 2.
Transcripción de la presentación:

Diseño de Circuitos Lógicos Combinatorios (2) EL 653 Diseño de Circuitos Lógicos Combinatorios (2)

Niveles de Abstracción Verilog puede ser usado para definir circuitos en 4 niveles de abstracción Algorítmico RTL Compuertas Switch Existen dos tipos de código Estructural: descripción verbal del circuito sin considerar elementos de almacenamiento Procedural: usado para circuitos con elementos de almacenamiento

Módulos El módulo es la entidad principal de diseño en Verilog Sintaxis module module_name (port_list); input [msb:lsb] input_port_list; output [msb:lsb] output_port_list; inout [msb:lsb] inout_port_list; … statememnts endmodule

Asignación Continua La asignación continua es usada para asignar un valor a un wire dentro de un módulo Se realiza a través del comando assign o asignando un valor al wire en su declaración Las declaraciones de asignación continua son concurrentes y son ejecutadas continuamente El orden de las asignaciones no tiene importancia Sintaxis wire wire_variable = value; assign wire_variable = expression;

Instanciación de Módulos La instanciación de un módulo crea un objeto único Los puertos del módulo instanciado deben corresponder a los de la declaración del módulo por nombre, usando un punto ‘.template_port_name por posición Sintaxis module_name instance_name_1(port_connection_list), instance_name_2(port connection list), …… instance_name_n (port_connection_list);

Instanciación de Módulos Ejemplo // module definition module and4(a,b,c); input [3:0] a,b; output [3:0] c; assign c=a&b; endmodule //module instantiations wire [3:0] in1, in2; wire [3:0] o1, o2; // C1 is an instance of and 4 referenced by position and4 C1(in1,in2,o1); //C2 is an instance of and 4 referenced by name and4 C2(.c(o2), .a(in1), .b(in2));

Construyendo la Descripción VHDL a Partir de la Tabla de Verdad Z 1

Opción 1 – Descripción Estructural Ejemplo module comb (a,b,c,z); //Input ports input a,b,c; //Output ports output z; //Port wires wire a,b,c; wire z; //Internal wires wire nota,o1,o2; not C1 (nota,a); and C2 (o1,nota,b); and C3 (o2,a,c); or C4 (z,o1,o2); endmodule

Opción 2 – Descripción Comportamental Ejemplo module comb (a,b,c,z); //Input ports input a,b,c; //Output ports output z; //Port wires wire a,b,c; wire z; assign z = (!a && b) || (a && c); endmodule

Tarea 2 a b Cin S Co 1 Un full adder tiene la siguiente tabla de verdad para la suma S y el carry Co en función de las entradas a, b y carry Cin Derive las funciones de la tabla y escriba una descripción comportamental del circuito

Bloques Procedurales El código comportamental de Verilog se encuentra dentro de los bloques procedurales Hay dos tipos de bloques procedurales initial: se ejecuta solo una vez, al inicio always: se ejecuta siempre basado en los cambios de las variables mencionadas en el comando

Ejemplo – Initial module initial_example(); reg clk,reset,enable,data; initial begin clk = 0; reset = 0; enable = 0; data = 0; end endmodule

Ejemplo – Always module initial_always(); reg clk,reset,enable,q_in,data; always @(posedge clk) if (reset) begin data <= 0; end else if (enable) begin data <= q_in; end endmodule

Assign en Bloques Procedurales Solo se asignan valores a variables del tipo reg, integer, real o tiempo Se puede asignar a un reg el valor de una net, constante, otro reg o un valor específico

Asignaciones Bloqueantes y no Bloqueantes Las asignaciones bloqueantes (=) son secuenciales y se ejecutan en el orden en que son escritas las asignaciones no bloqueantes (<=) se ejecutan en paralelo

Decodificadores A1 A0 Z3 Z2 Z1 Z0 1 BIN/1 OF 4 1 1 2 3 2 4

Decodificadores module decod (a,z); //Input ports input [1:0] a; //Output ports output [3:0] z; //Port wires wire [1:0] a; reg [3:0] z; initial begin z = 4'b0000; end always @(a) begin case(a) 2'b00: z = 4'b0001; 2'b01: z = 4'b0010; 2'b10: z = 4'b0100; 2'b11: z = 4'b1000; endcase endmodule

Tarea 3 ¿Cómo haría el decodificador utilizando las instrucciones if … else?

Ejercicio

Display 7 Segmentos module sevenseg (a,z); //Input ports input [3:0] a; //Output ports output [6:0] z; //Port wires wire [3:0] a; reg [6:0] z; initial begin z = 7'b0000000; end

Display 7 Segmentos always @(a) begin case(a) 4'b0000: z = 7'b1110111; default: z = 7'b0000000; endcase end endmodule

El Concepto de Función Tiene solo una salida Si se requiere más de una salida, estas deben ser concatenadas El programa que llama la función puede extraer cada salida de la salida concatenada

function[16:0] decode_add; input [31:0] instr; reg add_func; reg [7:0] opcode,opr1,opr2; begin opcode = instr[31:24]; opr1 = instr[7:0]; case (opcode) 8'b10001000: begin //add two operands add_func = 1; opr2 = instr[15:8]; end 8'b10001001: begin //substract two operands add_func = 0; 8'b10001010: begin //increment operand opr2 = 8'b00000001; default: begin //decrement operand endcase decode_add = {add_func,opr2, opr1}; //concatenated into 17 bits endfunction module simple_procesosor(instruction, outp); input [31:0] instruction; output [7:0] outp; reg [7:0] outp; reg func; reg [7:0] op1,op2; always @(instruction) begin {func,op2,op1} = decode_add(instruction); if (func ==1) outp = op1 + op2; else outp = op1 - op2; end endmodule

Multiplexor 4 – 1 module mux_behavioral(a,b,c,d,sel,y); //Input ports input a,b,c,d; input [1:0] sel; //Output ports output y; //Port wires wire a,b,c,d; wire [1:0]sel; reg y; always @(sel) begin if (sel == 2'b00) y = a; else if (sel == 2'b01) y = b; else if (sel == 2'b10) y = c; else if (sel == 2'b11) y = d; end endmodule