Navrh PC z tranzistorov

Si začinajúci elektronik? Tak táto rubrika je určená práve tebe.

Moderátori: mirosne, Moderátori

miso156
Pokročilý člen
Pokročilý člen
Príspevky: 648
Dátum registrácie: 06 Dec 2020, 11:46
Bydlisko: Banska Stiavnica
Vek: 38

Navrh PC z tranzistorov

Príspevok od používateľa miso156 » 06 Feb 2022, 09:14

Zdar,

robim navrh zariadenia nieco medzi PC a FPGA. Su tam jednak aj prvky sekvencneho pristupu (instrukcie za sebou) avsak jednotlive sekvencne bloky sa prepinaju podla Taskera a teda urcitych priorit, flagov, podmienok aby bolo mozne riesit cykly(opakovania kodu) bez nejakych skakani po adresach programu.
Taktiez nechcem vyuzivat prerusenia, ale casovo kriticke rutiny zabezpecim tak, ze timer da informaciu o preteceni s dostatocnym predstihom (na dva flagy) aby sa uvolnily programove prostriedky.
Podprogram (opakovane rutiny) tam budu.

Teraz k veci:

Cely program bude rieseny cez spinace, takzvane pichanie ihiel do kontaktov (dierok) takze priestorovo/rozmerovo narocne. Preto sa chcem vyhnut akumulatoru a natahovaniu kodu a napr. scitovat priamo dve adresy a do tretej zapisat - vsetko v jednom "riadku" programu:

ADD Adr_3 Adr_1 Adr_2

To znamena ze pre jednu instrukciu programu musim:

1) Adr_1 zapisat do Reg_A
2) Adr_2 zapisat do Reg_B
3) Spustit seriovu scitacku (16 clockov) a vysledky zapisovat do Reg_A
4) Reg_A zapisat na Adr_3
Screenshot from 2022-02-06 07-13-15.png


Teraz hardware:

Vychadza mi, ze body 1) a 2) musim tiez vykonavat seriovo za sebou , inak by som z Memory musiel viest dve 16bit zbernice, jedna do Reg_A a jedna do Reg_B co je nezmysel.
Teda asi najlepsie je pouzit zvlast enable do Reg_A a enable do Reg_B.


Priklad kopirovania bitu z pamati do Reg_A (zobrazene 2 adresy pamati):
Screenshot from 2022-02-06 08-47-54.png
Ako z obr. vidiet, zbernica je slaba, cez 10kohm (R5,R10..) impedanciu, takze si nemozem dovolit dat za nu dalsie AND hradlo a bity do Reg_A/Reg_B zvlast enablovat. Mozem vsak skopirovat hodnotu z pamati do Reg_A a nasledne ju prekopirovat do Reg_B, pretoze registre maju nizku impedanciu na kolektoroch a zavazbit AND hradlo medzi ne nie je problem.

To budem musiet hore uvedene 4 body natiahnut na 5 (nie je extra problem):

1) Adr_1 zapisat do Reg_A
2) Reg_A zapisat do Reg_B
3) Adr_2 zapisat do Reg_A
4) Spustit seriovu scitacku (16 clockov) a vysledky zapisovat do Reg_A
5) Reg_A zapisat na Adr_3

Druhou moznostou je posilnit zbernicu cez dvojity invertor, kedze signal je priamy. To vsak pre 16bit zbernicu zoberie 64 tranzistorov (16 x 2invertory x 2 strany pam. bunky).

Je tam este nejaka ina moznost?
0
"No pain, no gain." (KC238)

miso156
Pokročilý člen
Pokročilý člen
Príspevky: 648
Dátum registrácie: 06 Dec 2020, 11:46
Bydlisko: Banska Stiavnica
Vek: 38

Re: Navrh PC z tranzistorov

Príspevok od používateľa miso156 » 11 Feb 2022, 14:59

Zatial to vidim na ten 5 krokovy postup, kedy budem loadovat data do Reg_B cez Reg_A, mozno ma este nieco napadne. Stale este rozmyslam, naco ine by sa Reg_B dal pocas vypoctu pouzit, kedze vysledok scitavania sa uklada do Reg_A a teda Reg_B ostava nevyuzity. Prvy nastrel ma napada trebarz inverzna funkcia (odcitavanie), u delenia trebarz modulo, negovany vysledok scitavania alebo skuska spravnosti pre zvysemie reliability. Je skoda ten cas nevyuzit. Budem musiet spravit par vzorovych prikladov.

