Vita:Bináris műveletek

Innen: HamWiki
Ugrás a navigációhoz Ugrás a kereséshez

Néhány gondolat erről a szócikkről:

  • szerencsés lenne bemutatni kezdőnek / kevésbé bátor érdeklődőnek, hogyan tud ÉS kapcsolatot elkészíteni otthoni ketyeréihez. No meg a többi alapfogást is.
  • Hogy miért akkor a VHDL? Megesik, hogy nem csak egyetlen ÉS kapú kell. Például egy érdekesség: CPLD-ben megvalósított komplett PLL szintézer a két jumperekkel és/vagy direktben programozott módon konfigurálható előosztóval (kvarc osztó és VFO osztó + D tárolós freki és fázisérzékeny PLL). Mindez a 2 méteres sávban is működhet a Coolrunner család néhány 100 Ft-os legkisebb elemének felhasználásával.
  • Ugyanakkor mint pár sorral feljebb írtam, van amikor a VAGY kapcsolathoz a két dióda + lehúzóellenállás is is elégséges. Sajnos ez sok rajz, bár az XFIG segít :)

Persze mindez sok-sok írogatás által, szépen lassan ... és mégis valami hasznos sülhet ebből is ki.

És hogy leírónyelv és programnyelv terén miért verilog, c és python? Három meghatározó igen hatékony nyelven kívánom szemléltetni. Az első kettő ráadásul részben hasonlít egymásra, bár teljesen másképp működik, hiszen a c nyelv lefordítottja utasításonként hajtódik végre, míg a verilog áramkörleíró nyelv NAND kapuk tízezreinek összekötözgetéseit definiálja.

De mellette azért célszerű bemutatni, akár diódás-tranzisztoros módon, akár NAND kapukkal (74LS00) hogyan lehet az adott logikát felépíteni. Mikor mivel célszerű...

--HG2ECZ Zsolt 2009. augusztus 23., 21:37 (UTC)

Majd a relét sem kell kihagyni.

Egy kis Pascal. Táblázattal és függvény(ek)kel. <source lang="pascal"> program kapu;

(*-------------------------------------------------------------------*)

const not1tbl: array[boolean] of boolean = ( true, false );

function not1fn( a: boolean ): boolean;

begin
not1fn := not a
end;

(*-------------------------------------------------------------------*)

const and2tbl: array[boolean, boolean] of boolean = ( (false, false), (false, true) );

function and2fn( a: boolean; b:boolean ): boolean;

begin
and2fn := a and b
end;

(*-------------------------------------------------------------------*)

const or2tbl: array[boolean, boolean] of boolean = ( (false, true), (true, true) );

function or2fn( a: boolean; b:boolean ): boolean;

begin
or2fn := a or b
end;

(*-------------------------------------------------------------------*)

const xor2tbl: array[boolean, boolean] of boolean = ( (false, true), (true, false) );

function xor2fn( a: boolean; b:boolean ): boolean;

begin
xor2fn := a xor b
end;

(*-------------------------------------------------------------------*)

type addindex = ( data, carry );

const add2tbl: array[boolean, boolean] of array[addindex] of boolean = ( ((false, false),(true,false)), ((true,false), (false,true)) );

function adddata2fn( a: boolean; b:boolean ): boolean;

begin
adddata2fn := a and b and not ( not a and not b )
end;

function addcarry2fn( a: boolean; b:boolean ): boolean;

begin
addcarry2fn := ( a or b ) and ( not a or not b )
end;

(*-------------------------------------------------------------------*)

const decoder2tbl: array[boolean, boolean] of array[0..3] of boolean = ( ((false,false,false,true), (false,false,true,false)), ((false,true,false,false), (true,false,false,false)) );

function decoder02fn( a: boolean; b:boolean ): boolean;

begin
decoder02fn := not a and not b
end;

function decoder12fn( a: boolean; b:boolean ): boolean;

begin
decoder12fn := not a and b
end;

function decoder22fn( a: boolean; b:boolean ): boolean;

begin
decoder22fn := a and not b
end;

function decoder32fn( a: boolean; b:boolean ): boolean;

begin
decoder32fn := a and b
end;

(*-------------------------------------------------------------------*)

begin end. </source>

Gg630504 2009. augusztus 25., 06:02 (UTC)


Igen, nem véletlenül "nem hagyott nyugodni a lelkiismeret" engem sem, így a vita lapon ismertettem alapelvemet.

  • Igen színes azon programnyelvek palettája, amire napjainkban van fordító ill. futtatókörnyezet (Ada, Basic, Fortran, Lisp, C, C++, C#, Java, O'Caml, Perl, PHP, Python, Ruby, TCL), de közülük igen kevés használata biztosított széleskörben (mikrovezérlőtől az erőteljesebb számítástechnikai eszközökig)

Gyakorlatilag a Pascal is itt bukott el. A DOS korában élte a fénykorát Intel 8088 családon. Máshol csak fel-felbukkan, de nem kapott szárnyra, mikrovezérlős környezetben sem. A C azonban mindenhol ott van, a python viszont az ezredforduló utántól terjed nagyon intenzíven - apróbb alkalmazások készítésére az "ultraegyszerű jellege" miatt. Közben az általunk még igen alaposan elsajátított Pascal szépen lassan a Fortran sorsára jut(ott). Emlék.

  • Hardverleíró terén is ott a klasszikus VHDL, amit nekem is annó alaposabban oktattak. Akkor még csak ez volt - Verilog még sehol. Aztán eltelt egy évtized. Szintén csak egyet, az ígéretesebbet próbáltam 2009-ben kiválasztani - amely ez esetben nem egyszerű, mivel még mindkettő igen jelentős, de mégis a Verilog-ot látom ígéretesebbnek. A Verilog-ról annyit, hogy a VHDL megjelenése után közel egy évtizeddel kezdett terjedni. Ezt nem szabványosító szervezet, hanem a fejlesztők keltették életre és gondozzák. Amiért tetszetős a fejlesztőknek, a C-hez erősen hasonlító, tömör szintaktikára és hatékony leírásra törekedtek. De mint írtam, ha valahol, akkor itt még nehéz a döntést meghozni.

---

Áramköri rajzokat érdemes viszont az egyszerűen helyettesítő logikákról rajzolni. Hogy éppen mivel, diódával vagy 74LS00 NAND-jaival ... kreativitás kérdése. Még ezek is kaphatók és vélhetőleg az elkövetkezendő 10 évben sem kopnak ki - annál közkedveltebbek, max csak a DIP tokozásúak felejtődnek a SOIC javára.

--HG2ECZ Zsolt 2009. augusztus 25., 09:00 (UTC)

Wirth bácsi ( főiskolai ) oktatásra tenyésztette ki a Pascalt. Amolyan referencia, amihez a többi nyelvet lehet viszonyítani. Ma is - tudat alatt - Pascalul gondolkodok, de C-ben kódolok.

Gg630504 2009. augusztus 25., 12:13 (UTC)