Podstawy Sterowania Logicznego - Język

VHDL - wprowadzenie

Podstawy sterowania

logicznego

Język VHDL – wprowadzenie

Języki opisu sprzętu

HDL = Hardware Description Language

Języki opisu sprzętu (HDL) to języki

wysokiego poziomu służące do opisu

działania układów cyfrowych.

Po skompilowaniu kodu źródłowego w

języku HDL, środowiska programistyczne

pozwalają na weryfikację symulacyjną

projektu oraz generują plik do

zaprogramowania układ programowalnego.

Podstawy Sterowania Logicznego 2011/12, ©ZM

2/18

Języki opisu sprzętu

Najpopularniejsze języki HDL to:

ABEL – opracowany w firmie Data I/O,

VHDL – standard IEEE 1076, bazujący na

języku Ada,

VERILOG – standard IEEE1364, bazujący

na języku C.

Język ABEL stosuje się najczęściej do projektowa-nia układów SPLD (GAL), języki VHDL i VERILOG –

do układów CPLD i FPGA.

Podstawy Sterowania Logicznego 2011/12, ©ZM

3/18

Elektrotechnika I st., rok 3, moduł C

1

Podstawy Sterowania Logicznego - Język

VHDL - wprowadzenie

z

w

ud tó

ła

n

k

e

hc

u

m

y

ia

le

ln

n

e

a

a

m

w

w

ie

o

to

n

m

k

ta

ra

je

s

g

y

ro

rz

rop

l p

o

k

k

y

y

C

w

Podstawy Sterowania Logicznego 2011/12, ©ZM

4/18

Język VHDL

VHDL = Very (High Speed Integrated Circuit) Hardware Description Language

Opis układu w języku VHDL składa się modułów (jednostek projektowych), które zawierają:

deklarację jednostki (entity),

deklarację i opis architektury (architecture) Instrukcje zawarte w opisie architektury są instrukcjami współbieżnymi, co oznacza, że ich wyniki są przypisane do tego samego momentu czasu niezależnie od kolejności ich umieszczenia w programie.

Podstawy Sterowania Logicznego 2011/12, ©ZM

5/18

Język VHDL

Obiekty języka

Sygnały – obiekty będące funkcjami czasu.

signal ss : bit := ’1’;

Zmienne – obiekty nie będące funkcjami

czasu, które można stosować procesu lub

podprogramu, do pamiętania wyników

pośrednich.

variable vv : integer range 0 to 200 := 100;

Stałe – obiekty przypisujące nazwom stałe wartości.

constant cc : integer := 10;

Podstawy Sterowania Logicznego 2011/12, ©ZM

6/18

Elektrotechnika I st., rok 3, moduł C

2

Podstawy Sterowania Logicznego - Język

VHDL - wprowadzenie

Język VHDL

Typy proste

Całkowity – integer

Zakres: –(231-1) ÷ +(231-1)

Rzeczywisty – real

Zakres gwarantowany: –(1038) ÷ +1038

Czasowy – time

Zakres: 0 ÷ (231-1) fs, ps, ns, us, ms, sec, min, hr

Wyliczeniowe

Podstawy Sterowania Logicznego 2011/12, ©ZM

7/18

Język VHDL

Typy proste wyliczeniowe (standardowe)

Bitowy – bit

Wartości: (’0’, ’1’)

Boolowski – boolean

Wartości: (false, true)

Znakowy – character

Wartości: (…, ’0’, …, ’9’, ’A’, …, ’Z’, ’a’, …, ’z’) Podstawy Sterowania Logicznego 2011/12, ©ZM

8/18

Język VHDL

Typy proste wyliczeniowe (standardowe) – cd

Logiczne – std_ulogic, std_logic

Wartości:

’U’ – niezainicjowany,

’X’ – wymusza stan nieznany,

’0’ – wymusza stan 0,

’1’ – wymusza stan 1,

’Z’ – stan wysokiej impedancji,

’W’ – dla odczytu – słaby stan nieznany,

’L’ – dla odczytu – słaby stan 0,

’H’ – dla odczytu – słaby stan 1,

’ –’ – stan nieokreślony,

Podstawy Sterowania Logicznego 2011/12, ©ZM

9/18

Elektrotechnika I st., rok 3, moduł C

3

Podstawy Sterowania Logicznego - Język

