Secuenciales II. Diseño de Sistemas con FPGA Patricia Borensztejn

Documentos relacionados
Secuenciales II. Diseño de Sistemas con FPGA Patricia Borensztejn

Secuenciales III (Metodología de Diseño) Diseño de Sistemas con FPGA Patricia Borensztejn Revisado 10/2011

Secuenciales (1) Diseño de Sistemas con FPGA Patricia Borensztejn

Secuenciales (1) Diseño de Sistemas con FPGA 2 cuatrimestre 2009 Patricia Borensztejn

Secuenciales (1) Diseño de Sistemas con FPGA Patricia Borensztejn

Laboratorio 5: Semáforo de dos Vías

UART. Diseño de Sistemas con FPGA 1er cuatrimestre 2013 Patricia Borensztejn

9-Sistemas Secuenciales

Circuitos Secuenciales: concepto de estado

PicoBlaze(3) Interfaces de Entrada/Salida. Diseño de Sistemas con FPGA 1er cuatrimestre 2009 Patricia Borensztejn

ELO211: Sistemas Digitales. Tomás Arredondo Vidal 1er Semestre 2009

Diseño de Sistemas Secuenciales Síncronos. Registros y contadores. Tema 9

Registros y latches multibit. EL-3213 Circuitos Digitales I. Registro de 8 bits (octal register) Otros registros de 8 bits. 74x175

SISTEMAS DIGITALES MÉTODOS DE DISEÑO LDD eman ta zabal zazu

EL-3213 Circuitos Digitales I. Registros y latches multibit

FIFO. Diseño de Sistemas con FPGA Patricia Borensztejn

LAB 5. Tarjeta de Desarrollo Spartan-3. Laboratorio de Sistemas Digitales ELO212 Primer Semestre de 2012

PARTE I. TÉCNICAS DE DISEÑO ELECTRÓNICO MEDIANTE LENGUAJES DE DESCRIPCIÓN HARDWARE

UART. Diseño de Sistemas con FPGA 2 o cuatrimestre 2011 Patricia Borensztejn

LAB 5. Tarjeta de Desarrollo Spartan-3. Laboratorio de Sistemas Digitales ELO212 Primer Semestre de 2010

INGENIERÍA DE COMPUTADORES 3. Solución al examen de Septiembre 2016

+ Máquinas de Estado Finitas

Circuitos Secuenciales: concepto de estado

Síntesis de circuitos secuenciales síncronos: Máquinas de estados finitos

Universidad Carlos III de Madrid Grado en Ingeniería Informática Tecnología de Computadores

Diseño de Circuitos Síncronos Jhon Jairo Padilla Aguilar

Lógica Secuencial. Circuitos Digitales, 2º de Ingeniero de Telecomunicación ETSIT ULPGC

UNIVERSIDAD INDUSTRIAL DE SANTANDER Escuela de Ingenierías Eléctrica, Electrónica y Telecomunicaciones

Fundamentos de los Computadores Grado en Ingeniería Informática Análisis y diseño de sistemas secuenciales

Lattice isplever. Características. Gestión de proyectos

Sistemas Combinacionales y mas Verilog. Diseño de Sistemas con FPGA Tema 2 Patricia Borensztejn

Sistemas Combinacionales y mas Verilog. Diseño de Sistemas con FPGA Patricia Borensztejn

Sistemas Combinacionales y mas Verilog. Diseño de Sistemas con FPGA Patricia Borensztejn

Tutorial introductorio al Lenguaje Abel ( Advanced Bolean Equations Language).

Sistemas Combinacionales y mas Verilog. Diseño de Sistemas con FPGA Patricia Borensztejn

El código concurrente está destinado para el diseño de circuitos combinacionales.

TEMA 1 FUNDAMENTOS DEL DISEÑO DEL HARDWARE DIGITAL

Universidad Carlos III de Madrid Electrónica Digital Ejercicios

Tema 2: Circuitos Secuenciales

BOLETIN 7: Subsistemas secuenciales

ELO211: Sistemas Digitales. Tomás Arredondo Vidal 1er Semestre 2008

13-Bloques Básicos Secuenciales

Lógica secuencial. Biestables

Arquitectura del Procesador I

1. Introducción. (2-5) 1.1 Definición de sistema secuencial. Concepto de estado (6-10) 1.2 Esquema general de un sistema secuencial.

INTRODUCCIÓN A HDL VERILOG

INGENIERÍA DE COMPUTADORES III. Solución al examen de Septiembre 2012

LABORATORIO DE CIRCUITOS DIGITALES (2005-II) QUINTA CLASE DE VHDL

