Akkor tegyuk ezt rendbe egy kicsit. Az elso felismeres az az hogy a klasszik 8-bites AVR az legyen inkabb egy 16-bites architektura ugy hogy a legtobb muveletet azt inkabb korlatozottan, egyszerre csak 8 biten hajtjuk vegre[1]. Igy akkor elso lepeskent legyen a "register file" a fenti helyett inkabb egy
reg [15:0] GPR [0:15];
jellegu tomb, illetve az egyes source regisztereket a korabbi
.... [4:0] Rd;
.... [4:0] Rr;
wire [7:0] GPR_Rd = GPR[Rd];
wire [7:0] GPR_Rr = GPR[Rr];
helyett
wire [7:0] GPR_Rd = Rd[0] ? GPR[Rd[4:1]][15:8] : GPR[Rd[4:1]][7:0];
wire [7:0] GPR_Rr = Rr[0] ? GPR[Rr[4:1]][15:8] : GPR[Rr[4:1]][7:0];
modon erjuk el. Ugyanaz, de megis mas. A 16-bites muveleteknel (indexeles, ADIW/SBIW es MOVW) meg kozvetlenul GPR[RR] ill. GPR[RD] modon erhetoek el az ertekek, ahol RR ill RD az nem feltetlen 0..15 kozott van hanem lehet hogy csak 12..15 (ADIW) illetve 13, 14, 15 (indexeles). A writeback agban pedig a 16-bites visszairasok (index leptetesek, ADIW/SBIW, MOVW, MUL tarolasok) igy sima GPR[RW] <= ... beirasok lesznek, mig a 8-bites esetben also/felso byte-ra valik szet:
if ( Rw[0] )
GPR[Rw[4:1]][15:8] <= R;
else
GPR[Rw[4:1]][7:0] <= R;
Mar csak ezzel a kis par soros atirassal/cserevel/trukkel a timing analysis szerint a maximalis orajel-frekvencia a korabbi ~32-33MHz-rol mar majdnem ~40Mhz korulire ment fel es az LC-k szama is szamottevoen csokkent (a teljes SoC ~2930-as igenye lement ~2710-re). Tanulsag 1: lenyegeben mar az hogy a 16-bites regisztereket csak mint "szomszedos regiszterek" es csak "aligned" modon lehet elerni az mar ennyit segit. Tanulsag 2: a critical path meg mindig a pipeline stage 2 (execute-writeback) lepeseben van.
Node hogyan tovabb az EBR-ek iranya fele. EBR(ek)bol osszerakott, 2 read + 1 write portos szinkron memoriamodulokat akkor tudunk hasznalni barmire is, ha a) egy ciklusban maximum ket CPU-regisztert szedunk ki ebbol, b) egy ciklusban maximum egy CPU-regisztert irunk vissza es c) az irasi es olvasasi ciklusok orajele elott ismerjuk hogy melyik ez a ket kiolvasando regiszter. Az a) es b) feltetel az mar a gombaramkorben is hellyel-kozzel adott volt, csak arra kell figyelni hogy az LD rxx, [Z+] jellegu vayg LPM rxx, [Z+] jellegu, egyebkent ket vagy tobb orajeles utasitasok kulonbozo orajel-ciklusokban irjak vissza az inkrementalt/dekrementalt indexet illetve az rxx ertekeit.
Barhogyis, ha a fenti feltetelek teljesulnek akkor a szintezis soran "illene" eszrevenni azt hogy az egesz regiszter-kupac letrehozhato egy (vagyis, a dual read port miatt ketto) EBR-bol. Elso kozelitesben a Yosys (0.23) ezt a c) feltetelt nem vette eszre magatol, azonban a stage 1 (decode) agban nehany joliranyzott wire [4:0] illetve az if else if else if ... else agak egyszerusitese utan egyszercsak... egyszercsak eszrevette. Azaz nem volt szukseg konkretan egy EBR-nek megfelelo module letrehozasa, eleg volt csak a fenti harom feltetelre figyelni, plusz egy kis rasegites. Lenyeg a lenyeg, hogy ekkor a korabbi ~2710-rol lesett ~2030-ra a SoC LC igenye, ehelyett megjelent a ket EBR (ICESTORM_RAM) a Device utilisation listaban, valamint a maximalis orajel felment ~40MHz-rol ~55MHz-re. Azt mondjuk erdemes megnezni hogy a 2710 -> 2030-as csokkenesbol ugye 256-ot elvitt a 32x8 (vagyis 16x16) bitnyi regiszter maga, a maradek ~420 pedig ez a sok 32:1 vagyis 16:1 ill azt koveto 2:1 multiplexer (illetve a beirashoz szukseges enable-t meghajto demultiplexer logika). Ez ugy nagyjabol realis is, 16:1 multplexereket 4-to-1 LUT-okbol nagyjabol ennyire lehet osszesuriteni, ugyhogy tulajdonkeppen ez igy jo. Tehat, tanulsag 3: erdekes lenne megnezni hogy mas logic synthesis tool (pl Vivado) mikor kezdi el eszrevenni azt hogy EBR-ekbol osszehozhato a register file, esetleg megnezni egy ujabb Yosys verziot, hatha az mar korabban kiszurja... meg ilyesmi. Meg ugye az hogy egyatalan nem kell kezzel megcsinalni a register file-t mind egy onallo module, hanem nyugodtan lehet hasznalni a synthesis tool-t arra hogy eszrevegye a... most mondanank hogy nyilvanvalot, de azert annyira megsem nyilvanvalot. Kis rasegites nem art.
Vegkonkluzio: meg mindig nincs, folyt. kov. Mindenesetre az I/O portok rendbetetele elotti ~28MHz-s maximalis orajel az gyakorlatilag mar eme ket dolog hatasara megketszerezodott. Ami vegsosoron nem baj.
[1] Kicsit ahhoz hasonlatosan mintha a 8086 eseteben az AX/CX/DX/BX regiszterekre csak nehany muvelet (pl konstans-osszadas/kivonas, indexeles) lenne elerheto, minden masra (bit-logikara, elagazasokra, altalanos aritmetikara, memoria irast-olvasasra) meg csak az AL/CL/... regiszterek lennenek hasznalhatoak.
- apal blogja
- A hozzászóláshoz be kell jelentkezni
- 559 megtekintés
Hozzászólások
... Mit / minek kellett volna ahhoz tanulnom (felsőoktatásban), hogy ezt értsem? :) Villamosmérnöknek?
- A hozzászóláshoz be kell jelentkezni
Hát... ha ott nem, akkor hol? :) Mondjuk en teljesen magamtol tanultam ezeket... nem is biztos hogy van benne koszonet :]
- A hozzászóláshoz be kell jelentkezni
(Off-topic.) Progterv-mat-on végeztem 2002-ben; gyerekkoromtól (mondjuk) 2010-11-ig kifejezetten idegenkedtem a hardverközeli programozástól. Ez 2010-11 után megváltozott; egyre inkább kénytelen voltam a hardverhez közel húzódni -- ami jól ment, viszont időnként volt olyan pont egy-egy (tipikusan levlistás) beszélgetésben, ahol az áramköri ismeretek [*] hiánya miatt nem tudtam a többieket követni. ([*] Itt nem fizikai, elektromosságtani ismeretekre gondolok, hanem konkrét, mindennapi, gyakorlati áramköri dolgokra.) Mostanra a terület kifejezetten érdekel, és igyekeznék komolyan beletanulni, de (1) munka mellett elektrotechnikai iskolába nem tudok beülni, (2) az "internetről összecsipegetett morzsák" nem az én műfajom (a chatgpt-t meg hasonló hülyeségeket meg ne is említsük). Én a hierarchikusan és koncepcionálisan felépített tananyag híve vagyok; a csipegetés is tud működni, de szerintem csak akkor, ha azt valaki munkaidőben, folyamatosan (és pénzért) végzi. Innen a (költői) kérdés: vajon mit lett volna hasznos a progterv-mat helyett választanom 97-98-ban, ahhoz, hogy most ne gimis szinten (alatt...) álljak az áramkörökhöz. Átfogalmazva: melyik az az egy (esetleg kettő) könyv, amiből a "PCB design"-t alapszinten meg lehet tanulni. Kerti szaletlit megtanultam építeni a youtube-ról, de ennél a témánál a youtube nem tűnik hatékonynak. (Elkezdtem nézni egy sorozatot, de az elméleti alapozás annyira pongyola volt, hogy feladtam.)
- A hozzászóláshoz be kell jelentkezni
Elektronikahoz ugy altalaban jo bevezeto a Tietze-Schenk :) Ez nem PCB design, hanem ugy altalaban elektronika. PCB design-hez... hat, jo kerdes. En egyoldalas nyak + filctoll + vasklorid + kezi furo kombinacioval kezdtem, aztan lett finomodas (lezernyomtato + transzpausz + kvarclampa + sosav-peroxid + kemiai onozo), majd utana mar rendes gyartatas (Protel, gEDA/gschem/pcb, KiCad). Ezalatt szepen meg lehet tanulni sokmindent... de hogy ezt milyen konyv "valtja ki", azt nem tudom :/
- A hozzászóláshoz be kell jelentkezni
Szerintem a Texas TTL receptek és a Texas analóg és illesztő áramkörök kellő alapot ad. Utána már csak a CMOS és FET mibenlétével kell tisztába jönni.
- A hozzászóláshoz be kell jelentkezni
Persze, csomóponti törvény, hurok törvény, Ohm-törvény, induktivitás, kapacitás, elosztott paraméterű hálózatok, súlyfüggvény, átmeneti függvény és hasonló csacskaságok teljesen feleslegesek. Ó, ha én ezt tudtam volna, elovasom azt a két, elavult, fényes lapokból álló, talán a '70-es években íródott nem túl vastag könyvet, megnézem, mi az a komplementer fém-oxid félvezető meg a térvezérlésű tranzisztor, három hét alatt letudom az egészet, s nem bajlódtam volna az egyetemmel öt évig. :)
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Ördögöd van! Tényleg még a szorzótábla sincs benne ezekben a könyvekben. Ennyi ésszel tudhatnád, hogy már az Ohm-törvény is régi, tehát elavult. ;)
Pedig értő olvasás mellet az egyik kollégának ennyi irodalom elegendő volt egy 16/24 bites, 300 tokból álló bipoláris videoprocesszor megtervezéséhez. Meglehet, van aki ezt egyetemen tanulja. Igaz, a gázszerelő mester is óvva intett: Ne szereljen gázt! (Mert egy tisztességes szerelő 9 (!!) évig tanul, amíg készülékhez nyúlhat. - Többen kiröhögtük. :-((()
Sajnos az említett irodalom tényleg nem tartalmazza az általános iskolai valamint a gimnáziumi anyagot, azt máshol kell keresned. Annyi előnye van, hogy gyakorló mérnökök által összeállított tippeket-trükköket és gyakorlati adatokat/méréseket is leírtak bennük (lásd:előszó)
Pl. az elosztott paraméterű hálózatok tananyag nincs benne, viszont az átviteli vonalak - a dróttól kezdve -hullámimpedanciája igen.
- A hozzászóláshoz be kell jelentkezni
Olvastam mindkettőt, tudom mi van benne, nem tartom haszontalannak, csak a világ nagyon nem ott tart most.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
Csak két mai példát ragadok ki:
A PCI express Lane működésének megértéséhez minden információ ott van. Ugyanúgy az USB 2.0 kábel maximális hosszának megítéléséhez is alkalmasak a szellemes munkaegyenesen szerkesztett visszaverődési ábrák.
Szerintem a villany az villany, bárhányat is írunk a naptárba. ;)
- A hozzászóláshoz be kell jelentkezni
Akkor nem a Texas könyvei kellenek, hanem a Villamosságtan I-II.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
youtube?:
Phil's lab
Fesz lab
Leos bag of trick (<-- ezt nagyon, ez aranybanya), foleg ez:
https://www.youtube.com/watch?v=vq968AFgPhg
bigclivedotcom (ez csak annyira, hogy egy aramkort madartavlatbol hogyan kell ertelmezni)
a nyavogos ausztral fundamental paylistjet
electrarc240 (uj favorit)
louis rossmannak van egy tok jo tranzisztor debugging videoja, azt most nem talalom, de van egy ilyen sorozata:
https://www.youtube.com/playlist?list=PLkVbIsAWN2ltOWmriIdOc5CtiZqUTH7GT
Cranktown city. Ez eszméletlen jo csatorna, minimalis elektronikai tudassal olyat tesz le az asztalra, hogy ihaj. (fuggoleges plazmavago asztal ill. annak a munkadarab rogzitese, amikor saját elektromagneses tekercset gyart)
Matthias Wandel motormagyarazos videoi. Szerintem a legjobbak a temaban. (dc motor, univerzalis motor, ac motor, stb)
tim hunkin videoibol van elektronikai. Minden masodperce arany.
En nem vetnen el a youtubeot....
Jah igen, es a chatgpt-t se vetnem el. Alap koncepciokat jól elmagyaraz, kerj internetes referenciat, es a konkret valaszt ellenőrizd le.
Amugy en is elkezdtem olvasni az art of electronicsot, de kicsit szaraz, meg egyszerubb egy-egy youtube video, mint olvasasra csendes kornyezetet teremteni.
Saying a programming language is good because it works on all platforms is like saying anal sex is good because it works on all genders....
- A hozzászóláshoz be kell jelentkezni
Veriloghoz, meg ugy altalaban HDL-hez meg nagyjabol harom iranybol lehet szerintem igy kozelitgetni, akar oktatasban, akar autodidakta modon. Oke, nekem inkabb ezutobbiban van tobb tapasztalatom. Vagyis, tanulni nem tanultam ezeket csak igy tanitgattam. Valamennyire.
- Konyvek, leirasok: ez az Introduction to Logic Synthesis using Verilog HDL peldaul nagyon jo kis bevezeto. A NandLand-on is vannak jo leirasok, neha ugy egy-egy temara-reszteruletre rakeresve innen dob fel dolgokat. Kesobbiekben meg lehet celtudatosabban hardverek (MCU-k, CPU core-ok, periferiak, offload digitalis logikak) datasheet-jeit tanulmanyoz(gat)ni, es azalapjan ilyesmi konkluziokat tehetunk hogy "ah, ezert ilyen furcsa a regiszterkeszlete a barminek mert ezt igy a legegyszerubb megcsinalni valamifele HDL-ben ugy hogy hatekony is legyen".
- Gyakorolgatni, szimulalgatni, megjeleniteni: iverilog + gtkwave Van benne futtatas is (vvp), amit onalloan is tudunk hasznalni. Pl komplexebb SoC-ok meg hasonlo cuccmanyok hosszutavu viselkedest, ugy hogy pl csak arra vagy kivancsi hogy mit ir ki a konzolra. Ezt nyilvan egeszen kinszenvedes lenne gtkwave-ban vegignezni, de pici szkripteles a *.vcd kimenteken es mar jo is.
- Hardverre pedig egy olyasmi celszeru amin egy USB madzagon van flash programozo is es egy debug UART is (legalabb). Ezt az ICE40HX8K-B-EVN boardot szeretem pont emiatt. Kicsit felment az ara mostanaban, de egyebkent nagyon jo. Es mindez nyilt forrasu cuccokkal (yosys + nextpnr + icestorm) programozhato illetve nyilt eszkozokkel tudsz ra fejleszteni.
Szoval kb ezek lehetnek jok kiindulasnak. Vagyis, ezek jok lehetnek kiindulasnak. Mostanaban igy fejlesztgetes cimszo alatt ezt a harom megkozelitest kb egy-egy-egy aranyban hasznalom.
- A hozzászóláshoz be kell jelentkezni
Ebben az "észrevegye" dologban a Quartus is megéri a pénzét...
- A hozzászóláshoz be kell jelentkezni
Igen... ezert neznem majd meg en is ezt Vivado meg ICEcube2 alatt, meg ujabb yosys-okkal. Mondjuk hogy a Vivado meg a wor/wand-ot nem tudja, az is megeri a penzet. Oke hogy lassabb, korulmenyesebb es obfuszkaltabb, de meg nem is tud dolgokat. Szoval nem lepne meg ha ezt nem tudna eszrevenni.
- A hozzászóláshoz be kell jelentkezni