Kotisivulle

Prosessorin artikkelit

VHDL, logiikkasuunnittelijan ohjelmointikieli

Otsikkokuva


Pätevä työkalu Alteran ohjelmoitavien piirien suunnitteluun

Alteran Max+Plus II on sopiva ohjelmisto ensimmäisiä EPLD-piirejään suunnittelevalle. Se on tehty helppokäyttöiseksi ja automatiikka hoitaa kytkennän sovittamisen piirille. Kokeneen käyttäjän käsissä se pystyy silti hyödyntämään Alteran piirien kaikki ominaisuudet.

Amerikkalainen Altera on Xilinxin ja Actelin ohella suurimpia ohjelmoitavien logiikkapiirien valmistajia. Näistä ainoana Altera kehittää itse suunnittelutyökalut omille piireilleen. Ohjelmistot tukevat siten selkeästi piirien myyntiä.

Max+PLus II on pyritty tekemään mahdollisimman helppokäyttöiseksi, jotta uusien käyttäjien aloituskynnys ohjelmoitavien piirien suunnitteluun olisi matala. Ohjelmistossa on kuitenkin runsaasti kasvunvaraa ja hyödyllisiä ominaisuuksia myös kokeneille logiikkasuunnittelijoille.

Luonnollisesti ohjelmistolla voidaan hyödyntää myös kaikkein uusimpien Alteran piirien erikoisominaisuuksia. Uusimmassa versiossa onkin täysi tuki Alteran Inteliltä ostamalle FLASHLogic- ja tuoreelle FLEX10K -piiriperheille.

Liitännät muihin järjestelmiin ovat parantuneet huimasti EDIF-liitännän, LPM-parametrifunktioiden, SDF:n, VHDL:n ja Vital-tuen asiosta. Max+Plus:aa voidaan käyttää joustavasti yhdessä Mentorin, Synopsyksen ja ViewLogicin FPGA-ohjelmistojen kanssa.

Vain CD-ROMilla

Tämän vuoden maaliskuusta lähtien Altera toimittaa ohjelmistonsa ainoastaan CD-ROM:eilla. Samalla rompulla tulevat sekä PC-versiot että Unix-versiot Sunin HP:n ja IBM työasemille ja lisäksi tuki Mentor, Synopsys ja ViewLogic-ympäristöihin, kaikkiaan 250 megatavua tiedostoja. Säästöt ohjelmien ja päivityksien jakelussa ovat merkittäviä korpputoimituksiin verrattuna.

Max+Plus II:n uusin versio on saatavilla kaikkiin Windowsin versioihin, 3.11, 95 ja NT. Asennusohjelma on älykäs, se hoitaa koko asennuksen automaattisesti, kysyen vain asennushakemiston käyttäjältä. Tarvittavat ajurit ladataan koneen käyttöjärjestelmän mukaan. Aikaa kuluu vaivaiset viisi minuttia. Täysi asennus vie levytilaa noin 60 megatavua.

Ohjelmiston mukana tulee "Getting Started"-opaskirja ja AHDL-käsikirja. Muu dokumentointi löytyy levylle asentuvasta yksityiskohtaisesta käsikirjasta. Siinä on selkeä sisällysluettelo, tarkka sanahakemisto, runsaasti hypertekstiviittauksia ja ohjeita ohjelmoitavien piirien suunnitteluun. Virheilmoitukset ja huomautukset viittaavat myös suoraan käsikirjan oikealle sivulle.

Suuri mutta hyvätapainen

Ohjelma sisältää kaikki nykyaikaiset ominaisuudet, työkalupalkit, kelluvat valikot, vaihtuvat menut, vihjerivit ja monipuoliset opasteet. Silti ohjelma toimii jouheasti eikä rohmua kaikkia käyttöjärjestelmän resursseja kokonaan käyttöönsä. Alteran suunnittelijat tietävät, miten hyvin käyttäytyvä ja tehokas Windows-ohjelma pitää tehdä.

