- Milyen széket vegyek?
- Milyen notebookot vegyek?
- MILC felhasználók szakmai topikja
- Vezetékes FEJhallgatók
- Nagyon nem szokványos módon ment tönkre egy ASML gép Kínában…
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Számítógépház-választás 2025: airflow, kompatibilitás és hibák
- Philips LCD és LED TV-k
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- Házimozi belépő szinten
Aktív témák
-
t3rm1nat0r
csendes tag
Mivel egy c program lesz ami majd emulálja a hardver működését, ezért kicsit a programozás rejtelmeiben is elmerülök. Ezért került ide ez a topik.
Ha megnézzük, hogy egy D flip-flop mennyi kapuból áll, és egy kapu mennyi tranzisztorból, elsőre elég elrettentőnek látszik a feladat.
Itt jön a képbe a programozás igazi lényege. Mert nem az a lényeg, hogy az összes c nyelvjárás szintaktikai külömbségeit fejből fujja az ember. Azt egy ovodás is kiguglizza.A feladat felbontása kisebb részfeladatokra. Ez az, amit /még/ nem tudnak a gépek.
Mivel a c nyelv egy logikai kapu működését egyszerűen utánnozza, ezért ez lesz az alapszint. Erre épül fel majd minden. Mivel látványos programot akarok, ezért a tranzisztorok állapotát is meg lehet majd jeleníteni a kapu állapotának ismeretében.
Igazából egy processzort nem kapuszinten terveznek, hanem nagyobb egységekből rakják össze. Ez programozásnál is egy bevált módszer. Ha már tesztelt, és biztosan jól működő részegységekből építkezünk, akkor az új rendszer gyorsabban áll össze, és kisebb a hibalehetőség.A nemrég belinkelt Dflipflop-nak ennyi a kódja.Ez egyszerűen megmonja, hogy egy sorXsor-os NAND tömbben melyik kapu melyik két másikhoz kapcsolódjon.
void define_dflip(int t,int l1)
{
int tr[]={
t+0, t+1, t+2, t+3, t+4,
t+sor+0, t+sor+1, t+sor+2, t+sor+3, t+sor+4,0};//5-9define_links(tr[0],link_5V,l1,0); //inverter
define_links(tr[5],link_5V,tr[4],1);define_links(tr[1],l1,tr[5],0); define_links(tr[2],tr[7],tr[1],1);
define_links(tr[6],l1,tr[4],1); define_links(tr[7],tr[2],tr[6],0);define_links(tr[3],tr[0],tr[2],1); define_links(tr[4],tr[9],tr[3],0);
define_links(tr[8],tr[0],tr[7],1); define_links(tr[9],tr[4],tr[8],1);
}Innentől egy 8 bites számlálónak már csak ennyi a kódja.Ez megadja, hogy két soronként legyen lefele egy-egy Dflipflop, és mindig az előző kimenetére csatlakozzon.
//counter
int counter_bazis=2,counter_out_offset=4;
int tr=counter_bazis;
define_dflip(tr,0); tr+=ketsor;
define_dflip(tr,tr+counter_out_offset-ketsor); tr+=ketsor;
define_dflip(tr,tr+counter_out_offset-ketsor); tr+=ketsor;
define_dflip(tr,tr+counter_out_offset-ketsor); tr+=ketsor;
define_dflip(tr,tr+counter_out_offset-ketsor); tr+=ketsor;
define_dflip(tr,tr+counter_out_offset-ketsor); tr+=ketsor;
define_dflip(tr,tr+counter_out_offset-ketsor); tr+=ketsor;
define_dflip(tr,tr+counter_out_offset-ketsor); tr+=ketsor;Definiálni kellene a define_links() függvényt. Mondjuk legyen ilyen.
void define_links(int t,int l1,int l2,int default_out)
{
nand[t].link[0]=l1;
nand[t].link[1]=l2;
nand[t].out=default_out;
}Ebből már sejthető, hogy az alapstruktúrának valami hasonlónak kell lennie.
struct struct_nand
{
int in1,in2,out;
int link[2];
int xykoord[3][2];
}nand[2000];Lesz egy kapunak két bemenete és egy kimenete. Hogy honnan szedje az értéket a bemenet, ezt adja meg a link[]. Ezt definiáltam az előbb.
A kapuk szimulációja sem sokkal bonyolultabb.
for(j=0;j<sor*sor;j++)
if((j%sor))//elso sor nem kell
{
int link1=nand[j].link[0];
int link2=nand[j].link[1];if(link1==link_5V) nand[j].in1=1;//fix input
if(link2==link_5V) nand[j].in2=1;
if(link1==link_0V) nand[j].in1=0;
if(link2==link_0V) nand[j].in2=0;if(link1>=0) nand[j].in1=nand[link1].out;//out -> in1,2
if(link2>=0) nand[j].in2=nand[link2].out;
}
for(j=0;j<sor*sor;j++)
if((j%sor))//elso sor nem kell
{
nand[j].out=!(nand[j].in1 & nand[j].in2);//NAND muvelet
}A kapu lehet az 5V-ra vagy a földre kötve, de kaphatja a bemenetét egy másik kapuról. Ha ezt beállitottuk, akkor már csak a NAND művelet elvégzése van hátra.
Igazából ez már így működik, de senki nem kiváncsi egyesek meg nullák ugrálására a képernyőn.
Na ez a rész már kissé bonyolultabb lesz, de nem vészes.
Aktív témák
- ASZTALI GÉP / ALKATRÉSZ beárazás
- Milyen széket vegyek?
- Milyen notebookot vegyek?
- MILC felhasználók szakmai topikja
- Poco F7 – bajnokesélyes
- Elektromos autók - motorok
- Felforgatná Kína a technológiai világrendet
- RETRO beárazás (mobil, PC, konzol)
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- Luck Dragon: Asszociációs játék. :)
- További aktív témák...
- Fujifilm 33/1.4 R LM WR
- Crucial P310 1TB M.2 2230 NVME PCI-E 4.0 x4 - Új, bontatlan - 7100-6000 MBs - Eladó!
- Használt NVME M2 SSD-k - 1000 GB tól 2048GB-ig Samsung Hynix Intel Kioxia WD Micron Toshiba
- WD Black SN770M 2TB M.2 2230 NVME PCI-E 4.0 x4 - Új - 5150-4850 MBs - Eladó!
- Gamer PC 2025, Komplett gép, Garanciális alkatrészek, BESZÁMÍTÁS
- HP 14 Elitebook 640 G10 FHD IPS i5-1345U vPro 10mag 16GB 512GB SSD Intel Iris XE Win11 Pro Garancia
- GYÖNYÖRŰ iPhone 12 mini 128GB Blue -1 ÉV GARANCIA - Kártyafüggetlen, MS3464, 96% Akkumulátor
- Samsung Galaxy S23 128GB, Kártyafüggetlen, 1 Év Garanciával
- HP ProBook 430 G7 Pentium Gold 6405U laptop (kijelző hibás)
- ÁRGARANCIA!Épített KomPhone Ryzen 5 5600X 16/32/64GB RAM RTX 5060 8GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest



