MO401 4.1 2006 Prof. Paulo Cesar Centoducatte MC542 Organização de Computadores Teoria e Prática.

Slides:



Advertisements
Similar presentations
MC542 Organização de Computadores Teoria e Prática
Advertisements

MC542 Organização de Computadores Teoria e Prática
DISEÑO LÓGICO (DLO) Ejemplos de VHDL.
HDL Programming Fundamentals
UNIT 8: Synthesis Basics
arquitectura – implementação
VHDL Introdução Paulo C. Centoducatte fevereiro de 2005
VHDL Coding Style MO801/MC912.
Flip-Flop J-K.
Basic Finite State Machines 1. 2 Finite State Machines Binary encoded state machines –The number of flip-flops is the smallest number m such that 2 m.
VHDL 5 FINITE STATE MACHINES (FSM) Some pictures are obtained from FPGA Express VHDL Reference Manual, it is accessible from the machines in the lab at.
Diseño de Circuitos de Aplicación Específica VHDL Circuitos Integrados de Aplicación Específica VHDL: VHSIC Hardware Description Language.
Tutorial 2 Sequential Logic. Registers A register is basically a D Flip-Flop A D Flip Flop has 3 basic ports. D, Q, and Clock.
ASIC 121: Practical VHDL Digital Design for FPGAs Tutorial 2 October 4, 2006.
Adders and Subtractors
©2004 Brooks/Cole FIGURES FOR CHAPTER 20 VHDL FOR DIGITAL SYSTEM DESIGN Click the mouse to move to the next page. Use the ESC key to exit this chapter.
VHDL in digital circuit synthesis (tutorial) dr inż. Miron Kłosowski EA 309
Sequential Design ELEC 311 Digital Logic and Circuits Dr. Ron Hayne
VHDL Lecture 1 Megan Peck EECS 443 Spring 08.
Step 1: State Diagram.
©2004 Brooks/Cole FIGURES FOR CHAPTER 17 VHDL FOR SEQUENTIAL LOGIC Click the mouse to move to the next page. Use the ESC key to exit this chapter. This.
VHDL Programming in CprE 381 Zhao Zhang CprE 381, Fall 2013 Iowa State University Last update: 9/15/2013.
Introduction To VHDL for Combinational Logic
INTRO TO VHDL Appendix A: page page VHDL is an IEEE and ANSI standard. VHDL stands for Very High Speed IC hardware description language.
Lecture #28 Page 1 ECE 4110– Sequential Logic Design Lecture #28 Agenda 1.Counters Announcements 1.HW #13 assigned 2.Next: Test #2 Review.
Multiplexers Section 3-7 Mano & Kime. Multiplexers & Demultiplexers Multiplexers (Selectors) Lab 1 – Behavioral VHDL -- Multiplexers MUX as a Universal.
Digital Logic with VHDL EE 230 Digital Systems Fall 2006 (10/17/2006)
LECTURE 4: The VHDL N-bit Adder
1 EE24C Digital Electronics Project Theory: Sequential Logic (part 2)
Floating-Point Arithmetic ELEC 418 Advanced Digital Systems Dr. Ron Hayne Images Courtesy of Thomson Engineering.
MO Prof. Paulo Cesar Centoducatte MC542 Organização de Computadores Teoria e Prática.
28/10/2007DSD,USIT,GGSIPU1 Latch & Register Inference.
Quad 2-to-1 and Quad 4-to-1 Multiplexers Discussion D2.4 Example 7.
2-to-1 Multiplexer: if Statement Discussion D2.1 Example 4.
4-to-1 Multiplexer: case Statement Discussion D2.3 Example 6.
CSCI 660 EEGN-CSCI 660 Introduction to VLSI Design Lecture 2 Khurram Kazi Some of the slides were taken from K Gaj ’ s lecture slides from GMU ’ s VHDL.
Introduction to Counter in VHDL
CprE / ComS 583 Reconfigurable Computing Prof. Joseph Zambreno Department of Electrical and Computer Engineering Iowa State University Lecture #17 – Introduction.
Chapter 10 State Machine Design. 2 State Machine Definitions State Machine: A synchronous sequential circuit consisting of a sequential logic section.
ENG2410 Digital Design LAB #6 LAB #6 Sequential Logic Design (Flip Flops)
ENG241 Digital Design Week #8 Registers and Counters.
VHDL for Combinational Circuits. VHDL We Know Simple assignment statements –f
Digital Systems Design VHDL simulation of a 3 – Bit Binary Decoder with Enable by Marc A. Mackey.
ECE 331 – Digital System Design Multiplexers and Demultiplexers (Lecture #13)
4-to-1 Multiplexer: Module Instantiation Discussion D2.2 Example 5.
Fundamentals of Digital System Design Pradondet Nilagupta Lecture 7: Flip-flops, Registers, Counters Chapter 7.
Combinational logic circuit
LAB #6 Sequential Logic Design (Flip Flops, Shift Registers)
Supplement on Verilog FF circuit examples
Week #7 Sequential Circuits (Part B)
Describing Combinational Logic Using Processes
Registers and Counters
Figure 7.1 Control of an alarm system
CHAPTER 17 VHDL FOR SEQUENTIAL LOGIC
ECE 4110–5110 Digital System Design
Sequential-Circuit Building Blocks
CPE 528: Session #7 Department of Electrical and Computer Engineering University of Alabama in Huntsville.
Building blocks of a computer
CHAPTER 17 VHDL FOR SEQUENTIAL LOGIC
RTL Style در RTL مدار ترتيبي به دو بخش (تركيبي و عناصر حافظه) تقسيم مي شود. مي توان براي هر بخش يك پروسس نوشت يا براي هر دو فقط يك پروسس نوشت. مرتضي صاحب.
CPE 528: Lecture #5 Department of Electrical and Computer Engineering University of Alabama in Huntsville.
Sequntial-Circuit Building Blocks
Figure 8.1. The general form of a sequential circuit.
CprE / ComS 583 Reconfigurable Computing
Sequntial-Circuit Building Blocks
4-Input Gates VHDL for Loops
System Controller Approach
디 지 털 시 스 템 설 계 UP2 Kit를 이용한 카운터 설계
Digital Logic with VHDL
(Sequential-Circuit Building Blocks)
Presentation transcript:

MO Prof. Paulo Cesar Centoducatte MC542 Organização de Computadores Teoria e Prática

MO MC542 Circuitos Lógicos Projeto de Flip-Flops, Registradores, Contadores com VHDL Fundamentals of Digital Logic with VHDL Design - (Capítulo 7)

MO Título do Capítulo Abordado Sumário Memória Implicita FF D da Biblioteca Gated D latch Flip-Flop D –Usando Wait Until –Com reset Assíncrono Módulo lpm_shiftreg Registrador –8 bits com Clear Assíncrono –N bits com Clear Assíncrono Flip-flop D com um mux 2:1 na entrada D

MO Memória Implicita LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY implied IS PORT ( A, B : IN STD_LOGIC ; AeqB: OUT STD_LOGIC ) ; END implied ; ARCHITECTURE Behavior OF implied IS BEGIN PROCESS ( A, B ) BEGIN IF A = B THEN AeqB <= '1' ; END IF ; END PROCESS ; END Behavior ;

MO Memória Implicita A B AeqB … PROCESS ( A, B ) BEGIN IF A = B THEN AeqB <= '1' ; END IF ; END PROCESS ; …

MO Instanciação de um FF D da Biblioteca LIBRARY ieee ; USE ieee.std_logic_1164.all ; LIBRARY altera ; USE altera.maxplus2.all ; ENTITY flipflop IS PORT ( D, Clock : IN STD_LOGIC ; Resetn, Presetn: IN STD_LOGIC ; Q: OUT STD_LOGIC ) ; END flipflop ; ARCHITECTURE Structure OF flipflop IS BEGIN dff_instance: dff PORT MAP ( D, Clock, Resetn, Presetn, Q ) ; END Structure ;

MO Gated D latch LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY latch IS PORT ( D, Clk : IN STD_LOGIC ; Q : OUT STD_LOGIC) ; END latch ; ARCHITECTURE Behavior OF latch IS BEGIN PROCESS ( D, Clk ) BEGIN IF Clk = '1' THEN Q <= D ; END IF ; END PROCESS ; END Behavior ;

MO Flip-Flop D LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY flipflop IS PORT ( D, Clock: INSTD_LOGIC ; Q: OUTSTD_LOGIC) ; END flipflop ; ARCHITECTURE Behavior OF flipflop IS BEGIN PROCESS ( Clock ) BEGIN IF Clock'EVENT AND Clock = '1' THEN Q <= D ; END IF ; END PROCESS ; END Behavior ;

MO Flip-Flop D Usando Wait Until LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY flipflop IS PORT (D, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC ) ; END flipflop ; ARCHITECTURE Behavior OF flipflop IS BEGIN PROCESS BEGIN WAIT UNTIL Clock'EVENT AND Clock = '1' ; Q <= D ; END PROCESS ; END Behavior ;

MO Flip-Flop D com reset Assíncrono LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY flipflop IS PORT ( D, Resetn, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC) ; END flipflop ; ARCHITECTURE Behavior OF flipflop IS BEGIN PROCESS ( Resetn, Clock ) BEGIN IF Resetn = '0' THEN Q <= '0' ; ELSIF Clock'EVENT AND Clock = '1' THEN Q <= D ; END IF ; END PROCESS ; END Behavior ;

MO Flip-Flop D com Reset Síncrono LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY flipflop IS PORT ( D, Resetn, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC) ; END flipflop ; ARCHITECTURE Behavior OF flipflop IS BEGIN PROCESS BEGIN WAIT UNTIL Clock'EVENT AND Clock = '1' ; IF Resetn = '0' THEN Q <= '0' ; ELSE Q <= D ; END IF ; END PROCESS ; END Behavior ;

MO Módulo lpm_shiftreg LIBRARY ieee ; USE ieee.std_logic_1164.all ; LIBRARY lpm ; USE lpm.lpm_components.all ; ENTITY shift IS PORT ( Clock : IN STD_LOGIC ; Reset : IN STD_LOGIC ; Shiftin, Load: IN STD_LOGIC ; R: IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; Q: OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END shift ; ARCHITECTURE Structure OF shift IS BEGIN instance: lpm_shiftreg GENERIC MAP (LPM_WIDTH => 4, LPM_DIRECTION => "RIGHT") PORT MAP (data => R, clock => Clock, aclr => Reset, load => Load, shiftin => Shiftin, q => Q ) ; END Structure ;

MO Registrador de 8 bits com Clear Assíncrono LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY reg8 IS PORT ( D: IN STD_LOGIC_VECTOR(7 DOWNTO 0) ; Resetn, Clock: IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ) ; END reg8 ; ARCHITECTURE Behavior OF reg8 IS BEGIN PROCESS ( Resetn, Clock ) BEGIN IF Resetn = '0' THEN Q <= " " ; ELSIF Clock'EVENT AND Clock = '1' THEN Q <= D ; END IF ; END PROCESS ; END Behavior ;

MO Registrador de N bits com Clear Assíncrono LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY regn IS GENERIC ( N : INTEGER := 16 ) ; PORT (D : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0); Resetn, Clock : IN STD_LOGIC ; Q: OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0) ); END regn ; ARCHITECTURE Behavior OF regn IS BEGIN PROCESS ( Resetn, Clock ) BEGIN IF Resetn = '0' THEN Q '0') ; ELSIF Clock'EVENT AND Clock = '1' THEN Q <= D ; END IF ; END PROCESS ; END Behavior ;

