STUDIO HAZE · jeniapp
Topaz source
Open by house policy. Topaz is our own language.
Topaz 5.20.2 · 63 files
apps/circuit/core/gate.tpz
Topaz · 1376 B · Original file
1
// 논리 게이트. NAND 진리표 하나만 원시 게이트로 두고 나머지 게이트는 모두 NAND 를 조립해 만듭니다.2
// 입력은 bool 신호 한두 개이고 출력은 bool 신호 하나입니다.3
// 같은 입력이면 늘 같은 신호가 나옵니다. 신호 경로에 산술을 쓰지 않습니다.4
// 노드 종류를 고르거나 회로를 평가하지 않습니다. 그 일은 core.netlist 와 core.sim 이 합니다.5
// Logic gates: NAND is the only primitive truth table and every other gate is composed from it.7
export function 부정논리곱(가: bool, 나: bool) -> bool {8
if 가 && 나 { false } else { true }9
}11
export function 부정(가: bool) -> bool { 부정논리곱(가, 가) }13
export function 논리곱(가: bool, 나: bool) -> bool { 부정(부정논리곱(가, 나)) }15
export function 논리합(가: bool, 나: bool) -> bool { 부정논리곱(부정(가), 부정(나)) }17
export function 부정논리합(가: bool, 나: bool) -> bool { 부정(논리합(가, 나)) }19
// NAND 네 개로 짜는 표준 구성입니다.20
export function 배타적논리합(가: bool, 나: bool) -> bool {21
let 가운데 = 부정논리곱(가, 나)22
부정논리곱(부정논리곱(가, 가운데), 부정논리곱(나, 가운데))23
}25
export function 배타적부정논리합(가: bool, 나: bool) -> bool { 부정(배타적논리합(가, 나)) }SHA256 da1ba7f40c50ddfefe8b7e615160ac64ecc9991dd0bfe16143e233bda632a26f