Practica 9 Estilos de codificar a estados FCE

Electrónica. Tema 6 Circuitos Secuenciales. Tema 1 Fundamentos de semiconductores

Figura 1.1 Diagrama en bloque de un Circuito Lógico Secuencial

INGENIERÍA DE COMPUTADORES III. Solución al examen de Septiembre 2014

11-Máquinas Sincrónicas

Lección 6. Circuitos Secuenciales. Ing. Luis Diego Murillo L1-Control Eléctrico 1

Laboratorio 5: Tarjeta de Desarrollo Spartan-3

Máquinas de Estados en la GAL22V10 Usando ABEL-HDL

INGENIERÍA DE COMPUTADORES III. Solución al Ejercicio de Autocomprobación 4

INTRODUCCIÓN A HDL VERILOG 13/11/ :18:32

LECCIÓN Nº 06 DISEÑO DE CONTADORES SINCRONOS

Pipeline. Diseño de Sistemas con FPGA 1er cuatrimestre 2009 Patricia Borensztejn

Máquina Sencilla: de 1988 a La Máquina Sencilla en Verilog Patricia Borensztejn Mayo 2016 Diseño de Sistemas con FPGA

Tema 4.2 Diseño de Sistemas Secuenciales

Organización n del Computador 1. Lógica Digital 2 Circuitos y memorias

Laboratorio 4: Uso de una FPGA

Módulo 2 n. Figura 2.1. Simbología de un contador

HOJA DE PROBLEMAS 8: ELEMENTOS DE MEMORIA

Sistemas Digitales I Taller No 5: Diseño en VHDL de Circuitos Secuenciales

INGENIERÍA DE COMPUTADORES 3. Solución al examen de Junio 2013, Segunda Semana

Prof: Zulay Franco Puerto Ordaz, Agosto

Dispositivos de Memoria

MAQUINA DE ESTADO FINITO (FSM) Autómata finito

Práctica I.- Introducción a los Sistemas Secuenciales

INGENIERÍA DE COMPUTADORES 3. Solución al examen de Junio 2014, Segunda Semana

DISEÑODE SISTEMAS ELECTRÓNICOS DIGITALES AVANZADOS.

Sistemas embebidos basados en FPGAs para instrumentación

MAQUINA DE ESTADO FINITO (FSM) Autómata finito

INGENIERÍA DE COMPUTADORES III. Solución al Ejercicio de Autocomprobación 1

Electrónica Digital: Diseño y Lógica Secuencial

Arquitecaura de Computadoras Tema 1 - Introducción a la Arquitectura de Computadoras

Titulación: Ingeniería Informática Asignatura: Fundamentos de Computadores

ELO211: Sistemas Digitales. Tomás Arredondo Vidal 1er Semestre 2008

DISEÑO F.S.M DIGITAL2 YESID SANTAFE

Tema 2. Sistemas Digitales

Prefacio 25 Organización de la Unidad Didáctica Cómo utilizar el libro Objetivos docentes... 27

ELECTRÓNICA DIGITAL. Ejercicios propuestos Tema 5

Departamento de Ingeniería Electrónica E.T.S.I. Telecomunicación U.P.M. CIRCUITOS ELECTRÓNICOS PRUEBA ESCRITA Enero de 2015 Duración: 90 min.

5 DESCRIPCIÓN BASADA EN ALGORITMOS

Universidad Central de Venezuela Facultad de Ciencias Escuela de Computación Organización y Estructura del Computador II Semestre I-2014.

UNIVERSIDAD DE CASTILLA LA MANCHA ESCUELA SUPERIOR DE INFORMÁTICA. CIUDAD REAL

Tutorial 2: Pasar de diagrama ASM a un circuito

Lógica Secuencial. Dr. Andrés David García García Escuela de Ingeniería y Ciencias Campus Estado de México

Prefacio 25 Organización de la Unidad Didáctica Cómo utilizar el libro Objetivos docentes... 27

Contador Universal CU13. Contador Universal. Out_bcd3 Out_bcd2 Out_bcd1 Out_bcd0 Overflow End of Conversion. Medidor de Frecuencias

Figura P1. 2. Para el circuito que se muestra en la Figura P2, complete el diagrama de tiempo. Figura P2

Transcripción:

Secuenciales II Diseño de Sistemas con FPGA Patricia Borensztejn

En la clase pasada Hicimos un contador universal Algunos de ustedes se dieron cuenta que la frecuencia de conteo, no podía ser la frecuencia del reloj externo de 50 MHz, porque eso es muy rápido para verlo en los leds o en los siete segmentos Algunos de ustedes entonces utilizaron los pushbottoms como reloj Otros usaron un contador modulo 24 o 25 para usar la salida max_tick o min_tick como entrada del reloj del contador