Posledne dni ladim shift register (jeden bit zapajeny ako toggle), pre minimalizaciu tranzistor count shiftujem cez 1n kondiky (docasny storage bitu). Inak by som na shiftovanie musel pouzit dalsi SR obvod (2 trandy naviac), teda v el. terminologii master-slave.
Snazim sa z toho vytiahnut max frekvenciu, pri rozumnej spotrebe, (10k kolektory), pri napajani cca do 4V. Dostal som sa na asi 10khz, vyssie so standardnymi bipolarmi by to asi slo len za cenu spotreby. Taktiez si potrpim, aby tie pulzy aj nejak "vypadali", lebo na vyssej frekv. sa zacinaju objavovat parazitne deje.

1-bit shift register zapojeny ako toggle (Q_neg do Set):
Screenshot from 2022-02-11 14-17-33.png

Skusal som viac typov trandov BC847, S9014, nakoniec som nechal stary BF370 (ft=500MHz). Vypada, ze sa otvara/zatvara najrychlejsie. Neviem sa zbavit drobneho glitchu pri prechode do log 1. AND hradlo ktore je v tom case neaktivne krmi pocas shift pulzu bazu malym prudom cez 180k . Mozno je to na vymenu trandu ktory nema az taku citlivu bazu (napady?) a teda sa na kolektorovom prude/napati sa tento bazovy prirastok neprejavy.

Priebeh na kolektore:
WP_20220211_001.jpg
0
"No pain, no gain." (KC238)

maskrtnik01
Ultimate člen
Ultimate člen
Príspevky: 2573
Dátum registrácie: 20 Júl 2010, 00:00
Bydlisko: okolie KE
Vek: 27

Re: Navrh PC z tranzistorov

Príspevok od používateľa maskrtnik01 » 11 Feb 2022, 17:29

Obdivujem to zapálenie, pustiť sa do takéhoto projektu. Nebolo by ale vhodnejšie najprv spraviť funkčný prototyp v FPGA?

Potom keď to bude šlapať, tak sa môže vyvinúť vlastný hardware.
0

miso156
Pokročilý člen
Pokročilý člen
Príspevky: 648
Dátum registrácie: 06 Dec 2020, 11:46
Bydlisko: Banska Stiavnica
Vek: 38

Re: Navrh PC z tranzistorov

Príspevok od používateľa miso156 » 11 Feb 2022, 18:09

Ono je to tak, ze cela finalna koncepcia bude z tzv. jednoduchych zapojeni ako diodove hradla, tran. SR flop, kondikovy generator pulzov a timing sekvencii, multiplexery aj demultiplexery budu taktiez z diod. Dokonca aj timer ako HW periferia bude analogova, nejdem skladat citac aj ked by som to vedel.

FPGA ako take ma zakladnu pamatovu bunku z edge triggered D-flip-flop, tzn. po jednom drote. Naproti tomu SR flop v mojom navrhu sa ovlada cez zvlast S a R vstupy, takze po dvoch drotoch. Kombinacna logika v FPGA je v lookUpTable, ja ju musim skladat z hradiel. Pamat programu mam cez switche (ihlove piny) s diodovym interfaceom 2^n.

Teda celkovo by som v FPGA vela toho neodsimuloval.

Ono to v podstate ani simulovat netreba, ked si clovek dobre premysli funciu, potom uz ostava len to precizne hardwarovo navrhnut, nacasovat, vyriesit glitche a pod..

Taktiez si netreba predstavovat, ze to bude stroj na ktorom sa bude hrat snake, aj ked aj to by sa dalo. Na zaciatok planujem spravit len 6 ks 16bit pamatovych modulov (192 tranzistorov). Neskor mozno dalsie.
Z nejakych tych mojich doterajsich skusenosti viem, ze pokial sa neriesi video, mp3 a podobne datatovo narocne veci, tak zas az tak vela bytov clovek nepotrebuje.