Muistin tarve riippuu suunniteltavan piirin koosta. Max+Plus II vaatii toimiakseen vähintään 32 megatavua virtuaalimuistia, siis RAM-muistia ja heittolevytilaa yhdessä. Pieniä piirejä piirikaavioilla suunniteltaessa 16 megatavua RAM-muistia riittää hyvin, mutta VHDL-käännökset vaativat silloin jo runsasta heittolevyn käytöä.

Suositeltava RAM-muistin määrä onkin 32 megatavua ja lisäksi vielä runsaasti heittolevytilaa. Synteesi suurimmille piireille saattaa vaatia reilusti yli sata megatavua virtuaalimuistia.

Suuresta muistin tarpeestaan huolimatta Max+Plus käyttäytyy moniajossa hyvin yhteistyökykyisesti luovuttaen suosiolla ajovuoron muillekin ohjelmille. Jopa perinne-Windowsin vaatimaton moniajo toimii siedettävästi pitkien käännöksien ja synteesien aikana.

Moniajo toimii hyvin myös Max+Plus:n sisällä. Käännösten aikana voi esimerkiksi valmistella herätteitä simulointia varten tai editoida tiedostoja. Kääntäjä lukitsee automaattisesti toiminnot, joita ei voi suorittaa taustakäännöksen aikana.

Vaihtoehtoja kytkennän syöttöön

Kytkentöjen syöttö Max+Plus:aan voidaan tehdä hyvin monella eri tavalla. Ne voidaan piirtää piirikaaviona, kirjoittaa Alteran omalla AHDL-kuvauskielellä tai VHDL:llä. Lisäksi lohkojen toiminta on mahdollista määritellä aaltomuotokaavioina tai tilakoneina. Muissa järjestelmissä tehtyjä piirikaavioita voidaan lukea suoraan OrCADin piirikaaviotiedostoina tai EDIF- ja Xilinx-vetolistoina.

Valmiista logiikkakytkennästä on vielä pitkä tie valmiiksi ohjelmoituun logiikkapiiriin. Tarvitaan käännökset (Compiler), vetolistojen muodostaminen (Netlist Extractor), tietokannan rakentaminen (Database Builder), synteesi (Logic Synthesizer), paloittelu (Partitioner), sovitus (Fitter), simulaattorin tietokannan muodostaminen (SNF Extractor) ja lopulta vielä ohjelmointitiedostojen kirjoitus (Assembler). Lisäksi voidaan tarkkailla suunnittelusääntöjä (Design Doctor), analysoida viiveitä ja suorituskykyä (Timing Analyzer) tai tulostaa lopullinen vetolista useissa eri muodoissa (Netlist Writer).

Ohjelma pystyy onneksi suorittamaan kaikki nämä toimenpiteet kokonaan automaattisesti, haluttaessa jopa piirityypin ja nastojen valintaa myöten. Toisaalta kokenut ja vaativa käyttäjä pystyy runsaiden räätälöintimahdollisuuksen avulla vaikuttamaan monipuolisesti lopputulokseen.

Kytkennät tietokantaan

Valmis kytkentä on "käännettävä" ohjelmiston ymmärtämään esitysmuotoon vetolistaksi ennen sen jatkokäsittelyä. Käännöksen jälkeen kytkennän esitysmuoto ohjelman sisäisessä tietokannassa on sama syöttötavasta riippumatta. VHDL-koodin kääntäminen on tietysti suurempi työ ja kestää huomattavasti kauemmin kuin piirikaavion kääntäminen.

Kääntäjä tarkistaa aluksi kytkennän piirustusteknisen tai syntaktisen virheettömyyden. Virheistä annetaan selkeät virheilmoitukset omaan ikkunaansa. Kaikista projektiin kuuluvista hierarkisista lohkoista muodostetaan binääriset vetolistatiedostot ja yksi "tasoitettu" vetolista sisäiseen tietokantaan.

