Vhdl 4 getaktete logik d ff z hler automaten
Download
1 / 51

VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten) - PowerPoint PPT Presentation


  • 119 Views
  • Uploaded on

VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten). Inhalt. Getaktete Logik D-FF 8-bit Register D-FF mit asynchronem Reset D-FF mit synchronem Reset Synthese Beispiel Flankendetektor. Was könnte dieses VHDL beschreiben?. LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY vhdl IS

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)' - nishi


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Vhdl 4 getaktete logik d ff z hler automaten

VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)


Inhalt
Inhalt

  • Getaktete Logik

    • D-FF

    • 8-bit Register

    • D-FF mit asynchronem Reset

    • D-FF mit synchronem Reset

  • Synthese

  • Beispiel Flankendetektor


Was k nnte dieses vhdl beschreiben
Was könnte dieses VHDL beschreiben?

LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY vhdl IS

PORT(clk : IN std_logic; d : IN std_logic; q : OUT std_logic);

END vhdl;

ARCHITECTURE rtl OF vhdl ISBEGIN logik : PROCESS(clk)BEGINIF clk'EVENT AND clk = '1' THEN q <= d;ELSE q <= q; ENDIF;ENDPROCESS logik;END rtl;


D-FF

D

Q

clk

CLK

D

Q


Vhdl beschreibung eines d ff

Prozess nur aktiviert wenn clk ändert

wahr wenn sich clk ändert

Else nicht notwendig,wenn if nicht zutrifft bleibt q wie vorher

VHDL Beschreibung eines D-FF

LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY dff_logic IS

PORT(clk : IN std_logic; d : IN std_logic; q : OUT std_logic);

END dff_logic;

ARCHITECTURE rtl OF dff_logic ISBEGIN dff : PROCESS(clk)BEGINIF clk'EVENT AND clk = '1' THEN q <= d;ELSE q <= q; ENDIF;ENDPROCESS dff;END rtl;


Was ist hier anders als vorher
Was ist hier anders als vorher ?

LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY dff_logic IS