MO Flip-flop D com um mux 2:1 na entrada D LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY muxdff IS PORT (D0, D1, Sel, Clock: IN STD_LOGIC ; Q : OUT STD_LOGIC ) ; END muxdff ; ARCHITECTURE Behavior OF muxdff IS BEGIN PROCESS BEGIN WAIT UNTIL Clock'EVENT AND Clock = '1' ; IF Sel = '0' THEN Q <= D0 ; ELSE Q <= D1 ; END IF ; END PROCESS ; END Behavior ;

MO Shift Register Usando muxdff como Componente LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY shift4 IS PORT ( R : IN STD_LOGIC_VECTOR(3 DOWNTO 0); L, w, Clock : IN STD_LOGIC ; Q: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0)); END shift4 ; ARCHITECTURE Structure OF shift4 IS COMPONENT muxdff PORT ( D0, D1, Sel, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC ) ; END COMPONENT ; BEGIN Stage3: muxdff PORT MAP ( w, R(3), L, Clock, Q(3) ) ; Stage2: muxdff PORT MAP ( Q(3), R(2), L, Clock, Q(2) ) ; Stage1: muxdff PORT MAP ( Q(2), R(1), L, Clock, Q(1) ) ; Stage0: muxdff PORT MAP ( Q(1), R(0), L, Clock, Q(0) ) ; END Structure ;