Logiikkasynteesi muodostaa valitun piiriperheen makrolohkoista tietokannan vetolistaa vastaavan logiikkakytkennän. Synteesi pyrkii täyttämään sille annetut vaatimukset ajoituksen ja tilankäytön suhteen. Se myös minimoi logiikan määrän poistamalla kytkennästä kaikki käyttämättömät portit. Siten esimerkiksi 74-sarjan logiikkapiirien makrolohkoja voi käyttää tuhlailevasti, jättämällä portteja tai lähtöjä käyttämättä. Lopullinen piiri sisältää vain todella käytössä olevat osat piirisymboleista.

Räätälöitävä synteesi

Synteesin ohjausta varten on melkoinen joukko optioita ja lisäksi kolme valmista "reseptiä" erilaisia tarkoituksia varten. Suurella kellotaajuudella toimivissa piireissä voidaan pyrkiä pieniin viiveisiin tilankäytön kustannuksella. Jos kytkentä halutaan sovittaa mahdollisimman pienellä piirille, tilantarve optimoidaan nopeuden kustannuksella.

Jos kytkentä ei sovi yhdelle piirille, Max+Plus osaa jakaa sen automaattisesti tai käyttäjän ohjaamana useammalle saman piiriperheen komponentille. Jako tapahtuu siten, että piirien väliset kytkennät minimoidaan.

Vasta näiden alkuvaiheiden jälkeen syntesoitu logiikka sovitetaan valittuun piiriin. Sovitin (Fitter) pyrkii sijoittelemaan logiikan piirin makrolohkoihin siten, että lohkojen välinen johdotus on mahdollisimman yksinkertainen. Se vastaa siten tavanomaista piirilevyn suunnittelua, mutta tapahtuu nyt ohjelmoitavan piirin pinnalla.

Lattiatason suunnittelua

Myös sovittimen toimintaa voidaan ohjata asetuksilla tai interaktiivisella sijoittelueditorilla (Floorplan Editor). Käytännössä tavallisinta on nastajärjestyksen räätälöinti. Asiantunteva käyttäjä voi jopa tehdä osan sijoittelusta itse, esimerkiksi aikakriittisten lohkojen nopeuden optimoimiseksi.

Käyttäjän tekemät viritykset sijoitteluun vaikeuttavat sovittimen toimintaa. Kiinteä nastajärjestys voi tehdä sovituksen mahdottomaksi, jos piirin täyttöaste on korkea ja reititysmahdollisuudet eivät riitä. Jos piirille tulee myöhemmin muutoksia tai lisäyksiä, sen koko kannattaa valita jo alussa reilusti todellista tarvetta suuremmaksi.

Simulointia varten tarvitaan oma tietokanta, jossa on kaikki kytkennän solmut. Toiminnallisen simulaattorin tietokanta muodostetaan ennen synteesiä, joten se ei sisällä ajastustietoja. Ajastussimuloinnin tiedot talletetaan vasta synteesin jälkeen, joten se sisältää optimoidun ja piirille sovitetun kytkennän todelliset viiveet.

Assembler muodostaa fitterin tuottamasta sijoittelusta piirin ohjelmointitiedoston. Alteran oman ohjelmointilaitteen lisäksi tuetaan muiden valmistajien laitteiden standarditiedostotyyppejä. Uusimmat Alteran piirityypit eivät tarvitse lainkaan ohjelmointilaitetta, vaan ne voidaan ohjelmoida suoraan piirilevyllä JTAG-nastojen kautta. Tähän tarvitaan erityinen välikaapeli tietokoneen sarjaliitännästä piirilevylle. Ohjelmointi piirilevyllä on erityisen kätevää suunnitteluvaiheessa ja testauksessa.

Hierarkia kuntoon

Tuhansia portteja sisältäviä ohjelmoitavia piirejä ei tekaista noin vain hetken inspiraatiosta. Huolellinen lohkotason suunnittelu säästää paljon aikaa ja turhaa työtä projektin kuluessa.

Järjestelmän logiikka on jäsennettävä pieniin ja helposti hallittaviin paloihin. Palasen koko on sopiva, kun sen kytkennän tai kuvauksen voi esittää yhdellä A4-kokoisella sivulla. Näin jaoteltu järjestelmän hierarkinen lohkokuvaus on helppo jakaa useammankin suunnittelijan työksi. Samalla koko projekti on jaettu osiin, joiden aikataulu voidaan arvioida luotettavasti.