Vzhladom k tomu, ze som sa vyhol instrukciam ako Load ktore neplnia ziadnu funkciu ani instrukcna sada nebude rozsiahla. Scitacka, ktora sa bude pouzivat aj ako odcitacka, nejake log. funkcie, rotacie/shifty sa taktiez daju vyriesit cez scitacku. To ci si dam cas aby som spravil aj hw nasobicku/delicku je este otazne.

Viac menej to planujem na real time control, riesenie rovnic a mat. uloh - hladanie minima a maxima funkcii, diff. rovnice, PID regulatory, gen. funkcii, spinanie faz motorov a tak.

Pretoze zariadnie ktore nemoze byt rekonfigurovane je nudaaa...
0
"No pain, no gain." (KC238)

Používateľov profilový obrázok
StefanST
Pokročilý člen
Pokročilý člen
Príspevky: 778
Dátum registrácie: 20 Feb 2012, 22:25
Bydlisko: Nové Zámky

Re: Navrh PC z tranzistorov

Príspevok od používateľa StefanST » 11 Feb 2022, 19:05

miso156 napísal:
11 Feb 2022, 14:59
Snazim sa z toho vytiahnut max frekvenciu, pri rozumnej spotrebe, (10k kolektory), pri napajani cca do 4V. Dostal som sa na asi 10khz, vyssie so standardnymi bipolarmi by to asi slo len za cenu spotreby...

Skusal som viac typov trandov BC847, S9014, nakoniec som nechal stary BF370 (ft=500MHz)...

... hradlo ktore je v tom case neaktivne krmi pocas shift pulzu bazu malym prudom cez 180k . ...
- ft=500MHz asi moc nepomôže, keď je báza budená cez rezistor 100k. Nepomohlo by k urýchleniu prepínania dať paralelne k rezistorom, kondenzátor10-100pF?

- 180k rezistor sa mi nedarí identifikovať...
0

miso156
Pokročilý člen
Pokročilý člen
Príspevky: 648
Dátum registrácie: 06 Dec 2020, 11:46
Bydlisko: Banska Stiavnica
Vek: 38

Re: Navrh PC z tranzistorov

Príspevok od používateľa miso156 » 11 Feb 2022, 19:57

To StefanST:

180k je vystup AND hradla pre preklapanie SR obvodu. Povedzme ze anoda D4 je vacsinu casu, ked je kratucky shift pulse neaktivny, na potencialy 0.7V. To znamena, ze delic 180k a 100k vytvara na spolocnom bode (baze Q1) potencial okolo 0.3V a teda bazu Q1 neovplyvnuje.
Ked vsak shift pulz pride, anoda D4 sa podvihne na potencial povedzme 3.5V a baza Q1 sa zacne napajat, lebo spolocny bod 180k a 100k bude daleko nad 0.7v (baza ho clampne samozrejme).

Normalny clovek by 180k nahradil diodou, treba vsak riesit ze C2 sa pocas shift pulzu nabija cez 47k a D3 a moze vygenerovat falosny pulz aj ked je kolektor Q1 na nule. Preto je zvolena kombinacia 180k a 100k a vytvara tak vhodny bezpecnostny treshold.

Treshold sa da vyriesit aj napriklad zenerkou 1v5. Su to vsak vsetko suciastky naviac, 4 suciastky na bit robia pri 16bitoch 64 suciastok naviac.


Kondiky k bazovym odporom zrychlia preklapanie SR obvodu, avsak zas spomalia dvihanie spolocneho potencialu 180k,100k. Bolo by to efektivne riesenie v pripade ze by vystup AND hradla nebol 180k, ale by sa baza ovladala tvrdo cez nizsiu impedanciu ako napriklad tou zenerkou.

Zmeral som dobu prechodu z 1 do 0 na kolektoroch, trva 2 az 3 us. Ak by tie kondiky aj skresali tuto dobu o nejaku tu mikrosekundu, scitacka ktora je na konci ma niekolko hradiel (asi 4) za sebou a musim nechat dostatocnu cas. rezervu pre "ustalenie" vysledku scitania. To znamena ze zrychlenie vypoctu na bit by bolo zanedbatelne.

Ak sa znizi pomer Rb ku Rc z 10:1 na menej, zacinaju sa na kolektorovych priebehoch objavovat nepekne zakmity a ich osetrovanie si zas berie nejake tie suciastky naviac.