MO Shift Register Código Alternativo LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY shift4 IS PORT ( R : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; Clock : IN STD_LOGIC ; L, w : IN STD_LOGIC ; Q : BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) ) ; END shift4 ; ARCHITECTURE Behavior OF shift4 IS BEGIN PROCESS BEGIN WAIT UNTIL Clock'EVENT AND Clock = '1' ; IF L = '1' THEN Q <= R ; ELSE Q(0) <= Q(1) ; Q(1) <= Q(2); Q(2) <= Q(3) ; Q(3) <= w ; END IF ; END PROCESS ; END Behavior ;

MO Shift Register de N bits LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY shiftn IS GENERIC ( N : INTEGER := 8 ) ; PORT (R : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ; Clock : IN STD_LOGIC ; L, w : IN STD_LOGIC ; Q : BUFFER STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ; END shiftn ; ARCHITECTURE Behavior OF shiftn IS BEGIN PROCESS BEGIN WAIT UNTIL Clock'EVENT AND Clock = '1' ; IF L = '1' THEN Q <= R ; ELSE Genbits: FOR i IN 0 TO N-2 LOOP Q(i) <= Q(i+1) ; END LOOP ; Q(N-1) <= w ; END IF ; END PROCESS ; END Behavior ;

MO Contador de 4 Bits (Crescente) LIBRARY ieee ; USE ieee.std_logic_1164.all ; USE ieee.std_logic_unsigned.all ; ENTITY upcount IS PORT ( Clock, Resetn, E : IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0)) ; END upcount ; ARCHITECTURE Behavior OF upcount IS SIGNAL Count : STD_LOGIC_VECTOR (3 DOWNTO 0) ; BEGIN PROCESS ( Clock, Resetn ) BEGIN IF Resetn = '0' THEN Count <= "0000" ; ELSIF (Clock'EVENT AND Clock = '1') THEN IF E = '1' THEN Count <= Count + 1 ; ELSE Count <= Count ; END IF ; END PROCESS ; Q <= Count ; END Behavior ;

MO Contador Usando Sinal Tipo Integer LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY upcount IS PORT (R : IN INTEGER RANGE 0 TO 15 ; Clock, Resetn, L : IN STD_LOGIC ; Q : BUFFER INTEGER RANGE 0 TO 15 ) ; END upcount ; ARCHITECTURE Behavior OF upcount IS BEGIN PROCESS ( Clock, Resetn ) BEGIN IF Resetn = '0' THEN Q <= 0 ; ELSIF (Clock'EVENT AND Clock = '1') THEN IF L = '1' THEN Q <= R ; ELSE Q <= Q + 1 ; END IF; END PROCESS; END Behavior;

MO Contador Decrescente LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY downcnt IS GENERIC ( modulus : INTEGER := 8 ) ; PORT (Clock, L, E : IN STD_LOGIC ; Q : OUT INTEGER RANGE 0 TO modulus-1 ) ; END downcnt ; ARCHITECTURE Behavior OF downcnt IS SIGNAL Count : INTEGER RANGE 0 TO modulus-1 ; BEGIN PROCESS BEGIN WAIT UNTIL (Clock'EVENT AND Clock = '1') ; IF E = '1' THEN IF L = '1' THEN Count <= modulus-1 ; ELSE Count <= Count-1 ; END IF ; END PROCESS; Q <= Count ; END Behavior ;

MO Registrador de N bits LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY regn IS GENERIC ( N : INTEGER := 8 ) ; PORT (R : INSTD_LOGIC_VECTOR(N-1 DOWNTO 0) ; Rin, Clock: IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ; END regn ; ARCHITECTURE Behavior OF regn IS BEGIN PROCESS BEGIN WAIT UNTIL Clock'EVENT AND Clock = '1' ; IF Rin = '1' THEN Q <= R ; END IF ; END PROCESS ; END Behavior ;

MO Registrador N bits com Saída Tri-state LIBRARY ieee ; USE ieee.std_logic_1164.all ; ENTITY trin IS GENERIC ( N : INTEGER := 8 ) ; PORT (X : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ; E: IN STD_LOGIC ; F: OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ; END trin ; ARCHITECTURE Behavior OF trin IS BEGIN F 'Z') WHEN E = '0' ELSE X ; END Behavior ;

MO Decclaração de Um Package LIBRARY ieee ; USE ieee.std_logic_1164.all ; PACKAGE components IS COMPONENT regn -- register GENERIC ( N : INTEGER := 8 ) ; PORT ( R : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ; Rin, Clock : IN STD_LOGIC ; Q : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ; END COMPONENT ; COMPONENT shiftr -- left-to-right shift register with async reset GENERIC ( K : INTEGER := 4 ) ; PORT( Resetn, Clock, w: IN STD_LOGIC ; Q : BUFFER STD_LOGIC_VECTOR(1 TO K) ) ; END component ; COMPONENT trin -- tri-state buffers GENERIC ( N : INTEGER := 8 ) ; PORT ( X: IN STD_LOGIC_VECTOR(N-1 DOWNTO 0) ; E : IN STD_LOGIC ; F : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0) ) ; END COMPONENT ; END components ;