Max+Plus:aa voidaan käyttää tämän esisuunnittelun apuvälineenä. Jokaiseen lohkoon piirretään näkyviin ainoastaan liitäntäsignaalit ja siinä käytettävien alempien lohkojen symbolit. Tuloksena on koko projektin hierarkinen kytkentäkaavion aihio, jossa on näkyvissä lohkojen väliset liitäntäsignaalit. Jo tässä vaiheessa voidaan alustavasti arvioida tarvittavan piirin kokoa.

Helppokäyttöinen piirikaavio

Piirikaavioeditori muistuttaa käytöltään suuresti OrCadin tai PSpicen piirikaavio-ohjelmia. Symbolit valitaan kirjastoista nimen perusteella. Valittavina ovat geneeriset portti- ja kiikkutyypit, tutut 74-sarjan piirien symbolit tai makrofunktiot. Viimemainittujen tarkat kuvaukset löytyvät levyllä sijaitsevasta käsikirjasta.

Väylät piirretään leveämmällä viivalla, mutta ne ovat ainoastaan graafinen tehokeino. Signaalit kytkeytyvät toisiinsa pelkästään nimien perusteella, riippumatta siitä mihin väylään ne on piirretty kuuluviksi.

Simulointia viiveillä tai ilman

Max+Plus:ssa on kaksi erilaista simulointimahdollisuutta. Toiminnallinen simulointi ei ota huomioon piirielementtien ajoitusparametrejä, ainoastaan loogisen toiminnan. Se ei siis paljasta porttiviiveistä aiheutuvia toimintavirheitä, mutta suunnittelun loogiset virheet ja puuttuvat tai väärin piirretyt signaalit löytyvät helposti.

Jokaisen lohkon toiminta kannattaa varmistaa toiminnallisella simuloinnilla ennen sen käyttöä muun kytkennän osana. Suunnitteluvirheet ja kömmähdykset löytää helpoimmin tuoreeltaan.

Ajoitussimuloinnissa on mukana kaikki logiikkaelementtien ja sisäisen johdotuksen viiveet. Tämä simulointi paljastaa armotta piilevät ajastusvirheet, häiriöpiikit ja kilpatilanteet.

Ajoitussimulointia varten logiikka täytyy sovittaa halutulle piirityypille. Ensimmäisissä simuloinneissa kannattaa valita vain käytettävä piiriperhe, ja antaa ohjelman valita automaattisesti sopivan kokoinen piiri ja sen nastajärjestys. Tavallisesti tämä johtaa tilankäytöltään optimaaliseen tuloksen.

Herätteet helposti

Testisignaalit (herätteet) määritellään ennen simuloinnin aloittamista aaltomuotoeditorilla (Waveform Editor). Signaalien nimet poimitaan kääntäjän tuottamasta simulointitietokannasta.

Signaaleille voidaan valita havainnollisen esitysmuoto. Joukko yksittäisiä signaaleja voidaan koota ryhmäksi ja esittää sen tila desimaalisena, binäärisenä, oktaali- tai heksadesimaalilukuna. Signaalin tila voi myös olla X tai Z.

Herätesignaalien tilat muodostetaan interaktiivisesti. Kellosignaalit ja laskurit määritellään helposti antamalla jaksonaika, alkutila ja laskureille askeleen suuruus. Muut jaksolliset signaalit muodostetaan repeat-komennon avulla tai leikkaa/liimaa-toiminnoilla.

Aaltomuototiedostoon otetaan mukaan myös ne signaalit joiden käyttäytymistä halutaan tutkia. Niille ei määritellä aaltomuotoa, vaan simulaattori tulostaa sen simuloinnin aikana. Kaikki sisäiset kytkennät ovat käytettävissä testaukseen. Tärkeät testipisteet löytyvät helpommin simulattorin tietokannasta, kun niille on anntettu selkeä nimi Probe-toiminnolla.

Mutta miten käy Alteralta VHDL?