En la clase pasada Otros usaron un contador módulo 24 o 25 para usar la salida max_tick o min_tick como entrada del reloj del contador universal. clk Contador Mod 24 Max_tick clk reset syn_clr load Max_tick d en up Contador Universal q Min_tick

Módulo clk Podemos hacer un módulo que nos sirva para utilizarlo cada vez que deseemos bajar la frecuencia del reloj. Tenio en cuanta la siguiente ecuación: Escala= 25000000 Frecuencia Donde la frecuencia es la deseada, y la constante es la cantidad de ciclos por segundo (dividido por dos), el módulo clk quedaría.

Módulo clock // Basys Board and Spartan-3E Starter Board // Crystal Clock Oscillator clkosc.v // c 2008 Embedded Design using Programmable Gate Arrays Dennis Silage module clock(input CCLK, input [31:0] clkscale, output reg clk); // CCLK crystal clock oscillator 50 MHz reg [31:0] clkq = 0; // clock register, initial value of 0 always@(posedge CCLK) clkq=clkq+1; if (clkq>=clkscale) clk=~clk; clkq=0; // increment clock register // clock scaling // output clock // reset clock register module

Módulo TestClk module testclk( input cclk, output ld0, output ld1, output ld2 ); reloj M0(.cclk(cclk),.escala(25000000),.clk(ld0)); 1Hz reloj M1(.cclk(cclk),.escala(12500000),.clk(ld1)); 2Hz reloj M2(.cclk(cclk),.escala(6250000),.clk(ld2)); 4Hz

Modelado de Sistemas Secuenciales Según la función del siguiente estado se dividen en: Circuitos secuenciales regulares: el estado siguiente se construye con un incrementador o un shifter FSM (Finite State Machines): el estado siguiente no exhibe un pattern repetitivo, sino mas bien random. FSMD (FSM with Data Path): combina los dos tipos anteriores de sistemas secuenciales, es decir, está compuesto por dos partes: FSM: llamado control path es el encargado de examinar las entradas externas y de generar las señales para el funcionamiento de los Circuitos secuenciales regulares: llamado data path.

FSM: Máquina de Estado Finita Se usa para modelar un sistema que transita por un número finito de estados internos. A diferencia de los sistemas secuenciales regulares, las transiciones de estado no exhiben un patrón repetitivo, y por lo tanto no pueden ser construidos con componentes standard sino que debe ser lógica ad-hoc. Es decir, la diferencia fundamental reside en la lógica de siguiente estado.

FSM Se representa mediante Diagramas de Estado (State Diagram) o bien mediante ASM (Algorithmic State Machine Chart). En cualquier caso, la implementación es como en el caso de los circuitos secuenciales regulares: se separa el registro de estado y se realiza la logica combinatoria para la función del estado siguiente y la salida.

FSM: Ejemplo Detector de flanco de subida de una señal

FSM: Ejemplo module edge_detect_moore ( input wire clk, reset, input wire level, output reg tick ); // symbolic state declaration localparam [1:0] zero = 2'b00, edg = 2'b01, one = 2'b10; // signal declaration reg [1:0] state_reg, state_next; // state register always @(posedge clk, posedge reset) if (reset) state_reg <= zero; else state_reg <= state_next; // next-state logic and output logic always @* state_next = state_reg; // default state: the same tick = 1'b0; // default output: 0 case (state_reg) zero: if (level) state_next = edg; edg: tick = 1'b1; if (level) state_next = one; else state_next = zero; one: if (~level) state_next = zero; default: state_next = zero; case module

Máquinas de Estado Máquina de Moore es aquella FSM donde las salidas son solo función del estado Máquina de Mealy es aquella FSM donde las salidas son función del estado y de la entrada externa. Ambas máquinas solo difieren en la función de salida. Una FSM compleja puede contener los dos tipos de salidas.

Máquina de Moore y de Mealy

Máquina de Moore y de Mealy

Código para Mealy // Listing 5.4 module edge_detect_mealy ( input wire clk, reset, input wire level, output reg tick ); // symbolic state declaration localparam zero = 1'b0, one = 1'b1; // signal declaration reg state_reg, state_next; // state register always @(posedge clk, posedge reset) if (reset) state_reg <= zero; else state_reg <= state_next; // next-state logic and output logic always @* state_next = state_reg; // default state: the same tick = 1'b0; // default output: 0 case (state_reg) zero: if (level) tick = 1'b1; state_next = one; one: if (~level) state_next = zero; default: state_next = zero; case module