PORT(clk : IN std_logic; d : IN std_logic_vector(7 downto 0); q : OUT std_logic_vector (7 downto 0);

END dff_logic;

ARCHITECTURE rtl OF dff_logic ISBEGIN dff : PROCESS(clk)BEGINIF clk'EVENT AND clk = '1' THEN q <= d;ENDIF;ENDPROCESS dff;END rtl;


8-bit breites Register

D(7)

D

Q

Q(7)

D(0)

D

Q

Q(0)

CLK


- Asynchroner Reset !

Reset zu oberst im if statementhat deshalb höchste Priorität

Welches Signal ist bei diesem Prozess neu?

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY dff_arst IS

PORT(

clk, din, reset : IN std_logic; qout : OUT std_logic

);

END dff_arst;

ARCHITECTURE rtl OF dff_arst IS

BEGIN

dff : PROCESS(clk, reset)

BEGIN

IF reset = '1' THEN

qout <= '0';

ELSIF clk'EVENT AND clk = '1' THEN

qout <= din;

ENDIF;

ENDPROCESS dff;

END rtl;


Synchroner Reset

Was passiert hier ?

LIBRARY ieee;USE ieee.std_logic_1164.all;

ENTITY dff_arst IS

PORT(clk,d,reset : IN std_logic; q : OUT std_logic);

END dff_arst;

ARCHITECTURE rtl OF dff_arst IS

BEGIN dff : PROCESS(clk)BEGINIF clk'EVENT AND clk = '1' THENIF reset = '1' THEN q <= '0';ELSE q <= d;ENDIF;ENDIF;ENDPROCESS dff;END rtl;


D

CLK

Q

RESET

D-Flip Flop mit synchronem Reset

dff : PROCESS(clk)BEGINIF clk'EVENT AND clk = '1' THENIF reset = '1' THEN q <= '0';ELSE q <= d;ENDIF;ENDIF;ENDPROCESS dff;


D-Flip Flop mit synchronem Reset

D

&

D

Q

RESET

CLK

S

dff : PROCESS(clk)BEGINIF clk'EVENT AND clk = '1' THENIF reset = '1' THEN q <= '0';ELSE q <= d;ENDIF;ENDIF;ENDPROCESS dff;


Geschachteltes IF statement

LIBRARY ieee;USE ieee.std_logic_1164.all;

ENTITY dff_srst IS

PORT(clk,d,reset : IN std_logic; q : OUT std_logic);

END dff_srst;

ARCHITECTURE rtl OF dff_srst IS

BEGIN dff : PROCESS(clk)BEGINIF clk'EVENT AND clk = '1' THENIF reset = '1' THEN q <= '0';ELSE q <= d;ENDIF;ENDIF;ENDPROCESS dff;END rtl;

Geschachteltes IF statement


Erzeugung eines taktes f r simulation
Erzeugung eines Taktes für Simulation

SIGNAL clk_halfp : time := 20ns;

clkgen : PROCESS

BEGIN

WAITFOR 1*clk_halfp;

clk <= '1';

WAITFOR 1*clk_halfp;

clk <= '0';

ENDPROCESS clkgen;

END struct;

Ohne Sensitivity Liste


Übung:Zeichnen Sie den Schaltplan dieses VHDL

LIBRARY ieee;USE ieee.std_logic_1164.all;

ENTITY dff_logic IS

PORT( clk,j,k : IN std_logic; h : OUT std_logic);END dff_logic;

ARCHITECTURE rtl OF dff_logic ISSignal i : std_logic;BEGIN dff : PROCESS(clk)BEGINIF clk'EVENT AND clk = '1' THEN h <= i; i <= j OR k;ENDIF;ENDPROCESS dff;END rtl;


Als Faustregel gilt:

Jedes Signal das nach clk‘event zugewiesen wird, wird als

Flip-Flop synthetisiert

Lösung der Übung

k

>1

j

i

D

Q

D

Q

h

clk

dff : PROCESS(clk)BEGINIF clk'EVENT AND clk = '1' THEN h <= i; i <= j OR k;ENDIF;ENDPROCESS dff;


Übung:Eindeutiger VHDL Kode

ARCHITECTURE rtl OF dff_logic ISSignal i, next_i : std_logic;Signal next_h : std_logic;

BEGIN dff : PROCESS(clk)BEGINIF clk'EVENT AND clk = '1' THEN i <= next_i; h <= next_h;ENDIF;ENDPROCESS dff; comb : PROCESS(i,j,k)BEGIN next_i <= j OR k; next_h <= i;ENDPROCESS dff;END rtl;


Zeitliches Verhalten der Übung

k

>1

j

i

D

Q

D

Q

h

clk

j

k

clk

i

h


Zeitliches Verhalten der Übung

k

>1

j

i

D

Q

D

Q

h

clk

j

k

clk

i

h



Bersicht programmierbare logik
Übersicht Programmierbare Logik

Programmierbare Bausteine

FPGAField Programmable Gate Array

CPLD

LogicArraybasierend

Multiplexerbasierend

Look Up Tablebasierend


Darstellung von kombinatorischer logik
Darstellung von kombinatorischer Logik

K

&

>1

A

N

Z

&

S

A = Z & K & !S # Z & N & !S

(Disjunktive Form)

Gute Minterme

K

LogischeVerknüpfung

A

N

S

Z


Darstellung von sequentieller Logik

Beispiel synchroner Zähler

Folge-Zustand

GegenwärtigerZustand

+

Q

n

n = Anzahl der FFs

n

!Q

int. 1

Takt

Reset


Allgemeine rtl beschreibung einer synchronen digitalen schaltung
Allgemeine RTL Beschreibung einer Synchronen Digitalen Schaltung

(RTL = Register Transfer Level)


& Schaltung

D

D

D

D

Q

Q

Q

Q

>1

>1

>1

>1

PLD

I1

I0

OR Feld(fest verdrahtet)

Eingangspuffer

Eingangsignal invertiert

&

Out0

&

&

&

&

Out1

&

&

&

&

Out2

&

&

&

&

Out3

&

&

&

CLK

AND Feld(programmierbar)


Complex programmable logic device
Complex Programmable Logic Device Schaltung

Ein Logik Block = 16 FF

Programmable Interconnect Matrix


2 aufbau mit multiplexern

A Schaltung

B

X

B

&

0

0

X = A UND B

1

A

2. Aufbau mit Multiplexern


Rs flip flop aufgebaut aus multiplexern
RS-Flip-Flop aufgebaut aus Multiplexern Schaltung

0

0

1

0

Q

1

1

0

Q

1

S

R

0



Logik mit look up tabellen
Logik mit Look Up Tabellen Schaltung

a

LUT

Y

b

4 x 1 RAM

XOR Funktion im LUT






Maxii floorplan
MAXII Floorplan Schaltung



Max ii i o
MAX II I/O Schaltung


Spezielle pins
Spezielle Pins Schaltung


Synthese
Synthese Schaltung


Synthese1

G1 Schaltung

G3

G2

Synthese

= Umwandlung einer VHDL

Schaltungsbeschreibung in

physikalische Gatter und Flip Flops

Gatter/Flip-Flop Bibliothek

ARCHITECTURE comb OF beisp IS

BEGIN

q0 <= not (e0 and e1);

sig3 <=(e2 and e3) or (e0 and e1);......(Beschreibung nicht vollständig)

END comb;

E0

Q0

&

&

E1

sig3

&

E2

Q1

&

&

E3

D

Q

Q2

Netzliste

FF0

!! Jedes synthetisierbare VHDL wird Hardware !!

Hardware Beschreibung


Vhdl synthesizer
VHDL Synthesizer Schaltung

Architecture: B

Package: A

Architecture: A

BauteileLibraries

Entity: B

Entity: A

VHDL Synthesizer (umwandlung von VHDL code in Gatter und Flip Flops)

WorkingLibrary

primitiveLibrary

ieeeLibrary

.jed

.rpt

.pin

.vhd

Pin Belegung

Ergebnis inVHDL Form

Bericht

Dateien fürProgrammiergerät


Synthese beispiel i
Synthese Beispiel I Schaltung

Synthese Ergebnis der Übung (Folie 14)


Synthese Beispiel II Schaltung

D-FF mit async. Reset

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY dff_arst IS

PORT(

clk, din, reset : IN std_logic; qout : OUT std_logic

);

END dff_arst;

ARCHITECTURE rtl OF dff_arst IS

BEGIN

dff : PROCESS(clk, reset)

BEGIN

IF reset = '1' THEN

qout <= '0';

ELSIF clk'EVENT AND clk = '1' THEN

qout <= din;

ENDIF;

ENDPROCESS dff;

END rtl;


Synthese Beispiel II Schaltung

D-FF mit async. Reset

Synthese Ergebnis


Synthese Beispiel III Schaltung

D-FF mit Sync. Reset

LIBRARY ieee;

USE ieee.std_logic_1164.all;

ENTITY dff_srst IS

PORT(

clk, d, reset : IN std_logic; qout : OUT std_logic

);

END dff_srst;

ARCHITECTURE rtl OF dff_srst IS

BEGIN

dff : PROCESS(clk, reset)

BEGIN

IF clk'EVENT AND clk = '1' THEN

IF reset = '1' THEN qout <= '0';

ELSE qout <= d;

END IF;

ENDIF;

ENDPROCESS dff;

END rtl;


Synthese ergebnis

Synthese Beispiel III Schaltung

D-FF mit Sync. Reset

Synthese Ergebnis


Erkl rungen zum lab flankendetektor

Erklärungen zum Lab SchaltungFlankendetektor


reset Schaltung

steig

&

flin

D

Q

D

Q

clk

q1

q2

Flankendetektor

flin

clk

q1

q2

steig

Wie können wir die Schaltung ändern, so dass wir fallende und steigende Flanken anzeigen


Simulation von getakteter logik am beispiel flankendetektor

Simulation von getakteter Logik Schaltung(am Beispiel Flankendetektor)


Was muss man testen was weiss man vom logikverhalten
Was muss man testen? SchaltungWas weiss man vom Logikverhalten?

  • Nach der zweiten Taktflanke nachdem flin =‚1‘ wird steig = ‚1‘

  • „steig“ bleibt genau für eine Taktperiode ‚1‘

  • Nach der fallenden Taktflanke von flin =‚1‘ bleibt „steig“ auf ‚0‘.


Simulatoren und debugger
Simulatoren und Debugger Schaltung

Testbench

Process:clk

Check mit Assert

Process:Stimulus

DUT

Process:Stimulus


Signal stimulus
Signal Stimulus Schaltung

stimuli: process

begin

waitfor 1*clk_halfp ;

flin <= '0';

reset <= '1'; RESET RAUS

waitfor 5*clkp;

reset <= '0';

assert (steig = '0') report " after reset should be zero" severity failure;

wait for 1*clkp ;

flin <= '1';

assert (steig = '0') report " should still be zero" severity failure;

wait for 1*clkp;-- 1. Takt nach flin = '1'

flin <= '1';

assert (steig = '0') report " should still be zero" severity failure;

wait;


ad