์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- OS
- ์ค๋ผํดDB
- ํ์ด์ฌ
- ๋ฌ์คํธ ์์
- ์๋ฐ ๊ฐ๋
- java
- ๋ฐฑ์ค
- ํ์ด์ฌ ์ฑ๋ฆฐ์ง
- ํ์ด์ฌ ์ฒผ๋ฆฐ์ง
- Python
- ์ค๋ผํด
- ubuntu
- ์ด์์ฒด์
- Operating System
- ํ์ด์ฌ ์๊ณ ๋ฆฌ์ฆ
- ๋ฐฑ์ค ๋ฌ์คํธ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- data communication
- Database
- Python challenge
- C
- ์๊ณ ๋ฆฌ์ฆ
- ๋ฌ์คํธ
- ๋ฐ์ดํฐ ํต์
- ์ฐ๋ถํฌ
- ์๋ฐ ๊ธฐ์ด
- Reversing
- Rust
- ๋ฌ์คํธ ํ๋ก๊ทธ๋๋ฐ ๊ณต์ ๊ฐ์ด๋
- ์๋ฐ
Archives
- Today
- Total
IT’s Portfolio
[System] The Elements of Computing System - 1 ๋ณธ๋ฌธ
728x90
๋ฐ์ํ
๐ป The Elements of Computing System - 1
๐ค ๋ถ ๋์(Boolean Algebra)
- true/false, ์/์๋์ค, ์ผ์ง/๊บผ์ง ๊ฐ์ ๋ถ๊ฐ์ ๋ค๋ฃจ๋ ๋์ํ
- ์ปดํจํฐ๋ ์ง์๋ฅผ ํํํ๊ณ ์ฒ๋ฆฌํ๋ ํ๋์จ์ด์ด๊ธฐ ๋๋ฌธ์ 2์ง์ ์ ๋ ฅ์ ๊ฐ๊ณตํด 2์ง์ ์ถ๋ ฅ์ ํ๋ ๋ถ ํจ์๋ฅผ ์ ์ํ๊ณ ๋ถ์ํ๋ ๊ฒ์ด ์ปดํจํฐ ์ํคํ ์ณ๋ฅผ ๊ตฌ์ถํ๋ ์ฒซ ๋จ๊ณ๊ฐ ๋จ
๐ค ํ๋์จ์ด ๊ธฐ์ ์ธ์ด
CHIP Xor {
IN x, y;
OUT out;
PARTS:
Not(in=x, out=notx);
Not(in=y, out=noty);
And(x=x, y=noty, out=w1);
And(x=notx, y=y, out=w2);
Or(x=w1, y=w2, out=out);
}
- HDL program(Xor.hdl)
- Xor(exclusive or) gate
- if x<>y out=1 else out=0
- HDL์ ํค๋ ๋ถ๋ถ์์๋ ์นฉ ์ธํฐํ์ด์ค ์ ์
- ์นฉ์ ์ด๋ฆ๊ณผ ์ ๋ ฅ ๋ฐ ์ถ๋ ฅ ์ด๋ฆ์ ๋ช ์
- ํํธ๋ ํด๋น ์นฉ์ ๋ด๋ถ ๊ตฌํ ๋ด๋น
- ํค๋์์ ๋ช ์๋ ์ ๋ ฅ์ ๊ฐ์ข ๋ถ ํจ์๋ฅผ ์ฌ์ฉํด ์ํ๋ ์ถ๋ ฅ๊ฐ์ ๋ง๋ค์ด ๋
load Xor.hdl
output-list x, y, out;
set x 0, set y 0,
eval, output;
set x 0, set y 1,
eval, output;
set x 1, set y 0,
eval, output;
set x 1, set y 1,
eval, output;
- Text script(Xor.tst)
- ํ ์คํธ ์คํฌ๋ฆฝํธ๋ ์ค๊ณํ ์นฉ์ ์คํ์ํด
- ์คํํ๊ณ ์ ํ๋ ์นฉ์ ๋ถ๋ฌ์์ ์ ๋ ฅ ๊ฐ์ ์ค์ ํ๊ณ ์คํํจ
x | y | out
-----------
0 | 0 | 0
0 | 1 | 1
1 | 0 | 1
1 | 1 | 0
- Output file(Xor.out)
- ์คํ์ด ๋๋๊ณ ๋๋ฉด ์ ๋ ฅ ๊ฐ์ ์ถ๋ ฅ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ .out ํ์ผ์ ์์ฑ
๐ค Nand ๊ฒ์ดํธ
x y | Nand(x, y)
----------------
0 0 | 1
0 1 | 1
1 0 | 1
1 1 | 0
- ๋ค๋ฅธ ๋ชจ๋ ๊ฒ์ดํธ๋ค์ ๊ธฐ์ด๊ฐ ๋๋ ๊ฒ์ดํธ
๐ค ๊ธฐ๋ณธ ๋ ผ๋ฆฌ ๊ฒ์ดํธ
- Not
- ๋จ์ผ ์ ๋ ฅ Not ๊ฒ์ดํธ๋ 'converter'๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ฉฐ, ์ ๋ ฅ๊ฐ์ ๋ฐ์ ์ํด
- And
- ์ ๋ ฅ๊ฐ์ด ๋๋ค 1์ผ ๊ฒฝ์ฐ์ 1์, ๊ทธ ์ธ์๋ 0์ ๋ฐํ
- Or
- ์ ๋ ฅ๊ฐ ์ค ์ ์ด๋ ํ๋๊ฐ 1์ผ ๋ 1์, ๊ทธ ์ธ์๋ 0์ ๋ฐํ
- Xor
- 'exclusive or'์ด๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ฉฐ, ๋ ์ ๋ ฅ๊ฐ์ด ๋ค๋ฅผ ๊ฒฝ์ฐ 1, ๊ทธ ์ธ์๋ 0์ ๋ฐํ
- Multiplexor
- '์ ํ ๋นํธ' ์ ๋ ฅ์ ๋ฐ๋ผ์ ๋ ๊ฐ์ '๋ฐ์ดํฐ ๋นํธ' ์ ๋ ฅ ์ค ํ๋๋ฅผ ์ ํํด ๋ฐํ
- DeMultiplexor
- ๋ฉํฐํ๋ ์์ ์ ๋ฐ๋ ๊ธฐ๋ฅ์ ํจ
- '์ ํ ๋นํธ'์ ๋ฐ๋ผ ๋ ์ถ๋ ฅ์ ์ค ํ๋๋ฅผ ์ ํํด ์ ๋ ฅ ์ ํธ๋ฅผ ๋ฐํ
๐ค ๊ตฌํ
CHIP Not {
IN in;
OUT out;
PARTS:
// Put your code here:
Nand(a=in, b=in, out=out);
}
- Not
CHIP And {
IN a, b;
OUT out;
PARTS:
// Put your code here:
Nand(a=a, b=b, out=nandAB);
Nand(a=nandAB, b=nandAB, out=out);
}
- And
CHIP Or {
IN a, b;
OUT out;
PARTS:
// Put your code here:
Not(in=a, out=Nota);
Not(in=b, out=Notb);
Nand(a=Nota, b=Notb, out=out);
}
- Or
CHIP Xor {
IN a, b;
OUT out;
PARTS:
// Put your code here:
Not(in=a, out=notA);
Not(in=b, out=notB);
And(a=a, b=notB, out=AandNotB);
And(a=notA, b=b, out=BandNotA);
Or(a=AandNotB, b=BandNotA, out=out);
}
- Xor
CHIP Mux {
IN a, b, sel;
OUT out;
PARTS:
// Put your code here:
Not(in=sel, out=Notsel);
And(a=sel, b=b, out=bsel);
And(a=Notsel, b=a, out=aNotsel);
Or(a=aNotsel, b=bsel, out=out);
}
- Multiplexor
CHIP DMux {
IN in, sel;
OUT a, b;
PARTS:
Not(in=sel, out=Notsel);
And(a=in, b=Notsel, out=a);
And(a=in, b=sel, out=b);
// Put your code here:
}
- DeMultiplexor
/**
* 16-bit multiplexor:
* for i = 0..15 out[i] = a[i] if sel == 0
* b[i] if sel == 1
*/
CHIP Mux16 {
IN a[16], b[16], sel;
OUT out[16];
PARTS:
Mux(a=a[0], b=b[0], sel=sel, out=out[0]);
Mux(a=a[1], b=b[1], sel=sel, out=out[1]);
Mux(a=a[2], b=b[2], sel=sel, out=out[2]);
Mux(a=a[3], b=b[3], sel=sel, out=out[3]);
Mux(a=a[4], b=b[4], sel=sel, out=out[4]);
Mux(a=a[5], b=b[5], sel=sel, out=out[5]);
Mux(a=a[6], b=b[6], sel=sel, out=out[6]);
Mux(a=a[7], b=b[7], sel=sel, out=out[7]);
Mux(a=a[8], b=b[8], sel=sel, out=out[8]);
Mux(a=a[9], b=b[9], sel=sel, out=out[9]);
Mux(a=a[10], b=b[10], sel=sel, out=out[10]);
Mux(a=a[11], b=b[11], sel=sel, out=out[11]);
Mux(a=a[12], b=b[12], sel=sel, out=out[12]);
Mux(a=a[13], b=b[13], sel=sel, out=out[13]);
Mux(a=a[14], b=b[14], sel=sel, out=out[14]);
Mux(a=a[15], b=b[15], sel=sel, out=out[15]);
}
- 16๋นํธ Multiplexor
- 1๋นํธ ๊ฒ์ดํธ๋ฅผ ์ด์ด๋ถํ ์ค๊ณํจ
/**
* 4-way 16-bit multiplexor:
* out = a if sel == 00
* b if sel == 01
* c if sel == 10
* d if sel == 11
*/
CHIP Mux4Way16 {
IN a[16], b[16], c[16], d[16], sel[2];
OUT out[16];
PARTS:
// Put your code here:
Mux16(a=a, b=b, sel=sel[0], out=muxAB);
Mux16(a=c, b=d, sel=sel[0], out=muxCD);
Mux16(a=muxAB, b=muxCD, sel=sel[1], out=out);
}
- ํ ๋๋จผํธ ํ์์ผ๋ก ์ผ์ ์ ์ค๊ณํ 2x1 Mux๋ก 4๊ฐ์ ์ ๋ ฅ์ 2๊ฐ๋ก ์ถ๋ฆฌ๊ณ ์ถ๋ ค์ง 2๊ฐ์ ์ ๋ ฅ ์ค ๋ง์ง๋ง Mux๋ก ์ต์ข ์ถ๋ ฅ๊ฐ ๊ฒฐ์
- ์ด ๋, ์ ํ ๋นํธ๋ฅผ 2bit๋ก ๋๋ ค์ ์ฒซ ์ฐ์ฐ๊ณผ ๋ง์ง๋ง Mux ์ฐ์ฐ์ ๊ฐ๊ฐ ์ ํ ๋นํธ ํ ๊ฐ์ฉ์ ์ฌ์ฉํจ
728x90
๋ฐ์ํ
'Development Study > Rust' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[System] The Elements of Computing System - 3 (1) | 2023.11.08 |
---|---|
[System] The Elements of Computing System - 2 (1) | 2023.11.04 |
[Rust] How to study Rust? - "Copycat" (6) (0) | 2023.09.24 |
[Rust] How to study Rust? - "Copycat" (5) (0) | 2023.09.23 |
[Rust] How to study Rust? - "Copycat" (4) (0) | 2023.09.23 |
Comments