Código Moore vs Mealy // next-state logic always @* state_next = state_reg; // default state: the same case (state_reg) zero: if (level) state_next = edg; edg: if (level) state_next = one; else state_next = zero; one: if (~level) state_next = zero; default: state_next = zero; case //output logic assign tick= (state_reg==edg)? 1'b1 : 1'b0; module // next-state logic and output logic always @* state_next = state_reg; // default state: the same tick = 1'b0; // default output: 0 case (state_reg) zero: if (level) tick = 1'b1; state_next = one; one: if (~level) state_next = zero; default: state_next = zero; case module

Sutiles Diferencias. Entre ambos modelos Mealy tiene menos estados El modelo de Mealy tiene disponible la salida un ciclo antes que Moore El problema es que los defasajes de las entradas pasan a las salidas cosa que no seria un problema si las salidas del sistema son entradas a otro sistema secuencial síncrono que muestrea la señal con el mismo clk. Sin embargo. Usamos Moore.

Otro Ejemplo: Circuito Antirrebote Como el switch es un dispositivo mecánico, al ser este presionado, puede rebotar mas de una vez antes de quedar establecida la señal. El tiempo de establecimiento puede ser aproximadamente de 20 ms. El propósito del circuito antirrebote es el de filtrar los rebotes.

Circuito Antirrebote La idea es utilizar un timer que genere una señal cada 10 ms, y una FSM. La FSM usa esta información para saber si la entrada está o no estabilizada. Si la entrada sw está activa por mas de 20 ms, entonces ha habido un evento. rst sw db clk

Circuito Antirrebote: Diagrama de Estados (FSM)

Código Circuito Antirrebote module db_fsm ( input wire clk, reset, input wire sw, output reg db ); // symbolic state declaration localparam [2:0] zero = 3'b000, wait1_1 = 3'b001, wait1_2 = 3'b010, wait1_3 = 3'b011, one = 3'b100, wait0_1 = 3'b101, wait0_2 = 3'b110, wait0_3 = 3'b111; // number of counter bits (2^N * 20ns = 10ms tick) localparam N =19; // signal declaration reg [N-1:0] q_reg; wire [N-1:0] q_next; wire m_tick; reg [2:0] state_reg, state_next; // body //============================================= // counter to generate 10 ms tick //============================================= always @(posedge clk) q_reg <= q_next; // next-state logic assign q_next = q_reg + 1; // output tick assign m_tick = (q_reg==0)? 1'b1 : 1'b0; //============================================= // debouncing FSM //============================================= // state register always @(posedge clk, posedge reset) if (reset) state_reg <= zero; else state_reg <= state_next;

Código Circuito Antirrebote // next-state logic and output logic always @* state_next = state_reg; // default state: the same db = 1'b0; // default output: 0 case (state_reg) zero: if (sw) state_next = wait1_1; wait1_1: if (~sw) state_next = zero; else if (m_tick) state_next = wait1_2; wait1_2: if (~sw) state_next = zero; else if (m_tick) state_next = wait1_3; wait1_3: if (~sw) state_next = zero; else if (m_tick) state_next = one; one: db = 1'b1; if (~sw) state_next = wait0_1; wait0_1: db = 1'b1; if (sw) state_next = one; else if (m_tick) state_next = wait0_2; wait0_2: db = 1'b1; if (sw) state_next = one; else if (m_tick) state_next = wait0_3; wait0_3: db = 1'b1; if (sw) state_next = one; else if (m_tick) state_next = zero; default: state_next = zero; case module Algo a considerar: los ticks actúan como señales combinacionales! Fijarse que solo estará activa durante un ciclo de reloj.

Aplicación Se desea diseñar una aplicación para determinar el número de autos que han utilizado un parquímetro. Cada parquímetro cuenta con dos pares de sensores de luz (emisorreceptor) como se indica en la figura. El parquímetro tiene una única entrada y salida.

Aplicación Monitoreando los dos sensores (a y b) se puede determinar si: Un auto está entrando Inicialmente los dos sensores están no bloqueados (a=b=0) Se bloquea el sensor a (ab=10) Se bloquean los dos sensores (ab=11) El sensor a se desbloquea (ab=01) Los dos sensores estan desbloqueados (ab=00) Un auto está salio Un hombre está pasando La aplicación debe incrementar un contador por cada auto que ha ocupado el parquímetro en el día. La aplicación debe activar dos señales de salida: enter y exit. Los sensores a y b deben simularse, con el comportamiento adecuado.