Progettazione Vhdl

  • Uploaded by: Gaetano
  • 0
  • 0
  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Progettazione Vhdl as PDF for free.

More details

  • Words: 940
  • Pages: 9
UNIVERSITA’ DEGLI STUDI DI CATANIA Facoltà di Ingegneria Corso di Laurea in Ingegneria Elettronica N.O. A.A. 2004-2005

Progetto in VHDL

Corso di Microelettronica

Prof.Ing. Salvatore Pennisi Ing. Rosario Mita, Ph.D Fidone Vincenzo – 615/001060 Giuseppe Giuffrida – 615/000861 Greco Giuseppe Francesco Agatino – 615/000414 L’Episcopo Gaetano – 615/000440

DIPARTIMENTO DI INGEGNERIA ELETTRICA ELETTRONICA E DEI SISTEMI

Progetto Tesina n°22 Descrivere e verificare il circuito riportato in figura mediante linguaggio VHDL utilizzando un qualunque approccio di descrizione.

Osserviamo che il nostro circuito è costituito dalla cascata di una porta OR a 3 ingressi, una porta XOR a 2 ingressi, un Flip Flop D e un Buffer Tristate. Descriviamo adesso le singole parti del nostro circuito tramite il linguaggio VHDL, utilizzando un approccio a livello behavioral.

2

Porta Or Descrizione grafica:

A out_or

B C

Descrizione funzionale: Il blocco in questione è una porta Or a tre ingressi (A,B,C), che dà in uscita uno 0 solo se tutti e tre gli ingressi sono a 0; in caso contrario se uno dei tre ingressi è a 1, l’uscita è 1. Tabella della verità

Descrizione VHDL: library ieee; use ieee.std_logic_1164.all; entity portaor is port( A,B,C :in std_logic; out_or:out std_logic); end portaor; architecture portaor1 of portaor is begin out_or<=A or B or C; end portaor1;

A

B

C

Out_or

0

0

0

0

0

0

1

1

0

1

0

1

0

1

1

1

1

0

0

1

1

0

1

1

1

1

0

1

1

1

1

1

3

Porta Xor Descrizione grafica:

E out_xor

F

Descrizione funzionale: Il blocco in questione è una porta Xor a due ingressi(E,F). Quando questi sono uguali, l’uscita è a 1,altrimenti è a 0. L’ingresso E è l’uscita della porta OR precedentemente vista.

Descrizione VHDL: library ieee; use ieee.std_logic_1164.all; entity portaxor is port( E,F:in std_logic; out_xor:out std_logic); end portaxor; architecture portaxor1 of portaxor is begin out_xor<= E xor F; end portaxor1;

Tabella della verità

E

F

Out_xor

0

0

0

0

1

1

1

0

1

1

1

0

4

Flip-Flop D: Descrizione grafica:

D

Q

clock

feedback Descrizione funzionale: Il blocco in questione è un Flip-Flop D, circuito sequenziale, che assegna all’uscita Q il valore dell’ingresso D, che è poi il segnale di uscita della precedente porta XOR solo nel caso in cui il segnale di clock sia attivo, cioè al momento del fronte di salita del clock. In caso contrario lo stato di Q rimane invariato. In seguito tale stato assegnato a Q viene a sua volta assegnato al feedback, un altro segnale. Tabella della Verità (durante il fronte di salita del nostro clock...negli altri casi si conserva l’uscita Q precedente):

D 0 1

Q 0 1

Descrizione VHDL: library ieee; use ieee.std_logic_1164.all; entity flipflopD is port( D,clk:in std_logic; Q:out std_logic); signal feedback:std_logic; end flipflopD; architecture flipflopD1 of flipflopD is begin process(clk) begin if(clk'event and clk='1') then Q<=D; end if; if(clk'event and clk='1') then feedback<=D; end if; end process; end flipflopD1; 5

Buffer tristate: Descrizione grafica:

control G H