Altera on kehittänyt VHDL-tukeaan verkkaisesti ja on suosinut oman AHDL-kielensä käyttöä. AHDL on tehokas kieli, joka on optimoitu nimenomaan ohjelmoitavien piirien suunnitteluun. Sillä kirjoitetut kuvaukset eivät kuitenkaan ole siirrettävissä mihinkään muuhun järjestelmään. VHDL:n käyttäjien on sitävastoin suhteellisen helppoa siirtää kytkentä kilpailijan piireille, jos nämä sattuvat tarjoamaan hinnallisesti tai teknisesti edullisemman vaihtoehdon.

Alteran VHDL-toteutus aika rajoittunut, se kattaa vain synteesikelpoiset kielen piirteet. Sillä ei siis voi tehdä käyttäytymismalleja tai testipenkkejä. Kokonaan puuttuu varsinainen VHDL-simulaattori, jolla koodia voisi suorittaa rivin kerrallaan ja samalla monitoroida muuttujien ja signaalien arvoja. Max+Plus:lla koodin toimintaa voidaan tutkia vain simulaattorin tuloksista.

Uudessa versiossa on kaikki standardin mukaiset muuttujatyypit ja tarvittavat tyypinmuunnokset. Valitettavasti LPM-funktioita ei vielä tueta. Siksi esimerkiksi kaksisuuntainen väyläliitäntä piirin nastoihin täytyy vielä toteuttaa piirikaavion avulla.

VHDL-kääntäjä löytää selvät syntaksivirheet nopeasti ja antaa niistä selkeät virheilmoitukset. Muut kääntäjän virheilmoitukset ovatkin sitten vain viittauksia VHDL-standardiin. Aloittelevalla käyttäjällä virheen todellinen syy jää helposti arvailujen varaan. Toivottavasti VHDL:ään saadaan pian yhtä tarkat ja seikkaperäiset virheilmoitukset kuin AHDL:ssä jo on.

Piirikaavio kaikille, VHDL kokeneille

Puutteistaan huolimatta Alteran nykyinen VHDL-toteutus on aivan käyttökelpoinen. Aloitteleva VHDL-virtuoosi ajautuu tosin helposti umpikujaan rajoitusten ja puutteiden kanssa. Mutta Max+Plus ei jätä käyttäjäänsä pulaan, lohkon voi aina toteuttaa myös piirikaaviolla tai AHDL:llä.

Max+Plus tarjoaa monia vaihtoehtoja piirisuunnitteluun. Piirikaavioita, lausekieliä, EDIF-tiedostoja ja aaltomuotokuvauksia voi kaikkia käyttää sekaisin samassa projektissa. Lohkon toteutustapa voidaan valita sen mukaan, mikä on luontevin ja selkein kyseiseen lohkoon.

Tilakoneita, aritmetiikkaa ja suuria valitsimia sisältävät kytkennät on helpointa ja havainnollisinta toteuttaa lausekielellä. Valmiiden makrofunktioden käyttö on usein helpointa piirikaavion kanssa, samoin piirin liitäntänastoihin liittyminen. Mikään ei kuitenkaan estä tekemästä vaikka koko piirin kuvausta kokonaan lausekielellä.

Liikkuva maali

Ohjelmoitavien piirien suunnitteluohjelmat ovat hyvin monimutkaisia ja kehittyvät yhdessä suunnittelun kohteina olevien piirien kanssa vinhaa vauhtia. Ne sisältävät aina joukon virheitä ja puutteita, jotka seuraavassa versiossa on korjattu (tai korvattu uusilla virheillä). Maahantuojan tekninen tuki Suomessa pystyy neuvomaan väistämättä eteen tulevissa pulmissa, ja valmistajan datakirjoista ja www-sivuilta löytyy runsaasti sovellustietoja.

Max+Plus soveltuu hyvin aloitteleville PLD-suunnittelijoille. Ensimmäiset piirit syntyvät helpoimmin ohjelman oletusarvojen ja automatiikan avulla. Kokemuksen karttuessa suunnittelija pystyy monien erikoisominaisuuksien avulla vaikuttamaan tarkemmin lopputulokseen ja käyttämään eri piiriperheiden ominaisuuksia hyödyksi.

