„Vita:Bináris műveletek” változatai közötti eltérés

Innen: HamWiki
Ugrás a navigációhoz Ugrás a kereséshez
(Szócikk céljáról ...)
 
(+= Pascal)
12. sor: 12. sor:
  
 
--[[Szerkesztő:HG2ECZ|HG2ECZ Zsolt]] 2009. augusztus 23., 21:37 (UTC)
 
--[[Szerkesztő:HG2ECZ|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>
 +
 +
[[Szerkesztő:Gg630504|Gg630504]] 2009. augusztus 25., 06:02 (UTC)

A lap 2009. augusztus 25., 07:02-kori változata

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)