Avsak uznavam, dobry postreh.
0
"No pain, no gain." (KC238)

Ajven_Black
Stály člen
Stály člen
Príspevky: 118
Dátum registrácie: 19 Máj 2018, 21:12

Re: Navrh PC z tranzistorov

Príspevok od používateľa Ajven_Black » 11 Feb 2022, 20:27

Mišo156, zaujímavé čítanie a držím palne, nech sa ti na projekte darí. Chcem sa opýtať, či plánuješ potom ukázať tu na webe aj hotový prototyp na nejakej experimentálnej doske?
0

miso156
Pokročilý člen
Pokročilý člen
Príspevky: 648
Dátum registrácie: 06 Dec 2020, 11:46
Bydlisko: Banska Stiavnica
Vek: 38

Re: Navrh PC z tranzistorov

Príspevok od používateľa miso156 » 11 Feb 2022, 20:51

To Ajven_Black:

Az bude nieco hotove urcite sem pridam, zatial su to vsetko bezne veci typu shift, scitacka, instrukcie za sebou. Nechcem vsak iba tvrdo okopirovat teoriu fungovania PC a jeho instrukcie, ide mi o nieco viac.

Vysledkom bude uplne ina koncepcia ako ju vsetci pozname.
Pre zvedavych: Nikdy sa nevykona viac ako par instrukcii za sebou bez toho, aby sa program nevratil do taskera. Pamat programu nebude jeden blok ale rozdelena na vela malych celkov. Na konci kazdeho bloku bude podmienka, ktory blok alebo podprogram sa ma vykonat ako dalsi. Program nebude bezat stale, ako u MCU vo while nekonecnej slucke, ale len ked sa v taskery objavi flag od periferii.

Z hruba to uz mam cele premyslene, ostava mi prejst par vzorovych prikladov ci je to schopne ponat kazdy "programatorsky problem".
0
"No pain, no gain." (KC238)

miso156
Pokročilý člen
Pokročilý člen
Príspevky: 648
Dátum registrácie: 06 Dec 2020, 11:46
Bydlisko: Banska Stiavnica
Vek: 38

Re: Navrh PC z tranzistorov

Príspevok od používateľa miso156 » 18 Feb 2022, 18:14

Skusam si prejst par zakladnych programov, ze co vsetko budem v ALU potrebovat. Rad by som ALU zbytocne nekomplikoval. Chcem sa vyhnut aj bitovej rotacii cez shift, inak by to viedlo k dalsiemu "zbytocnemu" pocitaniu shift pulzov do Reg_A, Reg_B. Potom uz asi ostava len barrel shifter a to by bol obvodovy masaker.

Momentalne riesim nasobicku, vychadza mi ze sa to da aj bez shiftovej rotacii a to pomocou scitavania C=C+C, co sposobi posun bitov do lava (od LSB do MSB).

Kod pre nasobenie 4-bit cisel A a B:
image.png
(C sa postupne navysuje v rade 1,2,4,8 az nakoniec pretecie a ostane nulove, to ukonci program)
(Vysledok je v premnnej E)

Napada niekoho ine riesenie, ako postupne vyberat bity z premnnej A?
0
"No pain, no gain." (KC238)

miso156
Pokročilý člen
Pokročilý člen
Príspevky: 648
Dátum registrácie: 06 Dec 2020, 11:46
Bydlisko: Banska Stiavnica
Vek: 38

Re: Navrh PC z tranzistorov

Príspevok od používateľa miso156 » 23 Feb 2022, 04:07

Zaporne cisla:
Momentalne riesim ako narabat so zapornymi cislami. Povodne som chcel vsetko riesit iba v kladnej rovine, dostal sa ale k prikladu riesenia PID regulatora kde potrebujem pocitat odchylku od ziadanej hodnoty a ta moze byt kladna aj zaporna. Nevravim ze by sa to nedalo obist iba s kladnymi cislami, ale vysledny program to zbytocne natahuje.
Inspiroval som sa ako to maju riesene v MCU. Normalne pocitaju aj ukladaju 2's complement cisla a nic neriesia. Asi pojdem aj ja touto cestou a teda jeden bit obetujem pre znamienko.
Prebehol som si, ci nebudem mat problem v scitacke ktora sa bude prepinat na odcitacku (ten isty obvod), malo by to pekne vychadzat.

