VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

download VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

of 112

Transcript of VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    1/112

    UNIVERSITATEA TEHNIC "GHEORGHE ASACHI" IA IFACULTATEA DE ELECTRONIC SI TELECOMUNICA II

    LUCRARE DE DIPLOM

    Coordonator tiin ific: Student Ieremie Ionu Dr.Ing. D nu Burdia grupa 5507

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    2/112

    VHDL pentru SINTEZ

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    3/112

    CUPRINS

    Sec iunea I Introducere..................................................................................................................................3ASIC............................................................................................................................................4

    Introducere............................................................................................................................4ASIC - tipuri..........................................................................................................................5Full-Custom ASICs...............................................................................................................6Standard-Cell-Based ASICs..................................................................................................6Gate-Array-Based ASICs......................................................................................................9 Structured Gate Array.........................................................................................................10Dispozitive logice programabile.........................................................................................11

    Limbajul VHDL ....................................................................................................................14Design Compiler ...................................................................................................................15Modelsim i Leonardo Spectrum..............................................................................................16

    Sec iunea II CY7C910

    Descriere func ional ...........................................................................................................17Proiectare

    Introducere..................................................................................................................19Package-ul..................................................................................................................21Instruction Decoder....................................................................................................23Register-Counter........................................................................................................32Stack...........................................................................................................................35MicroProgram Counter...............................................................................................40Interfa a surs .............................................................................................................43Multiplexer.................................................................................................................44Zero Detector..............................................................................................................44

    TS Buffer....................................................................................................................44CY7C910....................................................................................................................45Sinteza circuitului CY7C910...........................................................................47Testarea circuitului CY7C910.........................................................................52

    CY7C901Descriere func ional ...........................................................................................................67Proiectare

    Package-ul..................................................................................................................71ALU............................................................................................................................72Q Register...................................................................................................................76Q Shift........................................................................................................................80Ram Addressable Registers........................................................................................83Ram Shift....................................................................................................................86ALU Data Source Selector.........................................................................................88Output Data Selector..................................................................................................91CY7C901....................................................................................................................93

    Sinteza circuitului CY7C901...........................................................................94Testarea circuitului CY7C901.........................................................................96

    Concluzii.................................................................................................................................110CD-ul anex ............................................................................................................................111Bibliografie

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    4/112

    3

    Introducere

    La nivelul anului 2003, circuitele integrate digitale (CID) coninnd peste 10 milioane tranzistoare sunt deja banale (procesoarele Intel Pentium4 conin peste 40 milioane tranzistoare), iacazul anumitor procesoare grafice, numrul tranzistoarelor depete 100 de milioane. Este eviden

    proiectarea unor astfel de circuite nu mai poate fi realizat manual. De fapt, la proiectarea manual a CID sa renunat ncepnd de la sfr itul anilor 1970. O dat cu apariia primelor instrumente soft pe proiectarea CID, s-a intrat ntr-un fel de reacie pozitiv care a f cut posibil complexitatea CID actua prin apariia unor procesoare mai puternice, acestea puteau rula aplicaii mai complexe - decii programde proiectare mai complexe -, iar aceste programe de proiectare au permis realizarea unor procesi ma puternice,i aa mai departe.

    Prin renunarea la proiectarea manual, la nivel de schem, i trecerea la proiectarea asistat decalculator a aprut un nou tip de abordare a proiectrii CID. Astfel, principala sarcin a proiectantului esaceea de a descrie, ntr-un limbaj HDL (VHDL sau Verilog), funcionarea dorit de la circuit. Dup aceastoperaiune preponderent manual, celelalte etape de proiectare sunt aproape complet automatizate.dup realizarea descrierii funcionrii circuitului ntr-un limbaj HDL, un soft va transforma adescriere n format RTL (register transfer logic), care reprezint o implementare cu operatori logicircuitului descris. Apoi alt soft realizeaz maparea fiierului RTL pe o anumit tehnologie, adiimplementarea circuitului descris folosind componente (por i logice, bistabili, mux-uri, etc) din bibliotec de componente,innd cont de constrngerile de arie, vitez sau consum de putere impuse

    proiectant. n final alt soft preia fiierul de maparei realizeaz layout-ul circuitului (dispunerea pe chcomponentelor folosite la implementarea circuitului),innd cont de anumite constrngeri.

    Prin aceast lucrare mi-am propus s realizez descrierea, sintezai simularea a dou circuitintegrate digitale : CY7C910i CY7C901. Scopul principal a fost acela de a c pta experient n programarea VHDL pentru sintez, n vederea unei viitoare cariere n acest domeniu. M-am limitat aceast etap deoarece cunoaterea fiecrei etape presupune o perioad destul de mare de studiu, iar nfirm, un proiectant lucreaz doar la una dintre etapele proiectului. n plus, n timp ce limbajul VHstandardizati a suferi foarte puine modificri de la apariia sa la nceputul anilor 1980, programelsintez sufer modificri permanent, aprnd altele noi, astel c n scurt timp s-ar putea ca aceast lucrars nu mai prezinte interes. Mai trebuie precizat c, cu ct ne apropiem de siliciu, cu att programele sumai greu de gsit i de instalat pe PC-uri.

    Lucrarea are 2 seciuni : o seciune introductiv n care sunt prezentate circuitele ASIC, limVHDLi instrumentele soft folosite la realizarea proiectuluii seciunea principal, n care sunt prezentdescrierile VHDL, programele de test, sintezai simularea circuitelor pe care le-am proiectat.

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    5/112

    4

    ASIC

    Introducere

    Un ASIC (application specific integrated circuit ) este un circuit integrat dedicat unei apspecifice (cel putin aceasta este semnificatia acronimului) . nainte de a vedea ce inseamn in realitaASIC, vom arunca o privire asupra evoluiei circuitelor integrate (CI) .

    Figura 1(a) arat capsula unui CI (n acest caz este vorba despre un PGA ( pin-grid array) prezentat r sturnat : pinii vor intra prin gurile unei plci cu cablaj imprimat) . Capsula este denumit adese(impropriu) chip, dar, dup cum se vede n figura 1(b), chiar chip-ul de siliciu (numitdie) este montat cavitatea de sub stratul de protecie. O capsul PGA este confecionat, n mod obinuit, din materceramic, dar si capsulele din plastic sunt destul de r spndite.

    Figura 1. Un circuit integrat

    Dimensiunile fizice ale unui chip de siliciu variaz de la civa milimetri (latura udreptunghi) , la peste 3 centimetri, ins adesea dimensiunea unui CI este exprimat prin numrul por ilologice echivalente sau al tranzistoarelor coninute de acel CI. Ca unitate de msur , o poart echivalencorespunde unei por i NAND cu dou intr ri.

    Aprut o dat cu primul CI la nceputul anilor 1970, industria semiconductorilor s-a mi a evoluat rapid. Primele CI integrate pe scar mic conineau cteva(1 10) por i logice (NAND, NOce nsumau cteva zeci de tranzistoare. Perioada CI integrate pe scar medie a crescut capacitatea logacestora, f cnd posibil realizarea primelor numr toare integrate. Era CI integrate pe sacr mare a f cu posibil apariia primelor procesoare realizate pe un singur chip. n zilele noastre, CI integratefoarte mare (VLSI) ofer procesoare pe 128 de bii, cu memorie cachei uniti de calcul n virgul mobi mult peste 10 milioane de tranzistoare toate acestea pe un singur chip de siliciu.

    Primele CI foloseau tehnologia bipolar , iar majoritatea circuitelor digitale foloseau famlogice TTL sau ECL. Dei inventat naintea tranzistorului bipolar, tranzistorul MOS (metal-oxideera iniial dificil de fabricat. Pe msur ce problemele de realizare a tranzistorului MOS au fost rezoa dezvoltat tehnologia nMOS (metal-gate n-channel MOS) . La acea vreme tehnologia MOS n puine mti, era mai dens i consuma mai puin putere dect tehnologia bipolar echivalent. Asnsemna c, pentru o anume performan , un integrat MOS era mai ieftin dect unul bipolar echivalece a dus la investiii i la creterea pieei circuitelor integrate MOS.La nceputul anilor 1980 grilele din aluminiu ale tranzistoarelor au fost nlocuite cu polisiliciu, ns numele MOS a r mas. Introducerea polisiliciului ca material pentru gril a constituitmbuntire major a tehnologiei MOS, f cnd mai uoar realizarea celor dou tipuri de tranzistoare M(NMOSi PMOS) pe acelai CI, ceea ce a dus la apariia tehnologiei CMOS (complementar MPrincipalul avantaj al tehnologiei CMOS fa de tehnologia nMOS este reducerea puterii consumaavantaj, urmare a introducerii grilei din polisiliciu, este simplificarea procesului de fabricare ca permite micorarea dimensiunilor tranzistoarelor.

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    6/112

    5

    O poart NAND cu dou intr ri este realizat din 4 tranzistoare CMOS, deci, pentru a exdimensiunea unui CI ca numr de tranzistoare, se multiplic cu 4 dimensiunea acelui CI exprimat ca numde por i echivalente.

    Procesul de fabricare a unui CI poate fi caracterizati de cea mai mic dimensiune rezolvab(cam jumtate din dimensiunea minim permis de fabricant pentru lungimea unui tranzistor) . n prefolosesc procese de 0.13m i chiar 0.09m, ceea ce nseamn c cel mai mic tranzistor are aproxim0.13m(0.09m) n lungime. Cea mai mic dimensiune rezolvabil, pe care o vom nota , va avdimensiunile = 0.065m i 0.045m pentru procesele de 0.13m, respectiv 0.09m.

    Un proces CMOS submicronic modern este acum la fel de complicat cai un procsubmicronic bipolar sau BiCMOS. Totui CI CMOS au o poziie dominant, fiind fabricate n volum mmai mare dect circuitele bipolarei BiCMOS (din considerentele prezentate mai sus) . Tehno bipolarei BiCMOS sunt n continuare utilizate pentru aplicaii speciale. De exemplu, tehnologia bipeste capabil s lucreze cu tensiuni mai mari dect permite tehnologia CMOS. Astfel CI biBiCMOS r mn n continuare foarte utile n electronica de putere, electronica auto, circuite telefon

    Unele CI sunt componente standard. Se poate alege un CI standard dintr-un catalogi cumprde la distribuitori. Fabricanii de sistemei proiectanii pot utiliza acelai CI standard ntr-o mare varide sisteme microelectronice.

    O dat cu apariia circuitelor VLSI, inginerii au nceput s realizeze avantajele proiectrii unCI pentru o aplicaie specific, dect utilizarea CI standard. Proiectarea sistemelor microelectrdevenit o problem de definire a funciilor care se pot implementa folosind CI standard,i apoi deimplementa funciile logice r mase (numite glue logic) cu unul sau mai multe CI dedicate (car proiectate) . Se poate realiza un sistem dintr-un numr mai mic de componente, combinnd mulstandard cu cteva CI dedicate. Construirea unui sistem microelectronic cu mai puine CI dedicate permreducerea costuluii mbuntete fiabilitatea.

    Desigur, exist multe situaii n care nu este adecvat utilizarea CI configurabile pentru fi parte a unui sistem microelectronic. Dac, de exemplu, o aplicaie necesit o memorie de dimensiuni meste indicat utilizarea unui CI de memorie standard, DRAM sau SRAM.

    Deoarece este dificil de definit cu exactitate termenul ASIC, vom ncerca s clarificm cnseamn acest termen apelnd la unele exemple. Exemple de circuite integrate care nu sunt Amicroprocesoarele, memoriile destinate PC-urilor (SDRAM, DDRAM) . Exemple de CI ASI pentru o p pu vorbitoare, un CI pentru un satelit, un CI care conine un microprocesor ca cempreun cu alt logic. Ca o regul general, dac un CI poate fi gsit ntr-un catalog atunci este fo probabil s nu fie ASIC.

    ASIC tipuri

    Circuitele integrate sunt fabricate pe wafere circulare subiri (cteva sute de microni) siliciu, fiecare wafer coninnd sute de chip-uri. Tranzistoarelei conexiunile sunt realizate n mai mstraturi (de obicei ntre 10i 15) suprapuse. Fiecare strat are o configuraie definit cu ajutorul unei m tStraturile inferioare definesc tranzistoarele, iar straturile superioare conexiunile dintre tranzistoarUn CI full-custom include cteva (sau toate) celule logice proiectate speciali m tile, casunt toate proiectate special. Un microprocesor este un exemplu de CI full-custom. Proiectanii au cheltufoarte mult timp insistnd asupra fiecrui m de pe chip. Proiectnd astfel toate resursele circintegrat, este posibil includerea pe chip a unor circuite analogice sau a unor celule de memorie opCI full-custom sunt cele mai scump de proiectati de fabricat. Aceste CI full-custom sunt adesea deunei aplicaii specifice, deci am putea numi unele dintre acestea CI ASIC full-custom.

    Ceea ce ne intereseaz pe noi sunt ns CI ASIC semicustom, pentru care toate celulele sunt deja proiectatei unele m ti (probabil toate) sunt configurabile. Folosind celule logice pre(dintr-o libr rie de celule) viaa proiectanilor devine mult mai uoar . Sunt dou tipuri de CI AS

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    7/112

    6

    semicustom despre care vom vorbi : CI ASIC bazate pe celule standard (standard cell based ACI ASIC bazate pe arii de por i logice (gate-array-based ASICs) . Apoi vor fi descrise C programabile.

    Full-Custom ASICs

    ntr-un CI ASIC full-custom un inginer configureaz par ial (sau n totalitate) celulele locircuitelei layout-ul ntr-un mod specific. Aceasta nseamn c proiectantul abandoneaz abordarea deutiliza celule pretestate pentru realizarea ntregului circuit. Aceast abordare full-custom are sens doar nu exist libr rii de celule care s permit realizarea ntregului design. Aceasta se poate ntmpla dcelulele din libr riile de celule existente nu sunt suficient de rapide, sau nu sunt suficient de mconsum prea mult putere.; sau dac tehnologia ASIC este nou sau att de specializat nct nu exilibr rii de celule ; sau dac circuitul este att de specializat nct unele blocuri trebuie proiectate spece n ce mai puine CI ASIC full-custom sunt realizate (exist i o excepie :circuitele mixte analog/digit

    Tehnologia bipolar a fost utilizat dintotdeauna pentru funcii analogice de precizie. Excteva motive fundamentale pentru aceasta. n toate CI mperecherea caracteristicilor componenchip-uri diferite este foarte slab, dar foarte bun pentru componentele aflate pe acelai chip. S presupunec avem tranzistoarele T1, T2, T3 ntr-un CI ASIC analog/digital. Cele trei tranzistoare au identicei sunt construite n acelai mod. Tranzistoarele T1i T2 sunt plasate foarte aproape unul de celai au aceeai orientare, n timp ce tranzistorul T3 este plasat pe chip pe partea opus i are o orientadiferit. Circuitele integrate sunt fabricate n loturi, numite wafer lots. Un wafer lot este uwafer-e de siliciu (intre 5i 30) care sunt procesate mpreun. Fiecare wafer poate conine zeci sau sutechip-uri, n funcie de dimensiunile CIi ale wafer-ului. Dac facem msur tori asupra caracteristictranzistoarelor T1, T2, T3 vom desprinde urmtoarele concluzii :- Tranzistoarele T1i T2 de pe acelai chip vor avea caracteristici aproape identice ;- Tranzistorul T3 se mperecheaz foarte bine cu tranzistoarele T1i T2 de pe acelai chip, dar nu attstrns ca mperecherea dintre T1i T2 ;- Tranzistoarele T1, T2i T3 se vor mperechea destul de bine cu tranzistoarele T1, T2, T3 de pe a pe acelai wafer ; mperecherea depinde de ct de deprtate sunt cele dou chip-uri unul de cellalt ;

    - Tranzistoarele de pe chip-uri aflate pe afer-e diferite nu se vor mperechea foarte bine ;- Tranzistoarele de pe chip-uri din loturi de wafer-e diferite se vor mperechea foarte slab ;La proiectarea circuitelor analogice mperecherea tranzistoarelor este crucial pentru funcionare

    circuitului. Pentru aceste circuite sunt folosite perechi de tranzistoare situate adiacent pe cdispozitivului dicteaz c o pereche de tranzistoare bipolare se vor mperechea ntotdeauna mult mdect o pereche de tranzistoare CMOS de dimensiuni comparabile. Tehnologia bipolar a fost utilizat plarg pentru circuite analogice full-custom datorit preciziei sporite. n ciuda slabelor sale carcteanalogice, utilizarea tehnologiei CMOS pentru funcii analogice este n cretere,i aceasta din dou motiv primul motiv este acela c n prezent tehnologia CMOS este cea mai larg disponibil tehnologie de realiza CI ; al doilea motiv este acela c nivelul crescut de integrare necesit realizarea de funcii analogicedigitale pe acelai chip, ceea ce a obligat proiectanii s foloseasc tehnologia CMOS pentru implemen

    funciilor analogice.

    Standard-Cell-Based ASICs

    Un CBIC (cell-based IC) folosete celule logice (por i NAND, NOR, multiplexoare, bista predefinite, numite celule standard. Un CBIC este construit din rnduri de celule standard - la feeste construit din cr mizi. Ariile de celule standard pot fi utilizate n combinaie cu celule predefinite mari, microcontrollere sau chiar microprocesoare, numite megacelule.

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    8/112

    7

    Proiectantul ASIC definete doar plasarea celulelor standardi interconexiunile ntr-un CBCelulele standard pot fi plasate oriunde pe chip, ceea ce nseamn c toate m tile unui CBIC sconfigurabile. Avantajul circuitelor CBIC este acela c proiectanii economisesc timp, banii reduc risc prin utilizarea unei libr rii de celule standard gata proiectate, pretestatei precaracterizate. Pe de alt partfiecare celul standard poate fi optimizat individual. n timpul proiectrii unei libr rii de celule fiectranzistor din fiecare celul standard poate fi ales astfel nct s maximizeze viteza sau s minimizeze arde exemplu. Dezavantajul n acest caz este timpuli banii cheltuii pentru proiectarea unei libr rii de celul

    Figura 2 arat un CBIC. Caracteristicile principale ale acestui tip de ASIC sunt urmtoarele :- toate m tile sunt proiectate special tranzistoarelei interconexiunile ;- pot fi incluse blocuri custom- timpul de fabricare este n jur de 8 s ptmni .

    Figura 2. Un CBIC die

    Fiecare celul standard dintr-o libr rie este construit folosind metode de proiectare full-cuns aceste celule standard gata proiectate se pot utiliza la realizarea circuitelor digitale f r a fi delonecesar proiectarea full-custom. Acest stil de proiectare duce la obinerea acelorai avantaje de performai flexibilitate ca n cazul ASIC full-custom, dar reduce risculi timpul de proiectare.

    Celulele standard sunt proiectate s se potriveasc asemeni cr mizilor ntr-un zid. Figurarat exemplul unei celule standard simple (simplu n sensul c nu este optimizat pentru densitate, dar eideal pentru a ar ta construcia intern). Liniile de puterei de mas (VDDi GND sau VSS) traverseorizontal celulele.

    Figura 3. Layout-ul unei celule standard (privire de sus)

    Proiectarea standard cell permite automatizarea procesului de asamblare. Grupuri de celusunt aranjate mpreun pe orizontal pentru a forma rnduri. Rndurile sunt stivuite pe vertical pentru

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    9/112

    8

    forma blocuri rectangulare flexibile (forma acestoara poate fi modificat pe durata proiectrii) . Apoi bloc flexibil construit din cteva rnduri de celule standard poate fi conectat la alt bloc de celusau la alt bloc logic full-custom. De exemplu, s presupunem c vrem s includem pe acelai chip un circde interfa (proiectat de noi) pentru un microcontroller gata proiectat (megacelul) , mpreun cu anumit cantitate de memorie. Blocul microcontrollerului este o megacelul de dimensiuni fixe, mem poate fi generat folosind un compilator de memorie, iar circuitul de interfat va fi construit din blocflexibile de celule standard a cror form se poate modific astfel nct s se potriveasc n spaiile r maslibere pe chip.

    Circuitele integrate ASIC, att cele cell-based, cti cele gate-array, utilizeaz celu predefinite, ns exist o diferen: putem modifica dimensiunile tranzistoarelor ntr-o celul standa(pentru a optimiza viteza sau aria) , ns n cazul ariilor de por i logice dimensiunile tranzistoarelorfixe. Aceasta determin o interdependen ntre ariei vitez la nivel de siliciu n cazul gate-arraycnd, n cazul standard-cell, aceast interdependen se manifest la nivelul libr riei de celule standard

    Circuitele ASIC CMOS moderne utilizeaz dou, trei sau mai multe straturi (layere) de pentru interconexiuni. Aceasta permite traseelor de interconexiune s traverseze diferite straturi, la fel cazul traseelor de cupru de pe o plac cu cablaj mprimat. ntr-o tehnologie CMOS cu 2 nivele deconexiunile la intr rile i ieirile celulelor standard se realizeaz pe nivelul metal2 (nivelul superiometal) , la extremitile superioar i inferioar ale celulelor. ntr-o tehnologie cu 3 nivele de conexiunile pot fi interne celulei standard (ca n Figura 3) , ceea ce permite programelor dfoloseasc nivelul de metal n plus pentru a ruta interconexiunile pe deasupra celulelor standard.O conexiune care trebuie s treac pe deaupra unui rnd de celule standard folosete ufeedthrough (fie o por iune de metal folosit pentru a trece un semnal printr-o celul, fie un spaiu lsaliber n interiorul celulei, spaiu ce va fi ocupat de un traseu metalic) . Figura 4 prezint dou astfel dfeedtrough-uri: unul n celula A.14i unul n celula A.23.

    Att n tehnologia cu 2 nivele de metal, cti n cea cu 3 nivele de metal, bus-urile de p(power buses VDDi GND) n interiorul celulelor utilizeaz n mod normal cel mai de jos (celapropiat de tranzistoare) nivel de metal metal1.Limea fiecrui rnd de celule standard este ajustat astfnct acesea s poat fi aliniate prin intermediul celulelor de spaiere (spacer cells) . Traseele p buses se conecteaz apoi la linii de power adiionale verticale prin intermediul celulelor speciale dede rnd (row-end cells) la capetele aliniate ale fiecrui bloc de celule standard. Dac rndurile de cel

    standard sunt lungi, liniile de power verticale pot fi realizate pe nivelul metal2i vor parcurge rndurilecelule standard prin intermediul unor celule speciale, numite power cells, care realizeaz doar conectarla VDDi GND. n mod normal, proiectantul controleaz manual numrul i limea liniilor de powverticale conectate la un bloc de celule standard n timpul proiectrii la nivel fizic (layout) . O imagischemei de distribuie a traseelor de power pentru un CBIC este ar tat n Fig 4.

    Figura 4. Rutarea CBIC-ului din fig2

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    10/112

    9

    Toate mtile pentru un CBIC sunt configurabile. Aceasta permite plasarea unor m

    (SRAM, controller SCSI, decodor MPEG, etc) alturi de celule standard pe acelai chip. Megacelulele sfurnizate de un fabricant de ASIC-uri sau de libr rii, mpreun cu modele comportamentalei anumistrategeii de test pentru aceste megacelule. Companiile furnizoare de libr rii ASIC pot furniza, de asemecompilatoare pentru generarea flexibil a blocurilor de memorie (DRAM, SRAM, ROM) . ntruct unui design standard cell toate m tile sunt configurabile, proiectarea blocurilor de memorie este meficient i mai dens dect in cazul designului gate arrays.

    Libr riile standard celli gate array conin sute de celule logice diferite, incluznd fcombinaionale (por i NAND, NOR cu 2 sau mai multe intr ri) , precumi latch-uri bistabili (cu divecombinaii de reset, preseti opiuni pentru semanlul de ceas) . Productorul libr riilor furnizeadocumentaia (descriere funcional i informaii de timing) pentru fiecare element al libr riei.

    Gate-Array-Based ASICs

    ntr-un ASIC de tip gate-array (prescurtat GA) tranzistoarele sunt predefinite Configuraia predefinit a tranzistoarelor pe o arie de por i reprezint aria de baz (base array) , iar mai mic element care este replicat pentru a forma aria de baz reprezint celula de baz (base cell, numi primitive cell) . Doar cteva din straturile superioare de metal, care definesc conexiutranzistoare, sunt definite de proiectant folosind m ti configurabile. Pentru a fi deosebit de alte tipgate array, acest tip este numit masked gate array (MGA) . Proiectantul alege dintr-o librrie gatarray celule logice predefinite. Celulele logice dintr-o libr rie gate-array sunt numite adesea mac(macros de la asemnarea cu macrourile software ) deoarece layout-ul pentru o base-cell es pentru fiecare celul logic, i doar conexiunile (n interiorul celulelor logicei ntre acestea) sconfigurabile.

    Putem realiza etapele de difuzie pn la definirea tranzistoarelor, dup care waferele potdepozitate n vederea utilizrii ulterioare. Deoarece doar interconexiunile metalice sunt unice p

    MGA, putem utiliza waferele din depozit pentru diferite aplicaii, dup necesiti. Folosind waf prefabricate pn la nivelul de metalizare, se reduce timpul necesar fabricrii unui MGA (ntre 2 zilei s ptmni) .

    Exist 3 tipuri de MGA :- Channeled gate arrays- Chanelless gate arrays- Structured gate arrays

    S explicm pe scurt termenii channeled, channellessi structured. Exist dou modalituzuale de a aranja tranzistoarele ntr- un MGA : n cazul channeled gate arrays, ntre rtranzistoare se las un spaiu liber destinat rutrii ; rutarea n cazul dispozitivelor channelless gate autilizeaz rnduri de tranzistorare neutilizate. Tipul structured gate arrays poate fi att channe

    channelless, ns includei un bloc configurabil.Channeled Gate ArrayFigura 5 prezint un chip channeled gate array. Principalele caracteristici ale acestui tip de MGA- Doar interconexiunile sunt custom- Interconexiunile utilizeaz spaiile predefinite dintre rndurile de base cells

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    11/112

    10

    - Fabricarea dureaz ntre 2 zilei 2 s ptmni

    Figura 5. Channeled gate array die

    Un chip channeled gate array este asemntor cu un CBIC ambele utilizeaz rnduri celule separate de canale pentru interconexiuni. Diferena este dat de faptul c, n cazul channeled garray canalele de rutare au dimensiuni fixe.Channelless Gate Array Figura 6 prezint un chip channelless gate array. Principalele caracteristici ale acestui tip de MG- Doar cteva din layerele superioare sunt custom interconexiunile- Fabricarea dureaz ntre 2 zilei 2 s ptmni

    Principala deosebire fa de channeled gate array este absena spaiilor de rutare predefinn acest caz rutarea se realizeaz pe deasupra tranzistoarelor. Aceasta se poate realiza deoarece proiconfigureaz stratul contact layer care definete conexiunile dintre nivelul metal1i tranzistoare. Cndutilizeaz o arie de tranzistoare pentru rutare, nu se realizeaz nici un contact ctre tranzistoarele dedesubt; tranzistoarele sunt lsate pur i simplu neutilizate.

    Figura 6. Channelless gate array die

    Densitatea de integrare pentru channelless gate arrays este mai mare dect channeled gate arrays. Aceasta se datoreaz faptului c masca de contact este configurabil n cazchannelless gate arrays. Prin configurarea stratului de contact se permite creterea densitii celuleldeoarece se poate realiza rutareai pe deasupra contactelor neutilizate.

    Structured Gate Array

    Un chip structured gate array combin cteva dintre caracteristicile CBIC urilor i MGAurilor. Unul dintre dezavantajele MGA este celula de baz neconfigurabil, ceea ce face ca implementmemoriei, de exemplu, s fie dificil i ineficient. n cazul structured gate array, o parte din aria cheste dedict funciilor speciale (aceast arie poate conine celule de baz mai adecvate pentru implementmemoriei, sau poate conine un bloc complet un microcontroller de exemplu) .

    Figura 7 prezint un chip structured gate array. Principalele caracteristici ale acestuMGA sunt urmtoarele :

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    12/112

    11

    - doar interconexiunile sunt configurabile- pot fi incluse macrocelule- fabricarea dureaz ntre 2 zilei 2 s ptmni

    Figura 7. Structured Gate Array die

    Tipul structured gate array combin densitateai performana superioare ale unui CBICcosturile sczute i timpul de fabricare redus ale unui MGA. Unul din principalele dezavantajetocmai de la blocul special (macrocelula) integrat care nu este configurabil. Dac strucured gate arrconine o arie destinat implementrii a 32 Kb de memorie, iar pentru o aplicaie sunt necesari doar 16 nseamn c jumtate din aceast arie de memorie r mne nefolosit i inutilizabil n alt scop; ns, chiar aa, tot este mai eficienti mai ieftin dect implementarea celor 16 Kb de memorie utiliznd macrou

    Dispozitive logice programabile

    Dispozitivele logice programabile, (Programmable Logic Devices - PLD) sunt circuite integrate au proprietatea c pot fi configurate (programate) de ctre utilizator, oferind astfel posibilitatea acestuiimplementa diverse sisteme digitale.

    Dispozitivele logice programabile ofer un set de resurse logice care pot fi configurateintermediul unor biide configurare. Resursele logice sunt dispuse sub forma unei arhitecturi fixmodular.Prin arhitectur de tip modular se nelege o arhitectur compus dintr-un numr de blocuri identcare sunt inteconectate. Conexiunile dintre aceste blocuri sunt realizate pe baza unorco programabile.

    Programarea unui PLD const n setarea biilor de configurare, care controleaz starecomutatoarelor programabilei configuraia resurselor logice, pe baza unei descrieri a sistemului digise dorete a fi implementat. n funcie de starea biilor de configurare se pot genera diverse configurii alresurselor logicei interconexiuni ntre blocurile din componena PLD-ului, n final obinndu-se arhitectsistemului digital dorit. Programarea acestor dispozitive este realizat pe baza unor instrumente softwcomplexei implic inserarea circuitului n unitai speciale de programare. Un pas nainte n proiesistemelor digitale pe baza PLD-urilor a fost realizat recent prin posibilitatea configurar rii PLD-ului insistem (f r a fi necesar extragerea lor din sistem). PLD-urile sunt utilizate n special n segm pia ce cuprinde producerea desisteme digitale la un volum redus de producie, fiind ideale penrealizarea prototipurilor.

    Principalele avantaje pe care le ofer PLD-urile sunt: cost iniial redus pentru realiza proiectului (n faza de prototip), risc financiar redus n faza de realizare a prototipului, p parcurgerii tuturor fazelor implicate n proiectarea unui produs chiar din faza de prototip, ncestabilirea cerinelor de proiectarei terminnd cu implementarea final a produsuluii nu n ultimul ruurina cu care se pot realiza modificrile n proiect.digitale.

    ntruct pot fi programate pentru a se obine circuite pentru o aplicaie specific, PLD-uri pot fi incluse n familia ASIC-urilor.

    Primul PLD a fost realizat n anii 70i a fost denumitProgrammableLogic Array , pe scuPLA. Dispozitivul PLA este un PLD de capacitate logic redus.

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    13/112

    12

    Dispozitivele PLA sunt alctuite din 2 nivele (plane) logice: un nivel logic alctuit din por i logicAND - planul AND, la care sunt conectate intr rile dispozitivuluii un nivel logic alctuit din por i logicOR - planul OR, la care sunt conectate ieirile dispozitivului. Cele dou plane sunt conectate ntre ele anct, ieirile din por ile AND reprezint intr rile n por ile OR. Distinctiv pentru acest tip de dispozitifaptul c ambele planuri logice pot fi programate. Cele 2 planuri logice mai poart i denumirea de alogice programabile.

    Programarea acestor arii logice este realizat la nivelul conexiunilor (firelor), prin intermcomutatoarelor (switch-uri) programabile, realizate n diverse tehnologii: fuzibil, antifuzibilEEPROM, Flash, SRAM. La nivelul planului AND, pot fi conectateoricare dintre intr rile dispozitivuluiieirea acestuia rezultnd un set de termeni produs. La nivelul planului OR, pot fi conectateoricare dintrtermenii produs, la ieirea acestuia rezultnd sume de termeni produs, deci funcii logice care pot dsistem digital. Versatilitatea dispozitivului, ca o consecin a faptului c ambele planuri logice componena sa pot fi programate, ofer posibilitatea realizrii unei game extinse de sisteme

    Dipozitivele PLA prezint 2 dezavantaje importante: cost mare de fabricare (cost raportat latehnologic al anilor 70)i vitez de lucru redus. Ambele dezavantaje sunt determinat programabilitatea ambelor plane logice: planele logice programabile sunt dificil de realizati introduntrzieri n propagarea semnalului. Pentru eliminarea (par ial) a acestor dezavantaje s-a nceliminarea problemei care a cauzat-o: programabilitatea planelor logice. Cum eliminarea co programabile din cele 2 plane logice ar fi condus practic la dispariia circuitului PLD, s-au eliminat nconexiunile programabile din planul OR (conexiunile din acest plan au devenit fixe)i astfel dezavantaj prezentate de dispozitivul PAL au fost diminuate. Noul dispozitiv creat a fost patentat de ctre firma AM( Advanced Micro Device ) i poart denumirea deProgrammable Array Logic , pe scurt PAL.

    Dispozitivele PAL au un plan AND programabili un plan OR fix. Structura unui dispozitiveste prezentat n Figura.8, n care se remarc o nou deosebire fa de dispozitivele PLA: ieirile di. por ilOR pot fi conectate fie la un set de bistabile de tip D (ca in figur ), fie la un set de macrocelule logice.

    Dispozitivele de tip PLAi PAL sunt referite deseori n literatura de specialitadenumirea deSimple Programmable Logic Devices - SPLD. Aceste dispozitive au o densitate logic redusAstfel, dispozitivele SPLD au o capacitate logic de maxim 600 por i echivalente.

    Pe msur ce sistemele digitale au devenit mai complexe, a aprut nevoia unor dispozitive Pde mare densitate logic. Pe msur ce tehnologia de fabricare a circuitelor integrate a avansadezvoltat n timp dou mari categorii de dispozitive PLD.

    Prima categorie o reprezint dispozitivele de tipComplex Programmable Logic DevicesCPLD, a cror capacitate logic se situeaz, n mod uzual n jurul ordinului miilor de por i logice (dei suncteva firme care produc dispozitive CPLD cu capacitate logic de cteva sute de mii de por i logicearhitectura acestora fiind dezvoltat pe baza dispozitivelor SPLD. Alte denumiri sub care se pot refedispozitive sunt: Enhanced PLD , abreviat EPLD,Super PAL , Mega PAL , etc.Dispozitivele CPLD sunt destinate n special implementrii sistemelor digitale cu un pronunat caractcombinaional, principalele domenii de aplicaii ale acestora fiind: controlere LAN, sisteme UART, s

    Figura 8. Structura unui dispozitiv PAL

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    14/112

    13

    de interfa cu bus-uri, comparatoare, respectiv decodoare complexe de vitez mare, automate secvenialcomplexe, controlere video, etc.

    A doua categorie de dispozitive PLD este reprezentat de circuiteleField ProgrammableGate Array, abreviate FPGA, a cror arhitectur , remarcabil prin numrul foarte mare de bistabile inceste diferit de precedentele tipuri de dispozitive PLD din punct de vedere al concepiei, ceea ce permatingerea unei capaciti logice de pn la 1 milion de por i logice. Dispozitivele FPGA sunt destinspecial implementrii sistemelor digitale cu un pronunat caracter secvenial (datorit numrului mare bistabile incluse n structur ), principalele domenii de aplicaii fiind: emularea sistemelor hardwdispozitive de codarei filtrare n comunicaii, circuite aritmetice de dimensiuni mari, controlere util prelucrarea imaginilor, etc.

    Arhitectura dispozitivelor FPGA ( field programmable gate array ) este compus dintr-un set celule logice (logic cells LC) dispuse matricial, care comunic ntre ele i/sau cu celulele I/O pintermediul unor canale de rutare orizontalei verticale. Canalele de rutare conin un numr de fire interconexiune. Acestea pot fi conectate ntre ele prin intermediul unor comutatoare proArhitectura celulelor logice precumi modul n care este implementat schema de rutare variaz n funcide productor. n general, celulele logice ofer o funcionalitate mai redus dect combinaia termeni prod macrocelule, oferit de dispozitivele CPLD, dar, n cazul dispozitivelor FPGA, implementarea unlogice complexe poate fi realizat prin conectarea n cascad a celulelor logice. n figura9 este prezearhitectura generic a unui dispozitiv FPGA.innd cont de specificul arhitecturii unui dispozitiv FPgeneral, acestea sunt utilizate pentru implementarea sistemelor digitale cu un predominansecvenial, uniti de calcul, sau diferite tipuri de interfee n sisteme de comunicaie.

    Pentru a fi un produs competitiv pe pia, un dispozitiv FPGA trebuie s satisfac anumicerine. ntre acestea, cele mai importante sunt:1. performana capacitatea de a implementa sisteme digitale care s poat funciona la frecvene ridicate2. densitateai capacitatea logic capacitatea de a majora nivelul de integrare, de a implementa digitale tot mai complexe ntr-un singur cip, prin utilizarea tuturor resurselor logice disponibilei obinereastfel a unor soluii ieftine de proiectare.3. proiectare facil capacitatea de a realiza un proiect ntr-un interval de timp minim, fapt care dinstrumentul software de proiectarei de posibilitatea de a fi efectuate modificri ulterioare n proiect f r fi afectate pricipalele caracteristici legate de viteza de lucrui alocarea pinilor dispozitivului.4. programarea in-system i reprogramarea in-circuit capacitatea de a programai reprograma dispozitiv conectat ntr-un sistem.

    Satisfacerea acestor cerine de ctre dispozitivele FPGA depinde n mare msur de tehnologutilizat pentru proiectarea elementelor programabile. n prezent sunt utilizate dou tehnologii: tehnoloSRAMi antifuzibil (antifuse).

    Figura 9. Arhitectura generic a unui dispozitiv FPGA

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    15/112

    14

    Limbajul VHDL

    Limbajul VHDL a aprut la nceputul anilor 1980i este acceptat n prezent ca unul dintre celimportante limbaje standard pentru descrierea, verificareai proiectarea circuitelor electronice.

    VHDL elibereaz proiectantul de constrngerea de a folosi structuri von Neumanni i permite lucreze cu evenimente concurente n locul mainilor secveniale. Aceasta a dus la apariia unor posibilitcomplet noi pentru proiectant.

    Dou din motivele importante pentru care se utilizeaz VHDL n locul proiectrii tradiionale nivel de schem sunt : timpul mai scurt pentru dezvoltarea proiectelor electronicei ntreinerea mai simp

    VHDL a aprut ca un limbaj pentru descrierei verificare, primele simulatoare fiind dezvoltsfr itul anilor 1980. Proiectarea cu VHDL a aprut civa ani mai trziu. n prezent, toi marii productode instrumente soft de proiectare electronic suport standardul VHDL. n prezent VHDL este un lstandardizat, cu avantajul c un cod VHDL poate fi uor mutat pe diferite instrumente (platfocomerciale. Aceasta nseamn c un cod VHDL scris pentru un simulator al unui productor anume poatemutat pe simulatoarele altor productori f r a trebui s fie modificat.

    O nou posibilitate, care a schimbat lumea proiectanilor de circuite electronice, este modal prin care cteva mii (sute de miii chiar milioane n prezent) de por i i bistabili pot fi programate forma unui circuit integrat n doar cteva minute pe un singur PCi f r a fi nevoie de echipamecostisitoare. Aceasta nseamn c, plecnd de la un cod VHDL, se poate genera automat un fiier pent programarea circuitelor ; aceast metod se numete rapid prototyping.

    Scrierea de cod VHDL n locul utilizrii componentelor schematice (ex : por i logice) , reprezintnou cale de proiectare. Lucrul cu VHDL nu inseamn doar scrierea de cod, existnd faciliti pentconstruirea de ierarhiii proiectarea cu o libr rie de componente. VHDL se preteaz, de asemenea,scrierea de cod pentru circuite standard (ex: Motorola 680020) . Exist companii care vnd coduri VH pentru simularea circuitelor standard. Aceasta nseamn c o ntreag plac ce conine componente stand poate fi verificat printr-o simulare pe computer.

    Proiectarea cu VHDL presupune ca proiectantul s scrie cod VHDLi s verifice funcionareacestuia ntr-un simulator, dup care codul este sintetizat ntr-un netlist. Sinteza poate fi compa c procesul prin care un compilator transform un cod scris ntr-un limbaj de programare n cod main. hardware, codul VHDL este transpus ntr-o schem cu por i i bistabili.VHDL suport diferite metode de proiectare : top-down (de la vrf spre baz) , bottop-up (de la bspre vrf)i orice combinaie a acestora.

    Multe din produsele electronice de astzi au o durat de via mai mare de 10 anii, ca urmatrebuie s fie reproiectate de cteva ori pentru a exploata avantajele noilor tehnologii. Cea mmetod pentru a face asta este proiectarea VHDL independent de tehnologie, ceea ce permite modifitehnologiei folosind instrumente automate.

    Limbajul VHDL suport ierarhii (diagrame bloc) , componente reutilizabile, managementuli verificare. Ierarhiile sunt descrise folosind VHDL structural, procedurii funcii. VHDL structural pofi comparat cu o diagram bloc. Multe sisteme suport intr ri grafice care pot fi transferate automVHDL structural.

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    16/112

    15

    Design Compiler

    Design Compiler sintetizeaz o descriere HDL (VHDL sau Verilog) ntr-un design la nivel de poar (gatlevel) dependent de tehnologie. Folosind Design Compiler putem defini condiiile de mediu, constrngemetodologia de compilare, regulile de proiectarei libr riile int (target) pentru a ndeplini sarcini proiectare.

    Design Compiler este inima suitei de produse software pentru sintez Synopsys.Design Compiler realizeaz optimizarea, bazat pe constrngeri, a logicii secveniale i suport o madiversitate de stiluri de proiectare.

    n continuare sunt prezentate succint cteva aspecte de baz ale Design Compiler care peformarea unei imagini despre posibilitile acestuia.Procesul de sintez Design Compiler optimizeaz designul logic pentru vitez, arie i rutabilitate. Aceast optimizare erealizat pentru descrieri ierarhice ale circuitelor logice combinaionale i secveniale. Pornind de cerinele impuse asupra caracteristicilor msurabile ale circuitului, Design Compiler sintetizeaz un circu pe care l transfer ntr-o tehnologie indicat. Aceasta permite generarea de fiiere schematicsi netliscompatibile cu instrumentele CAE (computer-aided engineering) .Procesul de sintez, prezentat n figura de mai jos, urmeaz aceast schem general :- ncrcarea proiectuluii a subproiectelor (blocurilor componente) acestuia ;- specificarea caracteristicilor de proiectare pentru proiectul top-level ;- impunerea de performane de vitez i arie realistice ;- analiza check_design pentru verificarea proiectului ; identificareai corectarea tuturor erorilor ;- optimizarea proiectului cu Design Compiler ;- analiza fiierelor de raport privind constrngerile de ariei vitez, pentru a se determina dac sarcinile proiectare au fost ndeplinite ;- reoptimizarea, dup modificarea atributelor sau constrngerilor, n cazul n care sarcinile de proiau fost ndeplinite ;- generarea de rapoartei scheme suplimentare, pentru analiza aprofundat a rezultatelor

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    17/112

    16

    Stiluri de proiectareProiectele pot fi ierarhice sau plane (flat) , secveniale sau combinaionale.Formate de intrareDesign Compiler suport descrieri VHDLi Verilog ca formate de intrare pentru descrierea proiectuasemenea, Design Compiler suport formatele PLAi EDIF 200.Formate de ie ireAlturi de formatul Synopsys binar (.db) , Design Compiler suport formatele de ieire VHDL, VerilogEDIF 200. De asemenea Design Compiler suport i formatele : ecuaii. LSI, Mentor Graphics, PLA, stablei Tegas.

    Modelsim

    Modelsim, produs de Mentor Graphics, este la ora actual cel mai popular simulator HDL de pe pia. Priintermediul acestuia se pot simula att fiiere VHDL, cti fiiere Verilog. Toate fiierele din acest proiau fost simulate cu Modelsim versiunea 5.6, formele de und prezentate fiind generate de acesta.

    Leonardo Spectrum

    Leonardo Spectrum, din cadrul pachetului FPGA Advanced, este un soft de sintez semiprofesional, destn principal aplicaiilor FPGA. Dei are rezultate foarte slabe la sinteza standard cells,i dei nu genereafiiere SDF (genereaz fiere EDIF, care ns nu pot fi simulate cu Modelsim), acest soft mi-a fost dajutor pentru a testa dac codurile VHDL scrise de mine erau sintetizabile.

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    18/112

    17

    CY7C910 Microprogram Controller

    Descriere func ional CY7C910 este un microprogram controller de sine stttor care selecteaz, testeaz, stocheaz, refacmanipuleaz i testeaz adresele care controleaz secvena de execuie a instruciunilor stocate ntmemorie extern. Toate adresele sunt valori pe 12 bii care desemneaz o locaie absolut de memorie.Dup cum se vede din diagrama bloc, CY7C910 const dintr-o stiv LIFO (last in first out) de 17 locii cte 12 bii mpreun cu un indicator de stiv (stack pointer SP) , un registru/numr tor (Register/Coun pe 12 bii, un numr tor de program (Microprogram Counter MPC) , un multiplexor de 4 intri de cte bii i logica necesar pentru manipulareai controlul datelor.Operaia executat este determinat de 4 linii de instruciuni de intrare (I3 I0) care selecteaz surs(intern) urmtoarei microinstruciuni ce urmeaz a fi executat. Aceast adres este scoas la ieirile Y11Y0. Dou intr ri suplimentare (\CCi \CCEN) sunt destinate pentru a fi examinate n timpul exranumitor instruciuni, ceea ce permite utilizatorului s fac execuia unei instruciuni fie necondiionat, ficondiionat de un test extern.

    CY7C910 - diagrama bloc

    Descrierea pinilorNume I/O DescriereD0 D11 I Intr ri directe ctre RC (Register/Counter)i multiplexor.

    D0 este LSB, iar D11 este MSB\RLD I Intrare de control a RC care, atunci cnd este pe nivelul

    LOW, incarc data de pe pinii de intrare D11 D0 n RC, pe

    frontul cresctor al semnalului de ceas (CP)I3 I0 I Intr rile de instruciune care selecteaz una din cele 16

    instruciuni pentru a fi executat de CY7C910\CC I Intrare de control care, atunci cnd se afl pe nivelul LOW,

    inseamn c un test a fost trecut\CCEN I Intrare de activare a semnalului \CC. Dac este pe nivel HIGH,

    \CC este ignorati este for at trecerea testului. Dac este pe nivel LOW,starea semnalului \CC este examinat

    CP I Intrarea pentru semnalul de ceas. Toate strile interne se

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    19/112

    18

    modific pe frontul cresctor al semnalului de ceasCI I Intrare de carry pentru LSB-ul incrementorului pentru MPC\OE I Intrare de control pentru ieirile Y11 Y0. LOW pentru activarea,

    HIGH pentru dezactivarea buferelor threee-state de pe ieiri.Y11 Y0 O Ieirile de adres ctre memoria program. Y0 este LSB, iar

    Y11 este MSB\FULL O Cnd este pe nivel LOW indic faptul c stiva este plin \PL O Cnd este pe nivel LOW selecteaz registrul pipeline ca surs

    pentruintr rile directe D\MAP O Cnd este pe nivel LOW selecteaz PROM-ul mapat (sau

    PLA-ul) ca surs pentru intr rile directe D\VECT O Cnd este pe nivel LOW selecteaz vectorul de ntrerupere ca

    surs pentru intr rile directe D

    Arhitectura CY7C910CY7C910 este un microprogram controller care genereaz o secven de adrese de 12 bii care controleaexecuia unui microprogram. Adresele sunt selectate din una din cele 4 surse posibile, n fie dinstruciunea n execuie (I3 I0) i de alte semnale externe. Cele 4 surse sunt :1.intr rile D11 D0 ;2.RC (register/counter) ;3.stiva4.MPC (microprogram counter)Cte 12 linii de un bit de la fiecare din aceste 4 surse reprezint intr rile ntr-un multiplexor (dup cum svede n diagrama bloc) ale crui ieiri sunt aplicate intr rilor driverelor three-state de ieire Y11 Y0 .

    Semnalele de intrare externe : D 11 D 0 Semnalele de intrare externe sunt folosite ca surs pentru adresele destinaie n cazul instruciunilor de s(jump) i ramificare (branch) . O a doua utilizare a acestor intr ri este la ncrcarea RC-ului.

    RC (register/counter)Registrul/numr tor RC este realizat din 12 bistabili de tip D activi pe frontul cresctor al semnalului ceas. Datele de pe intr rile D sunt ncrcate sincron n RC atunci cnd semnalul de intrare pentru cncrcrii, \RLD, este pe nivel LOW. Ieirea RC este disponibil ca intrarea R a multiplexorului poate transferat la ieirile Y n timpul execuiei anumitor instruciuni, dup cum este indicat deR n tabela instruciuni.RC opereaz ca un numr tor pe 12 bii, coninutul su fiind decrementati testat dac este zero n timpinstruciunilor 8, 9i 15. Aceasta permite repetarea de pn la 4096 de ori a unor microinstruciuni. RC esconceput astfel nct, dac este ncrcat cu un numr N, secvena va fi executat de exact N+1 ori.

    Stiva i indicatorul de stiv (SP)Stiva din 17 locaii de 12 bii este utilizat pentru furnizarea adreselor de revenire din subrutine sauSP-ul indic (adreseaz) ultima dat salvat n stiv, ceea ce permite referirea la aceast dat f r a nevoie de extragerea acesteia din stiv (execuia unei instruciuni POP) .SP-ul funcioneaz ca un numr tor bidirecional care este incrementat cnd se execut o operaiune de tPUSH (instruciunile 8, 10, 11, 13 sau 15) . Operaia PUSH scrie in stiv adresa de revenire, iar operaiunePOP oterge efectiv de pe stiv. Operaia propriuzis este executat pe frontul cresctor al semnaluluiceas care urmeaz instruciunea.Stiva este iniializat prin execuia instruciunii 0 (salt la locaia zero sau reset) . De fiecare dat cnd execut o instruciune salt la subrutin(1, 5) sau de ciclare (4) , adresa de revenire este depus pe stiv, de fiecare dat cnd se execut o instruciune de revenire din subrutin sau din ciclu, adresa de revenireretras de pe stiv.

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    20/112

    19

    Cnd o subrutin apeleaz o alt subrutin sau un ciclu apare n interiorul altui ciclu (cicluri imbadncimea logic a stvei crete. Adncimea fizic a stivei este de 17 locaii. Cnd aceast adncime eatins, semnalul \FULL trece n starea LOW la urmtorul front cresctor al semnalului de ceas. Oriceoperaie PUSH asupra unei stive pline va determina ca data din vrful stivei s fie suprascris, dar nu incrementa SP-ul.Similar, executnd o operaie POP asupra unei stive goale nu va decrementa SP-i a putea determina apariia unor date f r sens la ieirile Y.

    MPC (Microprogram counter ) :

    MPC-ul const dintr-un incrementor pe 12 bii, urmat de un registru de 12 bii. n mod obinuit, registrreine adresa instruciunii n curs de execuie. Cnd instruciunile sunt executate secvenial (succesiv, udup alta dup cum se afl n memorie) , intrarea de carry (CI) ctre incrementor este pe nivel HIGHi, curmare, se adun 1 la ieirile Y ale multiplexorului, care sunt ncrcate n MPC la urmtorul front cresctoal semnalului de ceas.Cnd intrarea CI este pe nivel LOW, ieirile Y ale multiplexorului sunt Incrcate direct n MPC, astfel aceeai instruciune este extras i executat.

    Tabela de instruc iuni RESULT

    Fail\CCEN=L\CC=H

    Pass\CCEN=H\CC=L

    I3-I0 Mnemonic NameRCcon-tents

    Y Stack Y Stack

    RC Enable

    0 JZ Jump Zero X 0 Clear 0 Clear Hold PL1 CJS Cond JSB PL X PC Hold D Push Hold PL2 JMAP Jump Map X D Hold D Hold Hold Map3 CJP Cond Jump PL X PC Hold D Hold Hold PL4 PUSH Push/Cond LD CNTR X PC Push PC Push Note PL5 JSRP Cond JSB R/PL X R Push D Push Hold PL6 CJV Cond Jump Vector X PC Hold D Hold Hold Vect7 JRP Cond Jump R/PL X R Hold D Hold Hold PL

    0 F Hold F Hold Dec PL8 RFCT Repeat Loop,CNTR 0 = 0 PC Pop PC Pop Hold PL

    0 D Hold D Hold Dec PL9 RPCT Repeat PL,CNTR 0 = 0 PC Hold PC Hold Hold PL

    10 CRTN Cond Return X PC Hold F Pop Hold PL11 CJPP Cond Jump PL & Pop X PC Hold D Pop Hold PL12 LDCT LD Cntr & Continue X PC Hold PC Hold Load PL13 LOOP Test end Loop X F Hold PC Pop Hold PL14 CONT Continue X PC Hold PC Hold Hold PL

    0 F Hold PC Pop Dec PL15 TWB Three-Way Branch = 0 D Pop PC Pop Hold PL

    Introducere

    Proiectarea unui circuit integrat digital (i nu numai) presupune n primul rnd nelegeredeplin a funcionrii circuitului (a ceea ce dorete beneficiarul proiectului) .

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    21/112

    20

    Presupunnd c din datele de catalog s-a neles foarte bine funcionarea circuitului, urmtoareetap este reprezentat de descompunerea circuitului n blocuri funcionale. Aceast descompunerecircuitului are, n principal, urmtoarele motivaii :- fiecare bloc component al circuitului poate fi ncredinat cte unui proiectant, ceea ce duce la scderetimpului de proiectare fa de situaia n care ntreg proiectul ar fi ncredinat unui singur proiectant ;- detecia, localizareai corectarea erorilor de proiectare sunt mult mai facile n cazul descomcircuitului n subcircuite ;n cazul circuitului CY7C910, pentru descompunerea acestuia n subblocuri am pornit de la dia prezentat n catalog. Fa de aceast diagram bloc am f cut urmtoarele modificri :- blocurile Microprogram Counter-Registeri Incrementer au fost unite ntr-un singur bloc, numi(Microprogram Counter) , deoarece :- se reduce aria consumat : un numr tor pe 12 bii (Incrementer)i un registru de 12 bii (MicroprogrCounter-Register) sunt nlocuii cu un numr tor pe 12 bii (Microprogram Counter) .- se rezolv unele probleme de timing : datele de la intrarea blocului Incrementer modific ierea acestudup primul front activ al semnalului de ceas, iar ncrcarea datelor de la ieirea Incrementer-uluiMicroprogram Counter-Register se face pe urmtorul front activ al semnalului de ceas (apare asntrziere suplimentar de o perioad de ceas ntre aplicarea datelor pe intrarea Incrementer-uluii apariidatelor la ieirile blocului Microprogram Counter-Register, ceea ce ar da complet peste cap funionarecircuitului CY7C910) ; s-ar mai putea imagina o soluie n care Incrementer-ul ar fi activ pe frontul nal semnalului de ceas, iar Microprogram-Counter-Register-ul aer fi activ pe frontul cresctor al semnalude ceas, ns i aceast soluie ar ridica anumite probleme de timingi ar determina o scdere a frecvenemaxime de funcionare a circuitului CY7C910.- blocurile Stack Pointer i 17 Word x 12 Bit Stack au fost nlocuite cu un singur bloc, numit SIniial am ncercat s descriu separat cele dou blocuri dar, n urma simulrii post-sintez a ansambluformat cu cele 2 blocuri, am constatat funcionarea defectoas a ansamblului. Dup mai mult de 10 descrVHDL ncercate (trebuie spus c simulrile pre-sintez ar tau funcionarea corect pentru fiecare din acedescrieri), codul care a determinat funcionarea corect post-sintez corespundea cazului de stiv monoblo- apare, n plus fa de diagrama bloc prezentat n catalog, blocul INTERFATA_SURSA care, dei naduce circuitului mbuntiri din punct de vedere al ariei sau vitezei (dar nici nu le influeneaz negativuureaz scrierea codului VHDL pentru blocul INSTRUCTION DECODER.

    Diagrama bloc ob inut n urma modific rilor de mai sus

    Blocurile componente pot fi la rndul lor descompuse n alte blocuri mai micii aa mai depar pn cnd se obin blocuri suficient de mici pentru a putea fi descrise cu uurin n VHDL. n cacircuitului CY7C910 nu am considerat necesar descompunerea suplimentar a blocurilor componente,am apelat la aceast metod n cazul unor blocuri ale circuitului CY7C901.

    Dup descompunerea circuitului n blocuri funcionale, se poate trece la proiectarea fiecrui bloc parte. Pentru fiecare bloc trebuie parcurse urmtoarele etape :

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    22/112

    21

    1.scrierea unui program de test (test_bench) n VHDL, n care se precizeaz semnalele de intrare ce voaplicate blocului testati semnalele de ieire care ar trebui s fie determinate de semnalele de intrare.2.scrierea unui cod VHDL care s descrie funcionarea dorit pentru blocul proiectat ; la realizarea desVHDL trebuie avut n grij ca aceast descriere s fie sintetizabil (aceasta presupune utilizarea unei siacceptate de instrumentul de sintez) .3.compilarea codului VHDL obinut n etapa a 2-ai corectarea eventualelor erori de sintax (erorile funcionare sau logice nu pot fi evideniate n urma compilrii) ; n urma compilrii este generat o entita(entity) VHDL cu numele blocului descris ;4. entitatea generat n etapa a 3-a este simulat cu programul de test realizat n etapa 1; dac n urmsimulrii se constat o funcionare incorect a entitii, trebuie s revenim la etapa a 2-a ;5.dac simularea cu programul de test a dovedit funcionarea corect a entitii, se poate trece la sintdescrierii VHDL obinut n etapa a 2-a. n urma sintezei (realizate cu Design Compiler) sunt genfisier VHDLi un fiier SDF (Standard Delay Format) .6.se compileaz fiierul VHDL obinut n urma sintezei, iar entitatea generat n urma compilrii essimulat (cu fiierul SDF aplicat) cu programul de test de la etapa 1. Dac simularea arat o funcionarcorect, neamn c proiectarea blocului respectiv este ncheiat i c descrierea VHDL de la etapa a poate fi folosit la realizarea circuitului CY7C910; n cazul n care simularea arat o funcionare incoretrebuie s ne dm seama de cauz i s revenim la etapa a 2-a ; aceast revenire la etapa de rescriecodului VHDL poate prea ciudat ntruct simularea presintez a dovedit corectitudinea descrierii rean etapa a 2-a, ns chiar eu m-am lovit de o asemenea situaie n cazul proiectrii stivei amnunte vor prezentate cnd voi analiza proiectarea acestui bloc.

    Dup proiectarea tuturor blocurilor componente, acestea trebuie interconectate pentru mpreun funcionarea circuitului CY7C910. Aceast abordare corespunde metodei de proiectare boup.

    Package-uln cazul proiectelor de dimensiuni mari, ntlnim adesea funcii, proceduri, tipuri de date

    constante care sunt folosite n mai multe componente ale proiectului sau/i de mai muli proiectani. Dac p parcursul proiectrii se modific una din aceste funcii, proceduri sau tipuri de date, este prefera proiectul s fie modificat ntr-un singur loc, nu peste tot unde acestea au fost utilizate. Acest l

    posibil prin utilizareapackage -urilor.Package-urile sunt foarte utilei din alt motiv: posibilitatea reutilizrii codului VHDL penimplementri ulterioare ale aceluiai circuit. De exemplu, n cazul circuitului CY7C910, stiva conine 1locaii a 12 bii ; este posibil ca in viitor s se doreasc implementarea unei variante a acestui circuit das dispun, de exemplu, de o stiv cu 24 de locaii (de fapt, CY7C910 reprezint o variant mbuntitcircuitelor din familia AM2910 ; astfel AM2910 dispune de o stiv cu 5 locaii, iar AM2910A dispune stiv cu 9 locaii) sau de un bus de adrese cu limea de 16 bii (n loc de 12 bii) .

    Pentru acest proiect am conceput un package care s realizeze 2 funcii :- posibilitatea reutilizrii codului VHDL pentru implementri de variante ale circuitului CY7C91dimensiuni diferite pentru stiv sau pentru bus-ul de adrese ;- facilitarea scrierii unui cod mai uor de urmrit.

    packageCY7C910.vhd library IEEE ;use IEEE.std_logic_1164.all ;package packageCY7C910 is

    -- seciunea destinata reutilizarii codului si tipurilor de date care sunt-- folosite in mai multe blocuri ale proiectuluiconstant address_bus_width : integer := 12 ;constant stack_depth : integer := 17 ;constant zero12 : std_logic_vector(address_bus_width - 1 downto 0) := "000000000000" ;subtype mem_width is std_logic_vector (address_bus_width - 1 downto 0) ;type mem is array (stack_depth - 1 downto 0) of mem_width ;

    -- sectiunea destinata scrierii unui cod usor de urmarit

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    23/112

    22

    -- sunt definite (botezate) toate tipurile de date necesare in proiect

    -- instructiunile de selectie a MULTILPEXERconstant ZEROmux : std_logic_vector (2 downto 0) := "000" ;constant MPCmux : std_logic_vector (2 downto 0) := "001" ;constant Dmux : std_logic_vector (2 downto 0) := "010" ;constant Rmux : std_logic_vector (2 downto 0) := "011" ;constant Fmux : std_logic_vector (2 downto 0) := "100" ;

    -- instructiunile de comanda a stivei (STACK)constant Clear_s : std_logic_vector (1 downto 0) := "00" ;constant Hold_s : std_logic_vector (1 downto 0) := "01" ;

    constant Push_s : std_logic_vector (1 downto 0) := "10" ;constant Pop_s : std_logic_vector (1 downto 0) := "11" ;

    -- instructiunile de comanda a Register/Counterconstant Hold : std_logic_vector (1 downto 0) := "00" ;constant DEC : std_logic_vector (1 downto 0) := "01" ;constant Load : std_logic_vector (1 downto 0) := "10" ;

    -- insructiunile de comanda ale MPC (MicroProgram Counter)constant Clear : std_logic := '0' ;constant Count : std_logic := '1' ;

    -- instructiunile de comanda pentru INTERFATA_SURSAconstant PL : std_logic_vector (1 downto 0) := "00" ;constant Mapp : std_logic_vector (1 downto 0) := "01" ;constant Vect : std_logic_vector (1 downto 0) := "10" ;

    -- instructiunile de comanda ale CY7C910 (I3 - I0)constant JZ : std_logic_vector (3 downto 0) := "0000" ;constant CJS : std_logic_vector (3 downto 0) := "0001" ;constant JMAP : std_logic_vector (3 downto 0) := "0010" ;constant CJP : std_logic_vector (3 downto 0) := "0011" ;constant PUSH : std_logic_vector (3 downto 0) := "0100" ;constant JSRP : std_logic_vector (3 downto 0) := "0101" ;constant CJV : std_logic_vector (3 downto 0) := "0110" ;constant JRP : std_logic_vector (3 downto 0) := "0111" ;constant RFCT : std_logic_vector (3 downto 0) := "1000" ;constant RPCT : std_logic_vector (3 downto 0) := "1001" ;constant CRTN : std_logic_vector (3 downto 0) := "1010" ;constant CJPP : std_logic_vector (3 downto 0) := "1011" ;constant LDCT : std_logic_vector (3 downto 0) := "1100" ;constant LOP : std_logic_vector (3 downto 0) := "1101" ;constant CONT : std_logic_vector (3 downto 0) := "1110" ;constant TWB : std_logic_vector (3 downto 0) := "1111" ;

    -- definire de tipuri de date pt vizualizarea mai usoara a semnalelortype INSTR_type is (JZ_v, CJS_v, JMAP_v, CJP_v, PUSH_v, JSRP_v, CJV_v, JRP_v, RFCT_v,

    RPCT_v, CRTN_v, CJPP_v, LDCT_v, LOP_v, CONT_v, TWB_v, XXXX) ;type MUX_type is (ZEROmux_v, MPCmux_v, Dmux_v, Rmux_v, Fmux_v, XXX) ;type STACK_type is (Clear_v, Hold_v, Push_v, Pop_v, XXX) ;type RC_type is (Hold_v, Dec_v, Load_v, XXX) ;type MPC_type is (Clear_v, Count_v, XXX) ;type INT_S_type is (PL_v, Mapp_v, Vect_v, XXX) ;

    end packageCY7C910 ;

    Acest package, numit packageCY7C910 este salvat n fiierul packageCY7C910.vhd.Referitor la acest package trebuie s fac urmtoarea observaie: dac n cazul celor 16 instruciuni aCY7C910 lucrurile sunt destul de clare, ntruct echivalentul binar al acestora este specificat instruciuni, n cazul instruciunilor pentru blocurile componente ale circuitului apar unele problemen mod normal, ar fi trebuit ca eu doar s definesc, pentru un anume set de instruciuni, tipuli denumiracestora (de exemplu type instr_stiva is Clear_s, Hold_s, Push_s, Pop_s ; ) , iar programul de, urma optimizrii, s atribuie echivalenii binari pentru instruciuni ; din motive care mie mi scap, doaLeonardo Spectrum accept aceast sintax, pe cnd Desing Compiler genereaz erori ; ntruct principinstrument de sintez utilizat la realizarea proiectului este Design Compiler, am preferat s folose package-ul de mai sus (care funcioneaz i cu Leonardo Spectrum) , n care am atribuit valori ar pentru echivalenii binari ai semnalelor interne circuitului CY7C910.

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    24/112

    23

    INSTRUCTION_DECODER Programul de testi descrierea VHDL pentru acest bloc sunt prezentate n continuare :test_INSTRUCTION_DECODER.vhdlibrary IEEE, STD ;use IEEE.std_logic_1164.all ;use IEEE.numeric_std.all ;use IEEE.std_logic_unsigned.all ;use IEEE.std_logic_arith.all ;use work.std_logic_arith.all ;use std.textio.all ;use work.packageCY7C910.all ;entity test_INSTRUCTION_DECODER is end ;

    architecture test of test_INSTRUCTION_DECODER issignal I : std_logic_vector (3 downto 0) := "0000" ;signal nCC, nCCEN, ZERO_DET : std_logic ;signal MUX_SEL : std_logic_vector (2 downto 0) ;signal STACK_CNTL : std_logic_vector (1 downto 0) ;signal REG_CNTR_CNTL : std_logic_vector (1 downto 0) ;signal MPC_CNTL : std_logic ;signal ENABLE_CNTL : std_logic_vector (1 downto 0) ;signal test_OK : boolean := TRUE ;constant DELAY : time := 1 ns ; --DELAY_TIME ;constant T_CK : time := 10 ns ; --CK period ;component INSTRUCTION_DECODER

    port (I : in std_logic_vector (3 downto 0) ; nCC, nCCEN, ZERO_DET : in std_logic; MUX_SEL : out std_logic_vector (2 downto 0) ;STACK_CNTL : out std_logic_vector (1 downto 0) ; REG_CNTR_CNTL : out std_logic_vector (1 downto 0) ;MPC_CNTL : out std_logic ; ENABLE_CNTL : out std_logic_vector (1 downto 0) ) ;

    end component ;

    -- definire de tipuri de date pt vizualizarea mai usoara a semnalelortype INSTR_type is (JZ_v, CJS_v, JMAP_v, CJP_v, PUSH_v, JSRP_v, CJV_v, JRP_v, RFCT_v, RPCT_v, CRTN_v, CJPP_v, LDCT_v, LOP_v, CONT_v, TWB_v,XXXX) ;type MUX_type is (ZEROmux_v, MPCmux_v, Dmux_v, Rmux_v, Fmux_v, XXX) ;type STACK_type is (Clear_v, Hold_v, Push_v, Pop_v, XXX) ;type RC_type is (Hold_v, Dec_v, Load_v, XXX) ;

    type MPC_type is (Clear_v, Count_v, XXX) ;type INT_S_type is (PL_v, Mapp_v, Vect_v, XXX) ;-- definirea semnalelor pentru vizualizarea mai usoarasignal INSTRUCTION : INSTR_type ;signal MUX_SEL_v : MUX_type ;signal STACK_CNTL_v : STACK_type ;signal REG_CNTR_CNTL_v : RC_type ;signal MPC_CNTL_v : MPC_type ;signal ENABLE_CNTL_v : INT_S_type ;

    beginDUT : INSTRUCTION_DECODER port map (I, nCC, nCCEN, ZERO_DET, MUX_SEL, STACK_CNTL, REG_CNTR_CNTL, MPC_CNTL, ENABLE_CNTL) ;

    processbeginwait for T_CK ;I

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    25/112

    24

    if (nCCEN = '0' and nCC = '1') thenif (MUX_SEL = Dmux and STACK_CNTL = Hold_s and REG_CNTR_CNTL = Hold and MPC_CNTL = Count and ENABLE_CNTL = Mapp) then

    test_OK

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    26/112

    25

    if (nCCEN = '0' and nCC = '1') thenif (MUX_SEL = MPCmux and STACK_CNTL = Pop_s and REG_CNTR_CNTL = Hold and MPC_CNTL = Count and ENABLE_CNTL = PL) then

    test_OK

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    27/112

    26

    when LDCT=>if (nCCEN = '0' and nCC = '1') then

    if (MUX_SEL = MPCmux and STACK_CNTL = Hold_s and REG_CNTR_CNTL = Load and MPC_CNTL = Count and ENABLE_CNTL = PL) thentest_OK

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    28/112

    27

    process (I)begin

    if (I'event) thencase I is

    when JZ => INSTRUCTION INSTRUCTION INSTRUCTION INSTRUCTION INSTRUCTION INSTRUCTION INSTRUCTION INSTRUCTION INSTRUCTION INSTRUCTION INSTRUCTION INSTRUCTION INSTRUCTION INSTRUCTION INSTRUCTION INSTRUCTION INSTRUCTION STACK_CNTL_v STACK_CNTL_v STACK_CNTL_v STACK_CNTL_v STACK_CNTL_v MPC_CNTL_v MPC_CNTL_v MPC_CNTL_v

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    29/112

    28

    REG_CNTR_CNTL : out std_logic_vector (1 downto 0) ;MPC_CNTL : out std_logic ;ENABLE_CNTL : out std_logic_vector (1 downto 0) ) ;

    end INSTRUCTION_DECODER ;architecture RTL of INSTRUCTION_DECODER isbegin

    process (I, nCC, nCCEN, ZERO_DET)begin

    if (nCCEN = '0' and nCC = '1') thencase I is

    when JZ => MUX_SEL

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    30/112

    29

    ENABLE_CNTL

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    31/112

    30

    REG_CNTR_CNTL

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    32/112

    31

    when CONT => MUX_SEL

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    33/112

    32

    Register/Counter Programul de testi descrierea VHDL pentru acest bloc sunt prezentate n continuare :test_RC.vhd library IEEE, STD ;use IEEE.std_logic_1164.all ;use work.std_logic_unsigned.all ;use work.packageCY7C910.all ;entity test_REGISTER_COUNTER is end ;

    architecture test of test_REGISTER_COUNTER issignal CK, nRLD : std_logic := '0' ;signal CNTL : std_logic_vector (1 downto 0) ;signal CNTL_v : RC_type ; -- pt vizualizaresignal DATAIN, DATAOUT : std_logic_vector(address_bus_width - 1 downto 0) := "111000111000" ;signal DATAIN_v, DATAOUT_v : integer ; -- pentru vizualizaresignal test_OK : BOOLEAN := TRUE ;signal last_DATAIN, last_DATAOUT : std_logic_vector(address_bus_width - 1 downto 0) ;constant CK_SPER : time := 5 ns ; --semiperioada semnalului de ceasconstant DELAY : time := 3 ns ;component REGISTER_COUNTER

    port( CK, nRLD : in std_logic ; CNTL : in std_logic_vector (1 downto 0) ;

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    34/112

    33

    DATAIN : in std_logic_vector (address_bus_width - 1 downto 0) ;DATAOUT : buffer std_logic_vector (address_bus_width - 1 downto 0) ) ;

    end component ;

    beginDUT : REGISTER_COUNTER port map (CK, nRLD, CNTL, DATAIN, DATAOUT) ;CK

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    35/112

    34

    REGISTER_COUNTER.vhd

    library IEEE ;use IEEE.std_logic_1164.all ;use work.std_logic_unsigned.all ;use work.packageCY7C910.all ;entity REGISTER_COUNTER is

    port( CK, nRLD : in std_logic ; CNTL : in std_logic_vector (1 downto 0) ;DATAIN : in std_logic_vector (address_bus_width - 1 downto 0) ;DATAOUT : buffer std_logic_vector (address_bus_width - 1 downto 0) ) ;

    end REGISTER_COUNTER ;

    architecture RTL of REGISTER_COUNTER isbeginprocess (CK)

    beginif (CK'event and CK = '1') then

    case nRLD iswhen '0' =>

    DATAOUT

    case CNTL iswhen Load =>

    DATAOUT

    DATAOUT

    null ;end case ;

    end case ;end if ;end process ;

    end RTL ;

    REGEISTER_COUNTER (RTL)

    REGISTER_COUNTER (RTL)

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    36/112

    35

    n cazul acestui bloc, se observ (prima figur ) c programul de sintez a recunoscut, din codul VHDstructurile a 2 dintre macrocelule din biblioteca sa de componentei anume : decoder_2 counter_dn_sload_clock_clk_en_12 . n a doua figur sunt prezentatei arhitecturile interne ale celor dmacrocelule.

    STACK Programul de testi descrierea VHDL ale acestui bloc sunt prezentate mai jos:test_STACK.vhd library IEEE, STD ;use IEEE.std_logic_1164.all ;use work.std_logic_unsigned.all ;use work.std_logic_arith.all ;use work.packageCY7C910.all ;

    entity test_STACK is end ;

    architecture test of test_STACK is

    signal CK : std_logic := '0' ;signal nFULL : std_logic ;signal CNTL : std_logic_vector (1 downto 0) := "00" ;signal CNTL_v : STACK_type ; -- pentru vizualizaresignal DATAIN, DATAIN_pre : std_logic_vector (address_bus_width - 1 downto 0) ;signal DATAOUT : std_logic_vector (address_bus_width - 1 downto 0) ;signal test_OK : BOOLEAN := TRUE ;constant CK_HPER : time := 5 ns ;constant DELAY : time := 3 ns ;subtype vec12 is std_logic_vector (11 downto 0) ;type mem20 is array (19 downto 0) of vec12 ;signal MEMORIE : mem20 ;signal DATAOUT_pre : std_logic_vector (address_bus_width - 1 downto 0) ;signal nFULL_PRE : std_logic ;signal DATAIN_v, DATAOUT_v : integer ; -- pentru vizualizare

    component STACKport( CK : in std_logic ;

    DATAIN : in std_logic_vector (address_bus_width - 1 downto 0) ;CNTL : in std_logic_vector (1 downto 0) ;nFULL : out std_logic ;DATAOUT : out std_logic_vector (address_bus_width - 1 downto 0) ) ;end component ;

    beginDUT : STACK port map (CK, DATAIN, CNTL, nFULL, DATAOUT) ;

    process (CK)begin

    MEMORIE (0)

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    37/112

    36

    beginwait until (CK'event and CK = '0') ;DATAIN_pre

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    38/112

    37

    when others => -- Holdif (DATAOUT = DATAOUT_pre and nFULL = nFULL_pre) then

    test_OK CNTL_v CNTL_v CNTL_v CNTL_v CNTL_v

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    39/112

    38

    ram(TO_INTEGER(UNSIGNED(COUNT + 1)))

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    40/112

    39

    O asemenea descriere ar da rezultatele scontate ntr-un limbaj de programare precum C ul. n casituaia este cu totul alta. Astfel, semnalul COUNT este incrementat corect, ns n instruciuneram(TO_INTEGER (UNSIGNED (COUNT) ) )

    ..........................................ram(TO_INTEGER (UNSIGNED (COUNT + 1) ) )

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    41/112

    40

    MPC (MicroProgram Counter)Programul de testarei descrierea VHDL pentru acest bloc sunt prezentate n continuare :test_MPC.vhd library IEEE, STD ;use IEEE.std_logic_1164.all ;use work.std_logic_unsigned.all ;use work.std_logic_arith.all ;use work.packageCY7C910.all ;entity test_MPC is end ;architecture test of test_MPC issignal CK, CI : std_logic := '0' ;

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    42/112

    41

    signal MPC_CNTL : std_logic ;signal MPC_CNTL_v : MPC_type ; -- pentru vizualizaresignal DATAIN : std_logic_vector (address_bus_width - 1 downto 0) := "111000111000" ;signal DATAOUT : std_logic_vector ( address_bus_width - 1 downto 0) ;constant CK_HPER : time := 5 ns ; -- semiperioada semnalului de ceasconstant DELAY : time := 3 ns ;signal test_OK : boolean := TRUE ;signal DATAIN_v, DATAOUT_v : integer ; -- pentru vizualizarecomponent MPC

    port (CK, CI : in std_logic ;DATAIN : in std_logic_vector ( address_bus_width - 1 downto 0) ;MPC_CNTL : in std_logic ;

    DATAOUT : out std_logic_vector (address_bus_width - 1 downto 0) ) ;end component ;

    beginDUT : MPC port map (CK, CI, DATAIN, MPC_CNTL, DATAOUT) ;CLOCK : CK

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    43/112

    42

    MPC.vhd library IEEE ;use IEEE.std_logic_1164.all ;use work.std_logic_unsigned.all ;use work.packageCY7C910.all ;entity MPC is

    port (CK, CI : in std_logic ;DATAIN : in std_logic_vector ( address_bus_width - 1 downto 0) ;MPC_CNTL : in std_logic ;DATAOUT : out std_logic_vector (address_bus_width - 1 downto 0) ) ;

    end MPC ;architecture RTL of MPC isbegin

    process (CK)begin

    if (CK'event and CK = '1') thenif (MPC_CNTL = Clear) then

    DATAOUT

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    44/112

    43

    interfa a_surs Am introdus acest bloc pentru uurarea scrierii codului VHDL pentru blocul Instruction Decoder bloc are o intrare pe 2 bii care provine de la Instruction Decoder i, n funcie de valorile de pe intraactiveaz (pune pe nivel LOW) un singur semanal din cele 3 semnale de ieire (nPL, nVECT, nMAPcelelalte dou fiind dezactivate. ntruct acest bloc este foarte simplu, voi include aici doar dVHDL, programul de test putnd fi gsit pe CD-ul anexat la proiect.interfata_sursa.vhd library IEEE ;use IEEE.std_logic_1164.all ;use work.packageCY7C910.all ;entity interfata_sursa is

    port (DATAIN : in std_logic_vector (1 downto 0) ;nPL, nMAP, nVECT : out std_logic) ;end interfata_sursa ;architecture RTL of interfata_sursa isbegin

    process (DATAIN)begin

    case DATAIN iswhen PL =>

    nPL

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    45/112

    44

    Blocurile MULTIPLEXER, ZERO_DETECTOR i TS_BUFFER sunt simplei nu ridic problemdeosebite. Prin urmare, voi prezenta doar descrierile VHDL corespunztoare acestor blocuri, programeltest putnd fi gsite pe CD-ul anexat proiectului.MULTIPLEXER.vhdlibrary IEEE ;use IEEE.std_logic_1164.all ;use work.packageCY7C910.all ;entity MULTIPLEXER is

    port (D, R, F, MPC : in std_logic_vector (address_bus_width - 1 downto 0) ; MUX_SEL : in

    std_logic_vector (2 downto 0) ;MUXOUT : out std_logic_vector (address_bus_width - 1 downto 0) ) ;end MULTIPLEXER ;architecture RTL of MULTIPLEXER isbegin

    process (D, R, F, MPC, MUX_SEL)begin

    case MUX_SEL iswhen Dmux => MUXOUT MUXOUT MUXOUT MUXOUT MUXOUT

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    46/112

    45

    MULTIPLEXER (RTL) TS_BUFFER (RTL)

    MULTIPLEXER forme de und

    CY7C910Blocurile funcionale descrise anterior trebuie asamblate astfel nct mpreun s aib funcionalitatecircuitului CY7C910. Codul VHDL care ralizeaz aceast asamblare este prezentat n continuare :CY7C910.vhdlibrary IEEE ;use IEEE.std_logic_1164.all ;use work.packageCY7C910.all ;entity CY7C910 is

    port (D : in std_logic_vector (address_bus_width - 1 downto 0) ;nRLD : in std_logic ;I : in std_logic_vector (3 downto 0) ;nCC :in std_logic ;nCCEN : in std_logic ;CP : in std_logic ;CI : in std_logic ;nOE : in std_logic ;Y : out std_logic_vector (address_bus_width - 1 downto 0) ;nFULL : out std_logic ;nPL : out std_logic ;nMAP : out std_logic ;nVECT : out std_logic) ;

    end CY7C910 ;architecture structural of CY7C910 issignal Y_BUS, MPC_BUS, F_BUS, R_BUS : std_logic_vector(address_bus_width - 1 downto 0);signal STACK_CNTL : std_logic_vector (1 downto 0) ;

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    47/112

    46

    signal MPC_CNTL : std_logic ;signal MUX_CNTL : std_logic_vector (2 downto 0) ;signal RC_CNTL : std_logic_vector (1 downto 0) ;signal ZERO_DET : std_logic ;signal SURSA_DET : std_logic_vector (1 downto 0) ;

    -- declararea blocurilor componentecomponent INSTRUCTION_DECODER

    port (I : in std_logic_vector(3 downto 0) ; nCC, nCCEN, ZERO_DET : in std_logic;MUX_SEL : out std_logic_vector(2 downto 0) ; STACK_CNTL : out std_logic_vector(1 downto 0);REG_CNTR_CNTL : out std_logic_vector (1 downto 0) ; MPC_CNTL : out std_logic ;ENABLE_CNTL : out std_logic_vector (1 downto 0) ) ;

    end component ;component MPC

    port (CK, CI : in std_logic ; DATAIN : in std_logic_vector ( address_bus_width - 1 downto 0) ;MPC_CNTL : in std_logic ; DATAOUT : out std_logic_vector(address_bus_width - 1 downto 0) );

    end component ;

    component MULTIPLEXERport (D, R, F, MPC : in std_logic_vector (address_bus_width - 1 downto 0) ;

    MUX_SEL : in std_logic_vector (2 downto 0) ;MUXOUT : out std_logic_vector (address_bus_width - 1 downto 0) ) ;

    end component ;

    component REGISTER_COUNTERport (CK, nRLD : in std_logic ; CNTL : in std_logic_vector (1 downto 0) ;

    DATAIN : in std_logic_vector (address_bus_width - 1 downto 0) ;DATAOUT : buffer std_logic_vector (address_bus_width - 1 downto 0) ) ;

    end component ;

    component STACKport(CK : in std_logic ; DATAIN : in std_logic_vector(address_bus_width - 1 downto 0);

    CNTL : in std_logic_vector (1 downto 0) ;nFULL : out std_logic ;DATAOUT : out std_logic_vector (address_bus_width - 1 downto 0) ) ;

    end component ;

    component TS_BUFFERport (DATAIN : in std_logic_vector(address_bus_width - 1 downto 0); nOE : in std_logic;

    DATAOUT : out std_logic_vector (address_bus_width - 1 downto 0) ) ;end component ;

    component interfata_sursaport(DATAIN : in std_logic_vector(1 downto 0) ; nPL, nMAP, nVECT : out std_logic); end component ;

    component ZERO_DETECTOR

    port(DATAIN : in std_logic_vector(address_bus_width - 1 downto 0) ; DATAOUT : out std_logic);end component ;

    begin-- Instan ierea blocurilor componente

    INSTR_DEC : INSTRUCTION_DECODER port map (I, nCC, nCCEN, ZERO_DET, MUX_CNTL, STACK_CNTL, RC_CNTL,MPC_CNTL, SURSA_DET) ;MPC_i : MPC port map (CP, CI, Y_BUS, MPC_CNTL, MPC_BUS) ;MUX_i : MULTIPLEXER port map (D, R_BUS, F_BUS, MPC_BUS, MUX_CNTL, Y_BUS) ;RC_i : REGISTER_COUNTER port map (CP, nRLD, RC_CNTL, D, R_BUS) ;ZERO_i : ZERO_DETECTOR port map (R_BUS, ZERO_DET) ;STACK_i : STACK port map (CP, MPC_BUS, STACK_CNTL, nFULL, F_BUS) ;TSB_i : TS_BUFFER port map (Y_BUS, nOE, Y) ;INTF_SURSA : interfata_sursa port map (SURSA_DET, nPL, nMAP, NVECT) ;

    end structural ;

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    48/112

    47

    Sinteza circuitului CY7C910

    Dup ce am realizat descrierea VHDL pentru circuitul CY7C910i, n urma simulrilor, m-amconvins de corectitudinea acesteia, trebuie realizat sinteza acestei descrieri VHDL.

    Trebuie s precizez c n aceast lucrare nu mi-am propus s aprofundez metodele de optimiza procesului de sintez, ntruct sinteza este un domeniu cu totul diferit de scrierea de cod VHDLsintez. nvarea temeinic a tehnicilor de sintez necesit o perioad de timp ndelungat, iar, n cadrfirmelor din domeniu, scrierea codului VHDLi sinteza acestui cod sunt activiti separate, realizate persoane diferite.

    Ceea ce am dorit eu, prin sinteza codului VHDL, a fost s m conving c acest cod VHDL este nadevr sintetizabili c circuitul generat de programul de sintez se comport conform ateptrilor.

    Sinteza circuitului CY7C910 am realizat-o cu programul Design Compiler din cadrul pac programe Synopsys.

    Pentru realizarea sintezei este nevoie, n primul rnd, de fiiere tehnologice. Sinteza circuitCY7C910 am realizat-o ntr-o tehnologie de 0.35 m, fiierele tehnologice folosite fiin :- tcb773pwc.db biblioteca de celule de CORE (standard cells) ;- tcb773p.sdb biblioteca de simboluri pentru componentele din biblioteca de celule standard ;- tcb773p.v fiier Verilog care conine descrierile Verilog ale componentelor din biblioteca de standard ; acest fiier nu este folosit la sintez, ci la simularea postsintez ;

    Apoi, n fiierul .synopsys_dc.setup de configurare a programului de sintez trebuie indicate cilectre fiierele tehnologice, precumi alte reguli care trebuie respectate la sintez..synopsys_dc.setup /* Setari pentru tehnologia TSMC035 - tcb773p - Worst Case *//* tcb773pwc.db este biblioteca de celule de CORE (standard-cells) */designer = "Ieremie Ionut"company = "ETC"

    search_path = { ., synopsys_root + /libraries/syn}search_path = {scripts} + search_path

    hdlin_translate_off_skip_text = TRUE

    link_library = {"*" tcb773pwc.db}target_library = {tcb773pwc.db}symbol_library = {tcb773p.sdb}default_schematic_options = "-size infinite"define_design_lib work -path work

    /* CACHE directory settings */cache_write = ./cachecache_read = ./cachecache_write_info = "false"cache_read_info = "false"

    /* Site Specific Variables */synthetic_library = {C:/Synopsys/libraries/syn/standard.sldb}command_log_file = "./command.log"view_command_log_file = "./view_command.log"plot_command = "lpr -Plw"text_print_command = "lpr -Plw"

    /* enable Text Viewer feature */hdlin_source_to_gates_mode = "off"hdlin_report_inferred_modules = "verbose"

    /* Synopsys to Compass EDIF interface */edifin_ground_name = "VSS"edifin_ground_net_name = "VSS"edifin_ground_net_property_name = "global"edifin_ground_net_property_value = "VSS"edifin_ground_pin_name = "VSS"edifin_ground_port_name = "VSS"edifin_netlist_only = "true"edifin_power_name = "VDD"edifin_power_net_name = "VDD"edifin_power_net_property_name = "global"

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    49/112

    48

    edifin_power_net_property_value = "VDD"edifin_power_pin_name = "VDD"edifin_power_port_name = "VDD"edifin_power_and_ground_representation = "net"edifout_ground_name = "VSS"edifout_ground_net_name = "VSS"edifout_ground_net_property_name = "global"edifout_ground_net_property_value = "VSS"edifout_ground_pin_name = "VSS"edifout_ground_port_name = "VSS"edifout_netlist_only = "true"edifout_no_array = "true"

    edifout_power_name = "VDD"edifout_power_net_name = "VDD"edifout_power_net_property_name = "global"edifout_power_net_property_value = "VDD"edifout_power_pin_name = "VDD"edifout_power_port_name = "VDD"edifout_power_and_ground_representation = "net"write_name_nets_same_as_ports = "true"compile_fix_multiple_port_nets = "true"verilogout_no_tri = "true"

    include TSMC_naming_rule.script

    /* change_names -rules asic_core_rules -verbose -hierarchy */

    Apoi, pentru realizarea sintezei, se realizeaz un script, compile.scr, n care sunt grudirectivele de sintez.compile.scr design = CY7C910

    analyze -library work -format vhdl sources/packageCY7C910.vhdanalyze -library work -format vhdl sources/INSTRUCTION_DECODER.vhdanalyze -library work -format vhdl sources/interfata_sursa.vhdanalyze -library work -format vhdl sources/MPC.vhdanalyze -library work -format vhdl sources/MULTIPLEXER.vhdanalyze -library work -format vhdl sources/REGISTER_COUNTER.vhdanalyze -library work -format vhdl sources/Stack.vhdanalyze -library work -format vhdl sources/TS_BUFFER.vhdanalyze -library work -format vhdl sources/ZERO_DETECTOR.vhdanalyze -library work -format vhdl sources/ + design + ".vhd"elaborate -library work design

    set_wire_load_model -library tcb773pwc -name TSMC16K_Conservativeset_wire_load_mode enclosed

    create_clock -name CLK -period 20 -waveform { 0 5 } { CP }

    set_output_delay 12 -clock CLK all_outputs()set_dont_touch_network { CLK }group_path -name fromI -from { I }group_path -name fromnCC -from { nCC }group_path -name fromnCCEN -from { nCCEN }group_path -name fromCI -from { CI }

    compile -map_effort highcreate_schematic -all

    report -area > "reports/" + design + "_area_report.txt"report -timing > "reports/" + design + "_timing_report.txt"

    check_designcheck_timing

    write -f db -hier -o "db/" + design + "_mapped.db"write_sdf "netlist/" + design + "_mapped.sdf"write -format vhdl -hierarchy -output "netlist/" + design + "_mapped.vhd"write -format verilog -hierarchy -output "netlist/" + design + "_mapped.v"

    n urma sintezei sunt generate urmtoarele fiiere :- CY7C910_mapped.vhd descrierea VHDL a circuitului implementat cu celule standard programul de sintez ;

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    50/112

  • 8/7/2019 VHDL pentru sinteza - Ionut Ieremie 2003 - Licenta ETC Iasi

    51/112

    50

    Startpoint: CI (input port)Endpoint: MPC_i/DATAOUT_reg[11]

    (rising edge-triggered flip-flop clocked