Programmerbar logik och VHDL Föreläsning 4
Förra gången Strukturell VHDL Simulering med ISim
Strukturell VHDL
Simulering test_bench specificerar stimuli Simulatorn övervakar alla signaler, virtuell logik-analysator
Idag Sekvenskretsar med VHDL Finita tillståndsmaskiner (FSM) med VHDL
Sekvenskretsar med VHDL
Sekvenskretsar med VHDL Intro Sekvenskretsar: Utsignaler beror både på insignaler och på kretsens interna tillstånd Oftast används synkron designmetodik
Sekvenskretsar med VHDL Synkron designmetodik Samtliga minneselement kontrolleras (synkroniseras) av en global klocksignal Data samplas och sparas vid en en av klockpulsens flanker kombinatoriskt nät kombinatoriskt nät en eller flera vippor
Sekvenskretsar med VHDL Synkron designmetodik Fördel: Behöver bara hålla koll på timing-kraven för en minneskomponent. Inga problem så länge state_next är stabiliserad innan nästa klockflank kommer. Hur snabbt kan vi köra klockan? T clk,min = T prop_delay + T ns_logic + T setup minsta klockperiod vippornas prop delay prop delay för komb-nät vippornas setup time f max = 1 T clk,min
Sekvenskretsar med VHDL Tre kategorier av sekvenskretsar Reguljära sekvenskretsar Enkla, regelbundna tillståndsövergångar Ofta standardkonstruktion som next-state logic Exempel: Räknare, skiftregister Finita tillståndsmaskiner (FSM) Icke-regelbundna tillståndsövergångar Applikations-designad next-state logic Finita tillståndsmaskiner med Data path (FSMD) FSM + reguljära sekvenskretsar Tisdag
Reguljära sekvenskretsar Exempel: Enkelt skiftregister - Seriell data in, seriell data ut - Skiftar ett steg för varje klockpuls
1. 2. 3. 3. 2. 1.
Reguljära sekvenskretsar Exempel: Enkelt skiftregister s_in s_out clk reset
Finita tillståndsmaskiner (FSM) med VHDL
Intro, tillståndsdiagram Gammal bekant: Mealy/Moore-maskiner är finita tillståndsmaskiner
Synkron sekvenskrets => Kan beskrivas med enkelt blockdiagram
Minneselement Nuvarande tillstånd sparas i register (vippor)
next-state logic Tillståndsövergångarna bestäms av next-state logic Beskriver pilarna mellan bubblorna i tillståndsdiagrammet Övergångarna oftast ej regelbundna (jmf. räknare, skiftregister)
output logic Utsignalerna genereras av output logic Kan vara av både Mealy- och Moore-typ:
Hur beskriva med VHDL? Ett antal olika angreppssätt, stilar: Fyra processer: En för minneselement och tre kombinatoriska (en för varje låda ) Tre processer: Mealy/Moore-utsignaler samlade i samma process Två processer: Utsignaler samt next-state logic samlade i samma process En process: Allt samlat i samma process
Exempel 1 Exempel från boken: Två olika tillstånd En insignal (förutom CLR, CLK) Endast Moore-output
Entity, enumeration type enumeration type egendefinierad typ Annat exempel:
Minneselement
Kombinatorisk process Beskriver tillståndsdiagrammet! Ska aldrig hamna här
Exempel 1 Komplett architecture Mealy-outputs hade hamnat här
Tillståndsdiagram, notation Variant:
Exempel 2
Entity, enumeration type
Minneselement
Kombinatorisk process default -värden (vi slipper en massa else och when others) Moore-output Mealy-output Om en signal tilldelas ett värde flera gånger i en process är det bara den sista tilldelningen som utförs
Exempel 2 Komplett architecture
Exempel 3 Rising-edge detector Genererar en kort puls ett tick, varje gång en långsamt varierande signal växlar från låg till hög Mooremaskin clk level state tick zero edge one zero tick kan tex. matas till en räknares enableingång för att räkna antalet gånger level går hög
Exempel 4 Rising-edge detector Mealymaskin clk level state tick zero one zero
Rising-edge detector, Mealy vs. Moore clk level state tick state tick zero edge one zero zero one zero Moore Mealy Mealy-output tillgängligt en klockperiod tidigare Mealy, nackdelar: Varierande längd på output-tick Glitches på ingången når utgången direkt Mottagande enhet avgör
Att läsa Free Range VHDL Nästa föreläsning: Imorgon - ASM, FSMD