Home

Documento PDF - AMS Tesi di Laurea

image

Contents

1. 1 walt when 01 gt while not endfile input loop readline input linea_attuale if linea_attuale 1 then next end if read linea_attuale valuel read linea_attuale t1 for i in 1 to ti loop X lt valuel wait for period end loop end loop Sim_end lt 1 wait 6 5 5 Testbench 185 when others gt end case end process Il processo realizzato per essere eseguito una sola volta infatti in ogni branch del costrutto case di selezione presente un istruzione wait indefini ta La lettura della prima linea consente di effettuare la selezione tra le due differenti modalit ciascuna delle quali definita in uno dei branch si noti la presenza dell istruzione when others gt per le configurazioni non gestite All interno di ciascun branch sono presenti delle istruzioni per scartare even tuali commenti questi possono presentarsi su pi linee del file ma il loro riconoscimento se una linea contrassegnata dal simbolo iniziale si inten de commento e quindi priva di valori da leggere e la mancata valutazione attraverso l istruzione next che abortisce l esecuzione del ciclo corrente e riporta il puntatore all inizio del loop stesso dei valori non aumenta il tem po di simulazione Si ricordi infatti che essendo all interno di un processo le istruzioni che coinvolgono variabili sono eseguite in un tempo nullo quindi non sono inseriti nuovi istanti d
2. L oggetto stato nel visualizzatore grafico rappresentato per default da un cerchio verde Esso identificato dal suo nome univoco all inetrno della rete sequenziale cui appartiene Per default l editor assegna nomi generici quali S1 52 S3 ecc ma possibile modificarli inserendo una stringa testuale pi opportuna L oggetto stato pu essere inserito nel diagramma utilizzando il comando presente nel menu FSM gt State o cliccando sull apposito pulsante nella toolbar E possibile definire due propriet aggiuntive per uno specifico stato e default state possibile dichiarare uno stato perch sia uno stato di default In questa condizione la macchina transiter per questo stato se tutte le condizioni assegante alle transizioni uscenti dallo stato corrente sono risultate tutte false Se lo stato di default non fosse presente evidentemente la macchina si bloccherebbe in questo senso l uso di detto stato costiuisce una forma di debug e trap state possibile che uno stato sia dichiarato come trap la mac china transiter in questo al successivo fronte attivo del clock se per qualche ragione il suo stato corrente non corriponde ad alcuno sta 68 Il VADL to definito sul diagramma Ci protegge la macchina da un eventuale perdita di passo in cui le variabili che codificano lo stato interno pro babilmente a causa di un disturbo hanno assunto una configurazione illecita o non p
3. Ringrazio di cuore la mia famiglia per tutto l affetto e il sostegno che mi han no sempre dato aiutandomi nelle difficolt dello studio della permanenza a Bologna e della vita Li ringrazio per il loro amore che ho sentito sempre forte anche nella distanza Vi voglio bene Desidero ringraziare il prof Eugenio Faldella non solo per avermi affidato questo progetto e per avermi seguito nel lavoro di tesi ma per il modo in cui lo ha fatto sempre con grande tranquillit e rispetto aiutandomi nei punti critici e trasmettendomi la passione per l analisi e la comprensione delle cose studiate Affrontare il lavoro di tesi con la sua supervisione non mai stato n banale n palloso Voglio ringraziare e ricordare i miei amici pi cari di Ancona perch anche se ci siamo visti di meno non hanno mai smesso di farmi sentire il loro calore e la loro vicinanza Devo anche a loro ed ai loro consigli se oggi sono riuscito ad arrivare a questo importante traguardo Un pensiero particolare per Pietro il Dominus Giovanni Giova Ric cardo il Pellix Luca il Pincer e Andrea il Primix per tutti i momenti bellissimi passati assieme Qui in facolt a Bologna ho avuto la fortuna di conoscere delle bellissime persone che sono state sia buoni compagni di studio sia buoni amici Ringrazio Francesco Fr Alessandro Makkio Marco Passa Diego Kwe si Chiara Kia Francesco il Ciaba per avermi fatto scoprir
4. L architettura cos creata rispecchia lo stile di modellazione strutturale quin di dapprima saranno riportate le dichiarazioni dei componenti quindi gli stessi sono istanziati e collegati tra loro secondo lo schema con i relativi segnali Ovviamente sono inseriti anche i processi modellati nei blocchi pro cessuali Una volta compilata l unit derivante dalla coppia entit relazione pu es sere utilizzata essa stessa come componente Anche quest editor collegato al simulatore per permettere la simulazione e il debugging grafico del diagramma Se si fa procedere la simulazione per istanti precisi ad esempio con il comando Run Until o con il comando Run For possibile visualizzare lo stato di ogni segnale presente nel diagramma 80 Il VADL compreso il valore attuale di registri e contatori esempio riportato in fig 2 29 Chiaramente si tratta di un opzione molto utile in fase di debugging Figura 2 29 Probing dei segnali durante la simulazione utilizzando il Block Diagram Editor Si rimanda il lettore alle prove effettuate cap 6 ed alle conclusioni cap 7 in cui evidenziata la generazione del codice e ne valutata la bont Capitolo 3 Tipi di dato L uso dei tipi fondamentale per comprendere il VHDL in quanto un linguaggio fortemente tipato Ci significa che ogni tipo di flusso di dati input output segnali interni ecc ha un tipo associato e non ci pu mai essere
5. e Qy a es Gi El Gi Mtestbench tb_a1 Ms 15 200 250 30 ii Workspace verificatore 1 Mee E verificatore i e ee ae A Mon Dee termes yes ee ease l J Counterwhd PERA AI ion Ma 2 J modello asf z 1H SRC1Lvhd ij PRE ill Srestbenchahel Fis f testbenrh ith ati i RR E H verificate E View Source ill J Compara Ml Campion E testbenct Si testbemct IE a Adine ee Db Copy Declaration Cero f HIM verificati copy System Class Declaration ARI Copy VHDL Instantiation Copy Verilog Instantiation affi Generate Block Description for Sirmulink Add Mew Architecture di a m Ariat B ru A m Files FF Struc EyResou El modello hd testbench a 4 testbe Figura 4 2 Impostazione dell architettura Top level In questo modo i dati di simulazione simulation data creati in fase di com pilazione vengono caricati nel simulatore ed possibile scegliendo uno dei visualizzatori in seguito citati definire quali siano i segnali tra quelli defini ti nella entity e nella architecture definita Top level da visualizzare e quali 112 Validazione e simulazione stimoli applicare su di essi Ovviamente alla simulazione dell intera rete in tegrazione dei componenti di pi basso livello si sceglier come coppia entit architettura quella di un apposito testbench Le due sicuramente pi importanti sono il visualizzatore di forme
6. in fase di stampa se ne riporta anche la versione concettuale fig 6 20 4 3 Testbench Il testbench si prefigge l obiettivo di testare il componente controller mo strandone il comportamento ai morsetti La modellazione del testbench segue i pattern presentati nel cap 5 e nello specifico all interno della sua architet tura sono presenti i processi di generazione del clock e degli altri segnali Di fronte ad un componente del genere il testing puo essere condotto con approcci differenti Una prima modalita consiste nel creare all interno dell ar chitettura due processi concorrenti tra loro che settino il valore dei segnali Roll ed Hold ad intervalli di tempo definiti ad esempio mediante lettura da un file dati o mediante codifica degli stessi nel codice in modo da simulare Pandamento di una partita tra due giocatori 172 Casi di studio Bo Ds Du Pg e Ud a TF EAT Fa lt Y Us lt Y Fis cm O es cm Y Ra a LA ce ay i Fi at ce di id c oF id lt Ra a YY Lt om TP Ag 1 Rs a 1 Ad lt Y Udc YY Wee qa Y ie Bs aa ir Us i petal pl z ff Btw ue Bt c OW lt Arne i Ra Us c E RE ce tr Loe gore CO Ad or i om F pes As de OF Ls oe fr Rid ca T Ud c Gr Rg y Lia ca Er RE ce LA lt Y Bs ca ff Une Of Fi cn TP Ue ce se UE cm Rice Uh a OF Rd lt Ud c i Rs oe Wy Us oe OF ERA ce WF Figura 6 19 FSM relativa all unit
7. simbolo si interfaccia con l ambiente esterno attraverso le porte rappresen tate per mezzo dei pin Una caratteristica particolarmente significativa dei simboli data dalla possi bilit di definire configurazioni generiche ovvero sia realizzare il componente in modo che non sia limitato ad esempio dal numero di segnali in ingresso e uscita o dal valore interno del suo stato bens che sia provvisto di parametri configurabili e adattabili dall esterno Per rendere possibile ci esistono delle istruzioni dedicate come mostrato nell esempio seguente library ieee use ieee std_logic_1164 all entity SReg is generic n integer port D in std_logic_vector n 1 downto 0 R in std_logic E in std_logic Ck in std_logic Q inout std_logic_vector n 1 downto 0 end SReg architecture behaviour of SReg is begin process Ck begin if Ck event and Ck 1 then CLK rising edge if R 1 then synchronous RESET active High Q lt others gt 0 elsif E 1 then Q lt D 2 5 1 Ambiente di modellazione grafica TT end if end if end process end behaviour Il codice descrive un registro generico dove n il parametro che si riflette sul numero di terminali disponibili Si noti che anche la modellazione interna stata impostata in modo da non inserire vincoli ad esempio il reset rea lizzando utilizzando la keyword others consentendo di assegnare
8. tato principalmente per la simulazione a livello di gate e supporta la model lazione di alcune caratteristiche come i pull up e i pull down resistivi Esiste anche un sottotipo chiamato std_logic che ha lo stesso comportamento logi co ma pu essere usato anche per modellare i segnali in tristate In realt 3 3 Multi valued logic type 89 tale sottotipo usato universalmente per tutte le operazioni non solo per quelle che coinvolgono valori tristate quindi la combinazione del tipo e del sottotipo generalmente riferita attraverso il nome del sottotipo std_logic Std_logic non fa parte del linguaggio VHDL nativo ma un estensione al linguaggio standardizzata da IEEE essa presente nel package std_logic_ 1164 ed utilizzabile nel codice richiamandola attraverso le istruzioni library IEEE use IEEE std_logic_1164 all Il tipo std_ulogic ha la seguente definizione type std_ulogic is U Uninitialized X Forcing Unknown 0 Forcing 0 11 Forcing 1 Z High Impedance W Weak Unknown L Weak 0 H Weak 1 fot Don t care L uso di un tipo multi valued pieno di potenziali trabocchetti La maggior parte di essi riguarda l uso improprio di valori metalogici al posto dei valori reali ad esempio l assegnazione del valore L o X ad un segnale uscente anzich utilizzare un valore reale come uno 0 o un 1 Un
9. Istruzioni di assegnamento Conditional Uwistruzione di assegnamento condizionato seleziona differenti valori per il segnale cui destinata in base a condizioni specifiche differenti tra loro Di fatto assomiglia al costrutto IF sequenziale esaminato in 3 2 Una tipica sintassi per questa istruzione la seguente target signal lt waveform elements when condition else waveform elements when condition else waveform elements when condition Quando un evento si verifica su uno dei segnali utilizzati in una delle con dizioni o su uno dei segnali che compaiono nella forma d onda specificata 2 3 4 forme alternative di assegnazione concorrente 49 eseguita l assegnazione condizionale valutando le condizioni una alla vol ta per la prima condizione soddisfatta il corrispondente valore della forma d onda viene schedulato per essere assegnato al segnale Si consideri il seguente esempio Z lt INO after 10ns when SO 0 else IN1 after 10ns L istruzione eseguita ogni volta che un evento si verifica sui segnali INO IN1 e SO La prima condizione verificata se falsa si verifica la seconda qui risulter sempre vera e il valore di IN1 sar schedulato per essere assegnato al segnale Z dopo 10ns Ovviamente per ogni istruzione di assegnamento condizionato esiste l equi valente istruzione sequenziale essa si realizza all interno di un processo la cui sensitivity list deve essere sensi
10. aggiornamento Consideriamo il seguente processo in cui TEMP1 e TEMP2 sono variabili mentre A B C D e Z sono segnali process A B C D variable TEMP1 TEMP2 std_logic begin TEMP1 A and B TEMP2 C and D TEMP1 TEMP1 or TEMP2 Z lt not TEMP1 end process Assumiamo che avvenga all istante T un evento sul segnale D essendo un processo le istruzioni sono eseguite in sequenza A TEMPI assegnato im mediatamente un valore essendo una variabile Quindi eseguita la seconda istruzione e anche a TEMP2 assegnato subito un valore essendo anche essa una variabile Quindi eseguita la terza istruzione che determina il nuovo valore di TEMPI Infine eseguita la quarta istruzione questa viene calco lata e il risultato schedulato per l istante T 1 delta Solamente quando il tempo di simulazione si incrementer a T 1 delta il nuovo valore sar asse gnato a Z viceversa se ci fossero state altre istruzioni a seguire che usavano il valore di Z esse avrebbero utilizzato ancora il valore vecchio associato al segnale Come descritto nel seguito l aggiornamento del valore di un segnale all interno di un processo si verifica al raggiungimento di una istruzione di wait si veda la figura 2 6 2 3 1 VHDL sequenziale i processi 37 0 000 U 0 000 1 10 000 me 1 10 000 nz 0 Figura 2 6 List del valore dei segnali considerati nell esempio Un altro esempio aiutera a comprendere meg
11. l uso di istruzioni concorrenti si richiama allo stile di modellazione dataflow ed una delle caratteristiche distintive del linguaggio VHDL 3 1 VHDL sequenziale i processi Il processo process l istruzione fondamentale delle descrizioni comporta mentali in VHDL Un costrutto process all interno di un architettura rap presenta una porzione di un progetto descritta dal punto di vista algoritmico in questo senso si pone l accento sul suo comportamento cosa fa non sulla sua effettiva implementazione come lo fa 30 Il VADL Un processo uno statement concorrente come una assegnazione o una istanziazione di un componente che pu essere usato solamente all interno di una architettura ed in grado di reagire contemporaneamente agli al tri statement concorrenti Un processo al suo interno contiene solo istruzioni sequenziali assegnazioni sequenziali if then else case Un processo pu essere identificato durante una simulazione attraverso una label opzionale prima della keyword process ma comunque costituito da 3 parti label PROCESS segnale 1 F segnale n dichiarazioni di tipi dichiarazioni di costanti dichiarazioni di variabili dichiarazioni di procedure a Functions BEGIN istruzione sequenziale 1 istruzione sequenziale H END PROCESS label Figura 2 3 Struttura di un processo e una sensitivity list opzionale che contiene i trigger dei segnali in grado
12. process begin wait until ck 1 if res 1 then q lt 0 else q lt d end if end process end Un segnale di reset asincrono dovrebbe essere sempre pilotato da un input primario nell ambito di un sistema asincrono per poi essere reso sincrono al clock similmente a quanto accade nei calcolatori I segnali di reset interni al circuito dovrebbero essere sempre sincroni Ci sono due buone ragioni affinch componenti dotati di reset asincrono non vadano impegati in circuiti che genereranno segnali di reset sincroni la prima ragione l introduzione di comportamento asincrono in un circuito per sua natura sincrono Ci renderebbe il circuito molto sensibile ai glitch che si 58 Il VADL dlb_ RI GND Res E Ck Figura 2 15 Flip flop con data gating e reset sincrono verificherebbero nella logica di reset La seconda motivazione i timing ana lysers e i test automatici per la sintesi non possono pilotare correttamente reset asincroni sui componenti Un esempio di codice in grado di modellare un registro con reset asincrono il seguente entity FFD is port d ck res in bit q out bit end architecture behaviour of FFD is begin process ck res begin if res 1 then q lt 0 elsif ck event and ck 1 then 2 3 6 Driver 59 end if end process end 3 6 Driver Si immagini di dover rispondere alla domanda Co
13. scrizione in VHDL Il mapping tra il nome logico della libreria e la locazione dove essa fisicamente memorizzata non definito dal linguaggio bens dal la logica interna del compilatore ad esempio una design library pu essere implementata dall IDE di sviluppo come una directory sul file system in cui 104 Validazione e simulazione le varie unit sono memorizzate come singoli file Un numero arbitrario di design library pu esistere simultaneamente ma so lo una di esse contrassegnata come working library con il nome logico di WORK ossia la libreria contenente le unit del progetto corrente L analiz zatore del linguaggio compila sempre le unit in questa libreria quindi ad ogni istante temporale una sola libreria aggiornata Se c la necessit di depositare le unit compilate in una libreria differente il riferimento alla working library deve essere cambiato per puntare alla nuo va libreria di destinazione prima di avviare il processo di compilazione dei sorgenti E ovviamente possibile includere riferimenti a librerie remote sia di siste ma sia definite dall utente Il progettista potrebbe ad esempio definire una libreria contenente le design unit di alcuni gate basilari che prevede di utiliz zare spesso e aggiungerla nell ambiente di progetto corrente per istanziarne direttamente i componenti all interno di design unit pi complesse In questo modo si evita di dover ridefinire d
14. valore non ammissibile per nat ma lecito per integer questo perch l espressione calcolata come se gli operandi fossero degli integer quindi a questo valore viene aggiunto 5 e il risultato finale 4 Questo valore quindi assegnato al successivo delta cycle si veda anche cap 2 sez al segnale w verificando che il valore sia ammesso nel range di natz Si noti che il successo di questa operazione deriva dall uso di integer come basetype rispetto cui fare le operazioni intermedie se si fosse ottenuto nat4 come sottotipo di un tipo di interi definito dall utente senza valori negativi il calcolo dell espressione sarebbe fallito alla valutazione della sottrazione perch il risultato sarebbe stato fuori dal range ammissibile del basetype stesso 3 2 Enumeration 87 2 Enumeration Un tipo enumerativo un tipo di dato composto da un set di valori letterali L esempio pi ovvio in grado di illustrare un tipo enumerativo la variabile di stato di una macchina a stati finita FSM si veda anche cap 2 sez 4 I valori letterali sono nomi quindi il tipo pu essere pensato come un set di nomi Ad esempio il codice seguente definisce un tipo enumerativo che modella il controller di un semaforo type state is main_green main_yellow farm_green farm_yellow Questo tipo composto da quattro letterali identificati dai nomi main_green main_yellow farm_green e farm_yellow Qualsiasi nome pu es
15. 0 when 1 gt vi lt 1 g1 lt 0 ri lt 0 v2 lt 0 g2 lt 0 r2 lt 1 when 2 gt Wl lt 0 g1 lt 1 ri lt 0 v2 lt 0 g2 lt 0 r2 lt 1 when 3 gt vi lt 0 g1 lt 0 ri lt 1 v2 lt 1 g2 lt 0 r2 lt 0 when 4 gt vi lt 0 g1 lt 0 ri lt 1 v2 lt 0 g2 lt 1 r2 lt DI when 5 gt 6 1 6 Testbench 141 vi lt 0 g1 lt 11 ri lt 03 v2 lt 0 pd lt 1 r2 lt 0 when others gt vi lt 0 g1 lt 0 ri lt 0 v2 lt 0 pd lt 0 r2 lt 0 end case end process end behaviour Di fatto si opera una decodifica a partire dal segnale state ossia un tipo di dato integer estratto dall unit di controllo al solito si utilizzata la clausola others per recuperare le configurazioni altrimenti non modellate 1 6 Testbench In questo primo esempio visto anche lo scarso numero di segnali si preferi to impostare i parametri della simulazione facendo direttamente uso del tool grafico di supporto alla simulazione si veda in proposito anche il cap 4 sez 2 1 L architettura del testbench si limita all istanziazione del componente semaforo nella sua interezza andando cos a misurare i segnali presenti in uscita sui suoi morsetti come se ci si p
16. 3 1 si tratta dei cosiddetti Graphical Process text blocks La procedura di inserimento di un processo simile all inserimento di un fub e il suo conte nuto pu essere editato direttamente cliccando sullo stesso Il blocco processuale cos definito pu essere quindi collegato agli altri com ponenti dello schema attraverso connessioni singole o bus chiaramente in fase di simulazione il processo sar considerato alla stregua di una macro istruzione eseguita concorrenzialmente alle altre poich si ricorda che i vari componenti sono anche esse considerate delle macro istruzioni concorrenti come per altro descritto nella sez 3 3 Immediatamente dopo aver completato le connessioni tra blocco processuale e altri elementi il nome dei segnali cos connessi inserito nella sensitivity list visibile nel codice del processo stesso A tal proposito si veda la fig 2 5 2 Generazione automatica del codice 79 Process_1 i process GATE HETON NET 157 BCO_Dy Figura 2 28 Blocco processuale e connessioni agli altri componenti 5 2 Generazione automatica del codice Una volta completato il disegno dello schema possibile generare automa ticamente il codice ad esso associato Dapprima l analizzatore controlla il rispetto dei vincoli sintattici e semantici segnalando gli eventuali errori uno dei pi comuni leggere un segnale uscente da un pin etichettato out anzich inout quindi genera il codice corrispondente
17. 3 VHDL concorrente vl al a RR 44 Delta delay in concorrenza 46 9 4 forme alternative di assegnazione concorrente 48 Istruzioni di assegnamento Conditional 48 Istruzioni di assegnamento Selected 49 3 0 A cc i doe ke BOW we ee GB ae eS 50 a O Oe ee oe 53 Peper rerny verre Steere 54 LED Part aR ee ge de oe ee ee Shera 56 3 6 TORI Sos E A he e oe ee es 59 cb ee A ee ee ee 63 4 1 Ambiente di sviluppo FSM in Active HDL 64 4 2 Generazione automatica del codice 70 data fa e Anne ae Se x 71 eres EG 71 5 2 Generazione automatica del codicel 79 81 si bre 81 1 1 Lype Bite i s eok de tece tela ei 82 T2 A A 83 1 3 A pri enel e neh de i 83 ge a ce Re ee ne eni 87 A TIE 88 4 A AA einen 90 4 1 Aggregazione ui n A Ge eG 91 5 o A NA ENE 92 5 1 ASPSTERAZIONII s a sx crisis ww oe 95 EEE CEE a a 97 6 LARIO A E 98 6 1 Attributi integer ed enumeration 98 Indice 7 6 2 Attributi integer ed enumeration 100 103 1 Validazione ed analisil 103 2 Simulazione 5 4 sc a a eb pede PERSE ha 109 2 1 Il simulatore Alded 2 aa a 110 5 I testbench 119 eine a be ek we ek ee 123 oo eee ee es a oe Ge 124 1 2 Assegnamenti dinamici s a sha 125 2 Pattern per la scrittura di testbench 126 2 1 Semantiche temporali 129 2 2 Altre utili funzioni d
18. I testbench architecture tb_behaviour of test_bench is component entity_under_test is port lt list_of_ports gt end component lt local_signal_declarations gt begin lt Waveform generation gt EUT entity_under_test port map lt port associations gt lt Results emission gt end Come si pu notare l entit non contiene la dichiarazione di segnali questo perch un testbench non modella un dispositivo fisico quindi non ha bisogno di definire segnali verso l esterno I segnali utilizzati per operare sull unit in testing sono specificati all interno della singola architettura Chiaramente perfettamente lecito definire varie architetture nell ambito dello stesso test bench qualora si vogliano agevolmente considerare differenti configurazioni dei segnali Prima di entrare nel dettaglio sulla scrittura di un testbench bene esami nare come utilizzare un testbench per condurre delle simulazioni Una prima idea pu essere quella di limitare il testbench alla semplice ge nerazione degli ingressi codificandoli direttamente nel codice e alla loro applicazione al DUT d ora in avanti si utilizzer questa sigla in luogo di Device Under Test sar poi compito del progettista visualizzare i risultati con le forme d onda o come lo ritiene pi opportuno e confrontarli con un riferimento Il procedimento riassunto nella fig Una soluzione del genere ha valenza prettamente didattica
19. UBRAF G sicerd PA TRISCE G via IUH Fi Wir ac G Li LATTICE Ph POSTE i wed URE Min y m Sora Codo WHOL a Source Code WHOL gms ry ma A Li a NTAJ SRGALED MORO a ANDRIY u SEBHLE m SORT n NOR n ERSHE MORE 7 KNDAG n SRECLED Figura 4 1 Library Manager Sono presenti quattro colonne e Library type mostra il simbolo del tipo di libreria Pu trattarsi infatti di una liberia globale ossia accessibile da tutti i progetti realizzati con Active HDL e sempre visualizzata nel library manager anche se non stato ancora caricato un workspace Si tratta delle librerie fornite a corredo del programma registrate in fase di installazione o di una libreria locale private per il workspace e il design in cui sono state create Un progetto non pu accedere alle librerie locali di un altro progetto finch non eseguita un esplicita importazione come visto in precedenza o finch non sono converite in librerie globali e Library mostra il nome logico della libreria e Mode mostra la modalit d uso della libreria Pu essere accessibile in lettura scrittura R W o in sola lettura R O Per default le librerie locali operano in modalit lettura scrittura mentre quelle globali in sola lettura E comunque possibile variarne la modalit e Comment mostra un commento opzionale per fornire una breve descri zione del contenuto della libreria e Directory mostra il percorso completo fisico dov
20. VADL fornisce un esito negativo il sistema generer un opportuno messaggio La sintassi dell istruzione di assert la seguente assert boolean expression report string expression severity expression Se il valore dell espressione booleana falso il messaggio di report stampato sullo standard di uscita in fase di simulazione l espressione nella clausola severity deve essere un valore del tipo SEVERITY_LEVEL un tipo di dato enumerativo predefinito con i valori NOTE WARNING ERROR and FAI LURE Il severity level tipicamente usato dal simulatore per generare le azioni di risposta appropriate ad una condizione anomala Ad esempio in caso di fallimento di un asserzione se questa coinvolge segnali importanti potrebbe essere preferibile abortire la simulazione stessa 3 3 VHDL concorrente L assegnazione concorrente di segnali una delle caratteristiche della model lazione dataflow di un architettura quest ultima pu avere qualsiasi numero di assegnazioni concorrenti e l ordine delle stesse non importante Un asse gnazione concorrente eseguita quando un evento si verifica su almeno uno dei segnali presenti nell espressione Una delle differenze pi importanti tra segnali sequenziali e segnali concor renti che sar ora discussa riguarda la differente gestione delle tempistiche nella variazione dei segnali stessi Si consideri il seguente frammento di codice di un architet
21. X ns solo se la sua durata stata superiore a Y ns viceversa non viene propagato Delta delay Alcuni eventi devono poter essere schedulati con un ritardo nullo questo perch soprattutto ai livelli pi alti si astrae dai ritardi reali dei singoli componenti Questo fatto pu generare dei problemi il VHDL non permette di variare il valore attuale di un segnale istantaneamente in quanto tale ag giornamento istantaneo di un valore letto da un altro processo concorrente renderebbe l esecuzione non deterministica Si potrebbe inoltre verificare il mancato rispetto dei vincoli temporali di causa effetto Nell assegnazione di un segnale se non specificato un ritardo o se il ritardo di 0 ns si assume la presenza di un ritardo di durata delta Un delta delay una quantit di tempo infinitesimale che non ha significato fisico e non causa il cambiamento del tempo di simulazione Il meccanismo del delta delay ga rantisce l ordinamento degli eventi sui segnali che si manifesterebbero nello stesso istante temporale 36 Il VADL Ciascuna unit del tempo di simulazione pu essere considerata come compo sta di un numero infinito di delta delay Quindi un evento avverr sempre in corrispondenza di un istante di simulazione pi una certa quantit di delta Ad ogni modo il segnale considerato stabile e pu essere campionato da un altro processo solo in corrispondenza all ultimo delta delay del suo istante d
22. Z DS 0 E a Se oe osu _ ppn i i e i be OO LE DODCE Ee Figura 6 21 Forme d onda per il controller particolare latore una combinazione di tasti per variare in modalit toggle il valore attuale di un segnale in input al sistema In altre parole possibile far evol vere la partita quasi come se si stesse realmente operando sull unit Per rendere pi semplice la visualizzazione dei risultati e quindi capire se il sistema sta operando correttamente si pensato di sfruttare la modalit di debug associata all editor grafico con cui si modellato il componente nella sua interezza mediante l utilizzo di probe sui segnali uscenti dalle varie componenti stato possibile disegnare un interfaccia grafica basilare che simulasse i led e i display a 7 segmenti presenti nell equivalente fisico Il risultato mostrato nella fig CALOT inc 4 1200 Corporate Circle gt Henderson HW bona Thr D eretet 2106 2000 Tia Controlar Pig Hs CC Paper 3 2 NA 3 Figura 6 22 La console di comando particolare 6 5 Verificatore 175 5 Verificatore Il caso di studio esaminato in questa sezione ispirato ad un problema reale Si realizzato un semplice sistema di correzione automatica per gli esami del corso di Reti Logiche partendo da requisiti precisi Il docente modella il comportamento della rete sincrona definita dalle spe cifiche attraverso il graf
23. altra fonte di possibili problemi data dall uso dei don t care Questo valore stato introdotto per consentire all utente di render flessibile la sintesi del circuito da progettare ma pu presentare problemi perch non esiste il concetto di don t care in VHDL che quindi affidato al singolo compilatore Ad esempio se fosse prevista la gestione dei don t care il seguente test di uguaglianza nel tipo std_logic darebbe sempre true match lt s 90 Tipi di dato Viceversa come avviene nell IDE utilizzato in questo elaborato il linguaggio interpreterebbe ci non come un test di matching con ogni valore ma come un test di match esatto con il letterale quindi il test darebbe esito false a meno che il segnale s sia esso stesso in stato Per questa ragione si dovrebbe evitare l utilizzo dei don t care si mostrer negli esempi come modellare istruzioni di assegnamento contenenti don t care 4 Record Un record una collezione di elementi ciascuno dei quali pu essere di qual siasi tipo o sottotipo anche diversi l uno dall altro Un record dichiarato come segue type complex is record real integer imag integer end record Una volta che il tipo record stato dichiarato i segnali possono essere dichia rati di tale tipo esattamente come se fossero di qualsiasi altro tipo esaminato precedentemente signal a b c complex Un segnale di tipo record
24. conteggio number incrementata automaticamente di un unit al termine del loop stesso Similmente a quanto avviene in altri linguaggi il controllo sulla variabile viene eseguito ad inizio ciclo se l espressione vera ossia se la variabile di incremento minore del limite Il secondo iteratore il while che si esprime nella forma while lt condition gt ad esempio while J lt 20 loop il corpo del loop eseguito finch veri ficata la condizione quando essa diviene falsa l esecuzione continua con le istruzioni successive al loop Il terzo iteratore quello in cui non specificato alcuno schema di iterazione In questa forma di loop tutte le istruzioni contenute nel loop stesso sono eseguite ciclicamente finch qualche altra causa forzi il loop ad essere inter rotto L azione di apertura potrebbe essere causata da un istruzione di exit uscita dal ciclo ed esecuzione della prima istruzione fuori ciclo o da una di next uscita dal ciclo e ritorno alla condizione di inizio ciclo praticamente coincidente con la funzione continue presente nei linguaggi di alto livello Assert Le istruzioni di assert sono utili per modellare vincoli imposti ad un entita Ad esempio se necessario verificare che il valore di un segnale si mantenga in uno specificato range o si vuole controllare il rispetto dei tempi di hold e setup per i segnali che arrivano ai piedini di input dell entit Se la verifica 44 Il
25. cos via finch tutti i processi sono stati eseguiti Quando tutti i processi sono stati eseguiti si ha il completamento di un ciclo di simulazione Durante la sua esecuzione un processo potrebbe assegnare nuovi valori ad un segnale questi non sono assegnati immediatamente ma sono inseriti nella 110 Validazione e simulazione event list e schedulati per diventare effettivi dopo un certo tempo In questo modello temporale i segnali non le variabili sono caratterizzati da una forma d onda per i valori precedenti al tempo di simulazione corrente non modificabile ma consultabile da un valore attuale e da eventi schedulati in tempi o cicli di simulazione futuri ovviamente questi eventi non sono consultabili ma possono essere modificati Al completamento di un ciclo di simulazione la lista degli eventi scansiona ta per cercare quei segnali che cambieranno al successivo istante temporale presente nella lista stessa Pu trattarsi di un delta delay o di un vero ritardo come sar spiegato nelle sezioni seguenti in ogni caso il tempo di simu lazione incrementato e le variazioni sui valori dei segnali sono eseguite A questo punto tutti i processi che hanno nella sensitivity list un segnale che appena cambiato sono schedulati per essere eseguiti nel ciclo di simulazione immediatamente successivo Il simulatore procede finch sono presenti eventi schedulati nella event list La presenza della event list rende
26. d onda noto come Standard Waveform Viewer Editor Window ed il visualizzatore a lista noto come List Viewer La Standard Waveform Viewer Editor Window consiste di due pannelli come mostrato in fig e consente di visualizzare l andamento dei valori dei segnali come forme d onda nel tempo i oan ge ia panics comment time poe idelpobtasuaaga sama ELA E BO RA Formula warc 0 i e RL ca A ul LATCH HZ Chock AAA Fast pubes o E j a a a si AN EJ m ee MA CUTE spo bpa bation Figura 4 3 Standard Waveform Viewer Editor Window Il pannello Signal Grid raggruppa le informazioni principali sui segnali le cui forme d onda sono visualizzate nel relativo pannello Il pannello Signal Grid contiene le seguenti voci e Mode questa colonna mostra le icone indicanti il tipo di oggetto ossia se si tratta di un segnale di input di output o di inout rispetto all en tit che si sta simulando o viceversa se si tratta di un segnale interno all architettura in simulazione 4 2 1 Il simulatore Aldec 113 e Name questa colonna mostra gli identificatori degli oggetti ossia i segnali esterni e interni all unit o meglio alla coppia entit architet tura che si sta simulando e Type per il VHDL questa colonna mostra il tipo di oggetto nel Verilog il tipo di rete o di registro e Value questa colonna mostra il valore attua
27. di quale tipo utilizzare 3 1 3 Integer 85 per adattarsi ad una certa informazione Le regole del VHDL insistono sul fatto che il risultato di un operazione tra interi debba rientrare nel range previsto in altre parole se si decidesse di effettuare un operazione che ritorni un valore short l operazione stessa deve produrre un risultato compreso tra 128 e 127 Viceversa se il risultato del l operazione fuori range si otterr un eccezione durante la simulazione Se ci si verificasse la maggior parte dei simulatori assegnerebbe all operazione un risultato indefinito e la simulazione verrebbe interrotta Si deve sempre tenere in considerazione che gli interi in VADL non possono sforare il range e non vale il wrap round In altre parole sommare 2 a 127 non d come risultato 127 bens un eccezione a differenza di quanto avviene in linguaggi di pi alto livello Questa una diretta conseguenza della forte tipizzazione del linguaggio stesso Quando l utente definisce un nuovo tipo di intero il VADL assume automa ticamente che possano essere applicati gli operatori del tipo integer Integer subtype Un sottotipo la restrizione sul range di un tipo di dato Il tipo di dato su cui si basa un sottotipo noto come basetype Ad esempio esistono due pre definiti sottotipi del tipo integer chiamati rispettivamente natural e positive Le loro definizioni sono subtype natural is integer range 0 to intege
28. di soluzione da testare prevede l uso di un conta tore a due bit e di una rete combinatoria per generare i segnali di controllo del contatore e l uscita La rete riportata in figura 6 24 Figura 6 24 DUT La rete combinatoria stata modellata con un FUB e la sua implementazione interna affidata ad un architettura in stile dataflow descritta dal seguente codice R lt X E lt not Q1 U lt not Q1 or X Viceversa il contatore un symbol perch concettualmente possibi le utilizzarne pi istanze nello stesso design ed modellato con lo stile comportamentale attraverso un processo architecture behaviour of Counter is signal count std_logic_vector 1 downto 0 00 begin process Ck begin if Ck event and Ck 1 then if Res 1 then count lt 00 178 Casi di studio elsif E 1 then count lt count 1 end if end if end process QO lt count 0 Q1 lt count 1 end behaviour Come si pu notare nel codice il valore del contatore memorizzato in un se gnale aggiornato all interno del processo Al fronte positivo del clock quindi al primo delta il processo eseguito e l eventuale variazione del segnale count schedulata per il secondo delta Lo stato del contatore portato all esterno attraverso i segnali Q0 e QI questi segnali sono assegnati attraverso due istruzioni esterne al processo e concorrenti ci stato fat
29. differenti template ovviamente basati su processi Basic template E il template pi semplice il suo corpo costituito da un processo con solo due istruzioni sequenziali process begin wait on ck until ck 1 q lt d end process Short template Il secondo template opera esattamente come il primo in simulazione e si basa sul fatto che la clausola on pu essere omessa in questo caso il com 52 Il VADL pilatore sottintende una clausola on contenente tutti i segnali utilizzati poi nella condizione until process begin wait until ck 1 q lt d end process IF statement template process begin wait on ck if ck 1 then q lt d end if end process Questo template si basa sull uso di una condizione IF THEN L istruzione di wait non ha una clausola until come nei casi precedenti ci significa che il processo sar attivato ad ogni evento sul segnale di clock indipendentemente dal tipo di evento in altre parole sia sul fronte positivo sia sul fronte nega tivo L istruzione IF quindi agir da filtro considerando solamente i fronti positivi del clock Se il segnale clock basso allora l istruzione di assegna mento non sar eseguita il segnale q manterr il suo valore Ci significa che il fronte negativo non ha effetto sulla variazione del valore dell uscita quindi il processo modella semanticamente un flip flop Si approfondir ulteriormente la
30. effettivamente una collezione di segnali uno per ciascun elemento Le regole per l interpretazione di ciascun elemento sono le regole per quel tipo di elemento Ad esempio nel tipo complex definito sopra gli elementi sono tipi integer a 32 bit Il solo operatore che pu essere applicato su un tipo record nel suo com plesso quello di comparazione il confronto avviene elemento per elemento le uguaglianze tra gli argomenti sono quindi messe in AND tra loro per determinare l uguaglianza complessiva In altre parole due segnali di tipo record sono uguali se i loro corrispondenti elementi sono uguali Per accedere agli elementi interni ad un record si utilizza la dot notation ad esempio per assegnare il valore 0 alla parte reale del segnale complex si ha 3 4 1 Aggregazione 91 la seguente istruzione a real lt 0 Il tipo di a real un integer poich integer il tipo dell elemento real del segnale complex Tutti gli operatori previsti dal tipo integer possono essere utilizzati sull elemento real 4 1 Aggregazione Per assegnare i valori a tutti gli elementi di un record si utilizza una nota zione chiamata aggregazione ossia una collezione di valori Un esempio di aggregazione a lt real gt 0 imag gt 0 Questa la forma com pleta in cui ciascun elemento esplicitamente nominato ed associato ad un valore Il simbolo gt detto finger e associa il valore che segue con il nome
31. fine sono interamente eseguiti all av vio della simulazione inizializzazione automatica mentre i processi con il wait all inizio non lo sono e quindi l inizializzazione al valore corretto delle variabili interne va fatta manualmente Registri a pi bit E possibile modellare anche registri di pi bit in maniera tale da campionare ad esempio il valore di un bus La realizzazione di un registro ad 8 bit ad esempio mostrata dal seguente codice entity Dtype is port 54 Il VADL d in signed 7 downto 0 ck in bit q out signed 7 downto 0 end architecture behaviour of Dtype is begin process begin wait on ck until ck 1 q lt d end process end Ma il modello non si limita solamente a campionare un segnale qualsiasi numero di segnali pu essere gestito nello stesso processo process begin wait on Ck until Ck 1 q0 lt d0 qi lt di q2 lt d2 end process Gated Register I modelli visti fino ad ora non prevedono un segnale che abiliti o disabiliti il campionamento praticamente seguono l ingresso ad ogni fronte positivo del clock eci non sempre utile Per questa ragione necessario ampliare ulteriormente il modello introducendo due modalit di controllo clock gating e data gating 2 3 5 Registri 55 Clock Gating Questa modalita prevede di inserire un segnale di controllo che agisca sul clock ed eventualmente lo mascheri aff
32. i segnali stessi sono combinatori Per evitare queste spiacevoli situazioni necessario seguire due regole assi curarsi che ogni assegnazione di un valore ad un segnale presente in un istru zione IF sia presente in ogni ramo dell IF stesso e che ci sia sempre l else In alternativa si deve inizializzare ogni segnale coinvolto nell istruzione di IF con un assegnazione non condizionata prima dell IF stesso 3 2 Forme alternative di assegnazione sequenziale All interno di un processo possibile utilizzare un insieme completo di istru zioni sequenziali in maniera del tutto simile a quanto possibile fare con un qualsiasi linguaggio di programmazione Il costrutto IF THEN ELSE Il costrutto if then permette di controllare il flusso d esecuzione all interno di un process body 42 Il VADL Come possibile vedere nel seguente codice IF condition_1 THEN sequenza_istruzioni ELSIF condition_2 THEN sequenza_istruzioni ELSE sequenza_istruzioni END IF Le condizioni sono delle espressioni booleane che se vere abilitano l esecu zione del ramo relativo composto da statement sequenziali Il costrutto pu anche contenere degli ELSIF che sono eseguiti quando le precedenti condi zioni non sono verificate E possibile anche usare una clausola ELSE per raccogliere i casi esclusi da tutti i rami precedenti I costrutti IF THEN sono utili quando i casi non sono tutti mutuamente esclusivi
33. il codice proposto dal code assistant di cui si era parlato a pag 144 3 3 Unit di memoria Per ipotesi i valori numerici associati alle 81 celle della matrice ciascuno dei quali rappresentato secondo il codice BCD sono disponibili nell unit di memoria del tipo RAM M1 Tale memoria contraddistinta da 8 bit di ingresso A7 yp A6 A5 A4 A3 A2 A1 A0 rs8 e da 4 bit di ingresso uscita D3 msB D2 D1 DO 758 fornisce in uscita il valore numerico associato alla cella corrispondente alla riga R e alla colonna C i j 1 2 9 a fronte della presentazione in ingresso del l indirizzo A Aysp Arsp ij Bcp essendo Amsp AT A6 A5 Ale Arsp A3 A2 Al AO l indirizzo A7 A6 A5 A4 A3 A2 A1 AO 00010001 seleziona il contenuto della prima cella in alto a sinistra della matrice l indirizzo A7 AG A5 A4 A3 A2 A1 AO 10011001 quello dell ultima cella in basso a destra 6 3 3 Unit di memoria 161 L unit M1 stata modellata con un archittettura in stile comportamentale di cui si riportano le parti pi importanti architecture behaviour of Mi is signal i std_logic_vector 3 downto 0 signal j std_logic_vector 3 downto 0 type row is array 1 to 9 of std_logic_vector 3 downto 0 type memoria is array 1 to 9 of row constant matricel memoria 0110 0010 0101 0100 0001 1001 0011 1000 0111 1000 0100 0011 0101 0111 0110 1001 0
34. il gioco del PIG Il gioco del PIG utilizzato nelle scuole elementari per consentire agli alunni di acquisire una intuitiva percezione del concetto di probabilita prevede che ciascuno degli N N gt 2 giocatori partecipanti ad un incontro a rotazione ef fettui il lancio di un dado anche pi volte consecutivamente accumulando via via un punteggio parziale uguale alla somma dei valori corrispondentemente esibiti dal dado Tale punteggio parziale tuttavia prontamente azzerato ed il turno del giocatore ritenuto concluso senza alcun incremento del punteggio totale conseguito negli eventuali precedenti turni se a seguito di un lancio il dado esibisce il valore 1 Al fine di prevenire questo indesiderabile evento tanto pi probabile quanto maggiore il numero di lanci effettuati un giocatore pu decidere di capi talizzare il punteggio parziale fino al momento conseguito nell ambito di un turno passando spontaneamente la mano al giocatore successivo Vince l in contro il giocatore che per primo raggiunge un punteggio complessivo gt 100 Con riferimento al caso di N 2 giocatori la console del PIG evidenziata in fig 6 17 comprende e due display numerici a 7 segmenti Total0 Total1 preposti alla vi sualizzazione del punteggio totale conseguito nei precedenti turni da ciascun giocatore e due led Player0 Player1 adibiti ad indicare in maniera mutuamente esclusiva quale sia il giocatore correntemente d
35. la seguente entit modellante un decoder 2 x 4 entity DECODER2x4 is port A B EN in bit Z out std_logic 3 downto 0 end con al seguente architettura in stile comportamentale architecture DEC_SEQ of DECODER2x4 is begin process A B EN variable An Bn std_logic begin An not A Bn not B if En 1 then Z 3 lt not A and B Z 0 lt not An and Bn Z 2 lt not A and Bn Z 1 lt not An and B ZS ALI 2 3 Strutture del linguaggio 29 end if end process end Un processo ha similmente all architettura una parte dichiarativa prima della keyword begin e una parte di assegnamento tra le keyword begin e end process le istruzioni presenti in questa sezione sono sequenziali e pertanto sono eseguite nell ordine esatto con cui sono scritte La lista dei segnali spe cificata tra parentesi dopo la keyword process costituisce la sensitivity list e il processo stesso eseguito al verificarsi di un evento su uno dei segnali in essa presenti 3 Strutture del linguaggio In questa sezione si approfondiranno con maggior dettaglio i due pattern per modellare componenti in VHDL partendo da quanto esaminato fino ad ora L uso di processi si richiama allo stile di modellazione comportamentale e si manifesta con una programmazione procedurale simile per sintassi e seman tica a quella di linguaggi di programmazione di alto livello come il C o il Pascal Viceversa
36. ma inapplica bile per sistemi complessi con molti segnali per l evidente difficolt di dover esaminare manualmente i dati Un miglioramento alla soluzione precedente si ottiene con la lettura e la scrittura degli input su file di testo lo schema di funzionamento analogo 121 process process process Figura 5 1 Generazione degli ingressi interna al testbench e applicazione al DUT in questo caso per gli ingressi anzich essere modellati nel codice sono pre senti in file e le uscite sono memorizzabili per usi futuri Il vantaggio quello di avere un codice indipendente dalla singola configurazione pi generale e riutilizzabile per prove differenti eventualmente sostituendo la DUT ma presenta comunque lo svantaggio di dover effettuare manualmente l analisi fig 5 2 process Figura 5 2 Lettura degli ingressi da file e salvataggio delle uscite Un modus operandi pi professionale quello di prevedere la verifica auto matica dei risultati generati Questo schema prevede la lettura da file degli ingressi da applicare al DUT e delle uscite attese quindi l uscita del dispo sitivo collegata ad un comparatore che verifica la concordanza della stessa 122 I testbench con quella prevista Il controllo di correttezza deve avvenire in un processo sincronizzato in base ad un evento opportuno tipicamente il segnale di clock oppure tramite un entit definita a tale scopo ma sem
37. macchina a stati finiti utilizzando il compositore grafico per diagrammi di stato possibile visualizzare su que st ultimo la successione delle transizioni sugli stati e lo stato corrente fig 4 5 Nella versione per studenti presente una limitazione che permette di visualizzare entrambe le informazioni solo all ultimo istante di simulazione 114 Validazione e simulazione teca nas ines SL DELTA Larch Lre RESET eriz rx oa 08m 2 ES Li 1 w de D ii O 1 O 10 De o ES O 1 Li Do ne 68 a 1 1 id de O En D 1 1 Do i ES a a i mu ode D ES O D D O De 65 D Li j LiF 68 a a w de a D E O D I 00 Da Li ES Di 1 mu ode l Figura 4 4 List dei segnali e visualizzazione dei delta cycle mentre nelle versioni complete il processo mostrato run time Si noti che la visualizzazione possibile anche se l architettura definita come top level non quella che implementa il diagramma degli stati l importante che quest ul tima sia in qualche modo collegata al grafo stesso ad esempio utilizzando il componente descritto dalla macchina a stati Anche il diagramma a blocchi block diagram pu essere utile in fase di si mulazione perch in esso sono riportati i valori dei segnali per ogni pin o cavo di collegamento run time similmente a quanto avveniva nel diagram ma degli stati fig 4 6 Ci sono tre differenti modalita per l
38. matrice il cui contenuto non sia gi predefinito segnalare la conclusione del gioco sottoponendo cos a verifica la soluzione individuata Limitando il progetto agli aspetti realizzativi connessi con quest ultima fun zionalit il sotto sistema di controllo pu essere strutturato in accordo al modello Data Path amp Control Unit come indicato in fig Definendo le seguenti componenti e unit di controllo e unit di elaborazione e unit di memoria 3 1 Unit di controllo L unita di controllo UC avvalendosi delle risorse previste a livello di Data Path e coordinandone opportunamente il funzionamento ha il compito di gestire il processo di verifica della correttezza di una soluzione del gioco ogni qual volta viene dall esterno attivato livello logico 1 durata unitaria il se gnale di ingresso Start 156 Casi di studio Figura 6 12 Modello Data Path amp Control Unit per il controller Completata la verifica UC deve prontamente notificarne in uscita l esito tramite il segnale OK OK 1 in caso di esito positivo OK 0 in caso contrario contestualmente attivando livello logico 1 durata unitaria il se gnale di uscita End Il processo di verifica consiste nell esaminare in sequenza i 27 sottoinsiemi di 9 celle della matrice le 9 righe le 9 colonne le 9 sottomatrici al fine di accertare se il relativo contenuto viola o meno le regole del gioco nel primo caso chiaramente de
39. o dopo il ritardo della prima nuova transizione sono eliminate dal driver come nel caso transport 2 le nuove transizioni si aggiungono in coda al driver 3 per tutte le vecchie transizioni presenti sul driver schedulate per un tempo incluso nella finestra tra il tempo della prima nuova transizione supponiamo T e T meno il limite di reject sono eliminate quelle con valori differenti del segnale rispetto alla nuova transizione 2 4 FSM 63 Un discorso molto simile si ha anche al di fuori dei processi nell ambito di un esecuzione concorrenziale In tal caso pu capitare di avere istruzioni di assegnazione concorrenti che tentino di assegnare ad uno stesso segnale valori diversi con tempistiche differenti Il tal caso la risoluzione del conflitto e la scelta del valore effettivo da assegnare delegata ad una resolution function definita appositamente dall utente Il suo uso poco consigliato per una descrizione pi approfondita in merito si rimanda quindi ad in bibliografia 4 FSM La forma base di una macchina a stati finiti FSM un circuito sequenziale in cui lo stato futuro e l uscita del circuito stesso dipendono sia dallo stato presente che dagli ingressi La pi comune applicazione di una macchina a stati finiti all interno di un circuito di controllo Lo schema base di una FSM mostrata in fig Inputs Combinational Outputs Next state Current state Figura 2 16 FSM Un
40. o la strut tura Un dispositivo hardware pu avere vari modelli che lo descrivono questa una conseguenza del diverso livello di astrazione con cui possibile delineare il dispositivo in questione Per esempio un dispositivo modellato ad alto livel lo di astrazione potrebbe non avere un pin per il segnale clock poich il clock potrebbe non essere utilizzato in questa descrizione mentre modellandolo a livello pi basso necessario sviluppare un modello che lo preveda oppure il trasferimento di dati all interfaccia potrebbe essere trattato in termini di valori interi piuttosto che valori logici In VHDL ciascun modello considerato come una rappresentazione distin ta di un unico dispositivo chiamato entity La figura mostra la visione VHDL di un dispositivo hardware che ha diversi modelli ciascuno dei quali caratterizzato da una entity Sebbene le entity numerate dalla 1 alla N siano differenti dal punto di vista del VHDL in realt esse rappresentano lo stesso 22 Il VADL dispositivo hardware Device model 1 Device model 21 Se I n a a Entity N Device model N Actual hardware VHDL view Figura 2 1 Visione equivalente di un dispositivo in VHDL L entity quindi un astrazione dell hardware ciascuna entity descritta uti lizzando un modello che come detto contiene una vista esterna e una o pi viste interne Allo stesso tempo un dispositivo hardware pu esse
41. per l input che per l output per operare con essi L apertura di un file avviene con la dichiarazione file lt handle gt text is in lt file gt un file pu aperto in lettura scrittura dipende solo dalle operazioni effettuate Da un file si leggono unicamente stringhe non interpretate ed necessario dichiarare almeno una variabile di tipo line per la lettura di linee di testo Solitamente la lettura di un file realizzata con un ciclo loop la cui condizione data dalla funzione endfile valore true alla lettura dell ultima riga del file Ad ogni loop letta una riga del file attraverso la funzione readline che restituisce un tipo di dato line concettualmente un buffer della dimensione di una linea la lettura dei singoli valori fatta dalla linea cos estrapolata attraverso l istruzione read che restituisce il tipo di dato atteso dal target dell assegnazione Questo comportamento evidenzia la necessit di conosce re in anticipo il tipo di dati presenti nel file e la loro posizione in altre parole necessario definire una semantica per il contenuto del file stesso La scrittura su un file avviene simmetricamente con la scrittura dei singoli valori sulla linea buffer tramite la funzione write e la successiva scrittura del buffer nel file stesso mediante la funzione writeline 2 Pattern per la scrittura di testbench Scrivere un testbench che operi correttamente non particolarmente diffic
42. piedini che compongono questa entit sono uguali i piedini I0 13 e O sono modellati con segnali di 8 bit ossia con un array di segnali ci equivale ad avere 8 dispositivi in parallelo ciascuno con canali da un bit mentre SO e S1 sono normali pin singoli e servono per l indirizza mento Un ultima nota sul tipo di segnali utilizzati in questo esempio si sono utilizzati segnali std_logic appartenenti alla libreria IEEE std_logic_1164 essi sono caratterizzati da 9 livelli per definire il valore del segnale 1 0 H L W Z U X per una maggiore descrizione dei tipi di dato si veda il capitolo 3 2 2 Architecture body I dettagli interni di un entity sono specificati da un architecture body utiliz zando uno dei seguenti stili di modellazione 2 2 2 Architecture body 25 e Stile stutturale come set di componenti inter connessi Stile dataflow come set di istruzioni di assegnamento concorrenti Stile comportamentale come set di istruzioni di assegnamento sequen ziali Come combinazioni delle tre precedenti voci Stile di modellazione strutturale Nello stile di modellazione strutturale un entity descritta come set di com ponenti inter connessi Definendo la seguente entity entity HALF_ADDER is port A B in bit SUM CARRY out bit end si pu citare come esempio la struttura interna di un Half Adder architecture HA_STRUCTURE of HALF_ADDER is component XOR2
43. port X Y in bit Z out bit end component component AND2 port L M in bit N out bit E end component begin 26 Il VADL X1 XOR2 port map A B SUM A1 AND2 port map A B CARRY end Il nome della architecture body in seguito chiamata pi brevemente ar chitettura HA STRUCTURE La entity declaration specifica le porte di interfaccia per questa architettura L architettura composta da due sezio ni la parte dichiarativa prima della keyword begin e la parte assegnativa dopo la keyword begin Due component declaration sono presenti nella parte dichiarativa esse spe cificano l interfaccia dei componenti utilizzati nell architettura I componeti XOR2 e AND2 potrebbero essere componenti predefiniti presenti in una li breria 0 se non esistono potrebbero essere collegati in seguito ad altri com ponenti presenti in una libreria I componenti sono istanziati nella seconda sezione usando istruzioni di istan ziazione X1 e Al sono le etichette associate alle istanziazioni dei componen ti La prima di queste mostra che i segnali A e B che costituiscono le porte di ingresso del HALF ADDER sono connessi alle porte X e Y in ingresso del componente XOR2 mentre la porta in output Z di tale componente connessa alla porta di uscita SUM dell HALF_ADDER Similmente nella seconda istruzione di istanziazione i segnali A e B sono connessi alle porte L e M del componente And2 mentre
44. posizionali Inoltre non possibile eseguire opera zioni aritmetiche sui letterali tramite il valore posizionale loro associato Infine tale valore posizionale predeterminato dalla definizione del linguag gio e non pu essere ridefinito dall utente in altre parole non possibile far corrispondere ad esempio al primo letterale il valore posizionale 1 anzich 0 I soli operatori predefiniti per il tipo enumerativo sono solo i sei operatori di confronto lt lt gt gt Tali operatori sono definiti nei termini dei valori posizionali dei singoli letterali Ci significa che il primo letterale trattato come il valore pi piccolo di tutti quelli del set mentre l ultimo considerato quello pi grande 3 Multi valued logic type Un tipo di logica multi valued a pi valori una logica che include i cosid detti valori metalogici Questi sono valori che non esistono fisicamente ma che si rivelano molto utili nella simulazione Un classico esempio il valo re associato all alta impedenza Z Ovviamente collegando un multimetro ad un morsetto non si misurer mai un valore Z ma tale valore noto in letteratura per il suo nella modellazione di tristate bus Anche i valori 0 e 1 sono delle astrazioni che modellano i corrispondenti valori di tensione presenti fisicamente nel circuito reale Il tipo di dati standard std_ulogic utilizza una logica a 9 valori stato proget
45. possibile simulare le operazioni di processi concorrenti in uni sistema mono processore Tutte le operazioni racchiuse in un process avvengono in un tempo tempo di simulazione nullo In pratica il simulatore esegue le istruzioni all interno di un processo fino a che non trova l istruzione WAIT poi passa agli altri processi 2 1 Il simulatore Aldec Il simulatore utilizzato in questo elaborato quello fornito con PIDE di svi luppo ossia con Active HDL 7 2 Student Edition sviluppato dalla Aldec Inc Il progettista ha a disposizione diverse modalit per impostare la simulazione e per visualizzarne i risultati Prima di discutere le varie modalit di simulazione importante chiarire quali siano i passi fondamentali per eseguire una simulazione nell IDE di riferimento Un progetto solitamente composto da numerose coppie entit architettura in relazione tra loro ovviamente sia per il testing dei singoli 4 2 1 Il simulatore Aldec 111 componenti sia per il testing della rete finale necessario eseguire delle simulazioni In entrambi i casi necessario dapprima compilare i sorgenti quindi selezionare dal men a sinistra quale sia l architettura Top level ossia di pi alto livello da utilizzare nella simulazione esempio in fig 4 2 Artivie HOL 72 Student Edition verificatore File Edit Search View Warlkspace Design Simulation Diagram Tool Window Ped OF SOAR a Oo Gs Desion Brow gt y Ga
46. presente nonostante appa rentemente siano gi state coperte tutte le scelte possibili Ci dovuto al fatto che il segnale sel di tipo std_logic quindi ammette 9 possibili valori in altre parole la clausola others va a coprire i casi difficilmente manifesta bili in cui il valore del segnale non sia definito correttamente ad esempio la configurazione 1Z 1 4 Unita di elaborazione L unita di elaborazione ha il compito di indicare all unita di controllo tra mite l attivazione del segnale Overflow il completamento dell intervallo di generazione della segnalazione corrente In altre parole essa riceve in ingres so il valore corrispondente alla durata temporale della singola fase ne fa il countdown e al termine avvisa l unit di controllo tramite il segnale Overflow fig 6 3 Il circuito modellato graficamente in stile strutturale realizzato con l istan ziazione di due tipi di simboli contatore generico e rete di rilevamento 1 I due contatori U1 ed U2 sono configurati in modo da lavorare e prendere in ingresso 4 bit ciascuno In questo caso si ricorre alla tecnica del bus slicing il bus dati D 7 0 suddiviso in due bus a 4 bit D 7 4 e D 3 0 il primo sotto bus contiene le cifre decimali dei secondi mentre il secondo sotto bus contiene le unit Il componente U3 modella una rete di rilevamento della configurazione 00000001 e genera il segnale Overflow la generazione di tale
47. se il sintetizzatore non prevede una buona configurabilit e scarsa efficienza il circuito sintetizzato pu non essere efficiente mol to spesso ci dovuto ad una descrizione VHDL inefficace come un programma C scritto male pu essere molto lento o richiedere eccessiva memoria un codice VHDL scritto male pu dar luogo ad una logica inutilmente complessa e qualit del sintetizzatore la qualit del circuito sintetizzato varia da tool a tool E il problema sempre meno sentito grazie al continuo miglioramento dei sistemi di sviluppo 1 5 Dalla modellazione alla sintesi 19 e non sintetizzabilit di parte del codice alcune istruzioni del linguaggio VHDL in particolare quelle sulla modellazione dei ritardi e sulla ge stione dei file non hanno equivalente circuitale In altre parole il VHDL sintetizzabile un sottoinsieme del linguaggio Nell elaborato di tesi ci si concentrer sulla modellazione e la simulazione rimandando le considerazioni sulla sintesi a sviluppi futuri Capitolo 2 Il VHDL 1 Astrazione dall hardware IL VHDL utilizzato per descrivere un modello per un dispositivo hardware digitale Un modello permette di definire la vista esterna del dispositivo ed una o pi viste interne La vista esterna costituisce l interfaccia del disposi tivo attraverso cui esso dialoga con il mondo esterno o con gli altri dispositivi del suo ambiente mentre le viste interne specificano la funzionalit
48. uno sviluppo ordinato e di facile gestione con la possibilit di testare singolarmente le sin gole unit Il sistema di gestione delle librerie consente di inserire le librerie esterne ad esempio la IEEE la STD o altre create dall utente all interno del workspace corrente rendendole disponibili al progettista per l inclusione 188 Conclusioni nel codice La guida in linea fornita con il software abbastanza completa e spiega nel dettaglio le singole strutture del linguaggio dell IDE e dei suoi comandi tut tavia soprattutto agli inizi pu risultare dispersiva perch gli argomenti non sono ben legati tra loro mancando in parte la visione d insieme La modellazione dei casi di studio riportati ha permesso di analizzare le pre stazioni dell IDE utilizzato Active HDL 7 2 Student Edition della Aldec inc Questo si dimostrato un prodotto valido e facilmente apprendibile almeno nelle funzionalit pi classiche Gli editor di modellazione grafica si sono rivelati abbastanza semplici da utilizzare ma in grado di modellare circuiti anche complessi Viceversa la generazione automatica del codice ha fornito risultati diversi molto buona quella ottenuta dall editor FSM cap 2 sez 4 tanto da non richiedere in tegrazioni al codice mentre quella ottenuta dall editor a blocchi cap 2 sez ha dato risultati nettamente peggiori spesso il codice risultante richiede Pintervento del progettista ad esem
49. val 3 gt farm_yellow Infine c un set di quattro attributi che possono essere utilizzati per in crementare o decrementare un valore Questi sono succ prec leftof e rightof L attributo succ trova il successore del suo argomento che il suc cessivo valore pi alto del tipo di dato considerato indipendentemente che il range sia crescente o decrescente L attributo pred trova il valore precedente con semantica duale a quella dell attributo succ L attributo leftof trova il successivo valore pi a sinistra rispetto all argomento fornito questo sar il successivo valore pi basso per un range ascendente e il successivo valore pi alto per un range discendente Infine l attributo rightof trova il successivo valore pi a destra rispetto al suo argomento il comportamento il duale dell attributo leftof 100 Tipi di dato Ad esempio state succ main_green gt main_yellow short pred 0 gt 1 short leftof 0 gt 1 backward pred 0 gt 1 backward leftof 0 gt 1 Si noti che il VHDL non consente il wrap round in caso di sforamento del range quindi un istruzione del tipo state succ farm_yellow causerebbe un eccezione run time in quanto essendo un estremo del range non ammette un valore successivo 6 2 Attributi integer ed enumeration Gli attributi degli array sono utilizzati per ottenere informazioni sulla loro dimensione sul range di valori contenuti e sul lo
50. wait for 0 ns sospende il processo per un delta cycle consentendo cos al segnale count di rendere effettivo l eventuale nuovo valore del segnale parallelamente il tempo di simulazione portato al secondo delta cycle e facendo si che i segnali Q0 e Q1 assumano il valore corretto Ad alto livello la RCI ed il contatore sono considerate dal simulatore come due macro istruzioni combinatorie eseguite concorrentemente quindi saranno valutate in parallelo indipendentemente dall ordine con cui sono scritte ma riordinate nell ordine corretto mediante l introduzione di opportuni delta cycle e il ricalcolo delle espressioni gia valutate se almeno uno dei segnali variato nel delta precedente 5 3 Golden Model Il Golden Model rappresenta la soluzione dell esercizio fornita dal docente Nello specifico si ritenuto opportuno modellarne il comportamento diretta mente con una macchina a stati finiti piuttosto che fornire un implementa zione di pi basso livello per poter confrontare la conversione eseguita dal 180 Casi di studio compilatore con l equivalente realizzata a mano riportata nella DUT Per far ci si fatto ricorso all editor fornito dall IDE fig 6 25 Figura 6 25 GM macchina a stati finiti modellante il comportamento della rete da progettare Nella modellazione si avuto cura di definire lo stato B come stato inizia le ordinando manualmente gli stati per mezzo dell apposit
51. 010 0001 1001 0001 0111 1000 0010 0011 0101 0110 0100 0100 1000 0110 1001 0101 0010 0111 0001 0011 0111 0101 0001 0110 0011 0100 0010 1001 1000 0010 0011 1001 0001 1000 0111 0110 0100 0101 0001 0111 1000 0010 0110 0101 0100 0011 1001 0101 0110 0100 0011 1001 1000 0001 0111 0010 0011 1001 0010 0111 0100 0001 1000 0101 0110 begin i lt A 7 downto 4 j lt A 3 downto 0 process i j variable riga_estrapolata row begin case i is when 0001 gt riga_estrapolata matrice1 1 case j is when 0001 gt D lt riga _estrapolata 1 when 0010 gt D lt riga _estrapolata 2 when 0011 gt 162 Casi di studio D lt riga_estrapolata 3 when 0100 gt D lt riga_estrapolata 4 when 0101 gt D lt riga_estrapolata 5 when 0110 gt D lt riga_estrapolata 6 when 0111 gt D lt riga_estrapolata 7 when 1000 gt D lt riga_estrapolata 8 when 1001 gt D lt riga_estrapolata 9 when others gt D lt XXXX end case when others gt D lt XXXX end case end process end architecture behaviour Di fatto stato dapprima definito il tipo row corrispondente alla singola riga della matrice riga costituita da 9 celle dalla 1 alla 9 ciascuna dell
52. 0ns when SUB A B after 10ns when MUL A B after 10ns when DIV Quando un evento si verifica su uno dei segnali OP_CODE A o B l istruzione eseguita Assumendo che il valore corrente del segnale OP_CODE sia SUB l espressione A B calcolata e il suo valore schedulato per essere assegnato al segnale Z dopo 10ns 3 5 Registri Il VHDL non prevede un istruzione del linguaggio che descriva semantica mente un registro Fisicamente un progettista abituato a lavorare con componenti elettronici basilari come flip flop o registri ma in VHDL non esi ste un componente con memoria primitivo L unica soluzione per realizzare componenti con memoria utilizzare un processo grazie alla sequenzializ zazione delle istruzioni e alla modalit di variazione dei segnali nel tempo come esaminato in possibile implementare un set di istruzioni che ne modelli il comportamento Un primo esempio di registro modellato in VHDL il flip flop D riportato nel seguente codice 2 3 5 Registri 51 entity Dtype is port d ck in bit q out bit end architecture behaviour of Dtype is begin process begin wait on ck until ck 1 q lt d end process end Il modello appena descritto se simulato ha un comportamento equivalente ad un registro edge triggered ossia ad un flip flop In realt quella mostrata non l unica forma in cui pu essere rappresentato un registro esistono quattro
53. 3 5 2 Array come stringhe 97 a lt 3 gt 1 2 1 0 gt 0 a lt 3 gt 1 2 downto 0 gt 0 a lt 3 gt 1 others gt 0 La keyword others se utilizzata deve essere l ultima scelta nell aggregazione e deve definire tutti i rimanenti elementi dell array da definire Si noti che se si ricorre alla keyword others allora il range dell aggregazione non ha bisogno di fare match esatto con il range dell array cui assegnato In aggiunta alla notazione nominale possibile utilizzare anche con gli array la notazione posizionale le assegnazioni viste precedentemente possono essere espresse come a lt 1 0 0 0 Poich l assegnamento effettuato dalla sinistra alla destra in accordo alla posizione il valore 1 sar assegnato all elemento pi a sinistra di a in questo caso all elemento 3 e cos via 5 2 Array come stringhe In realt per gli array di caratteri ricordando che i valori dei segnali quali bit e std_logic sono espressi tramite caratteri possibile utilizzare un ulteriore notazione pi comoda e rapida universalmente utilizzata per assegnare valori ad array di caratteri quali bit_vector e std_logic_vector Questa notazione espressa nella seguente assegnazione a lt 1000 Si noti l uso delle doppie virgolette e non degli apici in quanto qui si utiliz zano stringhe di caratteri diffe
54. ALMA MATER STUDIORUM UNIVERSIT DEGLI STUDI DI BOLOGNA Facolt di Ingegneria Corso di Laurea Specialistica in INGEGNERIA INFORMATICA Tesi di Laurea Specialistica in SISTEMI DIGITALI Linguaggi e ambienti CAD per la sintesi logica di sistemi digitali Candidato Relatore Stefano Suraci Chiar mo Prof Eugenio Faldella Correlatori Prof Stefano Mattoccia Prof Marco Prandini Anno Accademico 2008 2009 Sessione I A cosa serve il successo se poi non hai qualcuno con cui poterlo condividere Indice 1 Modellazione circuitale ui css inn PS 2 Cos il VHDL 2 es a i ela A 3 JEDI STONG aan A 4 Elementi caratteristici del linguaggio 5 Dalla modellazione alla sintesi 2 2 2_Il VHDL 1 Astrazione dall hardware 2004 2 Entit ed architetture 2 1 Entity Declaration Lied e be a 2 2 Architecture body o dii ae Sak ee be nie di te hea te ee Ge ee d flare CETTE CITE TEL PIE 3 1 VHDL sequenziale i processil Variabili c cos 4 44 44 s Lea dee Bed add Istruzioni aggiuntive per modellare i ritardi Delta della i six dirla pe ade d Uso di Wait Jor Ok e e Ra e Feedback volontari e involontari 3 2 Forme alternative di assegnazione sequenziale Il costrutto TP THEN ELSE ssa roi 6 Indice Il costrutto CASE WHEN i ee fee 42 Il costrutto LOOP siii 43 E N peat ial te A Se gt we E POLE 43 3
55. Casi di studio L unit stata modellata con un architettura in stile dataflow dopo aver sintetizzato mediante mappa di mappa di Karnaugh fig 6 10 le espressioni relative alla variabili delle uscite X0 X1 YO ed Y1 a on X sD C bCB OC B A D CBA XDE A D E A D BA KR BA K D CBA DCBA W D BA K Y D8 W B Figura 6 10 Mappe di Karnaugh per la generazione delle uscite Le relative espressioni sono X0 DBA DBA DBA KBA DCB X1 DC ae DCBA DCBA Y0 DB Y1 DB K DCBA DCBA W DBA K 6 2 5 Testbench 149 2 5 Testbench Il testbench per il progetto stato realizzato nel rispetto delle indicazioni pre sentate nel cap 5 sez 2 In particolare sono presenti i processi di generazione del clock e della sua interruzione al raggiungimento di un preciso istante del tempo di simulazione il processo per generare il segnale aperiodico di Start ed il processo per caricare da file testuale la sequenza di comandi da dare al joystick In realt sono presenti due differenti architetture simulabili in alternativa i processi relativi al clock e alla generazione del segnale aperiodico sono co muni mentre la differenza risiede nel comportamento della lettura da file Nella prima architettura si ha la sola lettura della configurazione la relativa conversione in segnali e l applicazione di questi ai terminali del controller ov viamente il controller istanziato co
56. Casi di studio Roll il sistema genera un numero casuale compreso nel range 1 6 cam pionando lo stato di un contatore free running e visualizzandone il valore in Dice Al rilascio del pulsante Roll se il valore del dado 1 il gioco previo azzeramento di Subtotal passa nelle mani del successivo giocatore in caso contrario il sistema accumulato il valore del dado in Subtotal si pone in at tesa di una richiesta di Hold o di Roll da parte del player A fronte della richiesta di Hold il sistema somma al punteggio totale consegui to dal player nei precedenti turni il punteggio parziale accumulato in Subtotal nel turno corrente quindi opera la commutazione del player a fronte della richiesta di Roll il sistema procede alla generazione di un nuovo numero ca suale reiterando poi la sequenza Il player dichiarato vincitore non appena il suo punteggio complessivo raggiunge o eccede la soglia prestabilita 4 1 Data path amp Control Unit Il progetto di una rete sequenziale sincrona strutturato in accordo al modello data path control unit pu essere modellato come in fig 6 18 Come si pu vedere sono presenti diversi simboli con funzioni differenti e il blocco funzionale FUB dell unit di controllo UC Partendo da sinistra si trova un contatore generico U1 nel codice fase di istanziazione del com ponente nell architettura modellato con 3 bit per i segnali di ingresso uscita e 6 stati interni di cont
57. DL un linguaggio che permette al progettista di sfruttare il calcolato re ed i tool di sviluppo lungo tutta la filiera produttiva di un circuito digitale Partendo da un insieme di specifiche infatti possibile suddividere il sistema in moduli secondo il principio del divide et impera e modellare ciascuno di essi nella forma pi opportuna Il flusso di progettazione classico riportato in fig L estrazione del comportamento della rete che si vuol progettare cos come la descrizione RTL dalle specifiche affidata all esperienza del progettista Mentre il VHDL agisce nei tre livelli evidenziati in arancione ossia prenden do in ingresso il risultato della prima fase Il linguaggio permette una volta codificato opportunamente il comportamen to del circuito o il suo design RTL di simularne il comportamento in tutte le condizioni mediante l uso di testbench garantendo cos la correttezza di quanto elaborato Per far ci come si vedr nel seguito di questa tesi sono 1 5 Dalla modellazione alla sintesi 15 Figura 1 1 Fasi costruttive di un circuito digitale 16 Introduzione disponibili molti ausili alla modellazione e al testing sia propri del linguag gio sia forniti dall IDE di programmazione Il testing ad ogni fase importante perch evita la propagazione in cascata degli errori e ne rende pi semplice la rilevazione e la correzione fig 1 2 descrizione VHDL compor
58. VADL Figura 2 23 Block Diagram Editor Similmente a quanto visto in precedenza i segnali hanno sempre una dire zione in particolare esse sono quattro e in input port Una variabile o un segnale pu leggere un valore da questo tipo di porta ma non possibile assegnare ad essa un valore e out output port E consentito assegnare uno stato logico in uscita a questa porta ma non possibile leggere un valore da essa e inout una porta bidirezionale possibile assegnarle un valore o leggere un valore da essa e buffer una porta di output ma con possibilit di lettura Differisce da una porta inout perch il suo valore pu essere aggiornato solo da una sorgente mentre una porta inout pu essere aggiornata da zero o pi sorgenti Si definisce net una connessione logica tra i simboli presenti nel diagramma Ci sono due tipi di collegamenti discreti e bus In un diagramma un col legamento discreto rappresentato da una connessione singola Wire Un 2 5 1 Ambiente di modellazione grafica 73 collegamento a bus una collezione di connessioni ognuna delle quali ha un numero univoco che la contraddistingue dalle altre e che permette di identi ficarla singolarmente In VHDL un collegamento rappresentato da un segnale i collegamenti discreti corrispondono a segnali scalari ad esempio std_logic mentre i bus corrispondono ad array mono dimensionali ad esempio std_logic_vector Le c
59. _logic begin Z lt not C C lt not B B lt not A end N gt o Pk gt of I Pa Figura 2 12 Tre invertitori ideali in cascata Ci sono tre assegnamenti che utilizzano i delta delay Quando un evento av viene sul segnale A al tempo T la terza istruzione rileva il cambiamento e schedula la variazione del segnale B all istante di tempo T 1 delta Quando il tempo di simulazione avanza all istante T 1 delta il valore di B viene ag giornato Questa operazione per causa il ricalcolo della seconda espressione ed il nuovo valore segnale C sar schedulato per essere applicato all istante T 2 delta Quando il tempo di simulazione arriva a T 2 delta il valore di C aggiornato e si deve ricalcolare la prima espressione il segnale Z sar schedulato per il cambiamento all istante T 3 delta In definitiva anche il reale tempo di simulazione rimasto fisso a T ns il 48 Il VADL segnale Z stato aggiornato correttamente con una sequenza di 3 delta se un altro processo o segnale avesse richiesto la lettura del segnale Z all istante T avrebbe comunque ottenuto il valore corretto ossia quello risultante a T 3 delta si veda la figura 2 13 Time Detaj FA P24 B NC 0 000 0 000 0 000 0 000 10 000 nz 10 000 re 10 000 ns 10 000 n ee IE OOO Aid id l _ i oro oro cic Figura 2 13 Rappresentazione a lista per i segnali in esempio 3 4 forme alternative di assegnazione concorrente
60. a Le informazioni sul ritardo di propagazione del segnale sono incluse nell i struzione di assegnamento grazie all uso della clausola after Se si registra un evento sui segnali A o B al tempo T entrambe le espressioni sono rical colate perch entrambe contengono almeno uno dei due segnali sul loro lato destro Il segnale SUM schedulato per avere in nuovo valore dopo 8 ns mentre il segnale CARRY otter il nuovo valore dopo 4 ns quando il tempo di simulazione avavnzer a T 4 ns il segnale CARRY varier e la simula zione avanzer a T 8 ns e anche SUM sar aggiornato Quindi entrambe le istruzioni di assegnamento saranno eseguite in maniera concorrente e per questa ragione il loro ordine non importante Riguardo le temporizzazioni e il funzionamento della simulazione se ne dar un visione pi approfondita in 3 3 28 Il VADL Stile di modellazione comportamentale In contrasto con gli stili affrontati precedentemente quello comportamenta le specifica il comportamento di un entity come un set di istruzioni esegui te sequenzialmente in un ordine ben determinato Questo set di istruzioni sequenziali che sono specificate all interno di un processo non specificano esplicitamente la struttura dell entit ma principalmente il suo funziona mento Un processo pu essere considerata una macro istruzione concorrente pre sente nell architettura associata ad un entity Si consideri ad esempio
61. a FSM generalmente modellata in VHDL come l unione di un bloc co combinatorio e di un blocco di memoria La caratteristica fondamentale del pattern realizzativo che lo stato corrente e lo stato successivo sono rappresentati da un tipo enumerativo con un valore per ciascun stato 64 Il VADL 4 1 Ambiente di sviluppo FSM in Active HDL L IDE utilizzato nel lavoro di tesi Active HDL 7 2 prodotto dalla Aldec Inc fornisce al progettista un ambiente di design grafico chiamato State Diagram Editor esempio in fig P 17 L utente pu utilizzare questo supporto per mo dellare graficamente l automa a stati finiti nella sua completezza sar poi il compilatore a generare automaticamente il linguaggio VHDL corrisponden te a quanto modellato Inoltre l editor collegato anche al simulatore per poterne permettere la simulazione e il debugging grafico del diagramma te oo Qnagagnas ee PE aS Rie ed Ty Ale r JA ab e ad db di dj idos a oa alate Mentoe toolbar Prity back oc a Rulers E cLock Aachdectune bjack_0_srch Brnew 6 Bast la DI NEW_C Hod lan T e he ECARO renc s Stale Diagram Editor AHANO D i T DATA width 1 0 waking aheri BlackJack a RA i D Ace Stale machine working sheet maging a 45 40 5D Right click m ihis field or Autar bo open the context menu i BE Figura 2 17 Esempio di State Diagram Editor Segnali di ingresso e uscita I segnali di ingress
62. a con lo stile strutturale utilizzando l editor grafico fornito dall IDE fig 6 1 TEk o Ck in Figura 6 1 Unit di temporizzazione Come si vede sono presenti due istanze di contatori generici ad n bit sono istanze di simboli in quanto normale prevedere l utilizzo del simbolo pi volte nella stessa architettura collegate con delle retroazioni L uso di gene rict permette di riutilizzare il componente in situazioni differenti semplice mente assegnando il valore del parametro in fase di istanziazione attraverso 6 1 2 Unit di controllo 135 l istruzione generic map lt valore gt Nello specifico i due contatori sono a 4 bit U1 conta modulo 16 mentre U2 modellato nel codice per resettarsi attraverso il simbolo AND quando la sua uscita Q 0100 Il segnale Ck_out costituisce l uscita dell unit stata settata come inout si noti il simbolo grafico differente perch la connessione cui il segnale collegato anche entrante nell AND Se si fosse settata l uscita come out il compilatore avrebbe segnalato un errore perch impossibile che un segnale uscente sia sul lato destro di un espressione 1 2 Unit di controllo L unit di controllo ha il compito di identificare via via la segnalazione cor rente da generare in dipendenza del valore assunto dal segnale di ingresso X opportunamente sincronizzato tramite un circuito di campionamento ed in accordo alle prece
63. a di controllo Ovviamente questa modalit bench lecita abbastanza tediosa soprat tutto se si vogliono simulare partite lunghe e richiede calcoli manuali per derivare le tempistiche da farsi prima di eseguire la simulazione 6 4 4 Visualizzazione grafica 173 NRHDL C Cr Up nt dii niigi shhh 010 1 hhho Powarblp F ae 9 sr O sw 00011 eeh 1000 hhh1 060001 hhh1 01001 ukhh0 00001 ruho Co 00101 hrud 8 0000 00101 hhho Pd 00001 hhhO A b Ry Vy 00000 hhhO h hold 00 u update Oi P reset i analogamenta a Figura 6 20 FSM concettuale relativa all unit di controllo Un esempio di simulazione riportato nelle forme d onda della fig Una soluzione decisamente pi pratica testare il sistema con la simulazione passo passo variando il valore dei segnali coinvolti direttamente da tastiera ci illustrato nella sottosezione seguente 4 4 Visualizzazione grafica Come gi descritto nel cap 4 sez la simulazione passo passo possibile lanciando il comando Run for specificando un opportuna durata temporale In questa modalit possibile assegnare tramite l editor grafico del simu 174 Casi di studio a Edi a dl EE id BE s DH s e 6 A BE Be BE Rd i UL UU LUN LIU UU UU ae aa a u LALA q A E Helios Exa des ze 5 E z ta A ee AS e ate Pa LP TSE ALD ee fi Pei E i i somu Cor
64. a prima che Z assuma il nuovo valore di A Solo a questo punto A assume il nuovo valore ci evidentemente provoca un evento sulla seconda espressione che causa l assegnazione a Z del nuovo valore di A nell istante T 2 delta Quindi solo nell istante di simulazione T 2 delta Z sar uguale a B Si noti che si considera sempre come valore stabile di un segnale quello corrispondente all ultimo delta dell istante temporale in cui lo stesso variato si veda la figura 2 11 Time Delta VA MB NE 0 000 0 000 0 000 10 000 ns 10 000 ng 10 000 ns 20 000 nz 20 000 nz 20 000 ns Miestieatifatioioio icic Figura 2 11 Rappresentazione a lista per i segnali in esempio Delta delay in concorrenza In un istruzione di assegnamento ad un segnale se non specificato un ritardo o se il ritardo di 0 ns si assume sia presente un delta delay Un delta delay una quantit di tempo infinitesimale non un tempo fisico e non causa la variazione del tempo di simulazione reale Il meccanismo del delta delay consente di imporre un ordinamento agli eventi che si manifestano su segnali nello stesso istante di simulazione 2 3 3 VHDL concorrente 47 Si consideri ad esempio il tratto di circuito mostrato in figura 2 12 esso pu essere modellato con il seguente codice entity fast_inverter is port A in std_logic Z out std_logic end architecture delta of fast_inverter is signal B C std
65. a propagazione dei segnali all interno dei processi pu introdurre dei feed back ossia un campionamento dei segnali d uscita Questo pu essere perfet tamento lecito e volontario si pensi ad un contatore modellato dal seguente codice process begin wait until ck 1 count lt count 1 end process Al fronte positivo del clock supponiamo all istante T il valore attuale del segnale count ad esempio 4 l espressione sar valutata e il simulatore sche duler per l istante T 1 delta l assegnazione del valore 5 al segnale count Ovviamente se ci fosse stata un altra istruzione con il segnale count sul lato destro dell espressione il valore assunto dallo stesso sarebbe stato quello avu to nell istante T ossia 4 e non il nuovo valore 5 visto che l avanzamento del tempo di simulazione avviene al termine del loop Il circuito equivalente al codice riportato in fig Viceversa se non si modella correttamente il circuito potrebbero essere inse riti dei registri laddove non dovrebbero essere presenti Un errore abbastanza comune quello di modellare una rete combinatoria con un processo cosa di per se lecita senza riportare nella sensitivity list tutti i segnali che provoca no la rivalutazione delle espressioni stesse In tal caso il variare di un segnale 40 Il VADL U2 Add_plus_ Tr GND Res Ck Figura 2 9 Schema circuitale contatore non compreso nella sensitivit
66. a simulare nella event list da questo punto di vista un commento di una riga o di dieci righe non fa alcuna differenza Il processo si sospende per la durata prevista in entrambe le configurazioni permettendo cos alla rete di eseguire i vari processi e la rete verificatore agiscono come macro istruzioni concorrenti tra loro e di far avanzare il tem po di simulazione Al raggiungimento dell ultima riga del file viene anche settato il segnale Sim_end che arrester la generazione del clock a partire dall intervallo successivo Scrittura dei risultati su file Al fine di rendere pi completo il processo di verifica si realizzato un processo in grado di stampare su un file di testo eventuali discordanze tra l uscita prodotta dalla rete sotto test ed il Golden Model dump_p process Ok variable linea line 186 Casi di studio begin if Ok O then write linea string Comportamento NON corretto all istante write linea time image now period write linea string Valore previsto write linea Um write linea string Valore ottenuto write linea Ud writeline output linea dump lt 1 else dump lt 0 end if end process Di significativo si pu notare una forma alternativa conversione in intero di un tipo time utilizzando time image e la presenza del segnale Ok nella sensitivity list ci significa che questo processo non
67. a simulazione il valore di q mantenuto finch un nuovo valore non gli assegnato In tal caso l assegnamento bypassato finch il segnale di enable disattivato Ci equivalente a riassegnare al nuovo ingresso il vecchio valore dell uscita Reset Ci sono due modalit per modellare un registro dotato di reset un modo asincrono ed uno sincrono E importante fare una distinzione tra le due for me ed utilizzare quella pi corretta alla circostanza Un reset asincrono scavalca il clock ed agisce immediatamente modificando il valore del registro e quindi la sua uscita Al contrario i reset sincroni hanno effetto solo al fronte positivo del clock e devono quindi essere mantenuti fino al campionamento per essere rilevati I reset sincroni possono essere pilota ti da qualsiasi segnale di controllo all interno del circuito quindi tutti quei dispositivi che possono essere resettati da segnali di controllo generati da un 2 3 5 Registri 57 circuito appartenente alla rete dovrebbero essere dotati di reset sincrono Il modello VHDL prevede che anzich alimentare direttamente l ingresso del registro con la sua uscita sia fornito all ingresso il valore di reset predefinito se il segnale di reset attivo L equivalente circuitale in figl2 15 mentre il codice che lo rappresenta il seguente entity FFD is port d ck res in bit q out bit end architecture behaviour of FFD is begin
68. a utility men FSM View Sort Objects States Questa operazione molto importante perch se non si definisce esplicitamente lo stato iniziale ad esempio con un 6 5 4 Comparatore 181 reset si veda anche il cap 2 sez 4 si corre il rischio che lo stato di partenza non sia assegnato correttamente Il problema causato dal tipo di dato cui associato lo stato essendo un tipo enumerativo implicitamente definisce un ordinamento ed il valore di default in fase di inizializzazione quello dell elemento di posto 0 ossia quello pi a sinistra Chiaramente se la macchina partisse con un valore di default erroneo potrebbe bloccarsi o assumere un comportamento non regolare 5 4 Comparatore Questa componente modellata direttamente in VHDL con uno stile com portamentale ha il compito di verificare che le uscite prodotte dalle reti procedano di pari passo In caso di verifica positiva il segnale Ok assumer il valore 1 viceversa il valore 0 La verifica resa sincrona al clock vice versa il comportamento prodotto non sarebbe valido perch si rischierebbe di confrontare dati intermedi non stabili e quindi di dare informazioni erronee in uscita Essendo modellato con un processo la valutazione delle espressioni fatta al primo delta di ogni istante temporale per cui si ha il fronte positivo del clock attivazione del processo quindi l eventuale difformit delle uscite rilevata al cloc
69. a zero componenti gi realizzati garanten do una maggiore riusabilit del codice e una maggior efficenza Pi banalmente l uso di librerie esterne necessario anche nella progettazio ne di componenti semplici basti pensare all uso del tipo std_logic che richiede l importazione della libreria EEE std_logic 1164 o all uso di funzioni per la lettura e scrittura su file che utilizzano il package TEXTIO presente nella libreria STD Per importare una libreria all interno della unit che si sta progettando si uti lizza l istruzione include seguita dal nome della libreria Quindi necessario dichiarare quali package e quali funzioni o entit si vogliono utilizzare questo fatto per mezzo dell istruzione use La sintassi dell istruzione semplice e ricorda quella presente in linguaggi di pi alto livello quale il linguaggio Ja va procedendo da sinistra a destra la prima keyword il nome della libreria utilizzata quindi presente il package interno alla libreria per concludere riporata la funzione o la entity da utilizzare E possibile includere tutte le 4 1 Validazione ed analisi 105 funzioni o entit presenti nel package riferito mediante la keyword all Un esempio contribuir a rendere pi chiaro quanto detto library IEEE statement 1 use IEEE std_logic_1164 all statement 2 entity ffd is port Ck D in std_logic Q out std_logic end Per poter utilizzare nel codice de
70. ad ogni clock il confronto tra il valore fornito in uscita dal controller ed il valore previsto ritardato di un periodo attraverso li struzione wait for period Se i valori generati e previsti non coincidono ad esempio perch il giocatore 6 2 6 Visualizzazione grafica 153 ha sbagliato mossa rispetto a quella prevista viene scritto l evento in un apposito file dati attraverso le istruzioni di scrittura presenti nel processo stesso 2 6 Visualizzazione grafica L utilizzo dell editor grafico per la modellazione di un circuito soprattutto se utilizzato per il debugging ha suggerito la possibilit di realizzare una for ma elementare di visualizzazione grafica alternativa a quella ottenibile con le forme d onda nel simulatore Si realizzata quindi una nuova unit aggiuntiva collegabile alle uscite del macro componente game controller in grado di mostrare run time la posi zione del cursore nel labirinto modellando cos un display a matrice di led fig Figura 6 11 Display simulato Per rendere l effetto necessario eseguire segmenti di simulazione in sequen za per mezzo del comando Run for come per altro spiegato nel cap 4 sez 154 Casi di studio 2 1 e con la possibilit di pilotare andamento dei segnali JO e J1 da ta stiera Seppure lievemente macchinoso l effetto ottenuto discreto permette meglio di apprezzare il funzionamento del sistema ed aiuta nella fase di te stin
71. ambiguit squest ultimo 1 Standard types Un cospicuo numero di tipi di dato predefinito nel linguaggio La tabella seguente riporta le definizioni di questi tipi predefiniti la classe di tipologia a cui essi appartengono e se sono supportati dai sintetizzatori Tipo Classe Sintetizzabile boolean Enumeration type Si bit Enumeration type Si character Enumeration type Si severity_level Enumeration type No integer Integer type Si natural Subtype of Integer Si positive Subtype of Integer Si real Floating point type No time Physical type No string Array of character Si bit_vector Array of bit Si 82 Tipi di dato Questi si trovano nel package detto standard che deve essere presente in ogni sistema VHDL In aggiunta ai tipi standard ne sono stati aggiunti altri per supportare la modellazione di gate logici e sono anche utilizzati nella sintesi Questi tipi sono comunemente raggruppati sotto il nome std_logic e sono memorizzati in un package detto std_logic_1164 cos chiamato perch standardizzato dalla IEEE con il numero 1164 Nelle seguenti sezioni saranno esaminati i tipi pi significativi del tipo std_ logic 1 1 Type Bit Il tipo bit assume solamente due valori rappresentati dai caratteri 0 e 1 In altre parole la definizione di tipo type bit is 08 1 Si noti l uso degli apici questi sono fondamentali e non vanno omessi questo perch i valori sono dei caratte
72. amentale Prima di avviare la simulazione necessaria una fase di elaborazione in que sta fase la gerarchia dell entit espansa i componenti sono associati alle entit presenti nella libreria e l entit di pi alto livello costruita come una rete di modelli comportamentali propri dei sotto componenti di cui l unit di alto livello l aggregazione pronta ad essere simulata Inoltre nella me moria del calcolatore assegnato lo spazio per allocare i segnali le variabili e le costanti dichiarate nelle design unit Infine se nelle dichiarazioni delle unit sono presenti istruzioni per maneggiare file questi vengono caricati e aperti Segue quindi la fase di inizializzazione il simulatore parte dall istante tem porale 0 A questo punto tutti i segnali sono inizializzati al loro valore di default compresi quei segnali e quelle variabili per le quali stata fatta una dichiarazione esplicita dei valori iniziali Il simulatore utilizza una lista degli eventi event list basata sui tempi impostati e una matrice contenente i se gnali sensibili sensitivity list per avviare l esecuzione dei processi All istante di simulazione zero tutti i processi sono schedulati per l esecu zione Solo uno di essi sar per avviato e tutte le sue istruzioni sequenziali saranno eseguite inclusi i loop Quando l esecuzione del processo sospesa raggiungimento di una condizione di WAIT un altro processo avviato e
73. anciare una simulazione ciascuna di esse con le proprie caratteristiche e il comando Run lancia la simulazione e la fa proseguire per un perio do di tempo non definito La simulazione termina quando si verifica una delle due seguenti condizioni il tempo di simulazione corrente uguale a TIME HIGH ossia l estremo superiore del tipo time massi mo valore assumibile dal tempo di simulazione oppure non ci sono pi 4 2 1 Il simulatore Aldec 115 Figura 4 6 Block Diagram con visualizzazione dei probe sui segnali durante la simulazione 116 Validazione e simulazione eventi o processi da risvegliare schedulati Con questa modalit non possibile variare i segnali manualmente con il toggle da tastiera per ch il simulatore ha bisogno di definire la lista degli eventi in maniera deterministica e predefinita e il comando Run For lancia la simulazione e la fa proseguire per un determinato periodo di tempo Tale periodo di tempo quello inserito nel Simulation Step box localizzato nella barra di simulazione Pre mendo pi volte il pulsante la simulazione prosegue per il periodo di tempo previsto a partire dall ultimo istante simulato precedentemente ad esempio due pressioni del pulsante con un tempo di simulazione pari a 50ns originano una simulazione di durata complessiva 100 ns Solitamente quando si utilizzano variazioni toggle dei segnali si agi sce sfruttando la sovrapposizione degli effetti dap
74. ano gli stessi Ad esempio il seguente assegnamento per quanto a prima vista potrebbe non sembrare esattamente equivalente al precedente as 0 15 0 23 07 B 00 La differenza evidente nella fig 96 Tipi di dato i i a bit vector 3 0k indici interni dell agerecazione Figura 3 1 Indici di un array Si otterrebbe il medesimo risultato con i seguenti quattro assegnamenti a 3 lt 1 a 2 lt 0 a 1 lt 0 a 0 lt 0 Ur altra conseguenza del meccanismo di assegnamento che l aggregazione potrebbe non avere lo stesso range di riferimento non come ampiezza che deve essere necessariamente uguale del segnale target ad esempio a lt 10 gt 1 11 gt 12 gt 13 gt DJ Per evitare incomprensioni fortemente raccomandato che le aggregazioni abbiano esattamente lo stesso range di valori del target e la stessa direzione Ovviamente possibile anche l operazione inversa ovvero un aggregazione pu essere utilizzata come bersaglio di un assegnamento Similmente a quan to avveniva nei record sez c bisogno di utilizzare la type qualifica tion per aiutare l analizzatore a determinare il tipo del segnale oggetto di assegnazione bit_vector 3 gt elem3 2 gt elem2 1 gt elemi 0 gt elem0 lt a Ci sono anche alcune forme alternative di esprimere gli elementi di un aggre gazione tutte equivalenti tra loro
75. atore nella generazione del codice copier nel listato generato le condizioni e le assegnazioni associate alle transizioni stesse Cliccando su una transizione possibile visualizzare una finestra con le sue propriet in modo da poterle settare opportunamente 2 4 1 Ambiente di sviluppo FSM in Active HDL 69 Reset La transizione di reset uno strumento fondamentale per garantire il fun zionamento di una macchina sincrona perch ne garantisce la corretta ini zializzazione L editor grafico ed il linguaggio VHDL stesso non permettono di evidenziare uno stato come stato iniziale c quindi bisogno di garantire la corretta inizializzazione in altre forme una di questa appunto quella di utilizzare un reset Il reset come ogni altra transizione si verifica se la condizione valutata true la transizione pu essere poi asincrona o sincrona nel primo caso il passaggio al nuovo stato avviene immediatamente viceversa avviene al primo fronte attivo del clock ossia al ciclo successivo Qualsiasi condizione booleana pu essere utilizzata come condizione di reset nell immagine seguente fig la macchina subisce un reset quando il segnale RST assume il valore 1 Figura 2 22 Esempio di modellazione di reset sincrono e asincrono Un altro modo per impostare lo stato iniziale quello di variare l ordine degli stati il segnale che rappresenta lo stato sia l attuale sia il futuro associato ad un tipo e
76. bile a tutti i segnali coinvolti attraverso il costrutto IF THEN ELSE Istruzioni di assegnamento Selected Uwistruzione di assegnamento selected seleziona differenti valori per il se gnale di destinazione in base al valore della espressione di select Di fatto assomiglia al costrutto CASE SELECT sequenziale esaminato in 3 2 Una tipica sintassi per questa istruzione la seguente with expression select target signal lt waveform elements when choices waveform elements when choices waveform elements when choices Quando un evento si verifica su uno dei segnali utilizzati in una delle con dizioni o su uno dei segnali che compaiono nella forma d onda specificata l istruzione eseguita Il valore della espressione nella clausola select corri sponder ad uno dei valori delle possibili scelte ossia ad una delle choices 50 Il VADL e il segnale sar schedulato per assumere il valore corrispondente Si noti che le scelte non sono valuate in sequenza ma parallelamente cos come accadeva nel costrutto CASE SELECT Inoltre tutte i possibili valori assunti dalla espressione select devono avere la corrispondente choice una e una sola pertanto spesso si pu usare la keyword others per raggruppare tutti i possibili valori non espressi altrimenti Un esempio pu essere il seguente type OP is ADD SUB MUL DIV signal OP_CODE OP with OP_CODE select Z lt A B after 10ns when ADD A B after 1
77. ciet utilizzavano linguaggi proprieta ri di descrizione dell hardware che non necessariamente erano compatibili con la conseguenza che venditori differenti non potevano scambiare tra loro i progetti in maniera efficiente ed erano costretti a rapportarsi con il dipar timento della difesa ognuno attraverso la propria descrizione Ci portava ad inefficienze e rendeva molto difficile riutilizzare componenti valide ma di precedenti fornitori Per questi motivi si deciso di sviluppare un linguaggio di descrizione del l hardware che fosse standard per permettere una facile progettazione docu mentazione e verifica di sistemi digitali prodotti da societ diverse 12 Introduzione Un gruppo di tre societ IBM Texas Instruments e Intermetrics ha stretto il primo contratto per la nascita di una prima versione del linguaggio nel 1983 La versione 7 2 del VHDL stata sviluppata e rilasciata nel 1985 C e stata una forte partecipazione delle industrie elettroniche nel processo di sviluppo del linguaggio VHDL specialmente dalle societ che sviluppavano compo nenti VHSIC Successivamente al rilascio della versione 7 2 c stata una necessit sempre maggiore di rendere il linguaggio uno standard industriale conseguentemente il linguaggio stato proposto all IEEE per la standardizzazione nel 1986 che lo ha reso effettivamente standard nel 1987 versione nota come IEEE Std 1076 1987 La descrizione ufficiale del linguaggio ap
78. con il linguaggio VHDL bench 1 4 Elementi caratteristici del linguaggio 13 lo stesso fosse standard Gli sforzi di uniformare i packages portarono alla nascita di una logica a 9 valori questo package chiamato STD_LOGIC 1164 stato votato e approvato per divenire uno standard IEEE nel 1993 IEEE Std 1164 1993 4 Elementi caratteristici del linguaggio In questa sezione si riportano le caratteristiche principali del linguaggio VHDL che lo differenziano dagli altri linguaggi di descrizione hardware tali caratteristiche saranno successivamente riprese e commentate dettagliata mente nel proseguo della tesi e Il linguaggio pu essere utilizzato come mezzo di comunicazione tra differenti strumenti CAD e CAE per esempio un programma di disegno assistito pu essere utilizzato per generare una descrizione in VADL del circuito quindi tale descrizione pu essere fornito ad un simulatore anche di un altra casa costruttrice che lo eseguir e Il linguaggio consente di modellare una gerarchia di componenti un sistema digitale pu essere modellato come un set di componenti inter connessi ciascun componente pu essere modellato come un insieme di sotto componenti interconnessi e Il linguaggio non technology specific ma capace di supportare elementi specifici un utente pu definire nuovi tipi logici e nuove com ponenti Essendo indipendente dalla tecnologia lo stesso modello pu essere sintetizzato in
79. con un range non convenzionale 102 Tipi di dato signal c bit_vector 13 to 24 possibile creare un altro segnale con il medesimo range del segnale c ma normalizzato alla convenzione comune di avere un range discendente con 0 come estremo inferiore signal d bit_vector c length 1 downto 0 Capitolo 4 Validazione e simulazione 1 Validazione ed analisi Una volta descritta in VHDL un entity pu essere validata usando un ana lizzatore ed un simulatore i quali sono parte di un sistema VHDL Il primo passo del processo di validazione l analisi L analizzatore riceve in input un file contenente una o pi design unit si ricordi che una design unit formata da un entity una o pi architetture associate ed eventualmente da una configurazione ed un package e lo compila in una forma intermedia Il formato di questa rappresentazione non definita dal linguaggio e quindi propria del simulatore stesso Durante la compilazione l analizzatore controlla la sintassi validandola ed esegue verifiche statiche sulla semantica La forma intermedia cos generata mantenuta nella libreria design library del progetto corrente la cosiddetta working library Una design library una locazione di memoria nell ambiente in esecuzione dove sono conservate le descrizioni compilate delle unit Ciascuna design library ha un nome logico che utilizzato per riferirla all interno di una de
80. dell elemento nel record La modalit di funzionamento di un aggregazione prevede che l espressione real gt 0 imag gt 0 crei un valore temporaneo di tipo complex e che questo valore temporaneo sia quindi assegnato al segnale come se si trattasse dell intero record Una forma di aggregazione pi semplice utilizza la notazione posizionale I valori degli elementi sono semplicemente scritti nello stesso ordine degli ele menti definiti della definizione del record Ad esempio a lt 0 0 L aggregazione pu anche essere utilizzata per unire segnare al fine di asse gnarli ad un record Ad esempio supponendo di avere due segnali r ed i di tipo integer e di doverli assegnare al segnale a di tipo complex Ci pu essere fatto con un unico assegnamento sfruttando l aggregazione a lt real gt r imag gt i L operazione inversa pu essere eseguita usando un aggregazione come obiet tivo di un assegnazione L operazione non per cos semplice l analizzatore VHDL non pu estrarre il tipo associato alla assegnazione target perch normalmente si agisce all opposto il tipo del target utilizzato per deter minare il tipo del valore che gli sar assegnato Ad esempio l aggregazione real gt r imag gt i riconosciuta di tipo complex perch stata as 92 Tipi di dato segnata ad un segnale di tipo complez Per risolvere la questione il VHDL utilizza il concetto di typ
81. denti regole delineate Si deciso di modellare l unit di controllo tramite una macchina a stati finita in fig 6 2 sfruttando cos le capacit di sintesi del compilatore La scelta di modellare un controllore con una FSM piuttosto che a pi bas so livello es RTL deriva dalla volont di rendere facilmente comprensibile il comportamento del circuito e di poterlo modificare o sviluppare facilmente Le uscite sono tutte combinatorie cap 2 sez 4 1 nello schema si vedono alcune istruzioni circondate da un quadrato nero si tratta delle istruzioni associate alle transizioni o allo stato di fatto si realizzata una macchina di Mealy mentre le istruzioni in viola sono le condizioni che permettono alle transizioni di scattare Tutte le istruzioni presenti all interno dello schema de vono rispettare la sintassi del linguaggio pena il fallimento nella generazione del corrispondente VHDL modellante lo schema 1 3 Unit di memoria Il tempo di permanenza della segnalazione corrente reso disponibile dall unit di memoria la quale comprende quattro locazioni di otto bit indirizzabili tra 136 Casi di studio Entity UC Acheta LG arch De ren Gece Mace SI oes D rew TH Cor posata Cirie Hedonic WY PROTA Thr Frigo Verification Cava pary Figura 6 2 Unit di controllo mite i segnali AZ e 40 in cui sono nell ordine riportati i valori della durata di ogni singola fase ciascuno espresso in seco
82. di attivare il processo stesso in verde in figura 2 3 e una parte dichiarativa che contiene le dichiarazioni dei tipi di sotto tipi delle costanti delle variabili delle procedure e delle function che potranno essere usate nel suo body hanno visibilit locale in blu in figura 2 3 e un process body che rappresenta il comportamento del processo speci ficato tramite un insieme di istruzioni eseguite in maniera sequenziale fra gli statement BEGIN ed END PROCESS in viola in figura 2 3 Un process body consiste in un insieme di istruzioni sequenziali il cui ordine di esecuzione definito dall utente e rappresentato dall ordine con cui com paiono nel process body Solo statement sequenziali sono leciti nel corpo di un processo le assegnazioni lt sono lecite in quanto l assegnazione di un 2 3 1 VHDL sequenziale i processi 31 segnale considerata sequenziale se effettuata all interno di un processo Il modello d esecuzione di un processo relativamente semplice Ogni suc cessiva esecuzione del processo dopo quella di inzializzazione all avvio della simulazione innescata da eventi che vanno esplicitamente indicati nella sensitivity list ad esempio o in un istruzione di wait inoltre il processo esegue tutte le istruzioni sequenziali e poi le ripete ripartendo dall inizio il tutto ripetuto come in un loop infinito La stesura del codice di un processo generalmente segue du
83. e errato l oggetto riportato nella cella 0 Il gioco prosegue da tale cella nel caso che gli errori non siano stati pi di due in caso contrario il gioco considerato concluso Il sistema di controllo del videogioco deve essere strutturato come indicato in fig nelle quattro unit che saranno descritte nelle sezioni seguenti 1 unit di rilevazione di errore 2 unit di conteggio degli errori 3 unit di conteggio dei passi 4 unit di transcodifica delle coordinate dell oggetto in base al numero di passi eseguiti Figura 6 6 Modellazione del controller per il videogioco 2 1 Unit di rilevazione d errore x L unit di rilevazione d errore un unit combinatoria a due stadi con il compito di evidenziare tramite il segnale di uscita Error la selezione da par te del giocatore di uno spostamento corretto Error 0 o errato Error 1 tenendo conto del passo corrente indicato dai segnali di uscita D MSB C B A LSB dell unit di conteggio dei passi e del valore attuale dei se gnali J1 JO 144 Casi di studio Si ritenuto appropriato modellare questa unit con l editor grafico L idea stata quella di disporre in cascata tre reti logiche per ottenere il comporta mento richiesto una prima rete combinatoria RC1 partendo dalla posizione attuale del cursore mobile restituisce l unica configurazione lecita che pu essere ottenuta dal joystick Quest ultima costitu
84. e memorizzata la libreria 4 1 Validazione ed analisi 107 Il pannello di destra mostra le unit contenute all interno della libreria sele zionata nel pannello di sinistra Cliccando con il tasto destro del mouse su una unit possibile View Source caricare il codice sorgente della design unit selezionata Open simbol o Delete Symbol caricare l editor dei simoli o cancellare il simbolo selezionato dalla libreria Copy Declaration permette di copiare la dichiarazione del codice VD HL selezionato Copy Istantiation permette di copiare le istruzioni di istanziazione di componenti presenti all interno dell unit selezionata Delete rimuove l unit selezionata Find ricerca l unit all interno della libreria selezionata Il pannello di destra contiene i seguenti campi Unit Name mostra le unit primarie contenute nella libreria seleziona ta Secondary Unit Name mostra le unita secondarie contenute nella libre ria selezionata Le sole unita primarie che potrebbero contenere delle unit secondarie sono le entit e i package Per le altre tipologie di unit la colonna ripete il nome mostrato nella colonna Unit Name Ci giustificato dal punto di vista logico perch quando tali unit sono referenziate da codice VHDL in un design misto si assume di avere delle unit secondarie virtuali con lo stesso nome Source Type mostra il tipo di documento contenente la descrizione di una
85. e timer data 1 ns La variabile data un integer moltiplicandola per l unit 1 ns l espressione data 1 ns restituisce un valore del tipo time Il viceversa si ottiene agevo lemente dividendo il valore di tipo time per l unit di riferimento ottenendo 5 2 2 Altre utili funzioni di conversione 131 cos l equivalente intero Infine se si avesse necessit di stampare a video o su file una stringa ne cessario passare come parametro in input alla funzione write una stringa definita con la seguente sintassi ovvero avvertendo esplicitamente che il pa rametro passato di tipo string con un discorso simile a quello visto per le aggregazioni string stringa Capitolo 6 Casi di studio 1 Controller semaforico Questo primo caso di studio si basa sulla progettazione di una semplice cen tralina semaforica Il sistema di controllo di un impianto semaforico posto all incrocio di due strade deve operare secondo due distinte modalit di fun zionamento selezionate rispettivamente dal valore logico 1 funzionamento diurno o dal valore logico 0 funzionamento notturno di un segnale di in gresso X proveniente da un timer elettromeccanico esterno Il funzionamento diurno prevede la generazione ciclica delle seguenti quattro segnalazioni 1 semaforo verde sulla direttrice 1 rosso sulla 2 2 semaforo giallo sulla direttrice 1 rosso sulla 2 3 semaforo rosso sulla direttrice 1 verde
86. e quali di 4 bit Quindi stato definito il tipo memoria corrispondente ad una tabella di 9 righe ciascuna contenente 9 row Infine stata definita una costante matricel di tipo memoria riempita con i valori inseriti nelle celle del sudoku da valutare La fase di inserimento dei valori nelle celle del sudoku stesso e quindi nella memoria esula dal caso di studio e per questa ragione non stata modellata 6 3 4 Testbench 163 L architettura si compone di due istruzioni concorrenti in grado di operare un bus slicing per separare i bit relativi all indirizzo della riga da quelli della colonna e da un processo nel quale si ha l effettiva estrazione estrazione del dato dalla memoria in relazione alla cella selezionata I segnali e 7 sono generati con le istruzioni concorrenti fuori dal processo in modo da essere subito disponibili al processo stesso si veda anche cap 2 sez 3 1 e quanto detto nell esempio a pag 177 Il processo attivato in caso di variazione di uno dei segnali di indirizzamento costituito da un istruzione case esterna in grado di selezionare ed estrapo lare in una variabile temporanea quindi il cui valore subito utilizzabile una delle 9 linee della matrice ad es riga_estrapolata matricei 1 Oltre a questa operazione presente anche un altra istruzione case annidata con il compito di estrarre dalla linea uno dei 9 valori in essa contenuti il dato cos estratto viene a
87. e esempio di entit un multiplexer dato dal seguente codice entity MUX is port 13 in std_logic_vector 7 downto 0 I2 in std_logic_vector 7 downto 0 I1 in std_logic_vector 7 downto 0 IO in std_logic_vector 7 downto 0 S1 in std_logic SO in std_logic O out std_logic_vector 7 downto 0 end MUX che modella il seguente componente in figura 2 2 Analizzando con maggior dettaglio il codice si nota che sono complessiva mente presenti 6 piedini di ingresso e uno di uscita Ogni piedino corrisponde ad un segnale e deve avere una precisa direzione assegnata mediante una di queste parole chiave e in input port Una variabile o un segnale pu leggere un valore da questo tipo di porta ma non possibile assegnare ad essa un valore 24 Il VADL Entity Entity Hardw Model declaration arcvare ode ds sitas E asbstraction _ pa of a digital Architecture bodies Figura 2 2 Un entity e il suo modello e out output port E consentito assegnare uno stato logico in uscita a questa porta ma non possibile leggere un valore da essa e inout una porta bidirezionale possibile assegnarle un valore o leggere un valore da essa e buffer una porta di output ma con possibilit di lettura Differisce da una porta inout perch il suo valore pu essere aggiornato solo da una sorgente mentre una porta inout pu essere aggiornata da zero o pi sorgenti Non tutti i
88. e qualification Si tratta di una modalit per dire all analizzatore VHDL di che tipo sia un e spressione evitando cos l ambiguit L uso della type qualification sempre richiesto esplicitamente quando si assegna qualcosa ad un aggregazione Si consideri il seguente esempio i segnali integer r e i possono essere assegnati a partire dal segnale complex a in un solo assegnamento complex r i lt a Il type qualification non ha effetto sul circuito modellato solamente una guida per l analizzatore al fine di risolvere l ambiguit nel tipo dell assegna zione Nello specifico i segnali 7 e r sono stati raggruppati assieme in un ag gregazione Il type qualification ossia il costrutto complex specifica il tipo di segnale che sar passato in questo caso di tipo complex All aggregazione quindi assegnato il valore del segnale a l effetto complessivo lo stesso del tener separate le due istruzioni r lt a real i lt a imag 5 Array Un array una collezione di elementi tutti dello stesso tipo A differenza dei record gli elementi di un array sono acceduti attraverso un indice sia esso un intero sia un tipo enumerativo Un array pu essere vincolato o non vincolato Un tipo non vincolato se la sua dimensione non specificata di fatto definisce una famiglia di sotto tipi array tutti con lo stesso tipo di elementi ma con dimensione diversa Viceversa in un array vincola
89. e si pu selezionare una delle opzioni disponibili e Clock pilota il segnale con un onda pulsante un clock possibile settare il valore iniziale dello stesso un offset il periodo o la frequenza e il duty cycle dell onda cos ottenuta e Counter pilota il segnale con una sequenza di valori rappresentata dagli stati di conteggio di un contatore Sono disponibili vari attributi configurabili dall utente quali il modulo del contatore il valore iniziale la velocit di conteggio ecc e Custom permette all utente di definire manualmente nell editor la for ma d onda da assegnare al segnale e Formula permette all utente di definire una formula con cui assegnare i valori al segnale Utilizzare la formula equivale a settare il valore dei segnali con una semantica after X unit di tempo ossia specificando il valore assunto del segnale a partire da X unit di tempo il riferimento assoluto quindi sempre rispetto all origine Utilizzando una formula possibile definire anche cicli di ripetizioni anteponendo il parametro r al l istante temporale da cui si vuol ripetere la sequenza o stabilire per quante volte ripetere un assegnazione di un valore e Hotkey consente di variare il valore di un segnale in modalit toggle con la pressione di uno specifico tasto della tastiera si veda anche la sez 2 1 e Value forza il segnale ad assumere il valore costante impostato per tutta la durata della simula
90. e si vuole stabilire una priorit di esecuzione nei confronti Il costrutto CASE WHEN Il funzionamento di questo costrutto abbastanza simile al precedente ma preferibile quando i casi sono mutuamente esclusivi case segnale variabile_di_selezione is when casol gt istruzioni when caso2 gt istruzioni when casoN gt istruzioni end case L istruzione case seleziona uno dei rami in maniera esclusiva in base al valore dell espressione Il valore dell espressione deve essere di tipo discreto o un array mono dimensionale Le scelte devono essere espresse come valori singoli o con range di valori separati dal carattere o con l uso della keyword others E importante sottolineare che tutti i possibili valori dell espressione devono essere univocamente coperti da un ramo di scelta per questo sempre buona norma indicare il ramo con la scelta di default utilizzando la keyword others 2 3 2 Forme alternative di assegnazione sequenziale 43 Il costrutto LOOP Il costrutto loop utilizzato per iterare attraverso un set di istruzioni sequen ziali La sintassi dell istruzione loop label iteration scheme loop sequential statements end loop Ci sono tre tipi di iteration scheme Il primo l iteratore for il quale si espri me nella forma for lt ident gt in lt range gt ad esempio for number in 0 to N loop il corpo del loop sar eseguito N 1 volte con la variabile di
91. e template ben precisi e con sensitivity list in figura 2 4 PROCESS segnale 1 segnale n dichiarazioni BEGIN process body END PROCESS Figura 2 4 Processo con sensitivity list e con istruzioni di tipo WAIT in figura 2 5 PROCESS dichiarazioni BEGIN WAIT END PROCESS Figura 2 5 Processo con istruzioni di WAIT Non lecito usare una sensitivity list assieme ad una istruzione WAIT nel medesimo processo quindi i due templates sono alternativi La differenza fra i due template nell attivazione e nella sospensione 32 Il VADL e nel caso di sensitivity list il processo viene attivato da un evento su un segnale che appartiene alla sensitivity list e sospeso quando raggiunge la fine del processo stesso e nel caso di uso di istruzioni WAIT quando il flusso di esecuzione in contra un WAIT il processo viene sospeso e la sua esecuzione ripresa quando la condizione richiesta dall istruzione WAIT verificata L istruzione wait strettamente sequenziale e quindi pu comparire solo internamente ad un process body I possibili tipi di uno statement WAIT sono e wait for waiting_time sospende il processo finch la condizione logica sulla durata temporale impostata non soddisfatta Il processo sar di fatto risvegliato dopo waiting_time unit di tempo e wait on waiting_sensitivity_list sospende il processo fintanto ch non si verifica un evento su uno dei segnali prese
92. e un altro modo di vedere le cose e Davide Grazie di cuore ragazzi Voglio salutare e ringraziare inoltre Luigi Antonio Andrea e Valentina per ch con la loro amicizia il loro affetto e i loro consigli mi sono stati sempre vicini sia nei momenti difficili sia quando c era da sfanzare Grazie a tutti Stefano Sturi Suraci
93. ector 7 downto 0 rappresentante la concatenazione dei due bus ad esempio della parte alta e della parte bassa di un dato ad 8 bit possibile scrivere e simulare senza alcun problema la seguente istruzione D lt DO D1 nella quale al segnale D sono assegnati i valori dell array DO nel range 7 4 rispettivamente 3 gt 7 2 gt 6 1 gt 5 0 gt 4 ei valori dell array DI nel range 3 0 rispettivamente 3 gt 3 2 gt 2 1 gt 1 0 gt 0 Gli elementi di un array possono essere acceduti staticamente ad esempio con un istruzione tipo a 0 lt 1 o dinamicamente l array acceduto dal valore attuale del suo indice ad esempio con un segnale anzich un intero Ad esempio Signal item natural range 0 to 3 alitem lt 0 I soli operatori disponibili nel tipo array sono gli operatori di comparazione lt lt gt gt e di concatenazione amp L operatore d uguaglianza verifica l uguaglianza di ogni singolo elemento dei due array il confronto avviene elemento per elemento iniziando sempre da sinistra a destra Gli operatori di ordinamento forniscono un ordinamento di array di lunghezze differenti 3 5 1 Aggregazioni 95 La concatenazione permette di concatenare array differenti a formare un ar ray pi lungo avviene prendendo gli elementi del primo operando nell ordine da sinistra a destra e quindi appendendo a questi gli elementi del secondo
94. eggio free flow ossia con l ingresso Enable fisso a 1 la cui uscita collegata ad un registro a 3 bit U2 che ne congela il valore se opportunamente comandato dall unit di controllo pressione del pulsante Roll L unita U3 multiplexer a 4 canali che consente di selezionare quale sia il secondo ingresso ad alimentare il sommatore U15 il pilotaggio operato dall unit di controllo Il sommatore U15 ha la funzione di sommare al pun teggio temporaneo attuale o il nuovo valore ottenuto dal campionamento del dado o il precedente valore depositato per aggiornarlo in caso di pressione del pulsante Hold a seconda dei dati inviati attraverso il multiplexer La modellazione di tale unit fatta con una coppia entit architettura in un 6 4 1 Data path amp Control Unit 169 The Design Verification Company Controller Pig Game 1 1 21 05 2009 2260 Corporate Circle Henderson NV 89074 C ALDEC Inc Created Title Page Comparator Do _P0_U 6 0 D_PO_D 6 0 Cofe_to seg Do_P1_U 6 0 D_P1_D 6 0 B1 2 0 IDO _S_U 6 0 Cope_to l seg Cofe_to f seg DO _S_D 6 0 Code_to_dice U12 u1 3 3 cs Figura 6 18 RSS per il controllo del gioco 170 Casi di studio file VHDL separato Il comparatore U11 serve a verificare che il punteggio attuale componente incamerata e componente temporanea ottenuto da uno dei due giocatori s
95. ell architettura del testbench o potrebebro assegnare i valori tra mite formule utilizzo di after e wait for Si parler pi dettagliatamente dei testbench e dei loro pattern costruttivi nel capitolo loro dedicato cap 5 Capitolo 5 I testbench Un testbench uno strumento utilizzato per simulare e verificare la corret tezza di un modello hardware La potenza espressiva del linguaggio VHDL permette al progettista di scrivere il testbench nello stesso linguaggio con cui ha modellato il componente da simulare In definitiva un testbench ha tre compiti fondamentali 1 generare gli stimoli per la simulazione forme d onda 2 applicare gli stimoli all entit sotto test e raccoglierne gli output 3 confrontare gli output prodotti con i valori attesi Il modo migliore di operare una simulazione creare un modello esterno quindi dotato di una propria coppia entit architettura che istanzi al suo interno l entit da simulare Questo giustificato per valutare il comporta mento dell entit dall esterno senza alterarne il contenuto con istruzioni di debug o non proprie della stessa allo stesso modo logico istanziare il livello pi alto di un circuito con molti componenti al suo interno proprio come se si avesse fisicamente sottomano una scheda e si collegassero le sonde dell o scilloscopio ai suoi terminali La struttura tipica di un testbench la seguente entity test_bench is end 120
96. er A VHDL primer terza edizione Prentice Hall Modern semiconductor design series 2 A Rushton VHDL for logic synthesis An introdution guide for achieving design requirements McGraw Hill 3 M Zwolinski VHDL progetto di sistemi digitali Pearson Education Italia 4 E Faldella materiale del corso di Sistemi Digitali DEIS Universit di Bologna 5 S Mattoccia Introduzione al linguaggio VDHL DEIS Universit di Bologna 6 C Brandolese Introduzione al linguaggio VHDL Politecnico di Milano 7 J Swift VHDL Simulation Coding and Modeling Style Guide da www emba uvm edu jswift uvm_class labs vcs simcg simcg_2 8 L Merola Guida al VHDL da http www webalice it luigimerola file archi vdhl pdf 9 P J Ashenden VHDL cookbook 10 C Gouldstone slide sulla gestione di segnali asincroni macchine di Mealy e Moore 11 P Chodowiec Finite State Machines and their Testing George Mason University pdf 192 Bibliografia 12 M Williamson E Lee Specification and modelling of reactive real time systems UC Berkley dept of EECS 13 Behavioural Simulation Training Lab tutorial sull ambiente IDE a cura del produttore Aldec Inc 14 Active HDL training slide di introduzione all ambiente IDE a cura del produttore Aldec Inc Rigraziamenti In poche righe difficile ricordare tutti coloro che in questi anni mi sono stati vicini ma ci voglio provare
97. esempio pu essere quello di una coppia encoder decoder il testbench ge 5 1 Generazione di forme d onda 123 Figura 5 4 Verifica automatica con Golden Model nera gli ingressi e li applica all encoder cui in cascata applicato il decoder quindi confronta gli ingressi originari opportumanente ritardati con l u scita della rete in testing fig 5 5 P process Figura 5 5 Verifica intrinseca 1 Generazione di forme d onda Per generare uno stimolo sui segnali di ingresso al DUT necessario definire le forme d onda su tali segnali ed applicare lo stimolo ad intervalli di tempo discreti Una soluzione pu essere inserire manualmente la configurazione vo luta nel simulatore attraverso l editor grafico messo a disposizione dall IDE vedi cap 4 sez 2 1 questa operazione per abbastanza inefficiente se si hanno molti segnali e scarsamente portabile soprattutto se si deve lavorare 124 I testbench su ambienti di sviluppo differenti Una soluzione senza dubbio migliore quella di utilizzare un processo all interno dell architettura del testbench che generi gli stimoli sui segnali tramite istruzioni di assegnamento o statiche o generate da una lettura da file Se ne dar ora una visione pi approfondita 1 1 Assegnamenti statici Le istruzioni di assegnamento statico sono quelle istruzioni in cui il valore del segnale fisso impostato dal programmatore assieme alle te
98. forma prevede l utilizzo di un costrutto assert che verifichi l arrivo ad un certo istante temporale o la variazione di uno specifico segnale ad esempio la commutazione ad 1 del segnale End Ad esempio assert NOW lt 1000ns report Simulation completed successfully severity error Un altro modo interrompere il processo di generazione del clock con una condizione del tipo vincolata al raggiungimento di un particolare istante temporale o ad una condizione sul valore di un segnale if NOW gt 1000ns then wait end if 1 2 Assegnamenti dinamici Utilizzando il package textio presente nella libreria STD possibile ope rare su file ossia accedere in lettura o scrittura a file presenti sul filesystem Ovviamente rispetto a linguaggi di pi alto livello le possibilit di gestione 126 I testbench sono molto limitate il file da caricare codificato staticamente all interno del codice e non sono disponibili metodi di supporto per fare altre operazioni sul filesystem ad esempio la cancellazione di un file ecc anche perch le stesse non rientrano nell ottica di principio del VHDL stesso Il linguaggio VHDL definisce il tipo file solo come strumento di supporto per la memorizzazione e lo scambio di dati infatti un file non ha un corrispettivo fisico e le sue istruzioni non sono sintetizzabili Un file gestito come un insieme di righe il package definisce quindi due fun zioni sia
99. g Chiaramente questa unit fittizia non modella realmente un componente fisi co non si deve dimenticare infatti che il VHDL descrive e modella componenti fisici ad esempio un integrato che piloti un display ma non il display stes so Infatti i led sono simulati utilizzando impropriamente i probe ossia gli strumenti di debugging che permettono di visualizzare con un valore grafico lo stato di un segnale associato ad un componente o ad una connessione 6 3 Sudoku Controller 155 3 Sudoku Controller Il terzo caso di studio prevede la modellazione e la simulazione di un control ler da installare su un dispositivo portatile che riproduca il gioco del Sudoku Il gioco consiste nel riempire una matrice di 9x9 celle o meglio nel comple tarne il riempimento essendo gia predefinito il contenuto di un certo numero di esse in base all annesso livello di difficolt in modo tale che nelle 9 celle di ciascuna riga R i 1 2 9 di ciascuna colonna C j 1 2 9 e di ciascuna sottomatrice Sx k 1 2 9 siano presenti tutte e quindi ognuna una sola volta le nove cifre decimali 1 2 9 Nelle versioni portatili disponibili in commercio la console del Sudoku Ga me comprende oltre al display della matrice di celle alcuni tasti funzionali per mezzo dei quali il giocatore pu avviare un nuovo gioco selezionandone il livello di difficolt definire il valore numerico da associare ad ogni cella della
100. gnale ad essere ritardato Istruzioni aggiuntive per modellare i ritardi Modellare un ritardo nella propagazione di un segnale un operazione rela tivamente semplice in VHDL Sono per presenti pi istruzioni che rendono possibile ci ciascuna delle quali presenta della sfumature nel suo comporta mento Se ne dar una visione pi approfondita anche nella sez relativa ai driver associati ai segnali e inertial delay espresso con l assegnamento signal object lt value after X ns 2 3 1 VHDL sequenziale i processi 35 questo ritardo impone l aggiornamento del segnale dopo X ns espressi in modo assoluto ossia rispetto all istante zero della simulazione dalla sua valutazione al tempo stesso filtra variazioni del segnale in ingresso che abbiano durata minore di X ns Il problema che si manifesta che il ritardo inerziale modella il componente fisico come se avesse una sua inerzia e una capacit di filtrare i glitch mentre il modello proposto dalla istruzione after del VHDL assume che il ritardo di propagazione e il ritardo inerziale siano la stessa cosa e transport delay espresso con l assegnamento signal object lt transport value after X ns ha comportamento simile al caso precedente ma non filtra i glitch di durata minore al ritardo e reject inertial espresso con l assegnamento signal object lt reject Y ns inertial value after X ns in questo caso il segnale ritardato di
101. gnale e lavorare su quest ultima In realt possibile risolvere l empasse utilizzando l istruzione watt for 0 Usare il costrutto wait for 0 ns significa attendere un delta cycle Si con sideri il seguente esempio process begin wait on DATA A lt DATA wait for 0 ns B lt A end process Se il segnale DATA varia all istante 10 ns A schedulato per assumere il nuovo valore all istante 10 1 delta Il wait for 0 ns causa la sospensione del processo per un delta quindi il tempo di simulazione sar fatto proseguire all istante 10 1 delta ed il processo sar risvegliato Chiaramente il segnale A assumer ora il nuovo valore Il segnale B viceversa assumer il nuovo valore all istante 10 2 delta Se non fosse stata presente l istruzione wait for 0 ns entrambe le istruzioni di assegnamento sarebbero state eseguite sequenzialmente all istante temporale 10 ns e gli aggiornamenti dei valori sarebbero stati schedulati entrambi per l istante 10 1 delta Ma a quel punto i valori cui si sarebbe fatto riferimento sono i vecchi valori assunti dai segnali all istante 10 ns Il tutto chiarificato dalle figure 2 7 e 2 8 Figura 2 7 Forme d onda per i segnali in esempio 2 3 1 VHDL sequenziale i processi 39 Time Delta DATA VA TE 0 000 10 000 ns 10 000 ng 10 000 ns A he Figura 2 8 Rappresentazione a lista per i segnali in esempio Feedback volontari e involontari L
102. gresso e uscita da collegare ai pulsanti ed ai led previsti dalle specifiche Si noti infine la presenza del simbolo Ck in alto a sinistra vicino ad un cerchietto giallo tale simbolo grafico permette di definire un segnale come se fosse idealmente collegato ad ogni ingresso Ck presente sul componente In altre parole anzich collegare ogni componen te che utilizzi il segnale di clock con una connessione al relativo terminale 6 4 2 Unit di controllo 171 possibile definire graficamente il segnale come Global Wire affinch sia il compilatore in fase di generazione del codice ad interpretarlo come collegato ad ogni componente con un piedino che lo richiami Ci pu essere ovvia mente fatto per ogni tipologia di segnale semplifica nettamente la leggibilit del circuito 4 2 Unita di controllo L unit di controllo stata modellata con una macchina a stati finiti inserita nel progetto per mezzo dell editor grafico di modellazione A tal proposito si sono definiti dapprima i segnali di ingresso e di uscita alla rete quindi si proceduto con il tracciamento degli stati e delle transizioni tra essi fig 6 19 La macchina a stati finiti che definisce il comportamento della rete model lata secondo Mealy ovviamente le condizioni sulle transizioni e le uscite sono codificate secondo la sintassi propria del linguaggio Poich l uso della stessa arricchisce lo schema e ne satura lo spazio diminuendo la leggibilit
103. hort is range 128 to 127 type backward is range 127 downto 128 I valori pi a sinistra e pi a destra di un tipo possono essere determinati utilizzando rispettivamente gli attributi left e right 3 6 1 Attributi integer ed enumeration 99 state left gt main_green state right gt farm_yellow short left gt 128 short right gt 127 backward left gt 127 backward right gt 128 E anche possibile trovare il valore pi basso e quello pi alto di un tipo usando rispettivamente gli attributi low e high Come si pu vedere c una sostanziale differenza rispetto agli attributi left e right questa evidenziata sul tipo backward il valore all estremo sinistro destro non necessariamente il pi piccolo grande del range state low gt main_green state high gt farm_yellow short low gt 128 short high gt 127 backward low gt 128 backward high gt 127 In altre parole l attributo low equivale all attributo left per range ascenden ti mentre equivale all attributo right per i range discendenti Gli attributi pos e val convertono un valore enumerativo in un valore nu merico e viceversa Questi attributi accettano un solo argomento che il valore da convertire sia esso una costante o un segnale in quest ultimo caso si comportano come vere e proprie funzioni di conversione tra i tipi interi ed enumerativi state pos main_green gt 0 state
104. i comversione 130 133 E ao E E 133 1 1 Unit di temporizzazione 134 L2 Unit di controllo se Gg oe ek oe aa 135 Dee eee te ee eee ee eee 135 1 4 Unit di elaborazionel 138 1 5 Unit di uscita e ooa a 140 1 6 Testbench i s woe s oroma a SA BOR SE BE eS 141 2 Game Controller gt cos AA ae oe eS 142 2 1 Unit di rilevazione d errorel 143 TETTE RO 145 24 Unit di conteggio dei passi 146 2 4 Ufiladitranscodifical 4 sima ss aaa le os 147 2 5 Testbench e si aoa a a 149 2 6 Visualizzazione grafica 153 3 Sudoku Controller Li e ee ee 155 ARA PCI CETTE e 155 3 2 Unit di elaborazionel 157 3 3 Unit di memoria essere a 160 3 4 TestbenchAl 0 00000 00088 163 8 Indice e ae AA ce n di 166 4 1 Data path amp Control Unit 2 2 ee 168 ett Re amp gee ok oe Se eGR HD 171 4 3 Dest bench sos rendo Red De dea 171 PARISE SI Lei 173 sughi a 175 SLA RR 176 5 2 Rete da verificare 2 ee 177 5 3 Golden Medel oa aa ha feta 179 Ed ihe A E So a A A 181 5 5 RAT e s eor ves Sa eoa We E amp 20 ke eh ere ii 182 187 Bibliografia 191 Capitolo 1 Introduzione 1 Modellazione circuitale Affinch i prodotti elettronici possano stare al passo con cambiamenti cos rapidi quali quelli imposti dal mercato attuale indispensabile che siano progettati
105. i tipi di dato la semantica imposta dal processo stesso In particolare si impegna a fornire valori che evitino corse critiche con il segna le di clock e che siano accettabili ad esempio che il tempo di permanenza del segnale su un certo valore sia maggiore del tempo di campionamento del circuito Una semantica alternativa potrebbe essere quella di definire la colonna pi a destra come il numero di unit di tempo per cui il segnale deve assumere il corrispondente valore Questa soluzione anche essa descritta in maggior dettaglio nel cap 6 sez ha il vantaggio di scaricare il progettista dalle responsabilit sulle corse critiche e sui tempi di hold ma rende pi difficoltoso modellare segnali con variazioni non regolari Un altro aspetto vantaggioso di questa soluzione la possibilit di variare la frequenza o il duty cycle del clock senza dover modificare la temporizzazione dei segnali che risultano cos conformanti 2 2 Altre utili funzioni di conversione Nella scrittura di un testbench pu capitare di dover fare conversioni ai valo ri dei segnali ad esempio per definire istanti temporali quindi tipo di dato time a partire da valori interi oppure per poter stampare valori numerici Se si vuole convertire un integer in un tipo time il modo pi semplice per farlo moltiplicare l intero con l unit di tempo richiesta Ad esempio si consideri il seguente codice variable data integer variable timer tim
106. i turno Player e tre pulsanti Roll Hold NewGame tramite i quali il Player pu ri spettivamente richiedere il lancio del dado notificare la propria deci sione di passare la mano ritenendosi soddisfatto del punteggio parziale accumulato nel turno corrente avviare un nuovo incontro in caso di vincita 6 4 Pig Game 167 Figura 6 17 Consolle del Pig Game e un display a matrice di punti Dice preposto alla visualizzazione del punteggio conseguito dal Player a seguito del lancio del dado e un display numerico a 7 segmenti Subtotal preposto alla visualiz zazione del punteggio parziale correntemente accumulato dal Player nell ambito del turno e un led Win tramite il quale viene segnalata al Player una volta raggiunto un punteggio complessivo gt 100 la vincita dell incontro Sia all accensione che a seguito della pressione del pulsante NewGame al ter mine di un incontro il sistema dopo aver selezionato quale primo player il giocatore successivo a quello che ha vinto l incontro precedente all accen sione la scelta operata in maniera casuale procede ad azzerare tutti i totalizzatori dei punteggi ed a spegnere i dispositivi di visualizzazione Win e Dice Prontamente quindi o al rilascio del pulsante NewGame in caso di avvio di un nuovo incontro il sistema si pone in attesa della richiesta da parte del player di operare il lancio del dado A seguito della pressione del pulsante 168
107. ia lt 100 comunicandolo all unit di controllo mediante il segnale L Il secon do termine di confronto non riportato graficamente ma stato modellato nel codice dell architettura in fase di istanziazione del componente esso la codifica binaria del valore 100 Le unit U8 U9 e U10 sono dei registri pilotati dall unit di controllo con il compito di memorizzare i valori attuali rispettivamente del punteggio tem poraneo ottenuto dal giocatore 2 lett Playerl e ottenuto dal giocatore 1 lett Player0 L unita U5 ha il compito di identificare e segnalare all unit di controllo per mezzo del segnale D l ottenimento del valore 1 dal campionamento del dado Il flip flop T U7 ha il compito di selezionare di volta in volta quale sia il player corrente e di abilitrae quindi il campionamento sui relativi registri di memorizzazione del risultato Nel progetto sono state modellate anche opportune unit di transcodifica per fornire all utente una rappresentazione dei valori dei punteggi pi familiare rispetto al codice binario L unita U4 si occupa di convertire i 3 bit in in gresso valore campionato del dado in una rappresentazione composta da sei led disposti a riprodurre la faccia di un dado da gioco Le unit U12 U13 ed U14 permettono la rappresentazione dei relativi punteggi su display a 7 segmenti nel formato cifra decine cifra unit in notazione decimale Sono inoltre presenti i terminali di in
108. ie dei linguaggi sequenziali e concorrenti ma anche di quelli che producono net list ad esempio i lin 1 3 Cenni storici 11 guaggi CAD fornendo la possibilit di definire specifiche temporali timing specifications e di generare forme d onda waveform Per questo il linguag gio ha costrutti che consentono di esprimere il comportamento sequenziale o concorrente di un componente considerando o meno la risposta dello stesso alle varie temporizzazioni e permette di realizzare interconnessioni di com ponenti Tutte queste caratteristiche possono essere combinate per fornire una descrizione complessiva del sistema in un singolo modello Il linguaggio fortemente tipato ed eredita molte delle sue caratteristiche specialmente nella parte sequenziale dal linguaggio Ada Poich il VADL fornisce un range di possibilit di modellazione molto esteso solitamente difficile da comprendere fortunatamente possibile assimilare rapidamente un set di costrutti chiave che permettano di modellare facilmente la maggior parte delle applicazioni senza dover imparare subito i costrutti pi complessi e avanzati 3 Cenni storici I requisiti del linguaggio sono stati redatti nel 1981 nell ambito del program ma VHSIC In questo programma una discreta quantit di industrie elettro niche americane sono state coinvolte nella progettazione di circuiti VHSIC per il dipartimento della difesa DoD A quel tempo la maggior parte delle so
109. iega zione dettagliata riportata nella sez pag La seconda architettura si differenzia da quella sopra riportata perch al l interno del processo di acquisizione da file presente anche una verifica sui valori prodotti in uscita Il codice che la descrive il seguente si riporta solo il processo read_file process variable buf outbuf line variable J_var std_logic_vector 1 downto 0 variable Xi_var XO_var Y1_var YO_var std_logic begin wait for 5 ns while not endfile input loop readline input buf if buf 1 then 152 Casi di studio next end if read buf J_var read buf Y1_var read buf YO_var read buf X1_var read buf XO_var J lt J_var wait for period if Y1 Y1_var or YO YO_var or X1 X1_var or XO X0_var then write outbuf string Errore all istante write outbuf now write outbuf string gt Valori ottenuti Y1 Y0 X1 X0 write outbuf Y1 write outbuf string write outbuf YO write outbuf string write outbuf X1 write outbuf string write outbuf XO write outbuf string Eiza end if end loop wait end process Come si pu vedere dal file viene letta la configurazione da applicare al se gnale J che modella il joystick ed inoltre sono letti i valori corrispondenti alla posizione del cursore successiva alla mossa impartita Poich la posizio ne viene aggiornata
110. ile ma soprattutto all aumentare dei segnali coinvolti bene seguire sempre 5 2 Pattern per la scrittura di testbench 127 delle regole di riferimento queste sono presentate all interno della sezione corrente Quando si progetta un processo per la generazione del clock importante utilizzare istruzioni di sospensione wait for e non istruzioni di scheduling after per creare il timing Ci dovuto al seguente motivo il ciclo di simulazione ignora le clausole after all interno di istruzioni di assegnamento ai segnali poich il riferimento temporale assoluto quindi sempre riferito all origine ad esempio il seguente codice non corretto junk process begin CLK lt 0 1 after 25 ns errore wait for 50 ns end process La prima esecuzione del loop avviene correttamente perch la variazione del segnale schedulata correttamente a 25 ns ma successivamente all istruzio ne wait for 50 ns il tempo di simulazione si porta a 75 ns si ricordi che il tempo in una istruzione wait for relativo mentre nella after appunto assoluto chiaramente al riavvio del loop l istruzione di assegnazione non pi valida la soluzione corretta mostrata nella sez 1 1 Pu presentarsi la necessit di avere pi clock sincronizzati tra loro ad esem pio generandoli a partire dal clock principale In questo caso bisogna presta re attenzione ai delta cycle introdotti tra il cloc
111. in tempi estremamente ridotti In tale contesto se da una parte la progettazione analogica rimasta una professione estremamente specia lizzata dall altra quella digitale s sempre pi affidata alla progettazione assistita al computer CAD computer aided design detta anche progetta zione elettronica automatica EDA elettronic design automation Gli strumenti automatici devono assistere il progettista in due fasi fonda mentali la sintesi del circuito cio la traduzione di un insieme di specifiche in un implementazione effettiva e la simulazione del circuito attraverso cui possibile verificare il corretto funzionamento del sistema a diversi livelli di astrazione Gli strumenti automatici di sintesi e simulazione richiedono naturalmente che le idee del progettista vengano opportunamente trasferite agli strumenti stessi Uno dei modi possibili noto come schematic capture cattura dello schema consiste nel disegnare uno schema circuitale utilizzando un pac chetto grafico specifico In alternativa il circuito pu essere descritto in forma testuale analogamente a quanto si fa con le istruzioni di un programma soft 10 Introduzione ware Un sistema digitale pu essere rappresentato in questo modo usando un HDL Hardware Description Language linguaggio di descrizione circuitale Ne gli ultimi 30 anni sono stati proposti diversi HDL ma i due pi affermati sono il Verilog ed il VHDL Very high s
112. inch il registro non possa aggiornare il suo stato Tuttavia questa una soluzione che non dovrebbe essere utilizzata principalmente per due motivi Il primo di essi che gli strumenti di testing automatico in fase di sintesi utilizzano tecniche di scanning circuitale che necessitano di poter pilotare tutti i segnali di clock presenti Il secondo motivo che gli algoritmi utilizzati nella sintesi logica per la minimizzazione non garantirebbero il funzionamento glitch free della logica di pilotaggio Data Gating Questa la soluzione pi sicura ed utilizzata per dotare un registro di un segnale di enable Il data gating cos chiamato perch si inserisce sull input dei dati al registro e non sul clock quindi il registro continua ad essere nor malmente alimentato dal clock che non viene mai fermato Il funzionamento avviene fornendo con un ramo in retroazione all ingresso dati del flip flop il valore dell uscita quando il segnale di enable inattivo Il circuito in figura utilizza un multiplexer per rendere possibile tale realizzazione il codice VADL che modella tale circuito il seguente entity Dtype is port d ck en in bit q out bit end architecture behaviour of Dtype is begin process begin wait on ck until ck 1 if en 1 then 56 Il VADL q lt d end if end process end TO q En gt CD Figura 2 14 Flip flop D con data gating Nell
113. interno del processo fosse presente un altra assegnazione sul segna le Reset poich un segnale in un processo ha un solo driver le transizioni generate dalla seconda assegnazione modificano quelle gi presenti sul driver In precedenza nella sez 3 1 si era fatto un accenno alle varie forme di ritardo nell assegnazione ad un segnale ora se ne dar una visione pi approfondita nel loro comportamento sui driver dei segnali Effetti di un Transport Delay sui driver Si consideri il seguente processo con tre assegnazioni sullo stesso segnale tutte modellate con un ritardo transport signal data natural process begin data lt transport ii after 10 ns data lt transport 20 after 22 ns data lt transport 35 after 18 ns end process Si assuma che gli assegnamenti siano effettuati al tempo T infatti essendo all interno sono valutati sequenzialmente in un tempo nullo Le transizioni sul driver del segnale data sono create come segue quando la prima assegna zione valutata la transizione 11 T 10 ns aggiunta al driver Valutata la seconda assegnazione la transizione 20 T 22 ns appesa alla coda perch il ritardo di questa transizione 22 ns pi grande del ritardo della prima la seconda avverr comunque dopo la prima 2 3 6 Driver 61 A questo punto il driver del segnale data apparir cos data lt curr now 11 T 10ns 20 T 22ns Infine eseguita la terza as
114. isce l ingresso di selezione di un decoder connesso a valle alla RC1 che attiva cos solamente una delle sue uscite Le uscite del decoder sono negate e collegate agli ingressi dati di un multiplexer i cui ingressi di selezione sono la configurazione attuale fornita dal joystick Se il joystick ha fornito la stessa configurazione prevista dalla rete RC1 l uscita del multiplexer sar uno 0 mossa corretta viceversa sar un 1 mossa erronea La rete risultante mostrata in fig 6 7 DEG 24 PT Jo Figura 6 7 Rete interna all unita di rilevazione d errore Per definire il funzionamento interno di RC1 si proceduto creando la map pa di Karnaugh per la funzione combinatoria da realizzare quindi si sono sintetizzate manualmente le equazioni logiche JO DB DC DBA DCBA Jl DBA DBA DCB DCB L architettura stata quindi definita manualmente con l uso di uno stile da taflow ossia mediante luso di istruzioni di assegnazione concorrenziali Il multiplexer e il decoder sono stati modellati utilizzando i relativi pattern suggeriti dal Code Assistant proprio dell IDE consistente in un repository contenente il codice per modellare i dispositivi pi comuni 6 2 2 Unit di conteggio degli errori 145 2 2 Unita di conteggio degli errori L unit di conteggio degli errori ha il compito di elaborare i segnali Start ed Error in modo da indicare all unit di conteggio a val
115. isposti in cascata La modellazione degli stessi come oggetti generici e l istanziazione realizzata allo stesso modo di quanto esaminato negli esempi precedenti Pi precisamente le variabili di stato di C2 Q4 a1s5 Q3 Q2 Q1 QO spy identificano il sottoinsieme di celle il 1 ovvero R1 allorch Q4 Q3 Q2 Q1 QO 00000 il 27 ovvero 59 allorch Q4 Q3 Q2 Q1 QO 11010 men tre quelle di C1 QDiarsz QC QB QA sp la specifica cella la la allorch QD QC QB QA 0000 la 9a allorch QD QC QB QA 1000 158 Casi di studio Sa Ext Lal l eni Aatilecian LIC i br tal mc Bc Biv I hvi esa E e a ky wer fel a iP Risa HF Pi Figi am iF Ver Pod as See AA ir O n ae a E ST are AL ae premi lt iF Damar a be iai Re as t Figura 6 14 FSM relativa all unit di controllo Di fatto alla unit di elaborazione arrivano in ingresso uno dopo l altro i 9 valori presenti nella singola cella e la rete al suo interno deve verificare che questi siano tutti diversi tra loro L implementazione stata realizzata con uno stile strutturale per mezzo dell editor grafico Il risultato della modella zione in fig 6 3 2 Unit di elaborazione 159 Figura 6 15 Schema a blocchi dell unit di elaborazione Come si pu vedere presente un decoder 4 to 10 pilotato dai segnali D 3 0 ad ogni passo della verifica
116. k principale e quelli derivati Questi delta potrebbero causare comportamenti indesiderati se all interno del circuito sono utilizzati sia il clock principale che quelli secondari E possibile prevenire il problema con il seguente tipo di codice divider process begin clk50 lt 0 clk100 lt 0 clk200 lt 0 loop forever 128 I testbench for j in 1 to 2 loop for k in 1 to 2 loop wait on clk c1k200 lt not cl1k200 end loop clk100 lt not clk100 end loop clk50 lt not clk50 end loop end process divider Si noti che essendo all interno di un unico processo i clock derivati clk50 clk100 e clk200 hanno la stessa frequenza del clock principale clk ma so no ritardati rispetto al principale di un delta cycle questo perfettamente normale per quanto visto in cap 2 sez 3 1 Ad ogni modo i clock deri vati sono aggiornati contemporaneamente e devono essere gli unici ad essere utilizzati nel circuito in altre parole il clock principale deve essere utilizzato solo per la generazione dei derivati eventualmente un suo derivato pu essere in rapporto 1 1 con il principale Nella scrittura di un testbench importante prevedere un processo che si occupi della generazione del segnale di reset questo ha la caratteristica di far partire il sistema da una configurazione nota e stabile Un processo del genere equivalente alla generazione di un segnale asincrono come
117. k successivo come si pu vedere in fig 6 26 Il Comparatore definito dal seguente codice architecture behaviour of Comparatore is begin check process Ck begin if Ck 1 and Ck event then if Ud Um then Ok lt 1 else Ok lt 0 82 Casi di studio o E amp 3 8 3 g CIR LL JA Figura 6 26 Andamento dei segnali nel caso di uscite difformi end if end if end process end behaviour 5 5 Testbench Come spiegato precedentemente nel cap 5 il testbench ha il compito di per mettere la simulazione e l analisi del verificatore realizzato Nella scrittura del testbench si fatto riferimento alle regole presenti nel cap 5 sez 2 in tal senso si diviso lo sviluppo in processi differenti a seconda della funzione da realizzare Generazione del clock La generazione del clock avviene mediante un processo dedicato realizzato con il seguente codice clk_p process begin Ck lt 0 wait for period 2 6 5 5 Testbench 183 Ck lt 1 wait for period 2 if Sim_end 1 then wait end if end process per rendere il codice pi riutilizzabile possibile si utilizzata una costante period di tipo time pari a 10 ns periodo totale del clock inoltre il processo di generazione del clock si interrompe quando il segnale Sim_end assume valore 1 attraverso l istruzione di wait indefinita Acquisizione degli ing
118. l tutto inutile estendere l indagine ai successivi sottoin siemi L ordine secondo cui procedere nella scansione dei sottoinsiemi R1 R2 R9 C1 C2 C9 S1 S2 S9 mentre quello delle celle nell ambito di un sottoinsieme evidenziato in fig L unit stata modellata in VHDL attraverso una macchina a stati finita disegnata facendo uso dell editor grafico presente nell IDE A tal proposito si sono definiti dapprima i segnali di ingresso e di uscita alla rete quindi si proceduto con il tracciamento degli stati e delle transizioni tra essi fig 6 14 La macchina a stati finiti che definisce il comportamento della rete model lata secondo Mealy ovviamente le condizioni sulle transizioni e le uscite sono 6 3 2 Unit di elaborazione 157 Ri i ti i tl tc i Bd ii 1 Figura 6 13 Il processo di verifica codificate secondo la sintassi propria del linguaggio 3 2 Unit di elaborazione Il compito di evidenziare una volta completata la scansione delle 9 celle di un sottoinsieme se esse contengano valori numerici distinti affidato all unit di elaborazione UE segnale di uscita ZE 1 Il ruolo di discriminare quale sia in ogni intervallo di clock il particolare sottoinsieme oggetto di indagi ne e nell ambito di esso la specifica cella affidato ai due contatori binari C1 base di conteggio 9 e C2 base di conteggio 27 dotati di segnale di reset sincrono ed opportunamente d
119. la memoria M1 emette un valore que sto seleziona la corrispondente uscita del decoder che viene settata ad 1 ci significa che quel valore presente almeno una volta nella cella attualmente in corso di verifica Ciascuna uscita del decoder memorizzata da una RSS L unit emetter il segnale di uscita ZE 1 se tutte le RSS hanno memo rizzato il valore 1 nell ambito dei 9 passi ci significa che tutti i numeri si sono presentati almeno una volta nella cella quindi si sono presentati una e una sola volta Viceversa se nella cella fossero presenti due numeri uguali dopo i 9 passi di conteggio una delle RSS avrebbe la sua uscita non settata Il controllo che tutte le RSS siano settate ad 1 effettuato con una serie di AND a cascata sul lato destro della figura 6 15 Chiaramente il valore del segnale ZE sar significativo solo al termine del conteggio di 9 passi eseguito dal contatore C1 sar compito dell unita di 160 Casi di studio controllo considerare il valore di questo segnale quando significativo La RSS stata modellata come simbolo in quanto istanziata pi volte al l interno dell architettura dell unit di elaborazione ed costituita dalla rete in stile strutturale modellata in fig 6 16 Figura 6 16 RSS per la memorizzazione dei singoli elementi individuati I componenti utilizzati all interno sono predefiniti dal linguaggio porta XOR e porta AND o modellati FF D utilizzando
120. la porta N connes sa alla porta CARRY dell HALF_ADDER La rappresentazione strutturale del componente non dice nulla del suo ef fettivo funzionamento infatti necessario descrivere anche i componenti XOR2 e AND2 ciascuno dei quali deve avere la propria entit e la propria architettura Stile di modellazione dataflow In questo stile di modellazione il flusso di dati attraverso l entit espresso principalmente attraverso assegnamenti concorrenti di segnali La struttura dell entit non esplicitamente specificata in questo stile di modellazione 2 2 2 Architecture body 27 ma pu essere dedotta implicitamente Si consideri la seguente architettura alternativa per l entit HALF_ADDER introdotta precedentemente architecture HA_CONCURRENT of HALF_ADDER is begin SUM lt A xor B after 8 ns CARRY lt A and B after 4 ns end Si pu vedere che in questo caso il modello dataflow utilizza due assegna zioni concorrenti il simbolo lt indica che si sta effettuando l assegnazione di un valore ad un segnale si veda anche 3 3 Il valore dell espressione sul lato destro dell istruzione calcolato ed assegnato al segnale presente sul lato sinistro dell istruzione stessa tale segnale detto anche target signal Un assegnazione concorrente ad un segnale eseguita solamente quando si verifica un evento su uno qualsiasi dei segnali presenti sul lato destro dell i struzione stess
121. la variabile Al termine della simulazione la variabile conterr il numero totale di eventi occorsi sul segnale A 34 Il VHDL Shared variable Una variabile dichiarata all esterno di un processo o di un sottoprogramma si definisce shared variable variabile condivisa Una variabile condivisa pu essere letta e aggiornata da pi di un processo Tuttavia l interpretazione delle variabili condivise non fornita direttamente dal linguaggio pertanto non dovrebbero essere utilizzate Segnali I segnali sono valori assegnati tramite un istruzione di assegnamento La for ma pi semplice per assegnare un valore ad un segnale signal object lt expression after delay value Uwistruzione di assegnazione ad un segnale pu apparire sia all interno che all esterno di un processo Se presente all esterno di un processo deve esse re considerata concorrente viceversa sar strettamente sequenziale e quindi sar eseguita in sequenza rispetto all ordine con cui le istruzioni appaiono nel processo stesso Quando un istruzione di assegnazione di un segnale eseguita il valore del l espressione calcolato e schedulato per essere assegnato al segnale dopo uno specificato ritardo importante notare che l espressione valutata al tempo in cui l istruzione raggiunta ossia al tempo di simulazione corren te non dopo il ritardo specificato sar l effettivo aggiornamento del valore del se
122. le tramite i comandi Reset R ed Enable E se l oggetto deve 1 restare nella cella 0 in attesa dell evento Start 1 2 ritornare nella cella 0 in caso di spostamento selezionato errato 3 avanzare di un passo lungo il percorso in caso di spostamento selezio nato corretto Nel caso specifico sono state realizzate due architetture per l unit seguendo il processo di sviluppo si dapprima realizzata la macchina a stati finita che ne descrivesse il comportamento modellandola per mezzo dell editor grafico fornito dall IDE di sviluppo Per evitare incomprensioni il segnale in input Error proveniente dall unit a monte stato rinominato in Ze fig 6 8 Start 0 and Ze o Slat Pend Ze i Figura 6 8 FSM per l unit di conteggio degli errori 146 Casi di studio Quindi se ne sviluppata manualmente la corrispondente versione struttu rale modellandola con l ambiente grafico fig 6 9 Zero Figura 6 9 Architettura strutturale per l unit di conteggio degli errori Nello schema presente un contatore e la rete combinatoria che ne fornisce i comandi in accordo al modello Data Path amp Control Unit presente inoltre anche una rete combinatoria in grado di rilevare l uscita 00 del contatore 2 bit che identifica lo stato iniziale La rete combinatoria RC2 modellata con lo stile dataflow contiene le seguen ti assegnazioni concorrenziali R Ze
123. le del segnale nell istante di simulazione corrente e Stimulator questa colonna mostra il tipo di stimolatore associato a quel segnale si discuter in seguito con maggior dettaglio Il pannello Waveform mostra le forme d onda tracciate per i segnali durante la simulazione Il pannello comprende i seguenti elementi e Time Scale la scala temporale un righello rappresentante l unit di tempo impostata e i bookmark impostati dall utente e Timing cursor il cursore consente di testare i valori dei segnali lun go l asse temporale I valori assunti dai segnali nell istante temporale marcato dal cursore sono visualizzati accanto ai nomi dei segnali stessi La List Viewer mostra i valori dei segnali nel tempo rappresentandoli all in terno di una tabella di verit Questa visualizzazione collegata alla prece dente particolarmente utile per il progettista perch consente di esplicitare il valore dei segnali in corrispondenza dei vari delta cycle di ciascun istante di simulazione I delta cycle riportati sono solo quelli collegati a segnali presen ti nella coppia entit architettura che si sta attualmente simulando I delta cycle possono essere omessi o meglio non visualizzati abilitando l opzione collapse delta cycle fig 4 4 L IDE di sviluppo molto completo e offre al progettista anche altre solu zioni per visualizzare l andamento dei segnali nel tempo Se ad esempio stata realizzata una
124. librerie implementate da societ differenti e Supporta la modellazione di macchine sincrone e asincrone possono es sere utilizzate inoltre diverse tecniche di modellazione quali descrizione di macchine a stati finiti ed equazioni Booleane e Il linguaggio pubblico comprensibile sia dalle macchine sai dall uomo e non proprietario e Il linguaggio ha elementi sintattici che rendono semplice la progettazio ne di circuiti su larga scala ad esempio componenti funzioni procedure 14 Introduzione e packages Inoltre non ci sono limitazioni imposte dal linguaggio sulla dimensione del progetto e I ritardi nominali di propagazione dei componenti ma pi in generale i ritardi i tempi di setup e di hold i vincoli di temporizzazione e il rile vamento dei glitch possono essere descritti molto facilmente in questo linguaggio e Un modello pu non solo descrivere le funzionalit di un circuito ma pu anche contenere informazioni sul design stesso ad esempio attributi definiti dall utente quali l area totale occupata o la velocit e I modelli comportamentali che aderiscono a precisi vincoli di sintesi possono essere sintetizzati automaticamente al livello di gate e La possibilit di definire nuovi tipi di dato fornisce il potere di descri vere e simulare una nuova tecnica di progettazione ad alto livello di astrazione senza preoccuparsi dei dettagli implementativi 5 Dalla modellazione alla sintesi Il VH
125. lio le tempistiche di variazione dei segnali PZ process A Ae Z sono segnali variable Vi V2 integer begin Vi A V2 Z lt V1 V2 Z V1 2 end process Se un evento si verifica sul segnale A al tempo T l esecuzione della prima istruzione causa l aggiornamento immediato del valore della variabile V1 quindi il segnale Z viene schedulato per assumere un nuovo valore all istante T 1 delta Quindi eseguita l istruzione 3 con il vecchio valore di Z la ragione di ci che il tempo di simulazione ancora all istante T e non ancora avanzato all istante T 1 delta in questo caso l incremento del tempo di simulazione all istante T 1 delta e quindi l aggiornamento del segnale Z avverr al termine del loop corrente si rammenti che la presenza della sensitivity list ha lo stesso comportamento dell istruzione wait on condition come ultima istruzione del processo Uso di Wait for 0 L istruzione wait come visto in precedenza spesso utilizzata per sospen dere un processo in attesa di una condizione temporale o di un evento su un segnale ma questo non l unico uso che se ne pu fare In certe situazioni 38 Il VADL pu rendersi necessario variare il valore di un segnale ed utilizzarne il nuovo valore all interno del loop corrente del processo questo sembrerebbe impos sibile da realizzarsi a meno di copiare su una variabile d appoggio il valore attuale del se
126. lla unit in realizzazione si ricordi che la unit composta come minimo dalla coppia entity e architecture il tipo di dato std_logic necessario importare la libreria IEEE tramite statement 1 quindi utilizzare il contenuto del package std_logic_1164 in questo caso statement 2 si caricato l intero contenuto del package tramite la keyword all L IDE utilizzato nello svolgimento di questa tesi Active HDL 7 2 Student Edition della Aldec Inc prevede un pratico tool per la gestione delle libre rie collegate al progetto Tramite il Library Manager possibile vedere quali librerie sono attualmente in uso crearne di nuove o attaccare librerie presenti sul file system possibile sganciare o anche eliminare fisicamente dal disco le librerie che non sono pi utili ed esplorare il loro contenuto La finestra del library manager costituita da due pannelli fig 4 1 Il pannello di sinistra mostra la lista delle librerie attualmente attaccate al progetto e i loro parametri 106 Validazione e simulazione Libissp Hanaggi Fie Edt Seach Vers Deap Simulation Liwy Jode Window Help i Block diagram EDIF Yes Gi ILHE Hi FUNCT Block dsgrsm EDIF Yes prive CYPRESS 1 POSTE T Source Code VHDL Vas G Wsu QUICKLOGIC fh FUMCT T Souice Code VHDL Yes G Moo QUICKLOGIC El POSTE T Souce Code WHOL Yes G Ei prt Mira Bi Miro i G D Pi merda Gi Bi Siye GE wen IUH Hi FUNCT Geol FYRPLICITY PA
127. me componente di alto livello Il tutto modellato dal seguente codice architecture tb_1 of controller_tb is component controller is port Ck in std_logic Start in std_logic J in std_logic_vector 1 downto 0 XO out std_logic X1 out std_logic YO out std_logic Y1 out std_logic end component controller signal Clock Start std_logic signal J std_logic_vector 1 downto 0 signal X0 X1 YO Y1 std_logic signal N1 integer constant period time 10 ns 150 Casi di studio for ui controller use entity work controller file input text open read_mode is input_TB_Al txt begin ui controller port map Ck gt Clock Start gt Start J gt J XO gt XO X1 gt X1 YO gt YO Y1 gt Y1 clock_p process begin Clock lt 0 wait for period 2 Clock lt 1 wait for period 2 if now gt 200 ns then wait end if end process start_p process begin Start lt 1 wait for 10 ns Start lt 0 wait end process 6 2 5 Testbench 151 read_file process variable buf line variable J_var std_logic_vector 1 downto 0 begin wait for 5 ns while not endfile input loop readline input buf if buf 1 then next end if read buf J_var J lt J_var wait for 10 ns end loop wait end process end tb_1 Per ulteriori commenti sul processo di lettura da file si rimanda alla sp
128. mostrato nella sez Nella generazione di dati necessario evitare corse critiche tra gli stessi e il clock l applicazione contemporanea di dati e del fronte attivo del clock pu causare risultati inaspettati Per mantenere i dati sincronizzati ed evitare le corse critiche i dati vanno applicati in un momento differente dal fronte attivo ad esempio al fronte inattivo La figura 5 6 riassume le regole sovra citate 5 2 1 Semantiche temporali 129 TES TRENCH DESIGN sparate Pg th Figura 5 6 Processi indipendenti per la generazione dei segnali di simulazione 2 1 Semantiche temporali Quando si leggono i valori da applicare ai segnali di un circuito da simulare ad esempio da un file dati necessario definire una semantica ossia come essi debbano essere applicati run time Si consideri ad esempio il seguente file in cui sono riportati i valori di un segnale e degli istanti temporali val delay 10 10 30 40 50 60 70 80 90 100 110 o Oo oO O HE CO o Oo e in questo caso si deciso che i valori nella colonna pi a destra siano gli istanti di applicazione del nuovo valore del corrispondente segnale chiara mente il segnale manterr immutato il valore fino alla successiva variazione 130 I testbench Con questa soluzione peraltro analizzata pi in dettaglio nel cap 6 sez 5 5 il progettista ha la responsabilit di assegnare dei valori che rispettino oltre la sintassi e
129. mpistiche di variazione Esse solitamente sono inserite all interno di processi e le tempisti che sono modellate tramite istruzioni wait for i processi per la generazione dei segnali di ingresso hanno la forma seguente e segnali aperiodici GEN_X process begin X lt valuel wait for timel ns X lt value2 wait for time2 ns X lt valueN wait end process e segnali periodici GEN_X process begin X lt valuel wait for timel ns X lt value2 wait for time2 ns X lt valueN 5 1 2 Assegnamenti dinamici 125 wait for timeN ns end process La differenza proprio sull ultima istruzione di wait nel caso di segnali ape riodici il processo completati gli assegnamenti viene sospeso indefinitamente viceversa nei segnali periodici non essendoci un wait indefinito il processo al risveglio dall ultima istruzione di wait inizia un nuovo loop Uno schema del genere generalmente utilizzato per la creazione rispettivamente dei segnali di reset e di clock Un problema che si pu manifestare che il simulatore non fornisce la possi bilit di controllare quanto tempo di simulazione trascorso in altre parole se la simulazione stata avviata in Run non vincolato essa proseguir fino al massimo tempo predefinito dall ambiente time high indipendentemente dal la assenza di altri istanti nella event list Esistono un paio di work around per risolvere questo problema una prima
130. n Moore e asincronamente in Mealy Un esempio mostrato nella figura 2 19 e uscita campionata una macchina con l uscita campionata contiene un registro addizionale sull uscita La macchina e il registro finali agiscono 66 Il VADL Only for Mealy machines Figura 2 19 Uscita combinatoria sincronamente sullo stesso fronte di clock L uscita di questa macchina inevitabilmente ritardata di un clock rispetto all equivalente macchina con uscita combinatoria Un esempio mostrato nella figura Figura 2 20 Uscita campionata e uscita n base al clock una macchina a stato finito con uscita legata al clock molto simile alla macchina con uscita campionata In questo caso il valore del registro di stato corrisponde al valore disponibile sul registro d uscita Viceversa nelle macchine con campionamento del l uscita il valore del registro di stato non segue questa regola ed necessario un ciclo di clock ulteriore per ottenere sull uscita il valore dello stato attuale Un esempio mostrato nella figura 2 21 2 4 1 Ambiente di sviluppo FSM in Active HDL 67 Figura 2 21 Uscita in base al clock Stati Dopo aver definito i collegamenti della rete con l esterno si possono inserire gli stati dell automa Uno stato una condizione interna che determina le uscite della macchina Ogni macchina sequenziale ha almeno due stati altri menti sarebbe combinatoria legati tra loro da transizioni
131. n processo questi possono essere dichiarati solo nella definizione dell architettura Variabili Le variabili possono essere dichiarate ed utilizzate solamente all interno di un processo L assegnamento ad una variabile un istruzione della forma value object expression L espressione valutata quando l istruzio ne eseguita e il valore calcolato nell espressione assegnato immediata mente alla variabile stessa quindi nell istante temporale corrente Una cosa importante da notare che le operazioni di assegnamento a variabili non incrementano mai il tempo di simulazione neanche se all interno di loop Le variabili sono create al tempo dell elaborazione e mantengono il loro va lore durante l intera simulazione similmente alle variabili static presenti nel linguaggio C Ci giustificato dal fatto che il processo non termina mai realmente sia esso in esecuzione o sospeso in attesa di un evento Si consideri il seguente esempio process A variable EVENTS_ON_A integer 1 begin EVENTS_ON_A EVENTS_ON_A 1 end process All avvio della simulazione il processo eseguito una prima volta questo per la politica di inizializzazione del simulatore La variabile EVENTS_ON_ A inizializzata a 1 e quindi incrementata di uno Completata la fase di inizializzazione ogni volta che un evento avviene sul segnale A il processo si attiva e viene eseguita l istruzione di incremento del
132. n sono e booleani not and or nand nor xor e di confronto lt lt gt gt Il tipo boolean solitamente utilizzato indirettamente quando eseguito un confronto tra altri due segnali di tipo differente Come visto gia nella sezione precedente una comparazione della forma a b produce come risultato un valore booleano indipendentemente dal tipo dei segnali a e b 1 3 Integer E molto importante quando ci si riferisce agli interi distinguere tra il tipo di dato chiamato integer definito nello standard e gli altri tipi di dato interi definiti dall utente D ora in avanti quando si citera il tipo integer si fara riferimento al tipo predefinito integer proprio del linguaggio VHDL standard Il tipo integer Il tipo integer il tipo di dato predefinito che rappresenta i valori numerici interi Il range di valori coperto dal tipo integer non definito dallo standard VHDL ma deve essere almeno compreso tra 2 147 483 647 e 2 147 483 647 84 Tipi di dato Questo infatti il range per i numeri di 32 bit in complemento ad uno La ragione per cui si scelto tale range in complemento ad uno come standard presumibilmente quella di consentire la massima flessibilit nella scelta della rappresentazione in quanto lievemente pi piccolo del corrispondente range in complemento a due In pratica la maggior parte delle implemen tazioni utilizzano il range in complemento a due che ha un l
133. ndi e rappresentato mediante due cifre BCD 6 1 3 Unit di memoria 137 L unit stata modellata direttamente in VHDL con uno stile comporta mentale espresso dal seguente codice architecture behaviour of UM is signal sel std_logic_vector 1 downto 0 type table_type is array 1 to 4 of std_logic_vector 7 downto 0 constant OUTPUT_VECTORS table_type 00010101 00000101 00010001 00000101 begin sel lt Al amp AO process sel begin case sel is when 00 gt Tempo V1 Data lt OUTPUT_VECTORS 1 when 01 gt Tempo Gi e G2 Data lt OUTPUT_VECTORS 2 when 10 gt Tempo V2 Data lt OUTPUT_VECTORS 83 when 11 gt Tempo Spento Data lt OUTPUT_VECTORS 4 when others gt Data lt XXXXXXXX end case end process end behaviour Come si puo vedere stato definito un nuovo tipo di dato table_type come un array di quattro celle ognuna delle quali capace di memorizzare un vettore std_logic ad 8 bit In questo modo di fatto si realizzata una tabella indirizzabile per righe Attraverso la coppia di segnali 41 e A0 concatenati a formare il segnale sel per una maggiore manegevolezza possibile selezio nare una precisa riga e leggerne il valore memorizzato 138 Casi di studio Si modella cos il funzionamento di una ROM il dato restituito la durata temporale della fase semaforica corrente Si noti la presenza della clausola others essa
134. nti nella sensitivity list Quando un evento coinvolge uno di questi il processo pronto per essere schedulato e riavviato e wait until waiting_condition sospende il processo finch il valore dell e spressione waiting_condition false viceversa il processo risvegliato quando questa assume il valore true e wait sospende indefinitamente il processo che la esegue L utilizzo del l istruzione con questa semantica particolarmente utile quando si vuol terminare il processo e assicurandosi che non sia pi eseguito ad esem pio un processo che si occupi di settare i valori dei segnali nel tempo va arrestato all ultimo valore previsto perch altrimenti riavviandosi ciclicamente continuerebbe ad assegnare valori non corretti Un processo ha visibilit di tutti gli oggetti definiti nella sua architettura tipi sottotipi costanti segnali procedure functions in altre parole lo scope di un processo lo stesso della architettura che lo contiene L unico modo che ha un processo per comunicare con l esterno e con altri process tramite i segnali di cui ha visibilit e che assegna e legge in particolare non possibile condividere variabili fra processi perch queste sono squisitamente locali al processo stesso a meno delle shared variable 2 3 1 VHDL sequenziale i processi 33 di cui si parler nella successiva sottosezione e non possibile dichiarare segnali all interno di u
135. nto numero 3 il secondo elemento 2 e cos via L uso di un range discendente una prassi molto comune nella modellazione circuitale ma ha una spiegazione ben precisa il suo uso associato ai bus di dati e alla rappresentazione di interi In questi casi il bit pi significativo MSB quello pi a sinistra ed ha l indice pi alto viceversa il bit meno significativo LSB quello di indice zero Gli array vincolati possono usare indifferentemente indici con range ascendenti o discendenti Un modo alternativo di ottenere lo stesso effetto dichiarare un sottotipo vincolato di un array non vincolato e quindi dichiarare il segnale come ap partenente a detto sottotipo Tale concetto si ottiene con la seguente coppia di istruzioni 94 Tipi di dato subtype bv4 is bit_vector 3 downto 0 signal a bv4 Ogni segnale che stato definito come bit_vector o di qualsiasi suo sottotipo ha come basetype bit_vector I sottotipi possono avere qualsiasi lunghezza Poich il basetype non varia segnali di differente lunghezza possono essere utilizzati contemporaneamente nella stessa espressione senza causare un er rore Ad ogni modo richiesto che quando un array assegnato ad un altro array i due array siano della stessa misura Un esempio la concatenazione di due bus a formarne uno unico si supponga di avere due segnali DO e D1 entrambi definiti come bit_vector 3 downto 0 e il segnale D definito come bit_v
136. numerativo vedi pag contenente tutti gli stati dell automa Essendo un tipo enumerativo il primo valore nell elenco sar quello assegnato di default all avvio della simulazione E possibile modificare l ordine degli stati attraverso il menu FSM gt View Sort Objects gt States 70 Il VADL 4 2 Generazione automatica del codice La FSM modellata graficamente con l editor grafico dopo aver settato tutte le opzioni necessarie alle funzioni che deve compiere pu essere convertita in VHDL La conversione produce un unit composta da una entity e da un ar chitecture L entit contiene la lista dei segnali in ingresso e in uscita alla FSM mentre l architettura contiene la traduzioni in assegnazioni e processi della macchina secondo lo stile comportamentale si veda a proposito la se zione 2 2 Solitamente in letteratura i pattern pi utilizzati utilizzano due variabili di stinte per rappresentare lo stato stato presente e stato futuro e due processi operanti in modo concorrenziale a gestirle un processo sincronizzato con il fronte attivo del clock si occupa di aggiornare la variabile stato futuro in base allo stato attuale ed ai valori in uscita inoltre in caso di una macchina di Moore si provvede anche ad assegnare l uscita corrispondente L altro pro cesso sincronamente al clock ha il solo compito di assegnare il valore futuro allo stato attuale Chiaramente essendo i due processi esegui
137. o degli stati ad esempio questa rappresentazione supposta ovviamente corretta costituisce il Golden Model ossia il modello di riferimento Lo studente a questo punto realizzer la propria rete con le nozioni di sintesi apprese durante il corso ad esempio attraverso uno schema grafico modeller quindi la connessione di componenti da lui stesso definiti in VHDL Fornendo al sistema un file con le opportune configurazioni di ingresso ve rificher che le due reti operino con lo stesso comportamento e che le uscite siano sempre congruenti In questo caso la verifica da esito positivo e lo stu dente ha realizzato un buon elaborato Per realizzare il sistema da qui in avanti chiamato verificatore si proce duto con una logica top down facendo ricorso dell ambiente di modellazione grafica Nello specifico sono stati inseriti 4 blocchi funzionali ciascuno dei quali con una propria funzionalit univoca di qui la scelta di definire FUB anzich simboli come per altro esaminato in cap 2 sez 5 1 Campionatore DUT GM e Comparatore come mostrato in fig L uso dell ambiente grafico non era ovviamente necessario infatti il circui to VHDL pu essere tranquillamente realizzato semplicemente scrivendo le entit e le architetture manualmente e collegandole assieme una pratica del genere per diviene troppo complessa e prona ad errori quando si modella un circuito costituito da molte componenti inoltre l editor grafic
138. o ed uscita si inseriscono attraverso il relativo bottone presente nella State Machine toolbar Subito dopo l inserimento nello schema possibile cliccare sull icona del segnale per aprirne l utilit di configurazione fig 2 18 2 4 1 Ambiente di sviluppo FSM in Active HDL 65 Types initial value Figura 2 18 Finestra port properties Come si pu vedere in figura possibile definire sia la tipologia di porta ossia se input output inout o buffer per le differerenze tra queste si rimanda al la sez 2 1 sia il tipo di dato ad essa associato std_logic std_ulogic bit std_logic_vector std_ulogic_vector bit_vector boolean character integer vincolato In particolare se il segnale un input alla rete si pu specificare se debba essere assunto come segnale di Clock o come Clock Ena ble Viceversa se un segnale di output si pu definire la natura delle sue uscite Un uscita anche se di tipo inout o buffer pu essere modellata in tre modalit differenti e uscita combinatoria una macchina con l output combinatorio non in clude alcun elemento addizionale di memoria come ad esempio un registro nel percorso d uscita Un valore di una uscita combinatoria aggiornato immediatamente ad ogni variazione dello stato interno macchine di Moore e degli ingressi macchine di Mealy ci signi fica che l uscita combinatoria pu variare sincronamente i
139. o pu anche essere utilizzato come strumento di debug per la correzione di errori 176 Casi di studio Figura 6 23 Il verificatore nel suo complesso Nelle sottosezioni seguenti si dar una visione pi dettagliata del funziona mento e delle principali caratteristiche dei singoli componenti costituenti il verificatore 5 1 Campionatore Il campionatore un Flip flop D pilotato dal clock con la funzione di sincro nizzare l ingresso fornito alla rete che potrebbe essere asincrono e mantener lo stabile per tutto il ciclo di clock in maniera da consentire alle reti a valle di gestire il dato e di operare correttamente Questa una procedura nota in letteratura quando si devono collegare segnali esterni ad una rete sincrona Nello specifico trattandosi di una macchina a stati finiti modellata nei com ponenti seguenti in forma di Mealy ossia dipendente combinatoriamente anche dagli ingressi si sperimentalmente verificato che l eliminazione del campionatore provoca un evoluzione erronea nel comportamento delle reti a valle La causa dell errore dipende dal repentino modificarsi dell ingresso che se non mantenuto stabile dal registro si ripercuote sulle reti combinatorie interne mentre ancora in corso il calcolo dello stato futuro 6 5 2 Rete da verificare 177 5 2 Rete da verificare La DUT stata anche essa modellata con uno stile strutturale utilizzando l editor grafico la proposta
140. oku begin clock_p process begin Ck lt 0 wait for period 2 Ck lt 1 wait for period 2 if Ver_End 1 then wait end if end process Start_p process begin Start lt 1 wait for 10 ns Start lt 0 6 3 4 Testbench 165 wait end process U1 sudoku port map Ck gt Ck Start gt Start Ok gt Ok Ver_End gt Ver_End end architecture tb Come si pu vedere il componente ad alto livello sudoku viene dichiarato ed istanziato Contrariamente agli altri casi di studio in questo non sono generati i valori corrispondenti ai segnali presenti nella griglia del sudoku Questi ultimi sono stati codificati direttamente nell architettura della memo ria M2 la ragione di ci che si vuol concentrare l attenzione sul processo di verifica piuttosto che sull inserimento dei valori Nelle fasi di testing si sono realizzate diverse architetture con diverse per mutazioni dei valori nella griglia per valutare il comportamento del sistema in occasione di errori nell inserimento dei valori stessi nel gioco Chiaramente in occasione di tali errori la verifica si interrompeva in una delle tre fasi di scansione della matrice per righe per colonne per singola cella 166 Casi di studio 4 Pig Game Il caso di studio esaminato in questa sezione prevede la realizzazione di un controllore digitale che gestisca il corretto funzionamento di una consolle per
141. ola e Configurations ossia dalla compilazione di una dichiarazione di configurazione rappresentato da una C maiuscola Le unit secondarie sono costituite da Architectures ossia dalla compila zione di un architecture body Un architettura descrive il contenuto della corrispondente entit Una singola entit pu avere diverse architetture che ne definiscono il comportamento rappresentate da una A maiuscola e da Package Bodies ossia dalla compilazione del corpo di un package rappre sentate da una B maiuscola Cliccando con il mouse su uno dei package presenti nella libreria selezio nata quindi nel pannello di destra possibile vedere all interno di un sotto pannello il contenuto del singolo package ossia la lista delle funzioni simbolo f minuscolo procedure simbolo p minuscolo componenti sim bolo freccina rossa costanti simbolo c minuscolo segnali simbolo s minuscolo e variabili condivise simbolo v minuscolo presenti al suo inter no e istanziabili da codice mediante l istruzione use come precedentemente descritto 4 2 Simulazione 109 2 Simulazione Una volta che la descrizione del modello stata correttamente compilata in una o pi design library il passo successivo del processo di validazione la simulazione Se a dover essere simulata un entit sviluppata gerarchicamen te necessario che per tutte le sue componenti a basso livello sia fornita la descrizione comport
142. ola 1 vista nel caso di ritardi transport Viceversa per le transizioni esistenti che cadono all interno della finestra temporale della prima nuova transizione sono verificati i valori dei segnali se i loro valori sono differenti tali transizioni sono cancellate vice versa sono mantenute 62 Il VADL L esempio espresso da seguente codice dovrebbe rendere pi chiaro il con cetto process begin data lt 1 after 5 ns 21 after 9 ns 6 after 10 ns 12 after 19 ns data lt reject 4 ns inertial 6 after 12 ns 20 after 19 ns wait end process Lo stato del driver del segnale data dopo la prima assegnazione risulta data lt curr now 1 5ns 2109ns 6 10ns 12 19ns L esecuzione della seconda istruzione causa la cancellazione di tutte le transi zioni sul driver dopo 12 ns perch avviene prima delle altre e sono aggiunte le due nuove transizioni 6 12 ns e 20 19 ns La transizione 21 9 ns rimossa anche essa perch il suo ritardo cade nella finestra compresa tra 12 ns e 12 ns 4 ns e il suo valore 21 diverso dal valore della nuova transizione 6 mentre l altra mantenuta perch il valore del segnale non cambia Il driver risultante data lt curr now 1 5ns 6 10ns 6012ns 20019ns Concludendo possibile definire delle regole per l assegnazione a segnali usando ritardi inerziali 1 tutte le transizioni su un driver schedulate per avvenire in corrispon denza
143. onesse di fronte all impianto installato La figura 6 4 mostra uno screenshot dell andamento dei segnali in simulazio ne Figura 6 4 Dettaglio della simulazione 142 Casi di studio 2 Game Controller Questo secondo caso di studio modella una versione elementare di un con troller per un videogame da bar Il videogioco prevede che un oggetto mobile su una griglia di sedici celle segua ciclicamente il percorso schematizzato in fig senza arretrare o andare a sbattere contro le pareti Vito 11 10 Start i oo vy Ja clock Figura 6 5 Percorso del gioco A gioco fermo l oggetto permane nella cella 0 di coordinate Y1 Y0 X1 X0 00 Il gioco ha inizio nell intervallo di clock successivo a quello in cui il segnale sincrono Start assume il valore 1 per ipotesi tale valore ha durata unitaria e si pu presentare soltanto a gioco fermo in conseguenza dell introduzione di un gettone Corrispondentemente il sistema di controllo del videogioco prende atto dei comandi di spostamento dell oggetto che il giocatore seleziona tramite un joystick I comandi possibili sono 4 codificati tramite 2 bit J1 J0 come segue 01 spostamento a destra 01 e 10 11 00 spostamento a sinistra 11 spostamento in alto 00 spostamento in basso 6 2 1 Unit di rilevazione d errore 143 Se il comando corretto l oggetto spostato nella cella successiva del per corso s
144. onnessioni rispettivamente i bus sono composte dall unione di pi segmenti in sequenza essi assumono tutti lo stesso nome logico in particolare il nome assunto quello del morsetto o della porta in caso di un componente cui sono collegati L unione di pi connessioni o bus anche graficamente disgiunti ma con al meno un intersezione in comune definisce una rete net Ciascuna rete identificata da un ID univoco questo automaticamente assegnato quando tracciato una nuova connessione o bus E anche possibile ma non obbligato rio modificare il nome logico assegnato per assegnarne uno pi significativo che ad esempio espliciti la funzione del collegamento stesso L accorpamento e il disaccoppiamento di connessioni attraverso i bus una operazione molto semplice e pratica E possibile suddividere ulteriormente il bus in sotto bus ed estrapolarne i relativi segnali i segmenti cos ottenuti possono essere collegati agilmente ad altri dispositivi Il bus nella figura 2 24 composto da tre segmenti ogni segmento ha il proprio nome e il proprio range I due sottoinsiemi A 7 0 e A 15 8 sono connessi a terminali a 8 bit mentre l intero bus A 15 0 un bus a 16 bit Figura 2 24 Bus slicing 74 Il VHDL E possibile anche estrarre singolarmente le connessioni dal bus ad esempio per connetterle alle singole porte di un componente Nella nomenclatura del software utilizzato tale conce
145. operando nell ordine da sinistra a destra Ancora una volta la posizione degli elementi in ciascun array non i loro indici a determinare il risultato dell operazione 5 1 Aggregazioni Similmente ai record i valori degli elementi di un array possono essere asse gnati in un unica istruzione utilizzando le aggregazioni a lt 3 gt 1 2 gt 0 1 gt 0 0 gt 0 Il tipo dell aggregazione dedotto dall analizzatore in base al tipo del se gnale cui assegnato nel caso in esame il tipo dell aggregato bit_vector in quanto il segnale a era definito come bit_vector Il rispetto dei vincoli di range verificato partendo dal set di indici presenti nell aggregazione Per ch l assegnamento sia lecito necessario che gli indici forniti abbiano valori ammissibili nel tipo previsto e che la lunghezza degli array sia la stessa Il funzionamento delle aggregazioni abbastanza simile all equivalente per i record sez 4 1 E formato un valore intermedio nell esempio in questio ne evidentemente di tipo bit_vector che poi assegnato al segnale a Ci introduce un potenziale trabocchetto perch gli indici utilizzati nell aggre gazione non riflettono gli indici effettivamente usati nel segnale a essi sono solamente gli indici interni all aggregazione in altre parole solamente un caso che gli indici dell array corrispondente al segnale a e dell aggregazione si
146. ower value di 2 147 483 648 La definizione del tipo integer la seguente type integer is range 2147483648 to 2147483647 Gli operatori che si applicano al tipo integer sono e di confronto lt lt gt gt e aritmetici sign sign abs rem mod Interi definiti dall utente In aggiunta al tipo integer predefinito gli utenti possono definire altri tipi di interi Ad esempio se si realizzasse un sistema in cui tutte le operazioni fossero eseguite con un aritmetica ad 8 bit sarebbe possibile definire un tipo di interi ad 8 bit ad hoc per eseguire detti calcoli In generale possibile definire tipi di interi solo con range minori di quelli previsti dal tipo integer predefinito dall implementazione Un esempio di definizione di interi che definisca un nuovo tipo con un range di 8 bit in complemento a due dato dal seguente codice type short is range 128 to 127 Nelle espressioni che contengono interi non possibile mescolare differenti tipi di interi Per esempio non possibile utilizzare contemporaneamente i tipi integer e short nella stessa espressione In questo senso il VHDL un linguaggio fortemente vincolato ai tipi e tale chiusura consente di rilevare rapidamente e fin dalle prime fasi della progettazione possibili errori nel ca sting di tipi di dato differenti L essere fortemente tipizzato promuove un uso attento dei tipi e richiede una chiara comprensione
147. pare in IEEE Standard VHDL Language Reference Manual ma il linguaggio stato anche ricono sciuto come standard dall ANSI American National Standard Institute In accordo alle regole IEEE uno standard deve essere votato ogni cinque an ni per poter ancora essere considerato tale conseguentemente il linguaggio stato aggiornato con nuove caratteristiche la sintassi di molti costrutti stata resa pi uniforme e molte ambiguit presenti nella prima versione sono state superate La nuova versione del linguaggio nota come EEE Std 1076 1993 e i moderni ambienti IDE utilizzano questa versione del linguaggio Il dipartimento della difesa a partire da Settembre 1988 richiede a tutti i fornitori di circuiti ASIC di fornire la descrizione in VHDL dei dispositivi forniti e delle componenti che li costituiscono sia a livello comportamentale sia a livello strutturale Anche i testbench che sono stati realizzati per verifi care il funzionamento di detti circuiti devono essere forniti in VHDL A partire dal 1987 si reso sempre pi necessario realizzare un pacchet to standard per agevolare l interoperabilit questo perch molti venditori di software CAE computer aided engineering supportavano packages diffe renti sui loro sistemi Erano infatti presenti valori logici con rappresentazioni che passavano da 46 possibili stati logici a 7 a 4 e cos via tutto ci rendeva estremamente poco portatile i progetti fatti
148. peed integrated circuits HDL HDL per circuiti integrati a velocit molto elevata 2 Cos il VHDL Il VHDL un acronimo per VHSIC Hardware Description Language dove VHSIC esso stesso un acronimo per Very High Speed Integrated Circuits Si tratta di un linguaggio di descrizione hardware che pu essere utilizzato per modellare un sistema digitale a vari livelli di astrazione passando da un livello pi alto attraverso la descrizione algoritmica del comportamento ad uno pi basso modellazione del circuito con gate elementari Questa prima definizione sottolinea un aspetto molto importante il VADL non un linguaggio eseguibile ovvero non descrive quali operazioni un esecu tore deve svolgere per ricavare il risultato di una elaborazione bens descrive gli elementi che costituiscono il circuito digitale in grado di effettuare l elabo razione richiesta Una specifica VHDL non quindi eseguibile e deve essere pensata come qualche cosa di completamente diverso da un programma o un algoritmo Tuttavia una specifica VHDL pu essere simulata mediante opportuni strumenti La complessit del sistema digitale modellato pu variare dal semplice gate fino ad un sistema elettronico complesso costituito da molteplici dispositivi Il sistema digitale grazie al VADL pu essere descritto gerarchicamente ed possibile modellare anche il timing nella stessa descrizione Il VHDL racchiude in se le caratteristiche propr
149. pilotato dal clock la sua esecuzione pu essere tranquillamente avviata dal segnale Ok che uscendo da una macchina sequenziale gi sincrono Conclusioni L attivit di tesi condotta in questi mesi ha permesso di comprendere le caratteristiche e le possibilit offerte dalla modellazione di circuiti elettronici attraverso il linguaggio VHDL Nello specifico ci si concentrati non solo sulla comprensione delle sue strut ture fondamentali e sui pattern con cui rappresentare le varie componenti si pensi ad esempio alla progettazione di un multiplerer o di un contatore ma anche sulla approfondita conoscenza del processo di funzionamento proprio del simulatore Comprendere come avviene la simulazione perch il tempo di simulazione si incrementa in certe condizioni e non in altre capire come cambia il valore di un segnale a seconda della posizione di un assegnazione in un processo piut tosto che all esterno di esso permette di scrivere codice funzionante senza dover sperare che funzioni La modellazione dei casi di studio riportati ha permesso di analizzare le pre stazioni dell IDE utilizzato Active HDL 7 2 Student Edition della Aldec inc Questo si dimostrato un prodotto valido e facilmente apprendibile almeno nelle funzionalit pi classiche La possibilit di definire file diversi per ogni componente includendo in cia scuno di essi l entit e le relative architetture ha permesso
150. pio per settare i parametri generici dei componenti ma anche per definire in modo pi ottimale le connessioni tra gli stessi Uno dei difetti emersi che il software non riesce a mantenere la sincronia tra il circuito disegnato e la corrispondente trasposizione in VHDL In altre parole tutte le modifiche effettuate manualmente nel codice generato e nel caso del Block Editor generalmente sono una quota significativa non sono propagate all indietro ci richiede al progettista di aggiornare manualmente lo schema dove possibile Inoltre si deve prestare attenzione a non rigene rare automaticamente il codice dopo aver fatto modifiche sullo stesso perch altrimenti queste sono sovrascritte senza avvertimenti Possibili sviluppi futuri a partire dal lavoro svolto sono legati alla sintesi dei componenti modellati in fase di analisi e simulazione mediante appositi tool di simulazione che estendano l IDE in particolare la affidabilit della sintesi Conclusioni 189 stessa e le possibilit di ottenere un equivalente maggiormente ottimizzato rispetto a quanto potrebbe fare il progettista Altri aspetti da approfondire sono il sottoinsieme di linguaggio VHDL sintetizzabile e i test da effettuarsi a fine sintesi per valutare la bont di quanto realizzato Infine si pu utilizzare quanto sintetizzato per la programmazione di una FPGA reale completando cos l intero processo di sviluppo Bibliografia 1 J Bhask
151. pre sincronizzata in caso contrario il testbench potrebbe rivelarsi inutilizzabile perch la simu lazione e il DUT potrebbero introdurre ritardi necessario tenere conto Tale pattern riassunto dalla fig 5 3 process a DUT Process Figura 5 3 Verifica automatica interna al testbench In alternativa anzich fornire le uscite previste tramite un file esterno si pu ricorrere ad un golden model Un golden model una visione del sistema ad alto livello che ne modella il comportamento Si immagini di modellare un circuito realizzato con la connessione di molte componenti quindi stile strutturale cap 2 sez ad esempio in RTL parallelamente possibile modellare anche la macchina a stati che ne descrive il comportamento ad esempio tramite l editor FSM incluso nell IDE a questo punto sufficiente fornire ad entrambe i segnali in input per la simulazione e confrontare auto maticamente le risposte emesse Tale pattern che sar analizzato tramite un esempio concreto nel capitolo 6 sez 5 riassunto dalla fig Infine un altra modalit di verificare un sistema la cosiddetta verifica in trinseca Alcuni sistemi sono costituiti da due parti che svolgono funzionalit inverse ad esempio pu essere presente un modulo di codifica e un modulo di decodifica oppure una trasformazione e la relativa anti trasformazione possibile utilizzare una delle due sezioni per verificare l altra Un pratico
152. prima viene simulato l intervallo temporale col segnale originario quindi agendo da tastiera a simulazione ferma si varia il valore del segnale e si rilancia la simu lazione a partire da quell istante temporale Il risultato la simulazione equivalente e il comando Run Until lancia la simulazione e la fa proseguire fino al raggiungimento dell istante temporale specificato Sono inoltre disponibili anche i pulsanti fig 4 7 per resettare la simulazione o meglio per riportare all istante zero il cursore temporale e per fermarla Simulation Step box e mt is Ea omai Figura 4 7 Simulation toolbar In realt fino ad ora si tralasciata una componente fondamentale per l e secuzione sensata di una simulazione infatti necessario fornire ai segnali entranti nell entita o ai segnali propri dell architettura degli stimoli affinch essi varino e generino cos dei nuovi eventi da simulare Gli stimoli possono essere forniti al simulatore o attraverso appositi tool grafici o codificandoli all interno del codice si esamineranno ora entrambe le soluzioni 4 2 1 Il simulatore Aldec 117 La definizione di stimoli con la modalit grafica possibile utilizzando sia il visualizzatore di forme d onda sia il visualizzatore a lista Per ogni segnale cui si vuole aggiungere uno stimolo sufficiente cliccare la cella corrispondente alla colonna Stimulator ci provoca l apertura di una nuova finestra dov
153. r high subtype positive is integer range 1 to integer high Il valore integer high rappresenta il limite superiore del tipo integer si veda anche il par 6 di questo capitolo quindi almeno 2 147 483 647 Un segnale dichiarato natural di fatto un integer ma con un range d uti lizzabilit ridotta Tutti gli operatori del tipo integer sono ereditati dai suoi sottotipi ci si gnifica che se si esegue un operazione su due valori natural dapprima sar 86 Tipi di dato eseguita una somma di interi quindi il simulatore verificher che il risultato prodotto sia nel range ammissibile per il sottotipo natural Questa verifica effettuata per solo all effettivo assegnamento e non nel calcolo ci signi fica che in un espressione complessa i valori intermedi potrebbero eccedere i range del sottotipo ma sono tollerati a patto che non si ecceda il range del tipo integer e che il risultato finale dell operazione rientri nel range del sottotipo Un esempio aiuter a capire meglio il concetto Si crei dapprima il sottotipo di 4 bit nat di natural a sua volta sottotipo di integer subtype nat4 is natural range 0 to 15 Quindi si prendano quattro segnali appartenenti al sottotipo nat4 tali che w lt x y z con x 3 y 4ez 5 Non essendoci parentesi o operatori pi prioritari l espressione calcolata da destra a sinistra dapprima eseguita la sottrazione 3 4 il cui risultato 1
154. re rappre sentato da una o pi entity Per descrivere una entity il VHDL fornisce cinque differenti costrutti primi tivi detti design units Essi sono e la dichiarazione di entit entity declaration e il corpo dell architettura architecture body e la dichiarazione della configurazione configuration declaration e la dichiarazione di package package declaration il corpo di un package package body Una entity modellata utilizzando una entity declaration ed almeno un architecture body L entity declaration descrive la vista esterna dell entit per esempio i nomi dei segnali di input e di output La architecture body contiene in vece la descrizione interna dell entit ad esempio come set di componenti inter connessi che rappresentano la struttura dell entit o un set di istruzioni concorrenti o sequenziali che rappresentano il comportamento dell entit 2 2 Entit ed architetture 23 Ciascuno stile di rappresentazione come spiegato meglio nel seguito pu es sere specificato in un differente architecture body o mescolato all interno del singolo architecture body 2 Entit ed architetture 2 1 Entity Declaration L entity declaration specifica il nome dell entit modellata e ne elenca le por te che costituiscono la sua interfaccia Le porte sono i segnali tramite cui l entit comunica con le altre entit cui collegata o con il mondo esterno Un primo semplic
155. renziate dai caratteri stessi e dei numeri con l uso delle virgolette Per agevolare l utente c un ulteriore notazione E possibile inserire i valori da dare ai segnali in formato numerico binario ottale decimale o esadecimale sufficiente anteporre al valore rispettivamente la lettera B O D X 98 Tipi di dato 6 Attributi Un attributo un modo per ottenere informazioni da un tipo di dato o dai valori associati ad un tipo di dato Gli attributi sono utili ad esempio per trovare il primo o l ultimo valore di un tipo o per determinare il valore posi zionale di letterale enumerativo In alcune circostanze una buona pratica riferirsi ad un valore utilizzando un attributo piuttosto che utilizzando di rettamente il valore stesso Esistono diversi attributi che si applicano ai tipi interi enumerativi ed array Per mantenere chiaro il loro comportamento se ne discuter in due sezioni distinte 6 1 Attributi integer ed enumeration I seguenti attributi sono disponibili per i tipi scalari ossia quelli che coinvol gono interi o enumerazioni type left type right type high type low type pred value type succ value type leftof value type rightof value type pos value type val value Per poter descrivere come questi operano si fara riferimento ai seguenti tre tipi di dato type state is main_green main_yellow farm_green farm_yellow type s
156. ressi da file Gli ingressi al verificatore sono introdotti dalla lettura di un file testuale presente sul file system ed opportunamente formattato Nella realizzazione dell architettura si previsto di utilizzare due diverse semantiche per i valori letti la prima semantica prevede che ogni linea letta contenga una coppia di valori costituita dal valore del segnale e dall istante di applicazione assoluto rispetto all origine la seconda semantica invece definisce la coppia come valore del segnale e numero di unit di tempo per cui quel valore deve essere mantenuto La selezione tra quale delle due modalit utilizzare realizzata inserendo come prima linea del file un codice numerico a n bit a seconda del numero di configurazioni possibili La lettura dei valori dal file avviene come descritto in cap 5 sez e seguenti ed espressa con il seguente codice data process variable linea_attuale line variable valuei std_logic variable selezione std_logic_vector 1 downto 0 variable ti integer variable t_delay time begin readline input linea_attuale 184 Casi di studio read linea_attuale selezione case selezione is when 00 gt while not endfile input loop readline input linea_attuale if linea_attuale 1 then next end if read linea_attuale valuel read linea_attuale t1 t_delay t1 1 ns now wait for t_delay X lt valuel end loop Sim_end lt
157. revista Si rimanda al manuale utente dell IDE per ulteriori utilizzi dell oggetto stato che esulano dal lavoro di tesi AI suo interno lo stato consente di definire le azioni che devono essere intra prese modellando una macchina di Moore Una azione un set di istruzioni HDL che assegnano nuovi valori alle porte ai segnali interni e alle variabili Per aggiungere un azione al diagramma si deve scegliere l opzione pi ap propriata attraverso il menu FSM gt Action La sintassi definita nelle azioni deve essere conforme a quella definita nel linguaggio VHDL Esistono anche altre due azioni direttamente legate ad uno stato e entry actions un entry action una azione effettuata in occasione di una transizione in entrata nello stato e exit actions un exit action una azione effettuata in occasione di una transizione in uscita dallo stato Transizioni Le transizioni sono azioni che permettono l avanzamento del flusso tra stati differenti L avanzamento dello stato quindi lo scattare di una transizione dipende dal clock e o dal soddisfacimento di una specifica condizione sulla stessa E possibile che ad una transizione sia associato un cambiamento delle uscite in accordo al modello di Mealy Come nel caso delle azioni interne allo stato anche la scrittura delle condi zioni e degli assegnamenti presenti nelle transizioni deve rispettare la sintassi VHDL Questo motivato dal fatto che il compil
158. ri e non dei numeri In VHDL i caratteri sono distinti dai numeri in quanto racchiusi da un apice Gli operatori che si applicano al tipo bit sono e booleani not and or nand nor xor e di confronto lt lt gt gt Il tipo bit ha un ricco set di operatori logici i quali forniscono sempre un risultato di tipo bit Ci significa che gli operatori logici possono essere com posti a formare espressioni complesse e tutti i risultati intermedi saranno di tipo bit Il tipo bit ha anche un ricco set di operatori di confronto che forniscono tutti un risultato booleano E possibile confrontare due segnali di tipo bit ad es a b per vedere se hanno lo stesso valore ed il risultato sar di tipo boolean ossia true o false 3 1 2 Boolean 83 1 2 Boolean Il tipo boolean il tipo predefinito per i confronti in VHDL E raramente utilizzato direttamente come tipo logico poich il tipo bit ricopre comple tamente tale ruolo In altre parole improbabile trovare un assegnazione di un valore ad un segnale espressa tramite un valore booleano ad es anzich a false si utilizzer a 0 E comunque possibile un booleano per settare il valore di un segnale se lo si desidera Il tipo boolean predefinito ed ha la seguente definizione type boolean is false true Ci significa che il tipo ha solamente due possibili valori false e true Gli operatori che si applicano al tipo boolea
159. ro indirizzamento interno Questi attributi sono pi frequentemente utilizzati dei loro corrispondenti per i tipi interi ed enumerativi perch generalmente considerata buona pratica utilizzare gli attributi per riferirsi alla dimensione o al range di un array di segnali Ad esempio nel caso di istruzioni for loop gli attributi sono la sola modalit per specificare quali elementi sono visitati in ordine da sinistra a destra indipendentemente dall ordinamento del range Gli attributi esaminati in questa sezione sono signal left signal right signal low signal high signal range signal reverse_range signal length Si utilizzeranno inoltre i seguenti segnali all interno degli esempi signal up bit_vector 0 to 3 signal down bit_vector 3 downto 0 3 6 2 Attributi integer ed enumeration 101 L attributo left fornisce l indice dell elemento pi a sinistra dell array men tre l attributo right fornisce l indice dell elemento pi a destra L attributo low restituisce l indice dell elemento numerato pi basso contenuto nell array viceversa l elemento high quello pi alto Ad esempio up left gt 0 down left gt 3 up low gt 0 down low gt 0 Tutti questi attributi restituiscono un valore che pu essere utilizzato per accedere direttamente all array Per esempio supponendo che il segnale doun rappresenti un numero dotato di segno usando la consueta in
160. roStart E Zero Ze R Zero Ze E 1 Ovviamente nelle fasi successive si dovr utilizzare una sola delle due archi tetture ma le prove effettuate hanno mostrato come per altro prevedibile che il comportamento e lo stesso 2 3 Unita di conteggio dei passi L unita di conteggio dei passi U3 all interno di questo progetto costituita da un contatore 4 bit modulo 16 Il contatore riceve in ingresso i segnali di 6 2 4 Unit di transcodifica 147 controllo generati dall unit di conteggio degli errori e fornisce in uscita il numero della cella futura in cui si trover il cursore L architettura modellata in stile strutturale dal seguente codice per il com mento del quale si rimanda ad un caso analogo presente nella sez 5 2 pag 177 architecture Counter_n_bit of Counter_n_bit is signal count_int std_logic_vector 3 downto 0 others gt 0 begin process CK begin if CK event and CK 1 then if R 1 then count_int lt others gt 0 elsif E 1 then count_int lt count_int 1 end if end if end process A lt count_int 0 B lt count_int 1 C lt count_int 2 D lt count_int 3 end Counter_n_bit 2 4 Unit di transcodifica L unita di transcodifca costituita da una rete combinatoria con il compito di generare le coordinate dell oggetto in base al valore fornito dal contatore presente nell unit a monte 148
161. rt FPGA CPLD post layout VDE Figura 1 3 Processo di sintesi a realizzare i circuiti fisici sulla scheda L aspetto interessante la possibilit di testare il codice ottenuto dal processo di sintesi nello stesso ambiente di sviluppo senza dover riscrivere i testbench in un altro linguaggio Essendo un flusso unico supportato dal linguaggio i test effettuati dopo la modellazione sono ripetibili anche dopo la sintesi con un risparmio netto di tempo e di costi fig 1 4 Riassumendo data una stessa descrizione VHDL si succedono due processi molto differenti tra loro e Simulazione verifica comportamento Ingresso Uscita 18 Introduzione descrizione FHDL gate level basso livello test bench FADL stimoli di ingresso Simulatore VHDL forme d onda J LI LW MN CUL Figura 1 4 Verifica della sintesi e Sintesi passaggio automatico da una descrizione ad alto livello com portamentale o RTL ad una a basso livello net list In entrambe si utilizzano programmi CAD anche completamente differenti per le fasi di sintesi e di simulazione sia la fase di sintesi che quella di simu lazione prevedono un passo intermedio di compilazione del listato VHDL Per contro la sintesi introduce anche degli svantaggi e importanza del sintetizzatore si ha poco controllo nel definire l imple mentazione gate level di un sistema descritto ad alto livello direttive di sintesi
162. sa Inoltre importante specificare che i fub esistono solamente in una sola istan za quindi non possibile progettare un componente che al suo interno conten ga due istanze di uno stesso blocco funzionale Ci sarebbe semanticamente scorretto un blocco funzionale ha il senso di racchiudere in esso delle istruzio ni destinate a fare una specifica operazione spesso dipendente dal contesto se quindi si volesse creare un componente quindi del codice riutilizzabile o che si adatti a situazioni differenti si dovrebbe ricorrrere ad un simbolo Per questa ragione i fub non compaiono nella finestra Symbols Toolbox contenen te la lista dei simboli di default e creati dall utente per il progetto corrente I fub rappresentazione in fig possono essere creati solo quando si impiega la metodologia di design top down in altre parole il simbolo fub creato prima di definire il suo contenuto Una volta disegnato facendo doppio click sulla sua forma possibile scegliere come implementarlo se con del codice VHDL con un altro Block Diagram o addirittura con una macchina a stati aubomachine Figura 2 26 Fub Un symbol una rappresentazione grafica di un blocco logico La sua com plessit pu variare da un gate elementare fino ad arrivare ad un blocco funzionale complesso In particolare l intero design prodotto pu essere mo dellato da un simbolo richiamato poi nel testbench La logica contenuta nel 76 Il VADL
163. sa accadrebbe se all inter no di un processo viene fatto pi di un assegnamento allo stesso segnale per capire quale sia l effettivo valore del segnale importante capire il con cetto di driver Un driver creato per ogni segnale cui assegnato un valore in un processo esso associato al segnale contenendo il suo valore corrente e tutti i suoi valori futuri espressi come sequenza di una o pi transizioni dove ciascuna di esse identifica il valore che dovr apparire nel tempo Si consideri il seguente assegnamento con tre variazioni nel tempo e il driver creato per quel segnale process begin Reset lt 3 after 5 ns 21 after 10 ns 14 after 17 ns end process Reset lt curr now 30T 5ns 210T 10ns 14 T 17ns Tutte le transizioni su un driver sono ordinate per valori di tempo crescenti un driver contiene sempre almeno una transizione che pu essere il valore iniziale assegnato al segnale Il valore di un segnale coincide con il valore del suo driver Nell esempio precedente quando il tempo di simulazione avanza a T 5 ns la prima transizione cancellata dal driver quindi il segnale assume il valore 3 Quando il tempo avanza ancora a T 10 ns la seconda transizione 60 Il VADL cancellata ed il segnale assume il valore 21 Infine quando il tempo avanza a T 17 ns la terza transizione raggiunta e cancellata il segnale Reset assume il valore 14 Se all
164. segnale per mette essendo collegato all ingresso load di entrambi i contatori al succes sivo fronte positivo del clock di caricare nei contatori il nuovo dato dalle memorie Il codice dell architettura nella pagina seguente 6 1 4 Unit di elaborazione 139 Figura 6 3 Unit di elaborazione architecture behaviour of Rileva_1 is signal value std_logic signal confronto std_logic_vector n 1 downto 0 0 gt 1 others gt 0 begin process I reset begin if reset 1 then Z lt 1 else if I confronto then Z lt 1 else Z lt 0 end if end if end process end Rileva_1 140 Casi di studio La presenza del segnale di Reset necessaria al fine di inizializzare cor rettamente entrambi i contatori ricaricando l ultimo valore temporale loro assegnato 1 5 Unit di uscita L unita di uscita infine ha il compito di gestire in dipendenza della se gnalazione corrente i segnali V1 G1 R1 V2 G2 e R2 che comandano l accensione delle lampade per le due direttrici di marcia La modellazione fatta direttamente in stile comportamentale senza ricorrere all editor grafico Il codice architetturale che ne descrive il comportamento il seguente architecture behaviour of UU is begin PO process state begin case state is when 0 gt vi lt 0 g1 lt 00 ri lt 0 v2 lt 0 g2 lt 0 r2 lt
165. segnazione la nuova transizione 35 O T 18 ns avviene prima della seconda quindi la corrispondente 20 T 22 ns cancellata mentre la nuova appesa nella coda La ragione per questo comportamento che il ritardo della nuova transizione 18 ns minore del ritardo dell ultima transizione presente sul driver 22 ns Questo effetto causato perch s usato il ritardo transport In generale una nuova transizione canceller tutte le precedenti transizioni presenti in un driver che avvengano contemporaneamente o dopo il ritardo della nuova transizione Ritornando sull esempio il driver del segnale data risulter data lt curr now 11 T 10ns 35 T 18ns In pratica possibile definire delle regole precise che governino le transizioni sul driver di un segnale in presenza di transport delay 1 tutte le transizioni presenti sul driver che avverranno in corrispondenza o dopo il ritardo della nuova transizione saranno cancellate 2 tutte le nuove transizioni sono aggiunte alla fine della coda del driver Effetti di un Inertial Delay sui driver Quando si utilizzano ritardi iniziali sia il valore del segnale assegnato sia il ritardo influiscono sulla rimozione e l aggiunta delle transizioni Se il ri tardo della prima nuova transizione minore di una transizione esistente quest ultima cancellata indipendentemente dal valore del segnale delle due transizioni Si noti che ci coincide con la reg
166. semantica del mantenimento nella sezione Sensitivity list template Un processo pu avere una sensitivity list anzich una condizione di wait per specificare il set di segnali che causano l attivazione del processo stesso La forma di questo template data dal seguente codice 2 3 5 Registri 53 process ck begin if ck 1 then q lt d end if end process In questo esempio il processo rimane sospeso finch non avviene un evento su uno dei segnali della sensitivity list Questo attiva il processo che esegue per una sola volta e quindi si sospende nuovamente Anche in questo template il processo attivato su entrambi i fronti del clock ma la condizione IF interna filtra via i fronti negativi Il sensitivity list template equivalente all F statement template ma con l istruzione di wait spostata in fondo al processo Ci significa che i due template sono equivalenti in sintesi ma differenti nella simulazione Questa differenza pu essere sfruttata in modo che le simulazioni si inzializzino cor rettamente senza alcun impatto sul risultato della sintesi La regola generale che l istruzione di wait possa essere posizionata ovunque nel processo sebbene in generale sia posta o all inizio o alla fine dello stesso Alcuni sintetizzatori potrebbero non supportare tutte le possibili permuta zioni ma dovrebbero almeno supportare quelle ai due estremi I processi con l istruzione di wait alla
167. sere usato co me letterale ad eccezione delle keyword del linguaggio ad esempio non possibile chiamare type un letterale Il tipo enumerativo pu essere anche definito da letterali composti da un sin golo carattere ci sono dei vantaggi nell uso di caratteri specialmente nell uso di array di caratteri vedi sez B perch il VHDL fornisce alcune scorciatoie per la definizione di array di caratteri Per questa ragione la maggior parte dei tipi logici sono definiti come caratteri Ad esempio una logica a quattro valori pu essere definita come segue type mlv4 is CX P 2 Si noti che come al solito in VHDL i caratteri sono racchiusi tra apici Non si deve fare confusione tra i singoli caratteri e lo specifico tipo di dato cha racter quest ultimo contiene l intero set di caratteri a 7 bit in codice ASCII ed solitamente utilizzato per sintetizzare hardware in grado di manipolare testo ASCII I letterali presenti in un tipo enumerativo assumono una notazione posizio nale il primo letterale occupa la posizione 0 i successivi i numeri seguenti Ad esempio la posizione numerica del tipo mvul4 definito precedentemente la seguente 88 Tipi di dato main_green 0 main_yellow 1 farm_green 2 farm_yellow 3 Comunque similmente a quanto avviene nei linguaggi pi noti i tipi enu merativi non sono di tipo intero e non possibile riferirsi ai singoli letterali attraverso i loro valori
168. specifica unit Se l unit primaria un entit VHDL questa colonna mostra il tipo del file sorgente che descrive una specifica archi tettura non l entit stessa I tipi di sorgente disponibili sono Source Code se l unit descritta direttamente in VHDL NetList se l unit descritta tramite una NetList di tipo EDIF o State Block Diagram se l unit rappresentata da una macchina a stati o graficamente con blocchi logici Target Language Indica il linguaggio con cui l unit stata effettiva mente compilata I linguaggi disopinibili sono VHDL Verilog SystemC e EDIF 108 Validazione e simulazione e Symbol indica se l unit primaria ha un simbolo dalla modellazione grafica a blocchi nella sua libreria Se si presente il valore YES viceversa NO Il valore FUB utilizzato se stato istanziato un blocco funzionale si veda anche il cap 2 sez e quest ultimo stato compilato nella libreria e Simulation Data indica se l unit contiene i dati di simulazione Le librerie potrebbero includere unit che non hanno i dati di simulazione al loro interno Le unit primarie sono costituite da Entities ossia dal risultato della com pilazione di una dichiarazione di entit simulabile solamente in unione con una sua architettura rappresentato da una E maiuscola Packages ossia dal risultato della compilazione di una dichiarazione di un package rappre sentato da una P maiusc
169. ssegnato all uscita della memoria Nell istruzione di case esterno sono ovviamente riportati tutti i bracci alter nativi qui per esigenze di spazio si riportato solo quello equivalente alla prima linea della matrice L unita di memoria M2 del tipo ROM contraddistinta da 9 bit di ingresso I8msg 17 16 15 14 13 12 11 I0 r5g nell ordine connessi a Q4 Q3 Q2 Q1 QO QD QC QB QA e da 8 bit di uscita 071 55 06 05 04 03 02 01 00798 nell ordine connessi a A7 A6 A5 A4 A3 A2 A1 AO quindi prevista allo scopo di generare l indirizzo della cella oggetto di indagine in ogni intervallo di clock a partire dalla corrispondente modalit di identificazione adottata nell ambito dell unit di conteggio 3 4 Testbench Il testbench si prefigge l obiettivo di testare il componente sudoku ossia il controller mostrandone il comportamento ai morsetti La modellazione del testbench segue i pattern presentati nel cap 5 e nello specifico all interno della sua architettura sono presenti i processi di generazione del clock e del 164 Casi di studio segnale aperiodico di Start L architettura del testbench la seguente architecture tb of sudoku_tb is signal Ck Ok Ver_End std_logic signal Start std_logic 0 constant period time 10 ns component sudoku port Ck in std_logic Start in std_logic 0 Ok out std_logic Ver_End out std_logic end component sud
170. sulla 2 4 semaforo rosso sulla direttrice 1 giallo sulla 2 Il funzionamento notturno prevede la generazione ciclica ed ordinata delle seguenti due segnalazioni 1 semaforo spento su entrambe le direttrici 2 semaforo giallo su entrambe le direttrici A seguito di una variazione del segnale X la commutazione dall una all altra modalit di funzionamento pu aver luogo solamente al termine della gene razione di un semaforo giallo su una delle due direttrici nel caso di passaggio 134 Casi di studio al funzionamento notturno della segnalazione tutto spento nel caso di pas saggio al funzionamento diurno Allorch il segnale di Reset attivo a seguito dell accensione dell impian to o della pressione di un pulsante previsto a tale scopo tutte le lampade devono essere mantenute spente Il sistema di controllo dovr poi attuare la modalit di funzionamento selezionata dal segnale X a partire dalla corri spondente prima segnalazione non appena il segnale Reset si disattiva Il sistema stato modellato con le seguenti unit funzionali FUB descritte nelle seguenti sezioni 1 1 Unit di temporizzazione L unita di temporizzazione ha il compito di generare un segnale di clock di frequenza 1 Hz a partire da un segnale digitale di frequenza 50 Hz e duty cy cle del 50 derivato tramite apposito circuito di rettificazione della tensione di alimentazione del sistema La rete stata progettat
171. t cos definita potr essere utilizzata essa stessa come componente in processo a cascata Questo modo di procedere particolarmente intuitivo e permette di limi tare la descrizione comportamentale ai soli componenti di pi basso livello rendendo pi semplice e immediatamente comprensibile la progettazione del componente In particolare questa modalit ben rappresentabile grafica mente L IDE utilizzato nel lavoro di tesi fornisce al progettista un pratico ambiente di modellazione grafica chiamato Block Diagram Editor 5 1 Ambiente di modellazione grafica Aggiungendo un documento del tipo Block Diagram al progetto possibile caricare l ambiente di modellazione grafico Questo si presenta come un ampio spazio libero contornato da barre di strumenti Un esempio mostrato in figura 2 23 L area di lavoro rappresenta l interno del componente che si sta modellando al suo interno andranno posizionati i terminali di connessione con l ester no i componenti di livello inferiore eventuali processi e tutto l insieme di connessioni e bus Terminali e connessioni I morsetti o meglio i terminali seguendo la nomenclatura del programma costituiscono la via per collegare l entit ad altri componenti ed al mondo esterno essi possono essere singoli o raggruppati in bus Un terminale bus consente di collegare ad esso un bus ossia un raggruppamento di pi segnali distinti ma con semantica comune 72 Il
172. tamentale alto livello test bench FHDL stimoli di ingresso Simulatore VHDL forme d onda JL LW QU LIL Figura 1 2 Verifica della simulazione La fase successiva la sintesi la traduzione in logica combinatoria elementa re ossia l arrivo al livello gate Questa attivit potrebbe essere fatta dall o peratore ma soprattutto per circuiti complessi sarebbe troppo complessa e prona agli errori Il vantaggio nell utilizzo del VHDL la sintetizzabilit In altre parole collegando un sintetizzatore anche di un altra azienda a valle della fase di modellazione possibile far eseguire automaticamente la conversione al livello gate L algoritmo di sintesi molto sofisticato e permet te di introdurre vincoli ad esempio sull ampiezza del circuito e sullo sbroglio dello stesso inoltre garantisce l ottimizzazione dell elaborato fig 1 3 L elaborato della sintesi prende il nome di net list questa attraverso un programma di place e routing in grado di generare il codice macchina da inserire nella FPGA ossia in un unit programmabile o di istruire i robot 1 5 Dalla modellazione alla sintesi 17 descrizione I DL definizione comportamentale Digas th dae rali i livella del dispositivo irettive De Ert sato i i uil target di sintesi Sintetizzatore VHDL programma di place amp route modello files file per per di programmazione simulazione repo
173. terpretazione che l elemento pi a sinistra sia il pi significativo e quindi rappresenti il segno sarebbe possibile utilizzare un segnale di tipo bit per assegnargli il valore del segno del segnale down attraverso la seguente istruzione sign lt down down left Gli attributi range e reverse_range sono utilizzati principalmente per control lare i cicli for loop ma trovano anche impiego nella definizione di sottotipi di segnali in quanto restituiscono il range vincolato di un array Questo non sarebbe un valore assegnabile ad un segnale perch in fase di definizione di un sottotipo non c modo di dichiarare un segnale per quello scopo Ad esempio signal a bit_vector 3 downto 0 signal b bit_vector a range In questo esempio il segnale b stato definito con lo stesso range del segnale a questa una modalit sicura di operare perch in caso di cambiamento nel range del primo segnale le modifiche sarebbero automaticamente propagate al secondo Sempre in questo esempio l attributo range assegna al segna le il range di valori 3 downto 0 viceversa l uso dell attributo reverse_range avrebbe assegnato il range 0 to 3 Infine l attributo length restituisce il numero di elementi presenti in un array questo valore pu essere assegnato a qualsiasi segnale di tipo integer Un uso abbastanza comune di questo attributo per la cosiddetta normalizzazione di un segnale Ad esempio dato un segnale
174. ti parallelamen te per il modello di funzionamento proprio del linguaggio lo stato futuro sar assegnato al clock successivo rispetto quando stato calcolato In una macchina di Mealy presente un ulteriore blocco di istruzioni che agiscono concorrentemente ai processi che si occupano di aggiornare imme diatamente i valori delle uscite in rapporto agli ingressi ed allo stato interno In realt VIDE utilizzato utilizza un pattern lievemente differente ma equi valente Il compilatore genera un solo processo generalmente contraddistinto dalla label SregO_machine in esso mediante delle istruzioni CASE in relazio ne allo stato attuale e agli ingressi sono calcolati gli stati futuri Per memo rizzare lo stato viene utilizzata una sola variabile a cui viene assegnato via via un nuovo valore all interno del processo chiaramente questa assumer il valore dello stato futuro solo alla successiva riesecuzione del processo cio al clock successivo Si rimanda il lettore alle prove effettuate cap 6 ed alle conclusioni cap 7 in cui evidenziata la generazione del codice e ne valutata la bont 2 5 Design grafico 71 5 Design grafico Parlando di stili architetturali nella sez si era citato lo stile di model lazione strutturale questo prevede l istanziazione all interno di un architet tura di componenti primitivi per utilizzarli nella formazione di una rete di livello superiore A sua volta l enti
175. to consciamente il simulatore in questo modo render effettivo il valore del segnale count al secondo delta e scheduler al terzo delta l aggiornamento di Q0 e Q1 ed in delta successivi l eventuale ricalcolo di altre istruzioni contenenti tali segnali se modificati Se gli assegnamenti fossero stati inseriti internamente al processo si sarebbe commesso un errore In tal caso all esecuzione del processo primo delta il segnale count sarebbe eventualmente schedulato per assumere il nuovo valore al secondo delta ma per quanto gi descritto in cap 2 sez i segnali Q0 e Q1 continuerebbero a leggere il valore precedente del contatore perch il tempo di simulazione si incrementer solo al successivo loop del processo In realt possibile inserire le due assegnazioni all interno del processo sfrut tando il costrutto wait for 0 ns in altre parole necessario modificare la struttura del processo si ricordi che non si possono utilizzare le istruzioni di wait assieme ad una sensitivity list come segue architecture behaviour of Counter is signal count std_logic_vector 1 downto 0 00 begin 6 5 3 Golden Model 179 process begin if Ck event and Ck 1 then if Res 1 then count lt 00 elsif E 1 then count lt count 1 end if end if wait for 0 ns QO lt count 0 Q1 lt count 1 wait on Ck end process end behaviour con questa soluzione l istruzione
176. to sia il tipo di indice sia il suo range sono completamente definiti Nel VHDL gli array vincolati sono implementati come sottotipi di un tipo array anonimo non vincolato Un tipo anonimo un tipo senza nome che non pu essere quindi utilizzato direttamente dall utente ma che esite come 3 5 Array 93 supporto per l analizzatore sintattico In questo senso tutti i tipi di array in VHDL sono non vincolati Ad ogni modo poich come detto non possibile riferirsi direttamente al basetype anonimo l utente pi utilizzare solamente il sottotipo vincolato In pratica un array non vincolato utilizzato dal linguaggio per la definizione di altri tipi di dato Ad esempio il tipo predefinito bit_vector definisce un array di bit non vincolato type bit_vector is array natural range lt gt of bit Il simbolo lt gt noto come box ed indica un range non vincolato Il resto della dichiarazione dell indice evidenzia che lo stesso varia in un range di valori appartenenti al sottotipo natural in questo modo non sono permessi indici negativi Di fatto l utente utilizzer poi all atto della dichiarazione di un segnale un istanza vincolata del sottotipo signal a bit_vector 3 downto 0 L istruzione sovra riportata definisce un segnale di quattro elementi indi cizzati dal range 3 downto 0 tecnicamente si definisce descending range significa che il primo elemento dell array l eleme
177. tto espresso col nome di bus tap e rappresenta graficamente la giunzione tra una connessione e un bus quest ultimo diviene un membro del bus cui collegato Ci implica che sia il bus sia la connessione debbano avere un nome questo deve essere correttamente indicizzato ad esempio se il nome del bus fosse DXBUS 7 0 i nomi validi per le connessioni ad esso collegati sarebbero DXBUS 0 DXBUS 1 DXBUS 7 si veda anche la fig 2 25 DSBUS O BxBUS A DXBUS 3 DXBUS 4 DXBUS 5 DXBUS 6 DXBUS 7 DXBUS T 0 Figura 2 25 Bus taping Fub e Symbol Un fub una rappresentazione grafica di un blocco logico creato ed editato direttamente nell editor grafico La logica interna al blocco si interfaccia con l esterno attraverso le porte rappresentate nel blocco funzionale mediante pin Ci sono varie propriet che distinguono i fub dai simboli veri e propri e possibile modificare le dimensioni grafiche di un fub cos come semplice aggiungere o rimuovere pin direttamente dal diagramma e i pin sono aggiunti automaticamente quando si connette una connes sione o un bus ad un fub La label iniziata associata al pin la stessa del nome della connessione stessa 2 5 1 Ambiente di modellazione grafica 75 e i pin sono automaticamente rimossi quando si disconnette una connes sione o un bus da un fub Questa regola non si applica se il nome del pin diverso dal nome della connessione stes
178. tura sequenziale architecture seq of fragmenti is A Be Z sono segnali e questo con i due iniziali un commento 2 3 3 VHDL concorrente 45 begin process B begin A lt B Z lt A end process end architecture seq Nel momento in cui il segnale B ha un evento ad esempio al tempo T dap prima eseguita la prima istruzione A lt B quindi la seconda Z lt A entrambe sono eseguite in un tempo nullo senza ritardi di propagazione Per il segnale A schedulato per acquisire il nuovo valore del segnale solo al tempo T 1 delta ed anche Z schedulato per acquisire al tempo T 1 delta il segnale di A In definitiva al termine dell istante di simulazione T A avr il nuovo valore di B mentre Z avr il vecchio valore di A si veda a tal proposito la figura 2 10 Time Della 4 WEB TZ 0000 ou o u ooo 1 o o u 10000n of 0 1 U 10000n 1 1 1 0 2000n of 1 oO oO 20 000n8 1 0 0 Figura 2 10 Rappresentazione a lista per i segnali in esempio Si consideri invece quest altro frammento di codice di un architettura con corrente architecture conc of fragmenti is begin A lt B Z lt A end 46 Il VADL Quando un evento avviene sul segnale B al tempo T il segnale A assumer il valore di B al tempo T 1 delta In questo caso per evitare ambiguit sull effettivo valore di Z il tempo di simulazione viene fatto avanzare a T 1 delt
179. un numero di zeri pari alla dimensione attuale del segnale stesso L istanziazione avviene definendo i segnali in modo classico ed il valore del parametro U SReg generic map 3 port map Ck gt Ck D gt CtoR E gt Ud Q gt BUSI R gt Rd Dove 3 il valore del parametro espresso in notazione posizionale e i vari segnali collegati ai terminali di I O sono array di 3 bit Graficamente il simbolo corrispondente quello in fig Din 1 0 E QO n 1 0 Ck Figura 2 27 Registro generico Il file sorgente che descrive la logica rappresentata dal simbolo detta im plementazione del simbolo e ne descrive il suo contenuto similmente al fub 78 Il VADL l implementazione pu essere fatta in VHDL con un altro diagramma a bloc chi o con una macchina a stati finiti Ciascun simbolo memorizzato nella libreria associata al progetto identi ficato univocamente con il suo nome Quando si inserisce un simbolo nel diagramma assegnato automaticamente un nome univoco all istanza per identificarlo all interno del diagramma Poich un simbolo rappresenta del codice e pi in generale un comportamento riutilizzabile pi volte nella stessa architettura possibile istanziarlo pi volte al contrario di un fub Processi Una delle caratteristiche della programmazione grafica la possibilit di inse rire nello schema un oggetto che modelli un processo si veda anche la sezione
180. y list non porta all esecuzione del processo con effetti potenzialmente erronei Un altra situazione non ottimale sempre nelle reti combinatorie si ha quan do in un costrutto IF THEN ELSE manca l else Si consideri il seguente esempio process b enable begin if enable 1 then z lt bj end if end process In questo caso sebbene tutti i segnali in ingresso alla rete combinatoria siano presenti nella sensitivity list il comportamento simulato non sar completa mente combinatorio in quanto se enable 0 il valore di z mantenuto Se l istruzione IF incompleta e non c un precedente assegnamento come nel caso in esempio prima della stessa si crea un feedback involontario che continua a mantenere il valore precedente Un altro feedback involontario introdotto se il valore di un segnale combi natorio non viene aggiornato in tutti i rami di un IF annidato Si consideri 2 3 2 Forme alternative di assegnazione sequenziale 41 il seguente esempio process begin wait on a b C if c 1 then z lt a else y lt b end if end process In questo caso sebbene l istruzione di IF sia completa segnali combinato ri differenti sono assegnati nei vari rami Ne consegue che i segnali z e y manterranno alternativamente il valore precedente nelle varie esecuzioni del processo Il valore campionato infatti da un feedback asincrono che non dovrebbe esserci perch
181. zione e Random pilota il segnale con una sequneza di valori interi distribuiti in accordo ad una funzione di probabilit standard Infine dopo aver selezionato uno dei comportamenti possibile impostare come gli stimoli contribuiscano al valore del segnale pilotato in altre parole si definisce la forza d applicazione Strength e Override il valore applicato dallo stimolatore sovrascrive quelli forniti al segnale nel codice della architecture 118 Validazione e simulazione e Drive lo stimolo si comporta come un driver aggiuntivo collegato al segnale quindi viene assegnato parallelamente ai valori codificati nel l architettura e Deposit lo stimolo applicato sovrascrive i valori forniti nel codice finch non c una successiva transizione nel driver collegato al segnale Spesso per il progettista si trova a dover simulare componenti con molti se gnali in ingresso o con segnali che variano molto spesso in questo senso l uso della modalit grafica di applicazione degli stimoli pu rivelarsi troppo one rosa In questi casi preferibile applicare gli stimoli ai segnali codificandoli internamente al codice per far ci bene creare un testbench in cui inserire come componente la rete da simulare e fornire i valori degli ingressi attesi mediante processi dedicati che operino concorrenzialmente alla rete stessa questi processi potrebbero leggere i valori da file testuali oppure da vettori codificati n

Download Pdf Manuals

image

Related Search

Related Contents

CentreCOM GS908S  Unold Classic  ELMO Manuale Tecnico D7004  Manuale di installazione e manutenzione Manifold della  

Copyright © All rights reserved.
Failed to retrieve file