# Pamācības >  Parastās Loģiku shēmu izveide, simulācija bez kodēšanas :!:

## Epis

pamācība kā izveidot vienkāršu logīku no UN,vai,DFF elementiem bez nekādas kodēšanas (viss notiek ar peli!) un attiecīgi loģikas simulēšana 
Izmantojam web edition Quartus 6.1 progu vai jaunāku versiju 7.0 
proga ir PA VELTI (bez kodu limitiem) tikai jāiereģistrējās Altera.com mājaslapā un jāpiesakās uz Free licenzi (kas pa epastu atnāks!) 
Sākam: 

PIEZĪME programmā un visos kodos nevaig starp vārdiem (failu, mapju nosaukumi, signālu vārdi utt. likt atstarpes tajā vietā ieliekat "_" zīmi pemērs: iejas signāls (nepareizi) -> iejas_signāls (pareizi). 
tas arī attiecās uz to vietu kur tiek programma ieinstalēta, ja kautkur būs atstarpe tad proga var neiet kā vaig !!! C:\altera\mana_mape   (pareizs variants).

tātad uztaisīju 2 bildes (ar paint) kur ir savilktas būltas (kas norāda kas kā jādasra un kur kas jāspiež!)  ::  
un 1 bildes komentārs:
1. izveidojam jaunu projektu File-> project wizard.
atverās 1 Logs spiežam NEXT līdz parādās vieta kur jāievada projekta atrašanās vieta (jauna mape), nosaukums, un Top-level design entity vārds (šitā ir svarīgākā daļa, jo šitas būs Loģikas galvenā .bdf(block design fail) faila nosaukums (mēs beigās to failu saglabāsim ar šito nosaukumu!)
Tālāk spiežam next un kur jāizvēlās uz kādas Fpga,CPLD mēs to visu taisīsim es iesaku paņemt kādu Fpga mazo cyclone II mikreni E2P5 jebkuru iepakojumu un miers (ja netaisās izmantot reālu fpga tad štiam nav nekādas nozīmes!).
spiežam next un Create  :: 
2. kad ir projekts uzstādīts spiežam NEW un izvēlamies to .BDF block design failu kurā tad arī varēs tās shēmas zīmēt un loģiku taisīt  ::  šitas tad būs galvenais mūsu loģikas fails! 
3. parādās .bdf fails (rūtiņu) un es esu parādījis bildē kā mainīt tos instrumentus (kas malās stāv) un ja jums nav neviens instruments (šajā gadījumā vaig tikai to block &Symbol editoru (kur ir ķeksis) ja tas ir tad ejam tālāk un būvējam pirmo Loģiku.
4. Nospiežam to Simbola pogu -> atverās symbolu izvēles logs un šeit tad arī ir visa Lielā Logīkas bibloteka (visas 74hcxx logīkas shēmas(bibloteka) atrodās zem MAXPLUS2 mapes, bet mums sākumā vaig ielikt ienākošos un izejošos singālus (kas savienoti ar ārpasauli) ņemam PIN mapi input pinu (ja lejā Repeat insert mode ķeksis ir uzlikts tad saspaidam uz rūtiņlauka tik daudz signālu cik mums tur vaig  :: 
pēc tam turpinam ar citiem elementiem tā pat (saliekat tik daudz tās loģikas kā man tur  ::  (es to loģiku liku uz dullo)
5. Kad ir salikti šie Pini un loģikas shēmas tad jāsāk viņas ar vadiem savienot un tas darās ļoti viegli paņemam līnijas vadu vilcēju un velkam tos vadus kā gribam (sākumā savelkat kā man tur (es uz dullo savilku vadus)
6. nomainam iejošajiem un izejošajiem singāliem tos vārdus (labā peles poga uz PIN_NAME -> properies un mainam vārdu. kad tas ir izdarīts 
Tad arī visa loģika ir gatava un spiežam Compile (atrodās zem processing) 
un loģika ir gatava.


tagat simulātor uzstādīšana arī ir vienkārša sekojiet bildēs bultiņām un viss būs kārtībā.
1. file-> NEW izvelamies Other files un tad vector waveform file .vwf 
2. lai dabūtu tur iekšā visus mūsu signālus spiežam labo peles pogu -> insert node of buss opciju -> node finder -> un pēc būltām turpinām un kad visi signāli ir atrasti un pārbīdīti uz labo pusi tas tur it OK poga (bildē nav redzama!)
3. Signālus zīmēt un vilkt ir vieglāk pa vieglu iezīmējam lauku kuru gribam mainīt un tad izvelamies kādus signālus tur gribam redzēt (kreisajā malā ir tas izvēles logs priekš clock spiežam pūlktens ikonu un uzstādam pūlktens frekvenci uz 20ns (50Mhz) var arī mazāk.
man jau apnika rakstīt turpiniet pēc bildē redzamā spiežat start simulation -> report un skataties savu rezultātu  ::  

Kā jau teicu tad lai uztaisītu vienkāršu loģiku nevaig neko Kodēt  ::  tas viss ir ļoti primitīvi (primitīvāk vairs nav kur  ::  )  
ceru kad mīts par super sarežģitajām fpga un cpld ir apgāzts.
to sarežģitības pakāpi var palielināt līdz nenormāli sarežģitām loģikām bet  pašu loģiku (primitīvo) ir vieglāk uztaisīt nekeā mikroprocesoru PIC,AVR ierpogrammēt  ::  lai viņš veiktu tās loģikas funkcijas.


šeit arī pašai Quartus programmai zem HELP-> tutorials ir soli pa solim pamācība (kā sī) kuru arī varat izmatnot viņa iziet cauri vairākiem līmeņiem (arī tam kā tajās blokshēmās ielikt bloku ar savējo speciālo loģikas kodu) ja ir intrese kā to izdarīt tad varu ātri uzrakstīt papildus pamcību  ::  


  ::

----------


## Texx

Mazliet neiebraucu kāda tā ideja. Programma pasaka priekšā kādu minimālo loģikas elementu skaitu vajag, lai dabūtu rezultātu. Nu piemēram es gribu uztaisīt luksoforu un gribu lai deg zaļais, tad mirgo dzeltens, tad deg sarkans, tad sarkans kopā ar dzelteno u.t.t  Programma to izrēķina? Jeb es neesmu iebraucis?

----------


## Epis

grūti atbildēt! luksaforu uz loģikas uztaisīt var mierīgi,

Pēc šīs pamācības tu vari pārbaudīt kā strādā primitīvie AND,NOT un citi Loģiskie vārti, slēdži utt. saslēgti dažādās kombinācijās un programma modelē šo signālu darbību iekš fpga,cpld mikrenes un pēc būtības tas simulātors parāda kādi ir tavi ienākoši signāli un kādi tad signāli nāk ārā no tās loģikas un ja tev kautkas nepatīk var pārtaisīt loģiku, lai dabūtu vajadzīgo signālu un kad esi iztaisījis to ko tev vaig, vari visu loģiku ielādēt iekš vienas fpga,cpld mikrenes vai lodēt vairākas parastās 74xx mikrenes uz PCB pēc savas shēmas kuru tu modelēji. 
līdz ar to šitas ir labs instruments kā izvedot kautkādas funkcionalitātes loģiku piemēram var uztaisīt no 'primitīvies and,xor, un citiem elementiem vienu Flip-flopu vai arī to flip flopu paņemt jau kā gatavu shēmu.

šitās shēmu loģika protams ir pats zemākais līmenis lai izveidotu luksaforu es iesaku rakstīt kodu ar VHDL,verilog, AHDL valodā tur var augstākā apstrakcijas līmenī aprakstīt luksafora signālu darbību un tad šī proga uzģenerēs no tava koda Loģiku, uzģenerēto loģiku protams var apskatītes un arī var simulātorā pārbaudīt luksafora darbību. 
es pērsonīgi sāku ar šīm shēmām tad sāku rakstīt kodu kopā izmantojot arī šīs shēmas un pēc tam pārgāju tīri uz koda rakstīšanu, un vairs šīs shēmas neizmantoju tā man iet kādas 10x ātrāk un kods dod iespēju veidot hirarhiju kā C valodā var izmantot gatavos kodu gabalus lai veidotu jaunu kudu un tā kā būvēt piramīdu un beigās kods jau ir tik liels kad uzģenerētā loģika vienkārši ir milzīga. 

bet tas jau ir nākošais līmenis šeit ir tikai primitīvā puse kā jau topiks saucās loģikas izveide, BEZ KODĒŠANAS.

līdz ar to loģika var būt ļoti vienkārša (parastie AND,no vārtu elementi) līdz ļoti sarežģitām šo primitīvo vārtu kombinācijām kā piemēram vesels procesors, tur ir ļoti daudz visādas loģikas un šeit var izveidot jebkuru procesoru (PIC,AVR ir piejami gatavi kodoli) un uztaisīt arī pats savējo proci  ::  tādēļ arī Loģikas fpga mikrne ir viss jaudīgākās pasaules mikrene 

off tops:
(pašlaik no reāli nopērkamajām tā ir 65nm VIrtex5 šerijas, bet nāktonē kad tirgos Stratix III tad tā būs pasaules labākā pēc veiktspējas teorētiski jaudīgākā supermikrene  ::  itkā teorētiski ir vēl jaudīgāka mikrene tā Ambric iekš kuras ir 360x 32bit RISC proči kuru teorētiskā veiktspēja ir 1 Tetra operācija sekundē (TOPS) bet specifisku Loģisku uzdevumu veikšanai fpga tāpat saliek šitio monstru un viņš laikam vēl tā īsti pārdošanā nav tā ir tikai viena no eksotiskajām tehnoloģijām tādu ir eksperimentālo proču arhitektūru ar super parametriem ir samērā daudz, bet līdz reālai tirgošanai nonāk tikai Retais kā Mathstar FPOA ļoti laba mikrene bet dārga pie ~500$

----------


## Raimonds1

Kaa to programmu saglab'a, lai vareetu paarkopeet uz vairaakaam mikreneem?
Kaa paarbauda programmaas darbiibu datoraa bez mikrenes?
Kaa simulee taimerus, laika aiztures, trigerus, registrus?

Taa ir veertiiga lieta.

----------


## Epis

šajā pemērā es izmantoju tikai 2 failus pirmais ir .BDF (block design file) kurā tad atrodās tās loģikas shēmas,simboli un otrs ir tas .VWF vector Waveform fils kurā ir tie simulācijas singāli priekš simulātora un tas arī viss.

tas simulātors( otrā bilde) jau to dara pārbauda reālas programmas darbību iekš mikrenes, nekāda cita simulatora tur vairs nav! 

lai simulātu taimerus tev viņi ir jāuztaisa ar loģiku vai jāpaņem jau gatavie taimeri, no biblotekas, vai izmantojot speciālu Loģikas būvēšanas interfeisu "MegaWizard® Plug-In Manager" kur ieraksti cik bitu platu taimeri tu gribi un citus parametrus un tad šī proga tev uztaisīs tavu taimeri  ::  un pieslēdz taimerim šos iejošos , izejošos signālus (vai datu maģistrāles "data[31..0]" (32bit maģistrāle)) un liec signālus iekš .vwf faila un simulē viņa darbību, un tā vari simulēt jebko ko vien gribi tas ir ļoti vienkārši un pēc šīs mazās pamācības to visu var izdarīt, nekas cits vairāk nav jādara tas arī ir viss, (laikam grūti noticēt ka viss ir tik vienkārši  ::  )

par programmēšanu tad kad nospieš Compile programma cāk to visu loģiku pārbaudīt un sintezēt priekš fpga,cpld modeļa kāds tika uzstādīts sākumā veidojot jaunu projektu (pec tam to mikrenes modeli var arī pārmainīt uz citu ja ir vajadzība) un kompilēšanas laikā ģnerējās programmēšanas fails ar kuru tad var programmēt fpga.cpld vēl pirmstam ir jāuzstāda visu iejošo signālu IO vadi (jāpievieno pir fpga,cpld mikrenes fiziskajām kājām (jāizvēlās kur tas vads atradīsies un tas arī īsumā viss) 
un vari ar to programmēšanas failu kautvai 1000 mikrnes programmēt  ::

----------


## janispu

> nāktonē kad tirgos Stratix III tad tā būs pasaules labākā pēc veiktspējas teorētiski jaudīgākā supermikrene :


 Es tā lasu un brīnos: kāpēc Texas Instruments, Motorolas , AMD, Intel, Atmel u.c. dumjie inženieri veido un un ražu visādus procesorus un mikrokontrolierus un nemet tos mēslainē, ja ir visu varenais FPGA, kurš ir simtkārt jaudīgāks, lētāks un labāks!?? Vai tiešām viņi ir tik dumji?
Es ceru, ka neļaunosities par manu ironiju. Bet mēģiniet atrast atbildi uz iepriekšējiem jautājumiem.

----------


## Epis

šitas jau ir neliels offtopiks.




> kāpēc Texas Instruments, Motorolas , AMD, Intel, Atmel u.c. dumjie inženieri veido un un ražu visādus procesorus un mikrokontrolierus un nemet tos mēslainē, ja ir visu varenais FPGA, kurš ir simtkārt jaudīgāks, lētāks un labāks!?? Vai tiešām viņi ir tik dumji?


 Tādēļ es arī teicu "Teorētiski jaudīgākā" tam nav nekāda sakara ar reālo dzīvi, jo fpga ir jūra ar Loģiku, DSP blokiem, un datu līnijām, kas to visu savieno, tas cik daudz pasaulē ir cilvēku kuri māk šo potenciālu izmantot ir cits jautājms un vēlviens faktors ir arī samērā lielā sarežģītība jo loģika var apsteikt parasto procesoru (kas iet uz 3Ghz) tikai ar paralēlo procesēšanu strādājot uz 200Mhz (15x lēnāk!), bet veicot vienlaicīgi 15-xx reizes vairāk darbību nekā procis un tur arī ir tā super jauda kad var neatkarīgi veikt kaut vai 1000 darbības  ar virs 200Mhz ;atrumu un uz to parastais procis nav spējigs. 
un Tākā tehnoloģija attīstās tad arī šitās programmas ar kurām Loģiku kodē arī reāli ir attīstījušās un tagat var ar C valodu kodēt to loģiju (augstā apstrakcijas līmenī) tākā nākotnē programmēt loģiku būs tik pat viegli kā parasto mikreni (ar C ) pagaidām šie C compileri maksā lielu naudu, bet nākotnē domāju kad būs arī tādi kas ir par brīvu (vai par pieņemamu cenu, tad arī vaidzēs izmēgināt. 

Ir nopērkamas Fpga plates kuras var spraust parastā kompja procesora ligzdā un tad šāda sistēma strādā tā kad ir parastais procis Kāds AMD un blakus viņam otra AMD proča vietā ieliek vienu milzīgo fpga, kas ar to proci ir savientos ar to hiper transport datu līnijām un tad fpga dabojās kā proča paātrinātājs, bet tās fpga plates ir super dārgas ap 15 000$ tur arī nāk viss programmu atbalsts, bet tas ir domāts priekš zinātniekiem, un citās vietās kur vaig to super milzīgo ātrumu. 

šeit topikā iet runa kā vienkārši uzmodelēt Loģiku un nosimulēt viņu bez kodēšanas un tas ir ļoti vienkārši izdarām.

----------


## Raimonds1

Cik esmu sapratis par programmeshanu, tad te vareetu buut taads vienkaarshs piemeers- pasaulee vairaaki miljardi var apguut, ka lietot videopulti, dazhi miljoni, kas prastu to salabot, tikpat- kas saprogrammeet UN VEEL MAZAAK- KAS IZDOMAAT JAUNUS ALGPRITMUS.
Sarezgjitas sheemas izmantoshana vienkaarshaam darbiibaam buutu saliidzinaama ar plashaaku pieejamiibu programmesahnas procesam. Piemeeram, mehaanikjis diezgan labi var izdomaat, kad to virpas griezni vajag pabiidiit, kad aizvaakt un kad nomainiit.  Vinja prasiibaam piemeerota programma, kas izpildiis vinjam saprotamas un mashiinai izpildaamas komandas buus daarga, aiznjems daudz vairaak logjikas elementu, neracionaali izmantos jaudu utt utjpr, BET DOS VINJAM IESPEEJU ""PROGRAMMEET" PROCESU. PAR SHO IESPEEJU IR JAAMAKSAA AR IEPRIEKSMEINEETAJIEM ZAUDEJUMIEM.

----------


## Epis

njā Loģikas programmeru nav tik daudz cik mikreņu programmistu, bet situācija samērā strauji mainās un viņu paliek ar vien vairāk tas tādeļ kad pašas fpga cena krīt, + programmas pa velti, + JtAG pašlodējams un arī gatavo kodu (pa velti) paliek ar vien vairāk, un tas ir novērojams forumu aktivitātēs kā piemēram šitajā forumā http://www.edaboard.com/forum75.html 
aktivitāte ir samrā strauji augusi ,līdz ar to var secināt kad cilvēku kas mācās programmēt loģiku paliek ar vien vairāk, un katrm protams ir savi iemesli kādēl viņš no parastām mikrenēm pāriet uz LOģiku  ::  
vienīgi žēl kas latvijas forumos izņemot mani nevienam tā loģika tā baigi neintresē, vispār jau šeit nevienam jaunākās tehnoloģijas neintresē (tas jau bīj sen zināms(novērots)) 

Jā, ja grib uztaisīt kādu produktu, tādu kas domāts tieši tev, tad sanāk beigās dārgāk nekā ja būtu to nopircis uzreiz, bet jātcerās kad tā dargā cena būs tikai pirmajā reizē kamēr tu mācies to produktu taisīt, un kad produkts būs gatavs (būsi iemācijies kā viņu taisīt) tad nākošais produktiņš iespējams jau labākā līmenī izmaksās kādas 10x letāk un tad arī viņš būs letāks nekā veikalā pirktais + speciāli pielāgots tieši tev. 
Mācīšanās prasa laiku un naudu tas ir fakts, bet ieguvums no mācīšanās būs jūtams tikai nākotnē.

----------


## janispu

> njā Loģikas programmeru nav tik daudz cik mikreņu programmistu, bet situācija samērā strauji mainās un viņu paliek ar vien vairāk tas tādeļ kad pašas fpga cena krīt


 Vīņu ir pietiekoši daudz! Problēma ir citā aspektā. FPGA lieto jau sen: pirmajos PC pat čipseti bija uz to bāzes.
Procesoros, mikrokontrolieros, specializētajās mikrenēs katrs tranzistors ir ielikts ar jēgu un darbojas ar atdevi, respektīvi, tranzistoru izmantošanas lietderības koeficients ir simtprocentīgs. Savukārt FPG izmanto lietderīgi tikai daļu no elementiem. Var priecāties, ja tie ir 50%, bet enerģiju tērē tomēr visi 100% elementu.
Secinājums: FPG ir laba tikai tik ilgi, kamēr izdevīgāk nav ražot specializēto mikroshēmu.

----------


## Raimonds1

specializētā mikroshēma ir max efektīva bet , manuprāt, zaudē iespēju ielikt tajā jaunas izstrādes. Neviens ražotajs nevar paredzēt, ko kaut kāds metālapstrādātājs, medicīnas iekārtu ražotājs vai kosmosa pētnieks gribēs ielikt programma, papildinās un mainīs un te jau arī vajag tos liekos elementus, kas patērē enerģiju un par kuru uzražošanu ir jāpiemaksā. Ja ražotājam jāizvēlas, vai viņam vajag programmistu, kas vienīgais spēj saprogrammēt darbgaldus vai 10 apmācītus grafisko bultiņu un funkciju bīdītājus, kas var likt tai virpai to detaļu taisīt, tad otrais variants ir perspektīvāks.

----------


## Epis

> Procesoros, mikrokontrolieros, specializētajās mikrenēs katrs tranzistors ir ielikts ar jēgu un darbojas ar atdevi, respektīvi, tranzistoru izmantošanas lietderības koeficients ir simtprocentīgs. Savukārt FPG izmanto lietderīgi tikai daļu no elementiem. Var priecāties, ja tie ir 50%, bet enerģiju tērē tomēr visi 100% elementu.


 no kurienes tu šito informāciju ņēmi (kādu linku) es arī gribētu palasīt tad varētu tālāk diskutēt.
es kādiem 50% piekrītu bet otriem 50 gan nē, tieši kam nē es varētu uzrakstīt palasot tos litreūras avotus (gribās pārliecināties pirms kautko rakstu).

----------


## Delfins

Epi, iedod linku, kur rakstīts ka blakus CPU liek FPGA un iegūst paatrinātāju ...

Runājot par tām jaunām iestrādēm čipā, tad es piekrītu pie tā, ka loģikai jābūt jau iekšā, nevis programmējamai...

Spilgts piemērs - video kartes... neviena videokarte ar DX9.0 nekļūs par karti ar DX10.0.. Ražotājam ir lētāk izlaist čipu, nekā čakarēties ar softu un problēmām.. Un paskataties - kādas jaudas ir GPU pročiem. Tik tiešām - mūsdienu ražotāji nav tik dumji.. viņi liek "uz svariem" pilnīgi visus apstākļus un iesp. problēmas, - nosver un izdara secinājumus, tad lēmumu.

FPGA var būt arī ir labs, bet ar zināmu robežu, kamēr "nespiež no augšas".
Lai uztaisītu "migalku" nav jāņem FPGA, un otrādi.

----------


## Epis

uz ātro atradu šito XD1000™ FPGA COPROCESSOR MODULE for SOCKET 940
http://www.xtremedatainc.com/xd1000_brief.html

tur ir tas fpga modulis kas spraužās opterona Socket 940 un viņu var izmanto kā coprocesooru, kas var aizietot kādus 3-10 parastos AMD opteron pročus  ::  
+ patērē tikai kādus 20-30W tajā pašā laikā šie 3 proči patērētu kopā 210W.
man liekās kad ir sava veida jaudas ieguvums + energoefektivitāte. 

Man agrāk bīj vesela čupa ar linkiem par fpga pielietojumu kā superkompjūterus kā piemēram DSN noteikšanai kur fpga saliek parato proci par 100x, bet kā parasti kompis uzkārās un pārinstalējos xp linkus aizmirsu sglabāt, vārdsakot pameklējot google zem atslēgvārda "FPGA supercomputer" var atrst visādus intresantus rakstus. 

man liekas ir tā, kad procesors ir domāts dažādu uzdevumu veikšanai, bet kad ir jāveic visu laku viena darbība (kāds algoritms pa apli) tad faktiski tiek izmantoa tikai kāda 0,01% no procesora tranzistoriem, līdz ar to viena specifiska uzdevuma veiksānai procis ir galīgi neefektīvs (resursu izšķērdēšana), protams specifiska mikrene kas veic tikai to uzdevumu būs letāka nekā fpga (ntās reizes, un arī pateŗēs kādas 4-5X mazāk enerģijas bet tas der tikai ja ražo to mikreni lielos apjomos kā šie videokaršu šipi, bet ar katru tehnoloģisko procesu šīs izmaksas viena tāda čipa izstrādei tikai palielinās līdz ar to fpga ir ļoti laba  zemiem un varbūt arī vidējiem apjomiem. 
Priekš manis fpga ir vienīgais risinājums jo hobijists tač nevar pasūtīt fabrikai lai viņam uztaisa pēc pasūtījuma speciālu mikreni (tādu kādu vajadzētu!)  3-4 eksemplāros  ::

----------


## Epis

Es tajā sava'State machine loģikas topikā ieliku Epi_16bit_core.vhdl KODU
kods ir pagarš un sastāv no vairākiem failiem (tie ir ALU,RAM atmiņas un viens aiztures ģenerātor fails.

+ parastais RISC proča kods (pašās beigās) ar 4 isntrukcijām ADD,STOR,LOAD,JUMP  paņēmu un pietaisīju no vienas pamācības (es ar šito kodu sāku pētīt proča arhitektūru un datu plūsmu un tad arī visādas idejas parādījās ka taisīt savējo proci.

----------