Stream 16tich tickov:
Druha vec na srdci je, ze potrebujem do seriovej scitacky a taktiez vypoctu log. funkcii AND,OR 16 kratkych tickov (shift pulzov). Vzhladom ze setrim kazdy trand lebo ja na mega dosky a letovania moc niesom, napadol ma taky "dirty job" a to enablovat astabil na presnu dobu a potom ho vypnut. To by malo vytvorit stream 16tich po sebe iducich pulzov.
Skusal som to cele zapojit, funguje to. Problem by vsak mohol byt so spolahlivostou, kedy tolerancia enablovacieho pulzu moze sposobit trebarz jeden kratky tick naviac, co by u dig. logiky bolo fatalne. Tak som cele to zapojenie dal pre istotu na okenicu do minusovych teplot a zistil som ze sa to cele perfektne tepelne kompenzuje.
Enablovaci pulz pri prechode do minusovej teploty natiahlo z 8,5 na 9 dielikov co je chyba ktora by uz mala viest k cca jednemu ticku naviac, ale "rovnako" sa natiahli aj dielcie ticky takze ich pocet ostal rovnaky.
Aj tak to pre istotu rozdelim na dva streamy po 8 tickov, aby som mal pokoj v dusi ze to nebude navrhnute na hrane.

Schema:
Screenshot from 2022-02-23 03-29-29.png
(Trimrom R13 sa da nastavit presny pocet tickov.)
(V4 spusta cely stream, Q3 a Q5 je tvarovac hran)

Vysledky simulacie pre stream 10-tich tickov:
Screenshot from 2022-02-23 03-28-54.png
Snimok z osciloskopu (3 cele streamy):
WP_20220223_003.jpg
Snimky z osciloskopu (detail tickov):
WP_20220223_004.jpg
WP_20220223_002.jpg
0
"No pain, no gain." (KC238)

Používateľov profilový obrázok
djwiktor
Ultimate člen
Ultimate člen
Príspevky: 1624
Dátum registrácie: 01 Júl 2010, 00:00
Bydlisko: Šaľa
Vek: 36
Kontaktovať používateľa:

Re: Navrh PC z tranzistorov

Príspevok od používateľa djwiktor » 23 Feb 2022, 19:01

pocuj, namiesto tej Q1,nepomohlo by tam vrazit nejake pre-biased BJTcko?
https://www.mouser.sk/c/semiconductors/ ... re-biased/

treba najst ten spravny.. tieto pre-biased sa "trochu" chovaju ako logic level FETy.
Tym by si mohol zrusit ten 180k, a mohlo by sa vyriesit ten glitch pri zopnuti.
0
Tlacim na 3D tlaciarni Felix 3.0 dual
Stormchasers.sk

miso156
Pokročilý člen
Pokročilý člen
Príspevky: 648
Dátum registrácie: 06 Dec 2020, 11:46
Bydlisko: Banska Stiavnica
Vek: 38

Re: Navrh PC z tranzistorov

Príspevok od používateľa miso156 » 23 Feb 2022, 20:15

djwiktor napísal:
23 Feb 2022, 19:01
Asi by mierne pomohol odpor zapojeny priamo do bazy (napr. 10k a tak..), avsak odpor medzi BE by veci zacne komplikoval, pretoze Q1 je ovladany aj z druhej strany cez R4=100k. To pri 4V napajani by dovolilo mat ten interny Rbe=47k max , delic Rbe / (R4+Rbe). Co som pozeral tak tie BJT obycajne maju v puzdre Rbe=10k, mozno su aj s vyssim odporom, neviem.

Inak, ten glitch som ako tak vyriesil ze som ten 180k odpor zmenil na 240k. Su aj lepsie riesenia, kde sa toho glitchu da zbavit uplne, ako som hovoril zenerkou, len su to vsetko suciastky naviac, co pri dvoch 16bit registroch nie je malo, bere priestor.
0
"No pain, no gain." (KC238)

miso156
Pokročilý člen
Pokročilý člen
Príspevky: 648
Dátum registrácie: 06 Dec 2020, 11:46
Bydlisko: Banska Stiavnica
Vek: 38

