Vita:Bináris műveletek
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)