VHDL - wprowadzenie

Język VHDL

Typy złożone

Tablice – array – zbiór elementów tego samego typu

type WEWY is array (0 to 15) of bit;

type BYTE is array (7 downto 0) of bit;

variable MEMORY : array (0 to 1023) of byte;

Rekordy – record – zbiór elementów różnych typów

type DATA id record

D : integer range 1 to 31;

M : integer range 1 to 12;

R : integer range 1 to 3000;

end record;

Podstawy Sterowania Logicznego 2011/12, ©ZM

10/18

Język VHDL

Instrukcje współbieżne

przypisania do sygnału (<=) – podstawowe, warunkowe (when-else), selektywne (with-select);

procesu sekwencyjnego (process),

wywołania procedury,

łączenia komponentów (port map),

powielania (generate),

blokowa (block)

Podstawy Sterowania Logicznego 2011/12, ©ZM

11/18

Język VHDL

Funkcje i procedury

Funkcja

Rodzaj podprogramu zwracający jedną wartość, który wywołuje się w wyrażeniach

Procedura

Rodzaj podprogramu, który może zwracać więcej niż jeden wynik. Procedura może być wywołana jako instrukcja współbieżna w ciele architektury lub sekwencyjna w obrębie procesu lub innego podprogramu.

Podstawy Sterowania Logicznego 2011/12, ©ZM

12/18

Elektrotechnika I st., rok 3, moduł C

4

Podstawy Sterowania Logicznego - Język

VHDL - wprowadzenie

Język VHDL

Przykład 1 – generator zegara 10 MHz

entity zegar is

generic( op : time := 50 ns );

port( Q : inout std_logic := ’1’);

end zegar;

architecture arch1 of zegar is

begin

Q <= not Q after op;

end arch1;

Podstawy Sterowania Logicznego 2011/12, ©ZM

13/18

Język VHDL

Przykład 2 – multiplekser 2-wejściowy

entity mux2 is

port( A, B, S : in std_logic;

Q : out std_logic );

end mux2;

architecture arch2 of mux2 is

begin

Q <= A when S = ’0’ else B;

end arch2;

Podstawy Sterowania Logicznego 2011/12, ©ZM

14/18

Język VHDL

Przykład 3 – multiplekser 4-wejściowy

type BIT2 is array (1 downto 0) of std_logic; entity mux4 is

port( A, B, C, D : in std_logic;

ADR : in BIT2;

Q : out std_logic );

end mux4;

architecture arch3 of mux4 is

begin

with ADR select

Q <= A when ADR = ”00”,

Q <= B when ADR = ”01”,

Q <= C when ADR = ”10”,

Q <= D when ADR = ”11”;

end arch3;

Podstawy Sterowania Logicznego 2011/12, ©ZM

15/18

Elektrotechnika I st., rok 3, moduł C

5

Podstawy Sterowania Logicznego - Język

VHDL - wprowadzenie

Język VHDL

Przykład 4 – funkcja – test parzystości

type BYTE is array (7 downto 0) of bit;

function PARITY8( x : BYTE ) return boolean is variable q : bit;

begin

q := ’1’;

for i in 0 to 7 loop

q := q xor x( i );

end loop;

return q;

end PARITY8

Podstawy Sterowania Logicznego 2011/12, ©ZM

16/18

Język VHDL

Przykład 5 – procedura – przerzutnik JK

type BIT2 is array (1 downto 0) of std_logic; procedure JK1( signal CLK, J, K, R, S : in std_logic; signal Q : inout std_logic;

signal NQ : out std_logic ) is

variable JK : BIT2;

variable reclk : boolean;

-- cd na następnym slajdzie

Podstawy Sterowania Logicznego 2011/12, ©ZM

17/18

Język VHDL

Przykład 5 – procedura – przerzutnik JK – cd begin

JK := J&K;

reclk := rising_edge( CLK );

if R = ’1’ then Q <= ’0’;

elsif S = ’1’ then Q <= ’1’

elsif re then

case JK is

when ”10” => Q <= ’1’;

when ”01” => Q <= ’0’;

when ”11” => Q <= not Q;

when others => null;

end case;

end if;

QN <= not Q;

end JK1;

Podstawy Sterowania Logicznego 2011/12, ©ZM

18/18

Elektrotechnika I st., rok 3, moduł C

6