sed unitat 1 4 intro vhdl...
Post on 05-Aug-2020
1 Views
Preview:
TRANSCRIPT
1
11
IntroduccióVHDL
Departament Enginyeria ElectrònicaJosep Conesa
22
Història• Anys 70:
• Evolució en els processos de fabricació dels Ci’s.• Poques eines de disseny• Disseny concentrat en les característiques i connexions a
nivell de transistor.
• Anys 80:• Processos tecnològics més complexes.• Augment dels problemes d’integració (circuits MSI i LSI).• Desfasament entre tecnologies i tècniques de disseny.
• Apareixen els “llenguatges de descripció de hardware”:• IBM IDL• Texas Instruments TI-HDL• General Electrics ZEUS
• Cap aconsegueix una gran acceptació
2
33
HistoriaL’any 1981 el Departament de defensa dels Estats Units
van desenvolupar el projecte VHSIC (Very High Speed
Integrated Circuit). Rentabilitzar les inversions en
hardware (gràcies a que aquest nou sistema permet un
més fàcil manteniment, reduint molt tant els costos de
temps, com de material).
44
Evolució VHDL
– 1983: IBM i TI , junt amb certes empreses i universitats, varen desenvolupar un llenguatge de disseny, que els permetés l'estandardització, facilitant així el manteniment dels dissenys i la depuració dels algoritmes.
– 1987: IEEE publica l’estàndard IEEE std 1076-1987 (VHDL).
– 1993: IEEE publica un nou estàndard actualitzat. – 1999: VHDL-AMS extensió
3
55
VHDL
• Llenguatge de programació d’alt nivell: – Llenguatge creat específicament pel disseny
de hardware (llenguatge de descripció de hardware).
– Permet abstracció d’alt nivell.– Ens permet el disseny de CPUs, manipular
fitxers, retards en el temps...
66
Avantatges del llenguatge VHDL
– Independència en la metodologia de disseny.– Portabilitat. Permet la transferència de dissenys a
diferents entorns CAD, de simulació o de síntesi.– Ràpid “Time-to-Market”.Combinat amb eines de
síntesi automàtica permet portar un disseny amb temps record.
– Versatilitat per la descripció de sistemes complexes.
– Possibilitat de reutilització.– Independència respecte dels fabricants.
4
77
Fabricants FPGA•Actel
•Altera
•Atmel
•Chip Express
•Clear Logic
•Cypress
•Dyna Chip
•Fast Analog Solutions
•Lattice
•Xilinx Inc.
Software de simulació
• Altera Quartus-II
• Lattice ispLEVER
• Xilinx Foundation
• Actel Libero
88
Què és una FPGA ?
• Una FPGA és un dispositiu lògic programable que es pot configurar per implementar qualsevol circuit digital. Segons utilitzem una FPGA més gran , amb més recursos interns, podrem implementar dissenys més complexos.
• Una vegada configurada i gravada amb el nostre disseny ens queda un xip com a únic maquinari, necessitant ben poc components exteriors per acabar el sistema.
5
99
Estructura FPGA• Tres tipus de components
– CLB : (Blocs lògics configurables). Són els pilars de la FPGA i estan distribuïts uniformement per tot l’àrea de la FPGA i són idèntics
– Latches– Multiplexors– Petites memòries
• IOB (Blocs entrada/sortida) Son CLB’s específics que es troben al costat dels PINS i la seva funció és interconnectar el xip amb l’exterior.
• Xarxa d’interconnexió: Conjunt de camins formats per matrius d’interconnexió que permeten connectar CLB’samb CLB’S i amb IOB’s
1010
Estructura FPGA
Busos de línies metàl·liques
CLB
IOB
IOB
IOB IOB
IOB
IOB
IOB
CLB
CLB
IOB
CLB
IOB
IOB
IOB
Matrius d’interconnexió
6
1111
Estructura bàsica d’un disseny en VHDL
Encapçalament
Entitat
Arquitectura
•Encapçalament
•Library, Package
•Declaració de l’entitat
•Caixa negra
•Declaració de l’arquitectura
•Funcionament de l’entity
1212
EncapçalamentBiblioteques (LIBRARY):
Dins de les diferents biblioteques podem trobar components, tipus de senyals, operacions... que ja han estat implementades i són estàndard. Biblioteques existents: IEEE, Altera, LPM, etc.Per poder-les utilitzar:
1. Cal fer una crida a la biblioteca que ens interessa.ex: LIBRARY IEEE;
2. Car expressar quines parts d’aquesta biblioteca volem utilitzar:
ex: USE IEEE_STD_LOGIC_1164.ALL;
Nom del paquet Part del paquet
7
1313
selectabs component if of severityaccess configuration in on signalafter constant inout open subtypealias disconnect is or thenall downto label others toand else library out transportarchitecture elsif linkage package typearray end loop port unitsassert entity map procedure untilattribute exit mod process usebegin file nand range variableblock for new record waitbody function next register whenbuffer generate nor rem whilebus generic not report withcase guarded null return xor
Paraules reservades del VHDL
1414
– Un programa en VHDL consta de dues parts:
• Bloc o entitat (ENTITY): Anàloga al símbol esquemàtic del disseny a implementar. Fa referència als senyals d’entrada i sortida d’interfície.
• Arquitectura (ARQUITECTURE): La descripcióinterna del bloc.
8
1515
ENTITY• La podem veure com el que envolta l’arquitectura
• Conte els ports d’entrada i sortida
• S’han d’especificar els modes i els tipus de cada port
DECLARACIÓ D’ UNA ENTITAT
entity nom_entitat isport (-- ports d’entrada, sortida, bidireccionalsnom_portA : tipus_port tipus_senyal ;nom_portB : tipus_port tipus_senyal );end nom_entitat ;
*Important: L’ultima declaració dels ports va sense el símbol de ;
1616
Tipus de port– in : Port d’entrada. No es permet assignar-li un valor. Es pot
utilitzar per rellotges,entrades de control com l’enable, i per dades d’entrada unidireccionals
– out : Port de sortida. No se’ns permet llegir el seu valor internament.
– buffer : Port de sortida. Se’ns permet llegir el seu valor. Aquest mode es similar al out. Nomes pot ser connectat a un senyal intern o a un port de mode buffer d’un altre entitat
– inout : Port d’entrada/sortida (bidireccional).
9
1717
Tipus de senyals dels ports– boolean : 2 valors. True y False.(exemple d’un comparador)
• Exemple– Igual : out boolean;
– bit : 2 valors (0 y 1). – bit_vector : Vector de bits. S’ha de definir el pes dels bits segons
posem la paraula reservada downto o to segons el bit més significatiu es el numero més alt o el més baix del vector.
• Exemple– Entrada : bit_vector (0 to 7); En aquest cas el MSB es el 0 el numero 7 és el
LSB– Entrada : bit_vector (7 downto 0); En aquest cas el MSB es el bit numero 7 i
el numero 0 és el LSB– Integer : utilitza de números enters. El valor que li assignem no ha
d’estar inserit entre cap signe.– std_logic : Com el bit però a més a més amb valors d’alta
impedància (Z) i indefinits (X). – std_logic_vector : Array (vector) de std_logics. – Altres tipus : Els definim nosaltres (Ex: màquines d’estats)
type format_meu is (guapo,lleig,no_mal_del_tot);Defineix el domini d’una variable discreta.Un nou tipus (type) discret determinat per format_meu
1818
Exemple d’entitat
ENTITY exemple IS
PORT( a,b : in std_logic;
c : out std_logic;
d : inout std_logic;
e : buffer std_logic);
END exemple;
10
1919
Sintaxis
• VHDL no és sensible a minúscules i majúscules
• Exemple: ENABLE,enable, Enable, enablE(és el mateix)
• El primer caràcter identificador ha de ser una lletra
•Dos guions baixos seguits no són vàlids
•No són vàlids els caràcters diferents a les lletres, números i guió baix
2020
Exemple Sintaxis• No són identificatius vàlids:
• _rellotge
• 3_llegir
•Signal_#1
•Clear__2
• Els comentaris
• Poden estar col·locats en qualsevol lloc i es fan amb doble guió (- -)
• Exemple : -- això és un comentari
11
2121
Senyals
• Els senyals tenen una estructura similar als ports d’una entitat, però es declaren dins d’una arquitectura, i actuen com connexions internes (són els cables dels esquemàtics):SIGNAL nom: tipus [rang]
SIGNAL num: bit_vector(7 downto 0);
2222
exempleSIGNAL A : std_logic;SIGNAL B: std_logic_vector(5 downto 0);SIGNAL C : Boolean;SIGNAL D: integer range o to 255;BEGINA <= ‘1’;B <= “001011”;C <= true;D <= 34;
12
2323
Operacions lògiques
• Les operacions lògiques es poden implementar directament:– NOT– AND– OR– NAND– NOR– XOR– XNOR
2424
Assignació segons la classe
• Per un senyal: <=• Per una constat o variable: :=• Bit o std_logic: utilitzar cometes simples ‘x’• std_logic_vector: “10110”• Nombres enters: No utilitzar cometes,
assignació directa.
13
2525
Declaració arquitectura• architecture nom_arcqu of nom_entitat is•• -- declaració de senyals interns i altres tipus•• begin
• -- nucli del programa
• end nom_arcqu ;
2626
Descripció arquitectura– Estil behavioral o de comportament o d’alt nivell : Es caracteritza per
incloure les sentències i ordres típiques d’un llenguatge de programació(if, then, case, for...) de manera que la distribució final del circuit amb
portes lògiques dins del PLD córrer a càrrec del compilador i de la resta de programari. Estructura seqüencial (es necessita un process).
– Estil dataflow o flux de dades : Implica la transferència del senyal d’entrada a la sortida node a node. No és seqüencial, és concurrent. És la traducció a VHDL de les equacions algebraiques.
– Estil structural o estructural : S’hi descriu un netlist de VHDL, en els qual els components són connectats i avaluats instantàniament mitjançant senyals internes. Bàsicament, es tracta de la traducció dels esquemàtics, porta a porta (component) i cable a cable (signal)
– Estil mixt : Compost per 2 o més estils diferents.
14
2727
Sentencies seqüencials
• Estil behavioral– Les sentències descrites en un programa
s’executen de dalt cap a baix.– Importància de l’ordre de les citades
sentències en el programa.– La realització de forma seqüencial d’un
circuit es realitza dins del cos d’un procés (dins d’un process).
2828
Exemple comportamental (o d’alt nivell) o behavioral
(a i b entrades, sortida1 i sortida2 sortides)
architecture behavioral of compara isbeginprocess (a, b)begin
if (a = b) thensortida1 <= ‘1’;
elsesortida1 <= ‘0’;
end if;if (a = ‘0’ and b = ‘0’) or (a = ‘1’ and b = ‘1’) then
sortida2 <= ‘1’;else
sortida2 <= ‘0’;end if;
end process;end behavioral;
15
2929
Exemple comparador estil behavioral
compara : process(a,b)begin
if a = b then igual <= ‘1’;else igual <= ‘0’;
end if;end process compara;
end nom_arquitectura
3030
Exemple comparador estil dataflow(equació algebraica)
entity comp isport (a,b: in bit_vector(7 downto 0);
igual: out bit);end comp;-- una altre manera de descriure comparchitecture booleana of comp isbegin
igual <= not(a(0) xor b(0))and not (a(1) xor b(1))and not (a(2) xor b(2))and not (a(3) xor b(3));
end booleana;
16
3131
Exemple comparador descripcióestructural (l’esquema)
entity comp isport (a,b : in bit_vector(7 downto 0);
igual : out bit);
end comp;-- una altre manera de descriure un comparadoruse work.gatespkg.all; -- (aquí hi ha la biblioteca de portes lògiques)architecture estructural of comp is
signal x: std_logic_vector(0 to 3);beginU0: xnor2 port map (a(0),b(0),x(0));U1: xnor2 port map (a(1),b(1),x(1));U2: xnor2 port map (a(2),b(2),x(2));U3: xnor2 port map (a(3),b(3),x(3));U4: and4 port map (x(0),x(1),x(2),x(3),x(4),igual);end estructural;
3232
Descripciónom_proces: process (llista)
Les variables mostrades a la llista s’anomenen variables sensibles. El process s’executa la primera vegada i després només quan hi ha un canvi en alguna d’aquestes variables.L’engegada del procediment és insensible a variacions de variables no contingudes a llista
17
3333
• Sentència Process:
– Sempre que es vulgui utilitzar sentències seqüencials (if, for, case) haurem d’usar un procés.
– Estructura d’un procés:
etiqueta: process (senyals_sensibles)-- declaració de variables
begin-- sentències seqüencials
end process etiqueta;
– És opcional escriure les etiquetes
3434
Sentencia ifEstructura:
if (condició ) then-- fes alguna cosa
else-- fes un altre cosa
end if;
Exemples de condicions: if (a = b) then ...if (a = “1111”) then ...if (b = ‘1’) and (c(0) = ‘0’) then ...if clock’event and clock = ‘1’ then ...
18
3535
Sentencia ifTambé es poden realitzar aniuaments (nesting) :
if (condició) then-- alguna cosaelsif (altre_condició ) then
-- altre cosaelse
-- altre cosa diferentend if;
3636
Sentencia CASEEstructura de la sentència:
case senyal_a_avaluar iswhen valor_1 => -- fes alguna cosa;when valor_2 => -- fes alguna cosa;when valor_3 => -- fes alguna cosa;...when últim_valor => -- el que sigui;
end case;
19
3737
Sentencia CASE
Variacions sobre la sentència CASE:
case senyal_a_avaluar iswhen valor_1 => -- fes quelcom;when valor_n => -- fes quelcom;...when others => -- el que sigui;
end case;
3838
Sentencia CASE exemple
case data iswhen 0 => dout <= ‘0’;
sortida <= ‘1’;when 1 => dout <= ‘1’;when 2 => dout <= ‘1’;when others => dout = ‘Z’;
end case;
20
3939
Assignació concurrent condicional:Realitza la mateixa funció que el if de les
sentències seqüencials.
Estructura:sortida <= entrada1 when (condició)
else entrada2;
Exemple:output <= input1 when control = ‘1’
else input2;
4040
Assignació concurrent amb seleccióRealitza la mateixa funció que el case de les
sentencies seqüencials.Estructura:
with senyal selectoutput <= entrada1 when valor1_senyal ,
entrada2 when valor2_senyal ,...entrada_n when valor_n_senyal ;
21
4141
Assignació concurrent amb seleccióExemple
with a selectresultat <= b OR c when “00”,
b AND c when “01”,b XOR c when “10”,NOT(b XOR c) when “11”;
4242
e2
e1
O1
e2
e1
O1
entity porta is
port( e1: in std_logic;
e2: in std_logic;
O1: out std_logic);
end porta
architecture A of porta is
begin
etiqueta: process(e1,e2)
begin
O1 <= e1 and e2;
end process etiqueta;
end A
Exemple porta AND
22
4343
Exemple porta ANDprocess (a,b)
begin if a= ‘1’ and b= ‘1’ then
sal <= ‘1’;
else
sal <= ‘0’
end if;
end process;
4444
Descripció de lògica síncrona• En els circuits digitals síncrons, l’estat intern s’actualitza quan arriba el flanc
actiu del senyal de rellotge (clock) library ieee;use ieee.std_logic.all;entity flipD is
port(d,clk: in std_logic;q: out std_logic);
end flipD;architecture ex_sincron of flipD isbegin
process (clk) beginif (clk’event and clk = ‘1’) then – Detecció del flanc de pujadaq <= d;end if;
end process;end ex_sincron;
23
4545
Descripció de lògica síncrona• Quan s’utilitza std_logic_1164, es poden fer servir les
funcions:
– Rising_edge(clk) equivalent a clk’event AND clk = ‘1’
– Falling_edge(clk) equivalent a clk’event AND clk = ‘0’
• En el cas d’una cel·la de memòria latch activada per nivell alt a l’entrada E només cal posar:
if (E = ‘1’)
4646
Sentència WAIT UNTIL
Estructura:processbegin
wait until (E = ‘1’);-- coses a realitzar;
end process;
S’espera fins que el senyal E no tingui nivell alt
24
4747
Descripció de maquines d’estats finits (FSM)
Molts circuits lògics seqüencials serveixen per fabricar màquines d’estats finits.
• Exemple d’especificació d’una FSM per controlar una memòria RAM– FSM té dues variables d’entrada:
• ready que indica que el bloc de memòria està preparat • read_write (R_W) que indica que es pretén fer una lectura o
escriptura de la memòria – La maquina d’estats genera aleshores dues variables oe
i we que s’apliquen a les entrades output enable (OE) i write_enable (WE) de la RAM
– Dibuixeu l’esquema de la memòria RAM a controlar i la FSM a dissenyar
4848
Descripció màquina d’estats
start
reading
idle
writing
R_WR_W
readyready
ready
ready
01reading
10writing
00start
00idle
WEOEESTAT
TAULA DE SORTIDES
25
4949
library ieee;use ieee.std_logic_1164.all;entity exemple_FSM is
port( r_w, ready: in std_logic;reset,clk: in std_logic;oe,we: out std_logic);
end exemple_FSM;
architecture implementacio_FSM of exemple_FSM istype estats is (idle,start,writing,reading);signal estat_actual: estats;beginprocediment: process (r_w, ready, reset, clk) begin
if reset = ‘1’ thenestat_actual <= idle;
elsif (clk’event and clk = ‘1’) thencase estat_actual is
when idle => oe <= ‘0’; we <= ‘0’;if ready = ‘1’ then
estat_actual <= start;else
estat_actual <= idle;end if;
when start => oe<= ‘0’; we <= ‘0’;if r_w = ‘1’ then
estat_actual <= reading;else
estat_actual <= writing;end if;
when reading => oe <= ‘1’; we <= ‘0’;if ready=‘1’ then
estat_actual < =idle;else
estat_actual <= reading;end if;
when writing => oe <= ‘0’; we <= ‘1’;if ready = ‘1’ then
estat_actual <= idle;else
estat_actual <= writing;end if;
end case;end ifend process procediment;end implementacio_FSM;
5050
Referències• Altera Corporation, Data Book, San Jose, Calif.: Altera Corporation 1995.
Armstrong, J.R., Chip-level modeling with VHDL, Englewoods Cliffs, N.J.: PrenticeHall, 1988.
• VHDL Cookbook, accesible via ftp://ftp.cs.adelaide.edu.au/pub/VHDL/• S., Introduction to HDL-based design using VHDL, Mountain View, Calif.,
Synopsys Inc., 1991.• Coelho, David. The VHDL Handbook, Boston, Kluwer Academic, 1989.• IEEE, IEEE Standard VHDL Language Reference Manula, Std. 1076-1993, New
York, IEEE, 1993.• IEEE, IEEE Standard Multivalue Logic System for VHDL Model Interoperability
(Std_logic_1164), Std IEEE 1164-1993, New York, IEEE, 1993.• Leung, Steven and Michael Shanblatt, ASIC System Design with VHDL: A
Paradigm, Boston, Kluwer Academic, 1989.• Lipsett, Roger, Erich Marschner and Moe Shahdad. “VHDL: The Language”, IEEE
Design and Test of Computers, New York, IEEE, April 1986.• Mazor, Stanley and Patricia Langstraat, A Guide to VHDL, Boston, Kluwer
Academic, 1992.• Navabi, Zainaladebin, VHDL Analysis and Modeling of Digital Systems, New York,
McGraw-Hill, 1993.• Xilinx Inc., Programmable Logic Data Book, San Jose, Calif., Xilinx Inc., 1994.• http://tech-www.informatik.uni-hamburg.de/vhdl/doc/cookbook/VHDL-Cookbook.pdf
top related