Haittana on sitoutuminen yhden valmistajan piirien käyttöön. VHDL:n käyttö suunnittelussa ja hyvät liitynnät muihin järjestelmiin helpottavat kytkentöjen vapaata liikkumista järjestelmästä ja piirityypistä toiseen.

Kuvat

Otsikkokuva

Virheilmoitukset voidaan paikantaa helposti lähdetiedostoon, simulaattorin aaltomuotonäyttöön tai sijoittelueditorin kaavioon painamalla "Locate"-painiketta. "Help on Message"-näppäin antaa virheilmoituksesta lisätietoja käsikirjan sivuilta.

Tekstieditori tuntee VHDL-syntaksin ja värittää kielen avainsanat, vakiot, kommentit ja muuttujat havainnollisesti eri värein. Näin esimerkiksi lainaus- tai heittomerkin puuttumisen huomaa heti.

LPM-funktiot (Library of Parametrized Modules) ovat stardardisoituja kirjastofunktioita, joita voidaan käyttää kuten tavallisia komponenttejakin. Kuvassa on monipuolinen kertolaskumoduli ja sen parametrien määrityslomake. Väylien leveydet, ohjaussignaalit ja niiden polariteetit ovat määriteltävissä tapauskohtaisesti.

Simulaattorin herätteet tehdään aaltomuotoeditorilla. Signaalit poimitaan tietokannasta. Myös kaikki sisäiset kytkentäpisteet ovat käytettävissä testaukseen. Hyödylliset testisignaalit kannattaa nimetä, sillä synteesin antamat nimet eivät ole kovin havainnollisia.

Layout Editorilla voi määritellä haluamansa nastajärjestyksen kätevästi. Kuvassa on juuri komennettu hiirellä TESTI-signaali sijoitettavaksi piirin nastaan 1.

Ohjelmatiedot

Altera MAX+PLUS II, versio 6.0Peruspaketti PLS-ES: piirikaavio, AHDL, synteesituki ja kirjastot MAX 7000-piiriperheelle ja lisäksi EPF8282, EPF8452, EPM9320 ja EPF10K10 piireille. Ei sisällä simulaattoreita. Ilmaiset rinnakkaislisenssit.
Hintoja(maaliskuu 1996)
Peruspaketti, PLS-ES2 350 mk
Simulaattori, PLSM-SIM9 500 mk
VHDL-synteesi, PLSM-VHDL9 500 mk
Ohjelmointilaite, PL-ASAP29 500 mk
JTAG-ohjelmointiadapteri, PL-BITBLASTER2 350 mk
Täydellinen ohjelmistopaketti, PLSM-MAGNUM23 900mk
EdustajaBEXAB Finland, 90-6135 2690
ValmistajaAltera, Inc. USA
LaitteistovaatimuksetWindows 3.1, Windows 95 tai Windows NT 3.5, 486 tai Pentium prosessori, muistia vähintään 16 megatavua, CD-ROM, VGA tai SVGA näyttö. Asennus tarvitsee levytilaa vähintään 60 megatavua.
KopiointisuojausKirjoitinporttiin liitettävä välikappale ja valmistajan toimittama salauskoodi.
KäsikirjatMAX+PLUS II Getting Started (350s), AHDL (242 s). Lisäksi yksityiskohtainen käsikirja kovalevyllä.
Tekninen tukiEdustajalta Suomessa, lisäksi valmistajan www-palvelin http://www.altera.com.
SoveltuvuusSoveltuu helppokäyttöisenä erinomaisesti ensimmäiseksi ohjelmoitavien piirien suunnitteluohjelmistoksi. Pystyy hyödyntämään tehokkaasti Alteran omien piirien erikoisominaisuuksia. VHDL-tuki on vielä melko vaatimaton, mutta täysin käyttökelpoinen yhdessä piirikaavion kanssa käytettynä.


© Jukka Tolonen, 1996


Edelliselle sivulle Kotisivulle