+ All Categories
Home > Documents > School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

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

Date post: 06-Apr-2015
Category:
Upload: ottilia-landaker
View: 103 times
Download: 1 times
Share this document with a friend
51
School of Engineerin g VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)
Transcript
Page 1: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

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

Page 2: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineeringInhalt

● Getaktete Logik ○ D-FF○ 8-bit Register○ D-FF mit asynchronem Reset○ D-FF mit synchronem Reset

● Synthese● Beispiel Flankendetektor

Page 3: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

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)BEGIN

IF clk'EVENT AND clk = '1' THENq <= d;

ELSEq <= q;

END IF;END PROCESS logik;

END rtl;

Was könnte dieses VHDL beschreiben?

Page 4: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

clk

QD

D

Q

D Qn+1

1 1

0 0

CLK

D-FF

Page 5: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

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)BEGIN

IF clk'EVENT AND clk = '1' THENq <= d;

ELSEq <= q;

END IF;END PROCESS dff;

END rtl;

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

Page 6: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

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)BEGIN

IF clk'EVENT AND clk = '1' THENq <= d;

END IF;END PROCESS dff;

END rtl;

Was ist hier anders als vorher ?

Page 7: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

QD

CLK

QD

Q(7)

D(0)

D(7)

Q(0)

8-bit breites Register

Page 8: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

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 ISBEGIN dff : PROCESS(clk, reset) BEGIN IF reset = '1' THEN

qout <= '0'; ELSIF clk'EVENT AND clk = '1' THEN qout <= din; END IF; END PROCESS dff;END rtl;

Welches Signal ist bei diesem Prozess neu?

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

- Asynchroner Reset !

Page 9: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

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

BEGINdff : PROCESS(clk)BEGIN

IF clk'EVENT AND clk = '1' THENIF reset = '1' THEN

q <= '0';ELSE

q <= d;END IF;

END IF;END PROCESS dff;

END rtl;

Synchroner Reset

Page 10: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

D-Flip Flop mit synchronem Reset

CLK

D

Q

RESET

dff : PROCESS(clk)BEGIN

IF clk'EVENT AND clk = '1' THENIF reset = '1' THEN

q <= '0';ELSE

q <= d;END IF;

END IF;END PROCESS dff;

Page 11: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineeringD-Flip Flop mit synchronem Reset

Q

S

D

CLKRESET &

D

dff : PROCESS(clk)BEGIN

IF clk'EVENT AND clk = '1' THENIF reset = '1' THEN

q <= '0';ELSE

q <= d;END IF;

END IF;END PROCESS dff;

Page 12: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineeringGeschachteltes 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

BEGINdff : PROCESS(clk)BEGIN

IF clk'EVENT AND clk = '1' THENIF reset = '1' THEN

q <= '0';ELSE

q <= d;END IF;

END IF;END PROCESS dff;

END rtl;

Geschachteltes IF statement

Page 13: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineeringErzeugung eines Taktes für Simulation

SIGNAL clk_halfp : time := 20ns;

clkgen : PROCESS

BEGIN WAIT FOR 1*clk_halfp; clk <= '1'; WAIT FOR 1*clk_halfp; clk <= '0'; END PROCESS clkgen;

END struct;

Ohne Sensitivity Liste

Page 14: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineeringÜ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;

BEGINdff : PROCESS(clk)BEGIN

IF clk'EVENT AND clk = '1' THENh <= i;i <= j OR k;

END IF;END PROCESS dff;

END rtl;

Page 15: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineeringLösung der Übung

clk

QD QD hij >1

k

dff : PROCESS(clk)BEGIN

IF clk'EVENT AND clk = '1' THENh <= i;i <= j OR k;

END IF;END PROCESS dff;

Als Faustregel gilt:Jedes Signal das nach clk‘event zugewiesen wird, wird alsFlip-Flop synthetisiert

Page 16: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineeringÜbung:

Eindeutiger VHDL Kode

ARCHITECTURE rtl OF dff_logic ISSignal i, next_i : std_logic;

Signal next_h : std_logic;

BEGINdff : PROCESS(clk)BEGIN

IF clk'EVENT AND clk = '1' THENi <= next_i;h <= next_h;

END IF;END PROCESS dff;

comb : PROCESS(i,j,k)BEGIN

next_i <= j OR k;next_h <= i;

END PROCESS dff;END rtl;

Page 17: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineeringZeitliches Verhalten der Übung

clk

k

i

h

clk

QD QD hij >1

k

j

Page 18: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineeringZeitliches Verhalten der Übung

clk

k

i

h

clk

QD QD hij >1

k

j

Page 19: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

Aufbau und Architektur von PLD

Page 20: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

Übersicht Programmierbare Logik

Programmierbare Bausteine

FPGAField Programmable Gate Array

CPLD

Look Up Tablebasierend

Multiplexerbasierend

LogicArray

basierend

Page 21: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineeringDarstellung von kombinatorischer

Logik

N ALogischeVerknüpfung

(Disjunktive Form)A = Z & K & !S # Z & N & !S

&

&

>1

S

Z

K

N A

Gute Minterme

K

S