Re: Navrh PC z tranzistorov

Príspevok od používateľa miso156 » 13 Mar 2022, 14:40

Zacal som riesit pamat, na zaciatok pre ucel ladenia som navrhol dosku pre 1bit pam. bunku aj s read/write obvodmi. Tie budu ovladane z adresoveho dekodera s enablovanim. Takze klasika, do dekoderu sa nastavi adresa, necha sa ustalit az potom sa zaenabluje adresa na jeho vystupe.

Vychadza mi to na 22 suciastok na pam. bunku, pri caa 2 centoch na suciastku to robi 44centov na 1bit, treba riesit aj ekonomicke hladisko, haha. Dosku riesim rucnym frezovanim, v OBI som na to nasiel celkom vhodnu frezku, pri troche praxe by tato motoda vyrobi DPS mala byt postacujuca, pri prvej doske mi trochu ubehla ruka :D .(foto).
Vo finale budem asi davat 4bity na dosku, takze rozmerovo asi 20x4 cm.

Blizkej dobe uz planujem jednoduchy automat, pre vyber dat z pamati, nakopirovanie do registra, ten spravi nejaku operaciu a zapise data naspat do pamati.

Schema 1bit pam. bunky s 2bit dekodermi (dekoder asi bude len jeden):
Screenshot from 2022-03-12 23-29-32.png
Doska 1bit pamati:
C2E9E62F-22E1-40E8-89A2-BDB087E795F1.jpeg
D9A6ECB0-3541-49F8-BB02-31399C5C8666.jpeg
(pravy trand musi byt naopak -emitory spolu)
0
"No pain, no gain." (KC238)

miso156
Pokročilý člen
Pokročilý člen
Príspevky: 648
Dátum registrácie: 06 Dec 2020, 11:46
Bydlisko: Banska Stiavnica
Vek: 38

Re: Navrh PC z tranzistorov

Príspevok od používateľa miso156 » 15 Mar 2022, 21:04

Testovaci automat je hotovy, vykonava standardne Read-Modify-Write execution. Zatial vsetko 1.bit. Data z pamate sa nacitaju do registra, tie sa v nom toggluju cez negovany shift a hodnota sa zapise naspat do pamate.
Na casovanie pouzivam otvoreny ring-counter s piatimi stage-mi, Read/Pauza/Modify/Pauza/Write.

Prve 3 stage ring-counteru:
Screenshot from 2022-03-15 21-11-44.png
Celu tuto cast som robil iba na otestovanie hranicnych stavov (vo finale to bude trochu inak), hlavne f_max, taktiez napatove urovne. Chcem aby to chodilo pri cca 4V Vcc, ale neplanujem robit presny napatovy zdroj, takze cele zariadnie musi zvladat aspon +1/-0.5V toleranciu na Vcc.

Neaktivne bazy sa snazim drzat (kde je to potrebne) blizko 0V pomocou zaporneho podpatia, takze zdroj musi ma aj jednoduchu minusovu vetvu cez seriovu diodu viz. pripad AND/NAND hradla na obrazku. Povodne som bol voci tomu skepticky lebo to funguje aj bez podpatia, ale zvysi to spolahlivost. To preto, ze v case ked su katody D1,D2 zemnene je na nich 0.6V avsak D3 bez podpatia ma sotva 0.4V, takze je baza drzana na 0.2V comu ja nedoverujem ako spolahlive zavretie Q1. S podpatim ako je na obrazku sa ubytok na D3 taktiez blizi 0.6V a baza je spolahlivo skoro na nule.

AND/NAND hradlo s podpatim:
Screenshot from 2022-03-15 21-31-43.png

3 solo pulzy pre Read-Modify-Write z kolektorov ring counteru:
352DC259-37BA-45B3-85C9-6426E4829487.jpeg
(meriam vsetky 3 kolektory naraz cez diody kedze mam iba jednokanal)

Stav pamate, togglovana hodnota zapise naspat:
D9B8A227-FD63-4201-A12B-309EE6417455.jpeg
Cele zapojenie, "zdrotovany zlepenec":
28E9D90A-10A0-46DC-A108-5BE9663310D4.jpeg
0
"No pain, no gain." (KC238)

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok