Vita:Bináris műveletek

Innen: HamWiki
A lap korábbi változatát látod, amilyen Gg630504 (vitalap | közreműködések) 2009. augusztus 25., 08:02-kor történt szerkesztése után volt. (+= Pascal)
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)