Z

Page 22: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

Darstellung von sequentieller Logik

GegenwärtigerZustand

n = Anzahl der FFsQ

!Q

Takt

nn+

int. 1

Reset

Folge-Zustand

Beispiel synchroner Zähler

Page 23: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

D Q D Q

L4

D QIN_A OUT_A

L3L2L1 L5

FF1 FF2 FF3

Allgemeine RTL Beschreibung einer Synchronen Digitalen Schaltung

(RTL = Register Transfer Level)

Page 24: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

24

School ofEngineering

&

I1 I0

&

&

&

&

&

&

&

&

&

&

&

&

&

&

&

&

>1

AND Feld(programmierbar)

OR Feld(fest verdrahtet)

Eingangsignal invertiert

Eingangspuffer

>1

>1

>1

DQ

DQ

DQ

DQ

Out1

Out0

Out2

Out3

CLK

PLD

Page 25: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineeringComplex Programmable Logic Device

Ein Logik Block = 16 FF

Programmable Interconnect Matrix

Page 26: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

2. Aufbau mit Multiplexern

B

0

A

X = A UND B1

0 &B

AX

A B X

0 0 0

1 0 0

0 1 0

1 1 1

Page 27: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineeringRS-Flip-Flop aufgebaut aus

Multiplexern

Q0

1

Q

SR

0

10

0

1

1

0

!R !S Qn+1 !Qn+1

0 0 0 0

1 0 1 0

0 1 0 1

1 1 Qn !Qn

Page 28: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineeringLogikgrundzelle von Actel basierend

auf Multiplexern

Transfergate

Page 29: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

a

b

a b y

0 0 0

0 1 1

1 0 1

1 1 0XOR Funktion im LUT

Y

4 x 1 RAM

LUT

Logik mit Look Up Tabellen

Page 30: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

Ein Logic Element (LE) im MAXII

Page 31: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

MAXII Block Diagram

Page 32: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

LE Kluster (Logic Array Blocks)

Page 33: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

Direkte Links zu benachbarten LAB

Page 34: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

MAXII Floorplan

Page 35: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

Verteilung spezieller Signale

Page 36: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

MAX II I/O

Page 37: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

Spezielle Pins

Page 38: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

Synthese

Page 39: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

Synthese

FF0

QD

&&

&

&

&

G3

G2

G1

Q1

Q2

Q0

E3

E0E1E2

= Umwandlung einer VHDLSchaltungsbeschreibung inphysikalische Gatter und Flip Flops

Gatter/Flip-Flop Bibliothek

Hardware Beschreibung

Netzliste

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;

sig3

!! Jedes synthetisierbare VHDL wird Hardware !!

Page 40: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

VHDL Synthesizer

Entity: A

Architecture: A

Entity: B

Architecture: B Package: A

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

WorkingLibrary

ieeeLibrary

.pin .vhd

BauteileLibraries

.jed .rpt

Dateien fürProgrammiergerät

Bericht Pin Belegung

Ergebnis inVHDL Form

primitiveLibrary

Page 41: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

41

School ofEngineeringSynthese Beispiel I

D

ENA

QPRE

CLR

BUF (DIRECT)

D

ENA

QPRE

CLR

comb~0

clk

kh

h~reg0\dff:ii~0j

Synthese Ergebnis der Übung (Folie 14)

Page 42: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

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 ISBEGIN dff : PROCESS(clk, reset) BEGIN IF reset = '1' THEN

qout <= '0'; ELSIF clk'EVENT AND clk = '1' THEN qout <= din; END IF; END PROCESS dff;END rtl;

Synthese Beispiel II D-FF mit async. Reset

Page 43: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

Synthese Ergebnis

qout~reg0

D

ENA

QPRE

CLR

dclk

reset

qout

Synthese Beispiel II D-FF mit async. Reset

Page 44: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

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 ISBEGIN dff : PROCESS(clk, reset) BEGIN IF clk'EVENT AND clk = '1' THEN

IF reset = '1' THEN qout <= '0';ELSE qout <= d;END IF;

END IF; END PROCESS dff;END rtl;

Synthese Beispiel III D-FF mit Sync. Reset

Page 45: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

Synthese Ergebnis

qout~reg0

S

D

ENA

QPRE

CLR

dreset

qout

clk

Synthese Beispiel III D-FF mit Sync. Reset

Page 46: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

Erklärungen zum LabFlankendetektor

Page 47: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

clk

flin

q1

q2

steig

&flinQD QD

q1 q2

steig

reset

clk

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

Flankendetektor

Page 48: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

Simulation von getakteter Logik (am Beispiel Flankendetektor)

Page 49: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineeringWas muss man testen?

Was 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‘.

Page 50: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

Simulatoren und Debugger

DUTProcess:Stimulus

Process:clk

Testbench

Process:Stimulus

Check mit Assert

Page 51: School of Engineering VHDL 4: Getaktete Logik (D-FF, Zähler, Automaten)

School ofEngineering

Signal Stimulus

stimuli: processbeginwait for 1*clk_halfp ;flin <= '0';

reset <= '1'; RESET RAUSwait for 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;


Recommended