Descrizione funzionale: Il blocco in questione è un buffer tristate, che in ingresso ha l’uscita del flip-flop D ed il segnale di controllo Control. Se Control è uguale ad 1, fa sì che l’uscita H sia uguale all’ingresso G, altrimenti lo stato di uscita è Z, cioè uno stato di uscita ad alta impedenza, non ben definito tra 0 e 1. Tabella della Verità:

Control 0 0 1 1

G 0 1 0 1

H Z Z 0 1

Descrizione VHDL: library ieee; use ieee.std_logic_1164.all; entity buffertristate is port( G,control:in std_logic; H:out std_logic); end buffertristate; architecture buffertristate1 of buffertristate is begin H<=G when (control='1') else 'Z'; end buffertristate1;

6

Descrizione VHDL del circuito totale: A questo punto occorre interconnettere le nostre 4 componenti del nostro circuito in modo da formare una sola porta logica, che rappresenta poi la totalità del nostro circuito, non a caso l’abbiamo chiamata “Total”, i cui ingressi sono i segnali A,B,C,F,clk,control e la cui uscita è H. Il livello di astrazione qui usato è lo structural. library ieee; use ieee.std_logic_1164.all; entity total is port( A,B,C,F,clk,control:in std_logic; H:out std_logic); end total; architecture structure of total is component buffertristate port( G,control:in std_logic; H:out std_logic); end component; component flipflopD port( D,clk:in std_logic; Q:out std_logic); end component; component portaxor port( E,F:in std_logic; out_xor:out std_logic); end component; component portaor port( A,B,C :in std_logic; out_or:out std_logic); end component; signal E,out_or,D,out_xor,G,Q:std_logic; begin buffer3:buffertristate port map (G=>G, control=>control, H=>H); flipD1:flipflopD port map (D=>D, clk=>clk, Q=>G); xor1:portaxor port map (E=>E, F=>F, out_xor=>D); or1:portaor port map (A=>A, B=>B, C=>C, out_or=>E); end structure; 7

Testbench: A questo punto scriviamo un testbench per verificare, simulandolo, il corretto funzionamento del nostro circuito. library ieee; use ieee.std_logic_1164.all; entity testbenche is end testbenche; architecture structure of testbenche is component total port( A,B,C,F,clk,control:in std_logic; H:out std_logic); end component; signal A,B,C,F,clk,control:std_logic; signal H:std_logic; begin DUT: total port map(A,B,C,F,clk,control,H); clock: process variable clktmp: std_logic:='0'; begin clktmp := not clktmp; clk <= clktmp; wait for 20 ns; end process; stimulus : process begin A<='0'; B<='0'; C<='0'; F<='0'; control<='0'; wait for 40 ns; A<='0'; B<='0'; C<='0'; F<='0'; control<='1'; wait for 40 ns; A<='0'; B<='0'; C<='1'; F<='0'; control<='0'; wait for 40 ns; A<='0'; B<='0'; C<='1'; F<='0'; control<='1'; wait for 40 ns; 8

A<='0'; B<='1'; C<='1'; F<='0'; control<='0'; wait for 40 ns; A<='0'; B<='1'; C<='1'; F<='1'; control<='1'; wait for 40 ns; A<='1'; B<='1'; C<='1'; F<='1'; control<='1'; wait for 40 ns; end process; end structure;

Dal test effettuato con i suddetti dati si è ricavata la seguente forma d’onda che verifica il corretto funzionamento della struttura:

I risultati ottenuti dalla simulazione sono stati soddisfacenti, in quanto il comportamento del nostro circuito, e le sue uscite, coincidono con quello che ci aspettavamo sin dall’inizio...

9

Related Documents

Progettazione Vhdl
November 2019 17
Vhdl
November 2019 32
Vhdl
December 2019 25
Vhdl
May 2020 12
Vhdl
November 2019 22
Scheda Progettazione
June 2020 8

More Documents from ""

Motore A Curvatura
June 2020 15
Relazione Sistemi Ambientali
November 2019 24
Mathematical Modeling
November 2019 27
Motore A Curvatura 2
June 2020 8
Presentazione Di Meccatonica
November 2019 22