Appendix A. Serial Programming(8250 UART)

https://en.wikibooks.org/wiki/Serial_Programming/8250_UART_Programming#8086_I/O_ports

์ด ์„น์…˜์˜ ์ฃผ์š” ์ดˆ์ ์€ 82050 UART์— ์ง‘์ค‘๋  ๊ฒƒ์ด์ง€๋งŒ, ์—ฌ๊ธฐ์„œ ์šฐ๋ฆฌ๊ฐ€ ํ•จ๊ป˜ ์ž‘์—…ํ•  ์ปดํ“จํ„ฐ ์นฉ์€ ์ •๋ง ์„ธ ๊ฐ€์ง€๋‹ค.

  • 8250 UART

  • 8259 PIC(ํ”„๋กœ๊ทธ๋žจ์‹ ์ธํ„ฐ๋ŸฝํŠธ ์ปจํŠธ๋กค๋Ÿฌ)

  • 8086 CPU(์ค‘์•™ ์ฒ˜๋ฆฌ ์žฅ์น˜)

์ด๋“ค์€ ๋‹จ์ˆœํžˆ ์นฉ ๋ถ€ํ’ˆ ๋ฒˆํ˜ธ ์ž์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ์นฉ ์ œํ’ˆ๊ตฐ์ž„์„ ๋ช…์‹ฌํ•˜์‹ญ์‹œ์˜ค. ์ปดํ“จํ„ฐ ๋””์ž์ธ์€ ๋ช‡ ๋…„ ๋™์•ˆ ๊ฝค ๋งŽ์ด ์ง„ํ™”ํ•ด์™”๊ณ , ์„ธ ๊ฐœ์˜ ์นฉ์ด ๊ฒฐํ•ฉ๋˜์–ด ๊ฐ™์€ ๋ฐ˜๋„์ฒด์— ๋„ฃ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ๊ทธ๋ž˜์„œ ํ•ด๋‹น ๊ธ€์—์„œ 8086์ด๋ผ๊ณ  ๋งํ•  ๋•Œ, ๋‚˜๋Š” 80286, 80386, ํŽœํ‹ฐ์—„, ๊ทธ๋ฆฌ๊ณ  ์ธํ…” ์ด์™ธ์˜ ์ œ์กฐ์—…์ฒด๊ฐ€ ๋งŒ๋“  ํ˜ธํ™˜ ์นฉ์„ ํฌํ•จํ•œ ํ›„์† ์นฉ์„ ์˜๋ฏธํ•œ๋‹ค. ๋‹ค๋ฅธ ์•„ํ‚คํ…์ณ๋“ค์˜ ์‹œ๋ฆฌ์–ผ ๋ฐ์ดํ„ฐ ํ†ต์‹ ์— ๋Œ€ํ•ด ๋ฏธ๋ฌ˜ํ•œ ์ฐจ์ด๊ฐ€ ์žˆ์ง€๋งŒ, ์—ฌ๋Ÿฌ ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ์ž‘๋™ํ•ด์•ผ ํ•œ๋‹ค?

ํ˜„๋Œ€์˜ ์šด์˜์ฒด์ œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์—ฌ๊ธฐ์„œ ๋‹ค๋ฃจ๊ฒŒ ๋  ์„ธ๋ถ€์‚ฌํ•ญ์˜ ๋Œ€๋ถ€๋ถ„์„ ๋‚ฎ์€ ์ˆ˜์ค€์˜ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ํ†ตํ•ด ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ, ์ด๊ฒƒ์€ ๋‹น์‹ ์ด ์ž์‹ ์˜ ์šด์˜์ฒด์ œ๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๋Š” ํ•œ, ๋‹น์‹ ์ด ์Šค์Šค๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์–ด๋–ค ๊ฒƒ ๋ณด๋‹ค๋Š” ์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋” ๋นจ๋ฆฌ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ์ž‘์€ ์ž„๋ฒ ๋””๋“œ ์ปดํ“จํ„ฐ ์žฅ์น˜๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์—๊ฒŒ, ์ด ์ˆ˜์ค€์—์„œ 8250์„ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ƒ๋‹นํžˆ ๋” ์ค‘์š”ํ•ด์กŒ๋‹ค.

8086๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 8250๋„ 16550 UART์—์„œ ๋ถ€ํ„ฐ ์ƒ๋‹นํžˆ ์ง„ํ™”ํ–ˆ๋‹ค. ๋” ์•„๋ž˜๋กœ ๋‚ด๋ ค๊ฐ€์„œ ๋‚˜๋Š” PC์—์„œ ๋งŽ์€ ๋‹ค๋ฅธ UART ์นฉ๋“ค๊ณผ ๊ฐ๊ฐ์˜ ์นฉ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๋ช‡๊ฐ€์ง€ ๊ธฐ์ดํ•œ ์ ์ด๋‚˜ ๋ณ€ํ™”๋ฅผ ๊ฐ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์—ฐ๊ตฌํ•  ๊ฒƒ์ด๋‹ค. ์ฐจ์ด์ ์€ CPU ์•„ํ‚คํ…์ฒ˜์˜ ๋ณ€๊ฒฝ๋งŒํผ ์ค‘์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ, UART ์นฉ์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์ฃผ๋œ ์ด์œ ๋Š” ํ˜„์žฌ ์‚ฌ์šฉ ์ค‘์ธ CPU๋ณด๋‹ค ํ›จ์”ฌ ๋น ๋ฅธ CPU์—์„œ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•จ์ด์—ˆ๋‹ค. 8250 ์ž์ฒด๋Š” ๋‹จ์ˆœํžˆ ํŽœํ‹ฐ์—„ ์นฉ์„ ๋”ฐ๋ผ๊ฐ€์ง€ ๋ชปํ•œ๋‹ค.

์†Œํ”„ํŠธ์›จ์–ด ์ธก๋ฉด์—์„œ ์ง๋ ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ์œ„ํ•œ ๊ธฐ๋ฐ˜์„ ๊ตฌ์ถ•ํ•˜๋ ค๋Š” ์‹œ๋„๋ผ๋Š” ์ ์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค. ์ด๊ฒƒ์ด ํ•˜๋“œ์›จ์–ด ์„ค๊ณ„์—๋„ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ „์ฒด ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์—ฌ๊ธฐ ์„ค๋ช…์—์„œ ์ƒ๋‹นํžˆ ๋ˆ„๋ฝ๋  ๊ฒƒ์ด๋‹ค.

8086 I/O ports

์šฐ๋ฆฌ๋Š” ์ธํ…” 8086๋ณด๋‹ค ํ›จ์”ฌ ๋” ๋ฉ€๋ฆฌ, ์›๋ž˜์˜ ์ธํ…” CPU์ธ 4004์™€ ๊ทธ ํ›„๊ณ„์ž์ธ 8008๋กœ ๋Œ์•„๊ฐ€์•ผ ํ•œ๋‹ค. 8008์— ๋Œ€ํ•œ ๋ชจ๋“  ์ปดํ“จํ„ฐ ์ง€์นจ, ์ฆ‰ op-code๋Š” ์˜ค๋Š˜๋‚ ์˜ ์ธํ…” ์นฉ์—์„œ ์—ฌ์ „ํžˆ ์ž‘๋™ํ•˜๋ฏ€๋กœ 30๋…„ ์ „์— ์ž‘์„ฑ๋œ ํฌํŠธ I/O ํŠœํ† ๋ฆฌ์–ผ๋„ ์˜ค๋Š˜๋‚ ์—๋„ ์œ ํšจํ•˜๋‹ค. ์ƒˆ๋กœ์šด CPU๋Š” ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋” ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์ง€์นจ์„ ๊ฐ•ํ™”ํ–ˆ์ง€๋งŒ, ์›๋ž˜์˜ ์ง€์นจ์€ ์—ฌ์ „ํžˆ ๋‚จ์•„ ์žˆ๋‹ค.

8008์ด ์ถœ์‹œ๋˜์ž ์ธํ…”์€ CPU๊ฐ€ ์™ธ๋ถ€ ์žฅ์น˜์™€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ ์•ˆํ•˜๋ ค๊ณ  ํ–ˆ๋‹ค. ๊ทธ๋“ค์€ ์นฉ์ด ์™ธ๋ถ€ ์žฅ์น˜์™€์˜ ํ†ต์‹  ์ „์šฉ์˜ ํ•€์…‹์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋Š” I/O ํฌํŠธ ์•„ํ‚คํ…์ฒ˜๋ผ๋Š” ๋ฐฉ๋ฒ•์„ ์„ ํƒํ–ˆ๋‹ค. 8008๋…„, ์ด๊ฒƒ์€ ์นฉ๊ณผ์˜ ํ†ต์‹  ์ „์šฉ ํ•€์ด ์ด 16๊ฐœ๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ–ˆ๋‹ค. ์ •ํ™•ํ•œ ์„ธ๋ถ€์‚ฌํ•ญ์€ ์นฉ ์„ค๊ณ„์™€ ํ˜„์žฌ ๋…ผ์˜ํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ์ƒ์„ธํ•œ ๋‹ค๋ฅธ ์š”์ธ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ–ˆ์ง€๋งŒ, ์ผ๋ฐ˜์ ์ธ ์ด๋ก ์€ ์ƒ๋‹นํžˆ ๊ฐ„๋‹จํ•˜๋‹ค.

ํ•€ ์ค‘ 8๊ฐœ๋Š” ํŠน์ • ์žฅ์น˜์˜ ์‹ ํ˜ธ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” I/O ์ฝ”๋“œ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ด๋ฅผ I/O ํฌํŠธ๋ผ๊ณ  ํ•œ๋‹ค. ์ด ์ฝ”๋“œ๋Š” 2์ง„์ˆ˜ ์ฝ”๋“œ์ผ ๋ฟ์ด๋ฏ€๋กœ 256๊ฐœ์˜ ๋‹ค๋ฅธ ์žฅ์น˜๋ฅผ CPU์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€๋Šฅ์„ฑ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๊ทธ๊ฒƒ๋ณด๋‹ค ์กฐ๊ธˆ ๋” ๋ณต์žกํ•ด์ง€์ง€๋งŒ, ๋‹น์‹ ์€ ์—ฌ์ „ํžˆ ๊ทธ๊ฒƒ์˜ ๊ณ ๊ฐ๋“ค์„ ์œ„ํ•ด 256๊ฐœ์˜ PO ๋ฐ•์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ž‘์€ ๋„์‹œ ์šฐ์ฒด๊ตญ ๊ฐ™์€ ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ๊ทธ๊ฒƒ์„ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

๋‹ค์Œ ํ•€ ์„ธํŠธ๋Š” ๊ตํ™˜๋˜๋Š” ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค. ๋‹น์‹ ์€ ์ด๊ฒƒ์„ PO ๋ฐ•์Šค์— ๋„ฃ๊ฑฐ๋‚˜ PO ๋ฐ•์Šค์—์„œ ๊บผ๋‚ด๋Š” ์—ฝ์„œ๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์™ธ๋ถ€ ์žฅ์น˜๊ฐ€ ํ•ด์•ผ ํ•  ์ผ์€ ์ž…์ถœ๋ ฅ ์ฝ”๋“œ๋ฅผ ์ฐพ๋Š” ๊ฒƒ๋ฟ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‚˜์„œ ์ฐพ์œผ๋ ค๋Š” "ํ• ๋‹น"๊ณผ ์ผ์น˜ํ•˜๋ฉด ํ•ด๋‹น ํฌํŠธ์— ๋Œ€ํ•œ ์ œ์–ด๊ถŒ์„ ๊ฐ–๊ฒŒ ๋œ๋‹ค. ํ•€์€ ๋ฐ์ดํ„ฐ๊ฐ€ CPU๋กœ ์ „์†ก๋˜๋Š”์ง€ ๋˜๋Š” CPU์—์„œ ์ „์†ก๋˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ‘œ์‹œํ•œ๋‹ค. ์ดˆ๊ธฐ PC ์„ค์ •์— ์ต์ˆ™ํ•œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋„, ๋‘ ๊ฐœ ์ด์ƒ์˜ ๊ธฐ๊ธฐ๊ฐ€ ๋™์‹œ์— ๋™์ผํ•œ I/O ํฌํŠธ์— ์•ก์„ธ์Šคํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์ž…์ถœ๋ ฅ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ณณ์ด๋‹ค. ์ด๊ฒƒ์€ ํŠนํžˆ ์ƒˆ๋กœ์šด ์žฅ๋น„๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ๊ทธ๋Ÿฌํ•œ ์ดˆ๊ธฐ ์‹œ์Šคํ…œ์— ๋Œ€ํ•œ ์†์“ฐ๋ฆผ์˜ ์›์ฒœ์ด์—ˆ๋‹ค.

์ด๋Š” ๊ธฐ์กด์˜ RAM ์ž‘๋™ ๋ฐฉ์‹๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•˜๋ฉฐ, ์ผ๋ถ€ CPU ์„ค๊ณ„๋Š” RAM์—์„œ ์ด ์ „์ฒด ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ทธ๋Œ€๋กœ ๋ชจ๋ฐฉํ•˜์—ฌ I/O ์ œ์–ด๋ฅผ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์„ ์˜ˆ์•ฝํ•œ๋‹ค. ์ด๊ฒƒ์€ ๋Œ€์‹  ์†Œํ”„ํŠธ์›จ์–ด์— ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ์ž ์žฌ์  ๋ฉ”๋ชจ๋ฆฌ์˜ ์ผ๋ถ€๋ฅผ ์”น๋Š” ๊ฒƒ์„ ํฌํ•จํ•˜์—ฌ ๋ช‡ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ๊ฒฐ๊ตญ IBM PC์™€ ์ดํ›„ PC ์‹œ์Šคํ…œ์—์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๋งต I/O(Memory Mapped I/O)์™€ PMIO(Port-Mapped I/O)๊ฐ€ ๋ชจ๋‘ ๊ด‘๋ฒ”์œ„ํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ง ๋ณต์žกํ•ด์ง„๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ง๋ ฌ ํ†ต์‹ ์„ ์œ„ํ•ด์„œ๋Š” 8250 ์นฉ์ด ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์ธ ๋งŒํผ ํฌํŠธ I/O ๋ฐฉ์‹์„ ๊ณ ์ˆ˜ํ•  ๊ฒƒ์ด๋‹ค.

Software I/O access

9๋ฒˆ ํฌํŠธ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ฑฐ๋‚˜ ๋ฐ›๊ธฐ ์œ„ํ•œ ์–ด์…ˆ๋นŒ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

out 9, al ; sending data from register al out to port 9 
in al, 9 ; getting data from port 9 and putting it in register al

๋” ๋†’์€ ์ˆ˜์ค€์˜ ์–ธ์–ด๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ๋•Œ, ๊ทธ๊ฒƒ์€ ์ข€ ๋” ๊ฐ„๋‹จํ•ด์ง„๋‹ค. ์ผ๋ฐ˜์ ์ธ C ์–ธ์–ด ํฌํŠธ I/O ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑ๋œ๋‹ค.

char test;

test = 255;
outp(9,test);
inp(9,&test);

๊ฒฝ๊ณ !! ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ์ •๋ง ๊ฒฝ๊ณ ๋‹ค. ์–ด๋–ค ํฌํŠธ์— ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€ ์ œ๋Œ€๋กœ ์•Œ์ง€ ๋ชปํ•œ ์ฑ„ ์ž„์˜๋กœ ์ปดํ“จํ„ฐ์˜ I/O ํฌํŠธ์— ์•ก์„ธ์Šคํ•˜๋ฉด ์ปดํ“จํ„ฐ๊ฐ€ ์ •๋ง ์—‰๋ง์ด ๋  ์ˆ˜ ์žˆ๋‹ค. ์ตœ์†Œํ•œ ์šด์˜์ฒด์ œ๋ฅผ ๋ง๊ฐ€๋œจ๋ฆฌ๊ณ  ์ปดํ“จํ„ฐ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๊ฒŒ ํ•  ๊ฒƒ์ด๋‹ค. ์ผ๋ถ€ I/O ํฌํŠธ์— ์“ฐ๋Š” ๊ฒƒ์€ ์ปดํ“จํ„ฐ์˜ ๋‚ด๋ถ€ ๊ตฌ์„ฑ์„ ์˜๊ตฌ์ ์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ํ†ตํ•ด ๋ฐœ์ƒํ•œ ์†์ƒ์„ ๋ณต๊ตฌํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์ˆ˜๋ฆฌ์ ์œผ๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋” ๋‚˜์œ ๊ฒƒ์€, ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ์ปดํ“จํ„ฐ์— ์‹ค์ œ์ ์ธ ์†์ƒ์„ ์ž…ํž ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ์ปดํ“จํ„ฐ ๋‚ด๋ถ€์˜ ์ผ๋ถ€ ์นฉ์ด ๋” ์ด์ƒ ์ž‘๋™ํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๊ณ  ์ปดํ“จํ„ฐ๊ฐ€ ๋‹ค์‹œ ์ž‘๋™ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ทธ ๋ถ€ํ’ˆ๋“ค์„ ๊ต์ฒดํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์†์ƒ๋œ ์นฉ์€ ์ปดํ“จํ„ฐ ๋ถ€๋ถ„์˜ ํ˜•ํŽธ์—†๋Š” ๊ณตํ•™์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ด์ง€๋งŒ, ๋ถˆํ–‰ํžˆ๋„ ๊ทธ๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๋Ÿฌ๋ถ„์€ ๊ทธ๊ฒƒ์„ ์•Œ์•„์•ผ ํ•œ๋‹ค.

I/O ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋‘๋ ค์›Œํ•˜์ง€ ๋ง๊ณ , ์“ฐ๋Š” ๊ฒƒ์„ ํ™•์‹คํžˆ ํ•˜๊ณ , ํŠน์ • I/O ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๊ฐ I/O ํฌํŠธ์— ๋Œ€ํ•ด ์–ด๋–ค ์žฅ๋น„๊ฐ€ "๋งคํ•‘"๋˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ์šฐ๋ฆฌ๋Š” ์‹œ๋ฆฌ์–ผ ํ†ต์‹ ์„ ์œ„ํ•œ I/O ํฌํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ ์‹๋ณ„ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์ข€ ๋” ์„ธ๋ถ€์ ์ธ ์ •๋ณด๋ฅผ ์–ป์„ ๊ฒƒ์ด๋‹ค. ๋งˆ์นจ๋‚ด ์šฐ๋ฆฌ๋Š” ์•ฝ๊ฐ„์˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์“ฐ๊ธฐ ์‹œ์ž‘ํ–ˆ์œผ๋ฉฐ, ์•ž์œผ๋กœ ๋” ๋งŽ์€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋งŒ๋“ค ๊ฒƒ์ด๋‹ค.

x86 ํฌํŠธ I/O ํ™•์žฅ

8008 CPU์™€ 8086 ์‚ฌ์ด์—๋Š” ๋ช‡ ๊ฐ€์ง€ ์ฐจ์ด์ ์ด ์žˆ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฐ€์žฅ ์ฃผ๋ชฉํ•  ๋งŒํ•œ ์ ์€ ํฌํŠธ I/O ์ฃผ์†Œ 256๊ฐœ ๋Œ€์‹  8086์ด 65536๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ I/O ํฌํŠธ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ปดํ“จํ„ฐ ๊ตฌ์„ฑ์€ IBM PC์˜ ๊ฒฝ์šฐ 16๊ฐœ ์ดํ•˜์˜ ์™€์ด์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 10๊ฐœ์˜ ์™€์ด์–ด๋งŒ ์‚ฌ์šฉ๋˜์–ด 1024๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ํฌํŠธ๋งŒ ๋งŒ๋“ค์—ˆ๋‹ค. ๋ฌด์‹œ๋˜๊ณ  ์žˆ๋Š” ํฌํŠธ ๋ฒˆํ˜ธ์˜ ๋” ๋†’์€ ๋น„ํŠธ๋Š” ๋™์ผํ•œ ํฌํŠธ์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ํฌํŠธ ๋ฒˆํ˜ธ ๋ณ„์นญ์„ ๋งŒ๋“ค์—ˆ๋‹ค.

๊ฒŒ๋‹ค๊ฐ€, 8086์€ ๋‹จ์ˆœํžˆ ํ•˜๋‚˜์˜ ๋ฌธ์ž๋ฅผ ์•ˆ์ด๋‚˜ ๋ฐ–์œผ๋กœ ๋ณด๋‚ด๋Š” ๊ฒƒ ์™ธ์—, 16๋น„ํŠธ๋ฅผ ํ•œ ๋ฒˆ์— ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค„ ๊ฒƒ์ด๋‹ค. 16๋น„ํŠธ ์›Œ๋“œ ๋ฐ”์ดํŠธ๋Š” ์—ฐ์† ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์€ ์—”๋””์•ˆ์–ด๋กœ ์ฝ๊ฑฐ๋‚˜ ์“ด๋‹ค. 386 ์นฉ์€ 32๋น„ํŠธ๊นŒ์ง€ ๋™์‹œ์— ์ฃผ๊ณ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. 65536๊ฐœ ์ด์ƒ์˜ ์„œ๋กœ ๋‹ค๋ฅธ I/O ํฌํŠธ์˜ ํ•„์š”์„ฑ์ด ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๊ฐ€ ๋œ ์ ์ด ์—†์œผ๋ฉฐ, ์žฅ์น˜์— ๋” ํฐ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ DMA(Direct Memory Access) ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๊ณณ์€ ์žฅ์น˜๊ฐ€ CPU๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ์ปดํ“จํ„ฐ์˜ RAM์„ ์ง์ ‘ ์“ฐ๊ณ  ์ฝ๋Š” ๊ณณ์ด๋‹ค. ์šฐ๋ฆฌ๋Š” ์—ฌ๊ธฐ์„œ ๊ทธ ์ฃผ์ œ๋ฅผ ๋‹ค๋ฃจ์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค.

๋˜ํ•œ 8086 CPU๋Š” 65536๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ I/O ํฌํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์•˜๋‹ค. ์ธํ…”์˜ ์นฉ ์„ค๊ณ„์ž๋“ค์€ ๊ฐ€๊ฒฉ์ด ์ €๋ ดํ•ด์กŒ๊ณ  ๋‹จ์ง€ 10๋น„ํŠธ์— ๋Œ€ํ•œ ์–ด๋“œ๋ ˆ์Šค ๋ผ์ธ๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ๋Š”๋ฐ, ์ด๊ฒƒ์€ ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„์ž๋“ค์ด ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ๊ณผ ํ•จ๊ป˜ ์ผํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์ด๋Š” I/O ํฌํŠธ ์ฃผ์†Œ $1E8 ๋ฐ $19E8(๋ฐ ๊ธฐํƒ€...)๋„ ์˜๋ฏธํ–ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‹จ์ง€ ์˜ˆ์‹œ์ผ ๋ฟ์ด๋‹ค)๋Š” ์ดˆ๊ธฐ PC์˜ ๋™์ผํ•œ I/O ํฌํŠธ๋กœ ํ•ด๊ฒฐ๋œ๋‹ค. ํŽœํ‹ฐ์—„ CPU์—๋Š” ์ด๋Ÿฌํ•œ ์ œํ•œ์ด ์—†์ง€๋งŒ, ์ดˆ๊ธฐ ํ•˜๋“œ์›จ์–ด ์ค‘ ์ผ๋ถ€๋ฅผ ์œ„ํ•ด ์ž‘์„ฑ๋œ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ๋•Œ๋•Œ๋กœ ์ƒ์œ„ ๋น„ํŠธ๊ฐ€ ๋ฌด์‹œ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— "aliased"๋œ I/O ํฌํŠธ ์ฃผ์†Œ์— ์“ฐ์ด๊ธฐ๋„ ํ–ˆ๋‹ค. ๋‹ค๋ฅธ ๊ณผ๊ฑฐ์˜ ๋ฌธ์ œ๋“ค์ด ๋‚˜ํƒ€๋‚˜์ง€๋งŒ, ๋‹คํ–‰ํžˆ๋„ 82050 ์นฉ๊ณผ ์‹œ๋ฆฌ์–ผ ํ†ต์‹ ์˜ ๊ฒฝ์šฐ, ์ด๋Ÿฌํ•œ ์•จ๋ฆฌ์–ด์‹ฑ ์ƒํ™ฉ์„ "์ด์ ์œผ๋กœ ์‚ผ๋Š”" ์‹œ๋ฆฌ์–ผ ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋Š” ํ•œ, ์ด๊ฒƒ์€ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š๋Š”๋‹ค. ์ด ๋ฌธ์ œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ PC์˜ ์ผ๋ฐ˜์ ์ธ 2๊ฐœ ๋˜๋Š” 4๊ฐœ ์ง๋ ฌ COM ํฌํŠธ ์ด์ƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๋‚˜ํƒ€๋‚œ๋‹ค.

x86 ํ”„๋กœ์„ธ์„œ ์ธํ„ฐ๋ŸฝํŠธ

8086 CPU์™€ ํ˜ธํ™˜ ์นฉ์€ ์ธํ„ฐ๋ŸฝํŠธ ๋ผ์ธ์œผ๋กœ ์•Œ๋ ค์ง„ ๊ฒƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด๊ฒƒ์€ ๋ง ๊ทธ๋Œ€๋กœ CPU๊ฐ€ ํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๋ฉˆ์ถ”๊ณ  ์ผ๋ถ€ I/O ์ƒํ™ฉ์— ์ฃผ์˜๋ฅผ ๊ธฐ์šธ์—ฌ์•ผ ํ•  ๋•Œ๋ผ๋Š” ๊ฒƒ์„ ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•ด ์ „์›์ด ์ผœ์งˆ ์ˆ˜ ์žˆ๋Š” ๋‚˜๋จธ์ง€ ์ปดํ“จํ„ฐ์— ์—ฐ๊ฒฐ๋œ ์ „์„ ์ด๋‹ค.

8086๋…„ ๋‚ด์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‘ ๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ์žˆ๋‹ค. ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ ๋ฐ ์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ. ๊ฐ ์ข…๋ฅ˜๋งˆ๋‹ค ๋‹ค๋ฅธ ํฅ๋ฏธ๋กœ์šด ๊ธฐ์ดํ•œ ์ ๋“ค์ด ์žˆ์ง€๋งŒ, ์†Œํ”„ํŠธ์›จ์–ด์  ๊ด€์ ์—์„œ ๋ณด๋ฉด ๋ณธ์งˆ์ ์œผ๋กœ ๊ฐ™์€ ๊ฒƒ์ด๋‹ค. 8086 CPU๋Š” 256๊ฐœ์˜ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ํ—ˆ์šฉํ•˜์ง€๋งŒ, ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ์žฅ๋น„์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒˆํ˜ธ๋Š” ์ƒ๋‹นํžˆ ์ œํ•œ๋˜์–ด ์žˆ๋‹ค.

์„ค๋ช…๋œ IRQ

ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋Š” IRQ 0๋ถ€ํ„ฐ IRQ 15๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ง„๋‹ค. IRQ๋Š” ์ธํ„ฐ๋ŸฝํŠธ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ด 15๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ์žˆ๋‹ค. ๋‚ด๊ฐ€ ์…ˆ์ด๋‚˜ ์ˆ˜ํ•™์„ ํ•  ์ค„ ๋ชจ๋ฅธ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ์ „์—, ์šฐ๋ฆฌ๋Š” ์—ฌ๊ธฐ์„œ ์•ฝ๊ฐ„์˜ ์—ญ์‚ฌ ์ˆ˜์—…์„ ํ•ด์•ผ ํ•œ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ 8259 ์นฉ์œผ๋กœ ๋„˜์–ด๊ฐ€๋ฉด ๋๋งˆ์น  ๊ฒƒ์ด๋‹ค. ์›๋ž˜์˜ IBM-PC๊ฐ€ ๊ตฌ์ถ•๋˜์—ˆ์„ ๋•Œ, IRQ 0๋ถ€ํ„ฐ IRQ 7๊นŒ์ง€๋ผ๋Š” ๋ผ๋ฒจ์ด ๋ถ™์€ IRQ๋Š” 8๊ฐœ๋ฟ์ด์—ˆ๋Š”๋ฐ, ๊ทธ ๋‹น์‹œ์—๋Š” PC์— ์˜ฌ๋ ค์งˆ ๊ฑฐ์˜ ๋ชจ๋“  ๊ฒƒ์— ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐ๋˜์—ˆ์ง€๋งŒ, ๊ณง ๊ทธ๊ฒƒ์ด ์ถ”๊ฐ€๋˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์— ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ด ๋ช…๋ฐฑํ•ด์กŒ๋‹ค. IBM-PC/AT๊ฐ€ ๋งŒ๋“ค์–ด์กŒ์„ ๋•Œ(80286 CPU๋ฅผ ํƒ‘์žฌํ•œ ์ฒซ ๋ฒˆ์งธ ๊ฒƒ๊ณผ ์˜ค๋Š˜๋‚  PC์—์„œ ํ”ํžˆ ๋ณผ ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํ–ฅ์ƒ ๊ธฐ๋Šฅ) 8259 ์นฉ์„ 1๊ฐœ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ์ด ๊ฐ™์€ ์นฉ์„ 2๊ฐœ ์‚ฌ์šฉํ•˜๊ณ , ์ธํ„ฐ๋ŸฝํŠธ ์ˆ˜๋ฅผ 8๊ฐœ์—์„œ 15๊ฐœ๋กœ ํ™•๋Œ€ํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋กœ "์ฒด์ธ"ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค. ์ด ์ž„๋ฌด๋ฅผ ์™„์ˆ˜ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” IRQ ํ•œ ๊ฐœ๋ฅผ ํฌ์ƒ์‹œ์ผœ์•ผ ํ–ˆ๊ณ , ๊ทธ๊ฒƒ์€ IRQ 2์˜€๋‹ค.

์—ฌ๊ธฐ์„œ ์š”์ ์€ CPU์— ๋Œ€ํ•ด ์–ด๋Š ์ •๋„์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ค€๋น„๋˜์–ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ๊ธฐ๊ฐ€ CPU์— ์•Œ๋ฆฌ๋ ค๋ฉด ํ˜„์žฌ ์ปดํ“จํ„ฐ์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ค‘์ง€ํ•˜๊ณ  ๋Œ€์‹  ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ๋ผ๊ณ  ํ•˜๋Š” ํŠน๋ณ„ํ•œ "์ž‘์€" ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๊ณ  ์‹ถ๋‹ค๋Š” ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ธ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ผ๋‹จ ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ๋๋‚˜๋ฉด ์ปดํ“จํ„ฐ๋Š” ์ด์ „์— ํ•˜๋˜ ๊ฒƒ์œผ๋กœ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์ถฉ๋ถ„ํžˆ ๋น ๋ฅด๋ฉด ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์‚ฌ์šฉ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์กฐ์ฐจ ๋ˆˆ์น˜์ฑ„์ง€ ๋ชปํ•  ๊ฒƒ์ด๋‹ค.

์‚ฌ์‹ค, PC์—์„œ ์ด ํ…์ŠคํŠธ๋ฅผ ์ฝ๊ณ  ์žˆ๋‹ค๋ฉด, ์ด ๋ฌธ์žฅ์„ ์ฝ๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„ ๋™์•ˆ, ๋ช‡๋ช‡ ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ๋Š” ์ด๋ฏธ ๋‹น์‹ ์˜ ์ปดํ“จํ„ฐ์— ์˜ํ•ด ์‚ฌ์šฉ๋˜์—ˆ๋‹ค. ํ‚ค๋ณด๋“œ๋‚˜ ๋งˆ์šฐ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•  ๋•Œ๋งˆ๋‹ค ์ปดํ“จํ„ฐ์˜ ์–ด๋Š ์ง€์ ์—์„œ ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ํ•ด๋‹น ์ •๋ณด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์–ด ์™”๋‹ค.

์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ

์ž ์‹œ ํ›„ ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ์— ๋Œ€ํ•œ ๊ตฌ์ฒด์ ์ธ ์„ธ๋ถ€์‚ฌํ•ญ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์ง€๋งŒ, ์ด์ œ ๋‚˜๋Š” ๊ทธ๊ฒƒ๋“ค์ด ๋ฌด์—‡์ธ์ง€์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ ์ž ํ•œ๋‹ค. ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ๋Š” ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋  ๋•Œ ์–ด๋–ค ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š”์ง€ CPU๋ฅผ ์ •ํ™•ํžˆ ๋ณด์—ฌ์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

8086 CPU๋Š” RAM์˜ ๋‹ค๋ฅธ ๊ณณ์— ์ธํ„ฐ๋ŸฝํŠธ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์œ„์น˜ํ•œ ๊ณณ์„ "์ "์œผ๋กœ ์„ค์ •ํ•œ RAM์˜ ์ผ๋ถ€๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ด ๊ฒฝ๋กœ๋ฅผ ํ†ตํ•ด CPU๋Š” ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์žˆ๋Š” ์œ„์น˜๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ๊ฐ„๋‹จํ•œ ์กฐํšŒ๋งŒ ํ•˜๋ฉด ๋˜๊ณ , ๊ทธ ์‹œ์ ๊นŒ์ง€ RAM์œผ๋กœ ์†Œํ”„ํŠธ์›จ์–ด ์‹คํ–‰์„ ์ „์†กํ•˜๋ฉด ๋œ๋‹ค๋Š” ์ด์ ์ด ์žˆ๋‹ค. ์ด๊ฒƒ์€ ๋˜ํ•œ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋กœ์„œ CPU๊ฐ€ RAM์—์„œ " ๊ฐ€๋ฆฌ์ผœ์ง€๋Š”" ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋ฉฐ, ์šด์˜์ฒด์ œ์˜ ์–ด๋–ค ๊ฒƒ์œผ๋กœ ๊ฐ€๋Š” ๋Œ€์‹ , ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์‚ฌ์šฉ์ž ์ง€์ •ํ•˜๊ณ  ๋‹ค๋ฅธ ๊ฒƒ์„ ์ง์ ‘ ๊ฑฐ๊ธฐ์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

์ด๊ฒƒ์ด ์–ด๋–ป๊ฒŒ ๊ฐ€์žฅ ์ž˜ ์ˆ˜ํ–‰๋˜๋Š๋ƒ์— ๋”ฐ๋ผ ์šด์˜์ฒด์ œ๊ฐ€ ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง„๋‹ค. MS-DOS์™€ ๊ฐ™์€ ๊ฐ„๋‹จํ•œ ์šด์˜์ฒด์ œ์˜ ๊ฒฝ์šฐ, ์ด๋Ÿฌํ•œ ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ง์ ‘ ์ž‘์„ฑํ•˜๋„๋ก ๊ถŒ์žฅํ•˜๋Š”๋ฐ, ํŠนํžˆ ์™ธ๋ถ€ ์ฃผ๋ณ€์žฅ์น˜์™€ ํ•จ๊ป˜ ์ž‘์—…ํ•  ๋•Œ๋Š” ๋”์šฑ ๊ทธ๋Ÿฌํ•˜๋‹ค. ๋ฆฌ๋ˆ…์Šค๋‚˜ MS-์œˆ๋„์šฐ์ฆˆ์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์šด์˜์ฒด์ œ๋Š” ์ด๋Ÿฌํ•œ ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ๋‚˜ ์„œ๋น„์Šค ๋ฃจํ‹ด์— ์—ฐ๊ฒฐ๋˜๋Š” "๋“œ๋ผ์ด๋ฒ„"๋ฅผ ๊ฐ–๋Š” ์ ‘๊ทผ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๊ณ , ๊ทธ ๋‹ค์Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์žฅ๋น„๋ฅผ ์ง์ ‘ ๋‹ค๋ฃจ๊ธฐ๋ณด๋‹ค๋Š” ๋“œ๋ผ์ด๋ฒ„๋ฅผ ๋‹ค๋ฃฌ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์ด ์‹ค์ œ๋กœ ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ํŠน์ • ์šด์˜ ์ฒด์ œ์— ๋”ฐ๋ผ ๋งค์šฐ ๋‹ฌ๋ผ์ง„๋‹ค. ๋งŒ์•ฝ ๋‹น์‹ ์ด ๋Œ€์‹  ๋‹น์‹  ์ž์‹ ์˜ ์šด์˜์ฒด์ œ๋ฅผ ์“ฐ๋ ค๊ณ  ํ•œ๋‹ค๋ฉด, ๋‹น์‹ ์€ ์ด๋Ÿฌํ•œ ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ง์ ‘ ์“ฐ๊ณ , ๋‹น์‹ ์ด ์–ด๋–ป๊ฒŒ ์ด ํ•ธ๋“ค๋Ÿฌ์— ์ ‘๊ทผํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ณ  ๊ฒ€์ƒ‰ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ํ”„๋กœํ† ์ฝœ์„ ์ œ์ •ํ•ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค.

์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ

๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์ „์—, ๋‚˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ์— ๋Œ€ํ•ด ์•„์ฃผ ๊ฐ„๋‹จํžˆ ๋งํ•˜๊ณ  ์‹ถ๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด 8086 ์กฐ๋ฆฝ ์ง€์นจ "int"๋กœ ํ˜ธ์ถœ๋œ๋‹ค.

int $21

์†Œํ”„ํŠธ์›จ์–ด ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ด€์ ์—์„œ, ์ด๊ฒƒ์€ ์ •๋ง๋กœ ์„œ๋ธŒ๋ฃจํ‹ด์„ ๋ถ€๋ฅด๋Š” ๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ผ ๋ฟ์ด์ง€๋งŒ, ํŠธ์œ„์ŠคํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ์—์„œ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” "์†Œํ”„ํŠธ์›จ์–ด"๋Š” ๊ฐ™์€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๋˜๋Š” ์‹ฌ์ง€์–ด ๊ฐ™์€ ์ปดํŒŒ์ผ๋Ÿฌ์—์„œ ๋งŒ๋“ค์–ด์งˆ ํ•„์š”๊ฐ€ ์—†๋‹ค. ์‹ค์ œ๋กœ, ์ข…์ข… ์ด๋Ÿฌํ•œ ์„œ๋ธŒ๋ฃจํ‹ด๋“ค์€ ์กฐ๋ฆฝ ์–ธ์–ด๋กœ ์ง์ ‘ ์“ฐ์—ฌ์ง„๋‹ค. ์œ„์˜ ์˜ˆ์—์„œ ์ด ์ธํ„ฐ๋ŸฝํŠธ๋Š” ์‹ค์ œ๋กœ "DOS" ์„œ๋ธŒ๋ฃจํ‹ด์„ ํ˜ธ์ถœํ•˜์—ฌ DOS์™€ ์ง์ ‘ ๊ด€๋ จ๋œ ์–ด๋–ค ์ข…๋ฅ˜์˜ I/O ์•ก์„ธ์Šค๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. ์ด ๊ฒฝ์šฐ ๋ ˆ์ง€์Šคํ„ฐ์˜ ๊ฐ’์— ๋”ฐ๋ผ, ๋Œ€๊ฐœ 8086๋…„ AX ๋ ˆ์ง€์Šคํ„ฐ๋Š” ํ˜„์žฌ ์‹œ๊ฐ„, ๋‚ ์งœ, ๋””์Šคํฌ ํฌ๊ธฐ, ๊ทธ๋ฆฌ๊ณ  ์ผ๋ฐ˜์ ์œผ๋กœ DOS์™€ ์—ฐ๊ด€๋˜๋Š” ๋ชจ๋“  ์ •๋ณด์™€ ๊ฐ™์€ DOS์—์„œ ์–ป๊ณ ์ž ํ•˜๋Š” ์ •๋ณด๋ฅผ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ปดํŒŒ์ผ๋Ÿฌ๋“ค์€ ์ด๋Ÿฐ ์ธํ„ฐ๋ŸฝํŠธ ๋ฃจํ‹ด์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ์•ฝ๊ฐ„ ๊นŒ๋‹ค๋กœ์šธ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ข…์ข… ์ด๋Ÿฐ ์„ธ๋ถ€ ์‚ฌํ•ญ๋“ค์„ ์ˆจ๊ธด๋‹ค.

์ด์ œ ์ •๋ง ์ผ์„ ์—‰๋ง์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฑฐ์•ผ. "ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ"๋Š” "์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ"์—์„œ๋„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‹ค์ œ๋กœ ์ด๊ฒƒ์€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘์„ฑํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ•ฉ๋ฆฌ์ ์ธ ๋ฐฉ๋ฒ•์ด๋‹ค. ์—ฌ๊ธฐ์„œ์˜ ์ฐจ์ด์ ์€ ์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ์ด ์–ด์…ˆ๋ธ”๋ฆฌ opcode๋ฅผ ํ†ตํ•ด ๋ช…์‹œ์ ์œผ๋กœ ํ˜ธ์ถœ๋œ ๊ฒฝ์šฐ์—๋งŒ ํ˜ธ์ถœ๋˜๊ฑฐ๋‚˜ CPU์—์„œ ์†Œํ”„ํŠธ์›จ์–ด ์ฝ”๋“œ์˜ ์ผ๋ถ€๊ฐ€ ์‹คํ–‰๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

8259 PIC(ํ”„๋กœ๊ทธ๋žจ์‹ ์ธํ„ฐ๋ŸฝํŠธ ์ปจํŠธ๋กค๋Ÿฌ)

8259 ์นฉ์€ ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ํ•˜๋Š” ์ „ ๊ณผ์ •์˜ "์‹ฌ์žฅ"์ด๋‹ค. ์™ธ๋ถ€ ์žฅ์น˜๋Š” ์ด ์นฉ์— ์ง์ ‘ ์—ฐ๊ฒฐ๋˜๊ฑฐ๋‚˜ PC-AT ํ˜ธํ™˜ ์žฅ์น˜์˜ ๊ฒฝ์šฐ(ํ˜„๋Œ€ PC์—์„œ ๊ฐ€์žฅ ์นœ์ˆ™ํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Œ) ์ด๋Ÿฌํ•œ ๋‘ ์žฅ์น˜๊ฐ€ ํ•จ๊ป˜ ์—ฐ๊ฒฐ๋  ๊ฒƒ์ด๋‹ค. ๋ฌธ์ž ๊ทธ๋Œ€๋กœ 16๊ฐœ์˜ ์™€์ด์–ด๊ฐ€ ์ด ์นฉ ์Œ์— ๋“ค์–ด์˜ค๋Š”๋ฐ, ๊ฐ๊ฐ์˜ ์™€์ด์–ด๋Š” IRQ-0์—์„œ IRQ-15๋กœ ํ‘œ์‹œ๋˜์–ด ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ์นฉ์˜ ๋ชฉ์ ์€ ์ธํ„ฐ๋ŸฝํŠธ ์‹ ํ˜ธ๋ฅผ "์šฐ์„ "ํ•˜๊ณ  ์–ด๋–ค ์งˆ์„œ์ •์—ฐํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๋Š” ๋ฐ ์žˆ๋‹ค. ์–ด๋–ค ์žฅ์น˜๊ฐ€ ์–ธ์ œ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ "์š”์ฒญ"ํ• ์ง€ ์˜ˆ์ธกํ•  ๋ฐฉ๋ฒ•์ด ์—†๊ธฐ ๋•Œ๋ฌธ์—, ์ข…์ข… ์—ฌ๋Ÿฌ ์žฅ์น˜๊ฐ€ CPU๋กœ๋ถ€ํ„ฐ ์ฃผ์˜๋ฅผ ๋Œ๊ธฐ ์œ„ํ•ด ๊ฒฝ์Ÿํ•  ์ˆ˜ ์žˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ๋งํ•ด์„œ, ๋‚ฎ์€ ๋ฒˆํ˜ธ์˜ IRQ๊ฐ€ ์šฐ์„ ๊ถŒ์„ ๊ฐ–๋Š”๋‹ค. ์ฆ‰, IRQ-1๊ณผ IRQ-4๊ฐ€ ๋™์‹œ์— ์ฃผ์˜๋ฅผ ์š”์ฒญํ•˜๋Š” ๊ฒฝ์šฐ IRQ-1์ด ์šฐ์„ ๊ถŒ์„ ์–ป๊ณ  CPU์— ๊ด€ํ•œ ํ•œ ๋จผ์ € ํŠธ๋ฆฌ๊ฑฐ๋œ๋‹ค. IRQ-4๋Š” IRQ-1์ด "๋ฌด์ •์ „ ์„œ๋น„์Šค ์ ˆ์ฐจ" ๋˜๋Š” ISR์„ ์™„๋ฃŒํ•  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•œ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ IRQ-4๊ฐ€ ISR(์ด๊ฒƒ์€ ์†Œํ”„ํŠธ์›จ์–ด๋ผ๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜๋ผ, ์ด๊ฒƒ์€ ๋‹น์‹ ์ด ๋ณดํ†ต ์ปดํ“จํ„ฐ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์“ธ ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ)์„ ํ•˜๋ฉด์„œ IRQ-1์€ IRQ-4์šฉ ISR์„ "๋ฐฉํ•ด"ํ•˜๊ณ  ๋Œ€์‹  ์‹คํ–‰ํ•  ์ž์ฒด ISR์„ ๋ฐ€๊ณ , ๊ทธ๊ฒƒ์ด ๋๋‚˜๋ฉด IRQ-4 ISR๋กœ ๋˜๋Œ์•„๊ฐ„๋‹ค. ์ด๊ฒƒ์—๋„ ์˜ˆ์™ธ๋Š” ์žˆ์ง€๋งŒ, ํ˜„์žฌ๋กœ์„œ๋Š” ์ผ์„ ๋‹จ์ˆœํ•˜๊ฒŒ ํ•ฉ์‹œ๋‹ค.

์ž ์‹œ ์›๋ž˜์˜ IBM-PC๋กœ ๋Œ์•„๊ฐ€ ๋ด…์‹œ๋‹ค. ๊ทธ๊ฒƒ์ด ์ง€์–ด์กŒ์„ ๋•Œ, ๋งˆ๋”๋ณด๋“œ์—๋Š” 8259๊ฐœ์˜ ์นฉ์ด ํ•˜๋‚˜๋ฐ–์— ์—†์—ˆ๋‹ค. IBM-AT๊ฐ€ ์ถœ์‹œ๋˜์—ˆ์„ ๋•Œ IBM์˜ ์—”์ง€๋‹ˆ์–ด๋“ค์€ IRQ ์‹ ํ˜ธ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ๋‘ ๋ฒˆ์งธ 8259 ์นฉ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค. CPU(ํ˜„์‹œ์  80286)์—๋Š” ์ธํ„ฐ๋ŸฝํŠธ ์•Œ๋ฆผ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ํ•€์ด ์•„์ง 1๊ฐœ๋ฐ–์— ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์›๋ž˜์˜ 8259 ์นฉ์—์„œ IRQ-2๋ฅผ ์žก์•„ ๋‹ค์Œ ์นฉ์— ์ฒด์ธ์œผ๋กœ ๋ฌถ๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค. IRQ-2๋Š” IRQ-2์— ์˜์กดํ•˜๋Š” ๋ชจ๋“  ์žฅ์น˜์— ๋Œ€ํ•ด IRQ-9๋กœ ๋‹ค์‹œ ์ „์†ก๋˜์—ˆ๋‹ค. ์ด ๊ณ„ํš์„ ์‹คํ–‰ํ•  ๋•Œ ์ข‹์€ ์ ์€ IRQ-2๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์–ด๋–ค ๊ฒƒ์„ ๊ณ„ํšํ•œ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๊ทธ ์žฅ์น˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ๋น„๋ก 7๊ฐœ์˜ ๋‹ค๋ฅธ ์žฅ์น˜๊ฐ€ ํ˜„์žฌ ์ด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ "๊ณต์œ "ํ•˜๊ณ  ์žˆ์Œ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ , ์—ฌ์ „ํžˆ "ํ†ต์ง€"ํ•  ๊ฒƒ์ด๋ผ๋Š” ์ ์ด์—ˆ๋‹ค. IRQ-8์—์„œ IRQ-15๊นŒ์ง€ ์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ์šฐ์„ ์ˆœ์œ„ ์ธก๋ฉด์—์„œ ์ด๊ฒƒ์ด ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์€ IRQ-8์—์„œ IRQ-15๊นŒ์ง€์˜ ์šฐ์„ ์ˆœ์œ„๊ฐ€ IRQ-3๋ณด๋‹ค ๋†’๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ์€ ์—ฌ๋Ÿฌ๋ถ„์ด ์–ด๋–ค ์žฅ์น˜๊ฐ€ ๋‹ค๋ฅธ ์žฅ์น˜๋ณด๋‹ค ์šฐ์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ์žฅ๋น„๊ฐ€ ์—ฌ๋Ÿฌ๋ถ„์˜ ๊ด€์‹ฌ์„ ๋Œ๋ ค๊ณ  ํ•  ๋•Œ ์–ผ๋งˆ๋‚˜ ์ค‘์š”ํ•œ์ง€๋ฅผ ๊ฐ€๋ ค๋‚ด๋ ค๊ณ  ํ•  ๋•Œ ์ฃผ๋กœ ๊ฑฑ์ •๋œ๋‹ค. ํŠน์ • ์ปดํ“จํ„ฐ ๊ตฌ์„ฑ์„ ์‹คํ–‰ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ฒฝ์šฐ ์ด ์šฐ์„  ์ˆœ์œ„ ์ˆ˜์ค€์€ ๋งค์šฐ ์ค‘์š”ํ•˜๋‹ค.

์—ฌ๊ธฐ์„œ ์ฃผ๋ชฉํ•ด์•ผ ํ•  ๊ฒƒ์€ COM1(์‹œ๋ฆฌ์–ผ ํ†ต์‹  ์ฑ„๋„ 1)์€ ๋ณดํ†ต IRQ-4๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, COM2๋Š” COM1์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜๋Š” ๋ฐ ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋˜๋„๋ก ํ•˜๋Š” ์ˆœํšจ๊ณผ๋ฅผ ๊ฐ–๋Š” IRQ-3์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์ •๋ง๋กœ ์ƒ๊ด€ํ•˜์ง€ ์•Š์ง€๋งŒ, ๋“œ๋ฌผ๊ฒŒ ์ด ์‚ฌ์‹ค์„ ์•Œ์•„์•ผ ํ•œ๋‹ค.

8259 ๋ ˆ์ง€์Šคํ„ฐ

8259์—๋Š” I/O ํฌํŠธ ์ฃผ์†Œ์™€ ๊ด€๋ จ๋œ "๋“ฑ๋ก๊ธฐ"๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ๋‹ค. ์šฐ๋ฆฌ๋Š” 8250 ์นฉ์— ๋„๋‹ฌํ•˜๋ฉด ์กฐ๊ธˆ ๋” ์ด ์ปจ์…‰์„ ๋ฐฉ๋ฌธํ•  ๊ฒƒ์ด๋‹ค. ์ผ๋ฐ˜์ ์ธ PC ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ, 8259์™€ ๊ด€๋ จ๋œ ์ผ๋ฐ˜์ ์ธ ๊ธฐ๋ณธ ํฌํŠธ ์ฃผ์†Œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ์ธํ„ฐ๋ŸฝํŠธ ์ปจํŠธ๋กค๋Ÿฌ ํฌํŠธ I/O ์ฃผ์†Œ

  • ์ด๋ฆ„ I/O ํฌํŠธ ๋“ฑ๋ก

  • ๋งˆ์Šคํ„ฐ ์ธํ„ฐ๋ŸฝํŠธ ์ปจํŠธ๋กค๋Ÿฌ $0020

  • ์Šฌ๋ ˆ์ด๋ธŒ ์ธํ„ฐ๋ŸฝํŠธ ์ปจํŠธ๋กค๋Ÿฌ $00A0

์ด 1์ฐจ ํฌํŠธ ์ฃผ์†Œ๋Š” ์†Œํ”„ํŠธ์›จ์–ด์˜ 8259 ์นฉ๊ณผ ์ง์ ‘ ํ†ต์‹ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค. ์ด๋Ÿฌํ•œ I/O ํฌํŠธ ์ฃผ์†Œ๋ฅผ ํ†ตํ•ด ์ด ์นฉ์— ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์–ด๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์ง€๋งŒ, ์šฐ๋ฆฌ์˜ ๋ชฉ์ ์„ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ์ •๋ง๋กœ ๊ทธ๊ฒƒ๋“ค์„ ์ฒ˜๋ฆฌํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ์ด ์ค‘ ๋Œ€๋ถ€๋ถ„์€ ์ปดํ“จํ„ฐ์˜ BIOS(Basic Input Output System)์— ์˜ํ•ด ์ปดํ“จํ„ฐ ์žฅ๋น„์˜ ์ดˆ๊ธฐ ์„ค์ •๊ณผ ๊ตฌ์„ฑ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉฐ, BIOS๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์ž‘์„ฑํ•˜์ง€ ์•Š๋Š” ํ•œ, ์ •๋ง๋กœ ์ด๊ฒƒ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋˜ํ•œ, ๊ฐ ์ปดํ“จํ„ฐ๋Š” ์ด ์ˆ˜์ค€์—์„œ ์žฅ๋น„๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ๊ทธ ๋™์ž‘์ด ์กฐ๊ธˆ์”ฉ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์—, ์ด๊ฒƒ์€ ์ปดํ“จํ„ฐ ์ œ์กฐ์—…์ฒด๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ๋‹ค๋ฃจ์–ด์•ผ ํ•  ์ผ๋ณด๋‹ค ๋” ๊ฑฑ์ •ํ•ด์•ผ ํ•  ์ผ์ด๋ฉฐ, ์ด๊ฒƒ์ด ๋ฐ”๋กœ BIOS ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์ž‘์„ฑ๋˜๋Š” ์ •ํ™•ํ•œ ์ด์œ ๋‹ค.

์ด๊ฒƒ์€ ๋Œ€๋ถ€๋ถ„์˜ PC ํ˜ธํ™˜ํ˜• ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ "์ผ๋ฐ˜์ ์ธ" ํฌํŠธ I/O ์ฃผ์†Œ์ด๋ฉฐ, ์ œ์กฐ์—…์ฒด๊ฐ€ ๋‹ฌ์„ฑํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฒƒ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์„ ์œ ๋…ํ•œ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ด ์ˆ˜์ค€์—์„œ๋Š” ๋น„ํ˜ธํ™˜์„ฑ์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์ง€๋งŒ, ์ง๋ ฌ ํฌํŠธ์˜ ํฌํŠธ I/O ์ฃผ์†Œ์— ๋„๋‹ฌํ•˜๋ฉด ์ด ๋ฌธ์ œ๋Š” ํ›จ์”ฌ ๋” ํฐ ๋ฌธ์ œ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค.

์žฅ์น˜ ๋ ˆ์ง€์Šคํ„ฐ

์—ฌ๊ธฐ์„œ ์ž ์‹œ ์‹œ๊ฐ„์„ ๋‚ด์–ด ์›Œ๋“œ ๋ ˆ์ง€์Šคํ„ฐ์˜ ์˜๋ฏธ๋ฅผ ์„ค๋ช…ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ด ์ˆ˜์ค€์—์„œ ์žฅ๋น„๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์žฅ๋น„๋ฅผ ์„ค๊ณ„ํ•œ ์ „๊ธฐ ์—”์ง€๋‹ˆ์–ด๋Š” ์žฅ๋น„์˜ ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ์ด๋Ÿฐ ์ผ์€ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„์˜ ์ถ”์ƒํ™”์—์„œ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋‚˜๋Š” ๊ทธ ํ˜ผ๋™์„ ์–ด๋Š ์ •๋„ ํ•ด์†Œํ•˜๊ณ  ์‹ถ๋‹ค.

๋ ˆ์ง€์Šคํ„ฐ๋Š” ๊ธฐ๊ธฐ๊ฐ€ ์ง์ ‘ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” RAM์˜ ์ž‘์€ ์กฐ๊ฐ์ผ ๋ฟ์ด๋‹ค. 8086์ด๋‚˜ ํŽœํ‹ฐ์—„๊ณผ ๊ฐ™์€ CPU์—์„œ, ์ด๊ฒƒ๋“ค์€ ๋‘ ์ˆซ์ž๋ฅผ ํ•จ๊ป˜ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ˆ˜ํ•™์ ์ธ ์—ฐ์‚ฐ์„ ์ง์ ‘์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ์–ต ์˜์—ญ์ด๋‹ค. ์ด๊ฒƒ๋“ค์€ ๋ณดํ†ต AX, SP ๋“ฑ๊ณผ ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ํ†ตํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋ ˆ์ง€์Šคํ„ฐ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๊ฐ€ ๊ธฐ๋ณธ ๊ธฐ๊ณ„ ์ˆ˜์ค€์˜ ์ง€์นจ์œผ๋กœ ์ง์ ‘ ์•”ํ˜ธํ™”๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์ธ CPU์—๋Š” ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ๊ฑฐ์˜ ์—†๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์žฅ์น˜ ๋ ˆ์ง€์Šคํ„ฐ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๋•Œ, ์ด๊ฒƒ๋“ค์€ CPU ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ ์žฅ์น˜ ์ž์ฒด์˜ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด๋ผ๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜๋ผ. ์ด๊ฒƒ๋“ค์€ ์ข…์ข… ํฌํŠธ I/O ๋ฉ”๋ชจ๋ฆฌ์— ์—ฐ๊ฒฐ๋˜๋„๋ก ์„ค๊ณ„๋˜๋ฏ€๋กœ ํฌํŠธ I/O ์ฃผ์†Œ์— ์“ฐ๊ฑฐ๋‚˜ ํฌํŠธ I/O ์ฃผ์†Œ๋ฅผ ์ฝ์„ ๋•Œ ์žฅ์น˜ ๋ ˆ์ง€์Šคํ„ฐ์— ์ง์ ‘ ์•ก์„ธ์Šคํ•œ๋‹ค. ๋•Œ๋กœ๋Š” ๋” ๋†’์€ ์ˆ˜์ค€์˜ ์ถ”์ƒํ™”๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ๋‹น์‹ ์€ ๋‹น์‹ ์ด ์–ด๋–ค ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ณ  ์žˆ๋Š”์ง€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ•˜๋‚˜์˜ ํฌํŠธ I/O ์ฃผ์†Œ์™€ ๋‹น์‹ ์ด ๊ทธ ๋ ˆ์ง€์Šคํ„ฐ๋กœ ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„ ๋˜ ๋‹ค๋ฅธ ํฌํŠธ I/O ์ฃผ์†Œ๋ฅผ ๊ฐ–๊ฒŒ ๋  ๊ฒƒ์ด๋‹ค. ์žฅ์น˜๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•์€ ์žฅ์น˜๊ฐ€ ์–ผ๋งˆ๋‚˜ ๋ณต์žกํ•˜๊ณ  ๋ฌด์—‡์„ ํ•  ๊ฒƒ์ธ๊ฐ€์— ๊ธฐ์ดˆํ•œ๋‹ค.

์ง„์ •ํ•œ ์˜๋ฏธ์—์„œ ๊ทธ๊ฒƒ๋“ค์€ ๋“ฑ๋ก๋ถ€์ง€๋งŒ, ์ข…์ข… ์ด๋Ÿฌํ•œ ์žฅ์น˜๋“ค์€ ๊ทธ ์ž์ฒด๋กœ ์™„์ „ํ•œ ์ปดํ“จํ„ฐ๋ผ๊ณ  ์—ฌ๊ฒจ์งˆ ์ˆ˜ ์žˆ๊ณ , ๋‹น์‹ ์ด ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์€ ๊ทธ๊ฒƒ์ด ๋ฉ”์ธ CPU์™€ ์–ด๋–ป๊ฒŒ ํ†ต์‹ ํ•  ๊ฒƒ์ธ๊ฐ€๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ ๋ฟ์ด๋ผ๋Š” ๊ฒƒ์„ ๋ช…์‹ฌํ•˜๋ผ. ์—ฌ๊ธฐ์— ์–ฝ๋งค์ด์ง€ ๋ง๊ณ  CPU ๋ ˆ์ง€์Šคํ„ฐ์™€ ํ—ท๊ฐˆ๋ ค.

ISR ์ •๋ฆฌ

์ธํ„ฐ๋ŸฝํŠธ ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ •๊ธฐ์ ์œผ๋กœ ์ƒํ˜ธ ์ž‘์šฉํ•ด์•ผ ํ•˜๋Š” ์˜์—ญ ์ค‘ ํ•˜๋‚˜๋Š” 8259 PIC ์ปจํŠธ๋กค๋Ÿฌ์—๊ฒŒ ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด์ด ์™„๋ฃŒ๋˜์—ˆ์Œ์„ ์•Œ๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค. ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ๋•Œ CPU๊ฐ€ 8259 ์นฉ์— ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ์ž๋™ํ™”๋œ ๋ฐฉ๋ฒ•์ด ์—†์œผ๋ฏ€๋กœ, ๋‹ค์Œ ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก PIC์˜ ํŠน์ • "๋“ฑ๋ก"์„ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ผ๋ฐ˜์ ์ธ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Port[$20] := $20;

์ด๊ฒƒ์€ "End of Interrupt"๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๋ช…๋ น์–ด๋ฅผ ์ „์†กํ•˜๊ฑฐ๋‚˜, ์ข…์ข… ๊ฐ„๋‹จํžˆ "EOI"๋ผ๊ณ  ์•ฝ์–ด๋กœ ์“ฐ๊ธฐ๋„ ํ•œ๋‹ค. ์ด ๋ ˆ์ง€์Šคํ„ฐ์— ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ๋ช…๋ น๋„ ์žˆ์ง€๋งŒ, ์šฐ๋ฆฌ์˜ ๋ชฉ์ ์„ ์œ„ํ•ด์„œ๋Š” ์ด๊ฒƒ๋งŒ์ด ์šฐ๋ฆฌ ์ž์‹ ๊ณผ ๊ด€๊ณ„ํ•  ํ•„์š”๊ฐ€ ์žˆ๋‹ค.

์ด์ œ ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด "๋งˆ์Šคํ„ฐ" PIC๊ฐ€ ์ง€์›Œ์ง€์ง€๋งŒ, "์Šฌ๋ ˆ์ด๋ธŒ" PIC์—์„œ ํŠธ๋ฆฌ๊ฑฐ๋˜๋Š” ์žฅ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ๊ทธ ์นฉ์—๋„ ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Œ์„ ์•Œ๋ฆด ํ•„์š”๊ฐ€ ์žˆ๋‹ค. ์ด๋Š” "EOI"๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ์นฉ์— ๋ณด๋‚ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

Port[$A0] := $20;
Port[$20] := $20;

PIC ์žฅ์น˜ ๋งˆ์Šคํ‚น

8259 PIC์˜ ์ฃผ์ œ๋ฅผ ๋– ๋‚˜๊ธฐ ์ „์—, ๋‚˜๋Š” ๊ธฐ๊ธฐ ๋งˆ์Šคํ‚น์˜ ๊ฐœ๋…์„ ๋‹ค๋ฃจ๊ณ  ์‹ถ๋‹ค. PIC์— ๋ถ€์ฐฉ๋œ ๊ฐ ์žฅ์น˜๋Š” PIC ์นฉ์„ ํ†ตํ•ด CPU๋ฅผ ์–ด๋–ป๊ฒŒ ์ค‘๋‹จ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š๋ƒ๋Š” ๊ด€์ ์—์„œ "์ผœ์ง" ๋˜๋Š” "๊บผ์ง"์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ณดํ†ต ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž๋กœ์„œ ์šฐ๋ฆฌ๊ฐ€ ์ •๋ง ์‹ ๊ฒฝ์“ฐ๋Š” ๊ฒƒ์€ ์žฅ์น˜๊ฐ€ ์ผœ์ ธ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฟ์ด์ง€๋งŒ, ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ๋ถ„๋ฆฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋ฉด ๋‹ค๋ฅธ ์žฅ์น˜๋ฅผ ๋Œ ์ˆ˜๋„ ์žˆ๋‹ค. ์žฅ์น˜๋ฅผ "๋„๋ฉด" ์ „์›์„ ๋‹ค์‹œ ์ผค ๋•Œ๊นŒ์ง€ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์„ ๋ช…์‹ฌํ•˜์‹ญ์‹œ์˜ค. ์—ฌ๊ธฐ์—๋Š” ์ปดํ“จํ„ฐ ์กฐ์ž‘์— ํ•„์š”ํ•  ์ˆ˜ ์žˆ๋Š” ํ‚ค๋ณด๋“œ๋‚˜ ๊ธฐํƒ€ ์ค‘์š”ํ•œ ์žฅ์น˜๊ฐ€ ํฌํ•จ๋  ์ˆ˜ ์žˆ๋‹ค.

์ด ๋งˆ์Šคํฌ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ "์ž‘๋™ ์ œ์–ด ์›Œ๋“œ 1" ๋˜๋Š” "OCW1"์ด๋ผ๊ณ  ํ•œ๋‹ค. PIC ๊ธฐ๋ณธ ์ฃผ์†Œ + 1 ๋˜๋Š” ํฌํŠธ I/O ์ฃผ์†Œ 21์˜ "๋งˆ์Šคํ„ฐ" PIC์— ์œ„์น˜ํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ๋น„ํŠธ ์กฐ์ž‘์„ ์ž์„ธํžˆ ๋‹ค๋ฃจ์ง€ ์•Š์„ ๊ฒ๋‹ˆ๋‹ค. ๋‹ค์Œ ํ‘œ๋Š” ๊ฐ ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ ์žฅ์น˜๋ฅผ ํ™œ์„ฑํ™” ๋˜๋Š” ๋น„ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋ณ€๊ฒฝํ•  ๊ด€๋ จ ๋น„ํŠธ๋ฅผ ๋ณด์—ฌ์ค€๋‹ค.

Master OCW1 ($21)

Bit

IRQ Enabled

Device Function

7

IRQ7

Parallel Port (LPT1)

6

IRQ6

Floppy Disk Controller

5

IRQ5

Reserved/Sound Card

4

IRQ4

Serial Port (COM1)

3

IRQ3

Serial Port (COM2)

2

IRQ2

Slave PIC

1

IRQ1

Keyboard

0

IRQ0

System Timer

Slave OCW1 ($A1)

Bit

IRQ Enabled

Device Function

7

IRQ15

Reserved

6

IRQ14

Hard Disk Drive

5

IRQ13

Math Co-Processor

4

IRQ12

PS/2 Mouse

3

IRQ11

PCI Devices

2

IRQ10

PCI Devices

1

IRQ9

Redirected IRQ2 Devices

0

IRQ8

Real Time Clock

IRQ3(์‹œ๋ฆฌ์–ผ ํฌํŠธ COM2์˜ ๊ฒฝ์šฐ ์ผ๋ฐ˜์ ์œผ๋กœ)์„ ์ผœ๋ ค๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ฐ€์ •ํ•˜๋ฉด ๋‹ค์Œ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค.

 Port[$21] := Port[$21] and $F7; {Clearing bit 3 for enabling IRQ3}

๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์„ ๋„๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค.

 Port[$21] := Port[$21] or $08; {Setting bit 3 for disabling IRQ3}

์ž‘์—…ํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ๋‹ค์Œ ๋ช…๋ น์„ ์ „์†กํ•˜์‹ญ์‹œ์˜ค.

Port[$21] := 0;

์œ„ ์ฝ”๋“œ๋Š” ๋ชจ๋“  ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•  ๊ฒ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ข‹์€ ์ผ์€ ์•„๋‹์ง€ ๋ชจ๋ฅด์ง€๋งŒ, ๋‹น์‹ ์ด ๋ฌด์—‡์„ ๊ฐ€์ง€๊ณ  ์ž‘์—…ํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ ๋‹น์‹ ์ด ์‹คํ—˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌด์–ธ๊ฐ€๊ฐ€ ๋˜์–ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค. ๊ฒŒ์œผ๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ์ง•์กฐ์ผ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ปดํ“จํ„ฐ๊ฐ€ ์˜๋„ํ•œ ๊ฒƒ๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ํ–‰๋™ํ•  ์ˆ˜๋„ ์žˆ๋Š” ๋ถ€์ž‘์šฉ์„ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด์™€ ๊ฐ™์€ ๋‹จ์นผ์„ ๋“ค์ด์ง€ ์•Š๋„๋ก ํ•˜๋ผ. ๋งŒ์•ฝ ๋‹น์‹ ์ด ์ด ์ˆ˜์ค€์—์„œ ์ปดํ“จํ„ฐ๋กœ ์ž‘์—…ํ•˜๊ณ  ์žˆ๋‹ค๋ฉด, ๋ชฉํ‘œ๋Š” ๋‹น์‹ ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” ๋‹ค๋ฅธ ์–ด๋–ค ์†Œํ”„ํŠธ์›จ์–ด์—๋„ ์†์ƒ์„ ์ž…ํžˆ์ง€ ์•Š๋„๋ก ๊ฐ€๋Šฅํ•œ ํ•œ ์ ๊ฒŒ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด๋‹ค.

์ง๋ ฌ COM ํฌํŠธ ๋ฉ”๋ชจ๋ฆฌ ๋ฐ I/O ํ• ๋‹น

์ด์ œ 8259 ์นฉ์„ ๋ฐ€๊ณ  ๋‚˜๊ฐ”์œผ๋‹ˆ UART ์ž์ฒด๋กœ ๋„˜์–ด๊ฐ€์ž. PIC์˜ ํฌํŠธ I/O ์ฃผ์†Œ๋Š” ์ƒ๋‹นํžˆ ํ‘œ์ค€์ ์ด์ง€๋งŒ, ์ปดํ“จํ„ฐ ์ œ์กฐ์—…์ฒด๋“ค์€ ์ง๋ ฌ ํฌํŠธ ์ž์ฒด์˜ ๋ฌผ๊ฑด๋“ค์„ ์˜ฎ๊ธฐ๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค. ๋˜ํ•œ ์ปดํ“จํ„ฐ์˜ ํ™•์žฅ ์Šฌ๋กฏ์— ์žˆ๋Š” ISA ๋˜๋Š” PCI ์นด๋“œ์™€ ๊ฐ™์€ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ์นด๋“œ์˜ ์ผ๋ถ€์ธ ์ง๋ ฌ ํฌํŠธ ๋””๋ฐ”์ด์Šค๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ๋””๋ฐ”์ด์Šค๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์ปดํ“จํ„ฐ์˜ ๋ฉ”์ธ ๋งˆ๋”๋ณด๋“œ์— ๋‚ด์žฅ๋œ ๊ฒƒ๊ณผ ๋‹ค๋ฅธ ์„ค์ •์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ์„ค์ •์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ•  ๋•Œ ์ด๋Ÿฌํ•œ ๊ฐ’์ด ๋ฌด์—‡์ธ์ง€ ์•„๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค. ์ข…์ข… ์ด๋Ÿฌํ•œ ๊ฐ’์€ ์ปดํ“จํ„ฐ์˜ BIOS ์„ค์ • ํ™”๋ฉด์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๊ฑฐ๋‚˜, ์ปดํ“จํ„ฐ๊ฐ€ ์ผœ์งˆ ๋•Œ ๋ฉ”์‹œ์ง€๋ฅผ ์ผ์‹œ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ์ปดํ“จํ„ฐ์˜ ๋ถ€ํŒ… ํ”„๋กœ์„ธ์Šค์˜ ์ผ๋ถ€๋กœ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

"์ผ๋ฐ˜์ ์ธ" PC ์‹œ์Šคํ…œ์˜ ๊ฒฝ์šฐ, ๊ฐ ์ง๋ ฌ COM ํฌํŠธ์˜ ํฌํŠธ I/O ์ฃผ์†Œ์™€ IRQ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

Common UART IRQ and I/O Port Addresses

COM Port

IRQ

Base Port I/O address

COM1

IRQ4

$3F8

COM2

IRQ3

$2F8

COM3

IRQ4

$3E8

COM4

IRQ3

$2E8

์—ฌ๊ธฐ์„œ ๋ญ”๊ฐ€ ํฅ๋ฏธ๋กœ์šด ๊ฒƒ์€, COM3๊ณผ COM1์ด ๊ฐ™์€ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๊ณต์œ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒƒ์€ ์‹ค์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ๋‹น์‹ ์ด ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด์„ ์“ธ ๋•Œ ๋ช…์‹ฌํ•ด์•ผ ํ•  ์‚ฌํ•ญ์ด๋‹ค. 8259 PIC ์นฉ์„ ํ†ตํ•ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ 15๊ฐœ์˜ ์ธํ„ฐ๋ŸฝํŠธ๋Š” ์—ฌ์ „ํžˆ ํ˜„๋Œ€ ์ปดํ“จํ„ฐ์—์„œ ๋ฐœ๊ฒฌ๋˜๋Š” ๋ชจ๋“  ์žฅ์น˜๊ฐ€ ๊ทธ๋“ค๋งŒ์˜ ๊ฐœ๋ณ„์ ์ธ ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ์—๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ, ์ด ๊ฒฝ์šฐ์—๋Š” ๋‹ค๋ฅธ ์žฅ์น˜์™€ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๊ณต์œ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šธ ํ•„์š”๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ์‹œ๋ฆฌ์–ผ ๋ฐ์ดํ„ฐ ํฌํŠธ์— ์•ก์„ธ์Šคํ•˜๊ธฐ ์œ„ํ•ด ์‹ค์ œ ์†Œํ”„ํŠธ์›จ์–ด์— ๋“ค์–ด๊ฐ€๋ฉด ๋‚˜์ค‘์— ๋” ์ž์„ธํžˆ ๋‹ค๋ฃจ๊ฒ ์ง€๋งŒ, ์ง€๊ธˆ์€ ํ•œ ์žฅ์น˜์—๋งŒ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์—„๊ฒฉํ•˜๊ฒŒ ์“ฐ์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค.

๊ธฐ๋ณธ ํฌํŠธ I/O ์ฃผ์†Œ๋Š” UART ๋ ˆ์ง€์Šคํ„ฐ์— ์ง์ ‘ ์•ก์„ธ์Šคํ•˜๋Š” ๋‹ค์Œ ์ฃผ์ œ๋ฅผ ์œ„ํ•ด ์ค‘์š”ํ•˜๋‹ค.

UART ๋ ˆ์ง€์Šคํ„ฐ

UART ์นฉ์€ ์ด 12๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ 8๊ฐœ์˜ ๋‹ค๋ฅธ ํฌํŠธ I/O ์œ„์น˜์— ๋งคํ•‘๋˜์–ด ์žˆ๋‹ค. ๋„ค, 8๊ฐœ์†Œ์— 12๊ฐœ์˜ ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ์žˆ๋Š”๋ฐ ์ด๋Š” ๋ถ„๋ช…ํžˆ ๋™์ผํ•œ ํฌํŠธ I/O ์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ๋‘ ๊ฐœ ์ด์ƒ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•˜๋ฉฐ UART ๊ตฌ์„ฑ ๋ฐฉ๋ฒ•์— ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค. ์‹ค์ œ๋กœ๋Š” ๋‘ ๊ฐœ์˜ ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ์‹ค์ œ๋กœ ๋™์ผํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๋งฅ๋ฝ์—์„œ, ์ง๋ ฌ ๋ฐ์ดํ„ฐ ํฌํŠธ์—์„œ ๋ณด๋‚ผ ๋ฌธ์ž๋ฅผ ์ „์†กํ•˜๋Š” ํฌํŠธ I/O ์ฃผ์†Œ๊ฐ€ ์ปดํ“จํ„ฐ๋กœ ์ „์†ก๋˜๋Š” ๋ฌธ์ž์—์„œ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ฃผ์†Œ์™€ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋‹ค๋ฅธ I/O ํฌํŠธ ์ฃผ์†Œ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์“ธ ๋•Œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๋•Œ์™€๋Š” ๋‹ค๋ฅธ ์ปจํ…์ŠคํŠธ๋ฅผ ๊ฐ–๋Š”๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ˆซ์ž๋“ค์€ ๋‹น์‹ ์ด ๊ทธ๊ฒƒ์œผ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๋•Œ์™€๋Š” ๊ทธ๊ฒƒ์— ๋ฐ์ดํ„ฐ๋ฅผ ์“ด ํ›„์— ๋‹ค๋ฅผ ๊ฒƒ์ด๋‹ค. ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ์กฐ๊ธˆ ๋” ์–˜๊ธฐํ•ด๋ณด์ž.

์ด ์นฉ์ด ์›๋ž˜ ์„ค๊ณ„๋˜์—ˆ์„ ๋•Œ ์ œ๊ธฐ๋œ ๋ฌธ์ œ ์ค‘ ํ•˜๋‚˜๋Š” ์„ค๊ณ„์ž๊ฐ€ 16๋น„ํŠธ๋กœ ์ง๋ ฌ ๋ฐ์ดํ„ฐ์˜ ๋ณด๋“œ ๋ ˆ์ดํŠธ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ๋‘ ๊ฐœ์˜ ์„œ๋กœ ๋‹ค๋ฅธ "๋“ฑ๋ก์ž"๋ฅผ ์ฐจ์ง€ํ•˜๋ฉฐ, "๋””๋น„์†Œ ๋ž˜์น˜ ์•ก์„ธ์Šค ๋น„ํŠธ" ๋˜๋Š” "DLAB"๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๊ฒƒ์œผ๋กœ ํ† ๊ธ€๋œ๋‹ค. DLAB๋ฅผ "1"๋กœ ์„ค์ •ํ•˜๋ฉด ๋ณด๋“œ ๋ ˆ์ดํŠธ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, "0"์ผ ๋•Œ๋Š” ๋ ˆ์ง€์Šคํ„ฐ์˜ ์ปจํ…์ŠคํŠธ๊ฐ€ ๋‹ค๋ฅด๋‹ค.

์ด ๋ชจ๋“  ๊ฒƒ์ด ํ˜ผ๋ž€์Šค๋Ÿฝ๊ฒŒ ๋“ค๋ฆฌ๋Š”๊ฐ€? ๊ทธ๋Ÿด ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์˜ ๊ฐ„๋‹จํ•œ ์กฐ๊ฐ์œผ๋กœ ํ•˜์ž. ๋‹ค์Œ์€ ์ผ๋ฐ˜์ ์ธ UART ์นฉ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ๊ฐ ๋ ˆ์ง€์Šคํ„ฐ์˜ ํ‘œ๋‹ค.

UART Registers

Base Address

DLAB

I/O Access

Abbrv.

Register Name

+0

0

Write

THR

Transmitter Holding Buffer

+0

0

Read

RBR

Receiver Buffer

+0

1

Read/Write

DLL

Divisor Latch Low Byte

+1

0

Read/Write

IER

Interrupt Enable Register

+1

1

Read/Write

DLH

Divisor Latch High Byte

+2

x

Read

IIR

Interrupt Identification Register

+2

x

Write

FCR

FIFO Control Register

+3

x

Read/Write

LCR

Line Control Register

+4

x

Read/Write

MCR

Modem Control Register

+5

x

Read

LSR

Line Status Register

+6

x

Read

MSR

Modem Status Register

+7

x

Read/Write

SR

Scratch Register

DLAB ์—ด์˜ "x"๋Š” DLAB์˜ ์ƒํƒœ๊ฐ€ ํ•ด๋‹น ์˜คํ”„์…‹ ๋ฒ”์œ„์—์„œ ์•ก์„ธ์Šคํ•  ๋ ˆ์ง€์Šคํ„ฐ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•œ๋‹ค. ๋˜ํ•œ ์ผ๋ถ€ ๋ ˆ์ง€์Šคํ„ฐ๋Š” ์ฝ๊ธฐ ์ „์šฉ์ด๋ผ๋Š” ์ ์— ์œ ์˜ํ•˜์‹ญ์‹œ์˜ค. ๋งŒ์•ฝ ๋‹น์‹ ์ด ๊ทธ๋“ค์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์“ฐ๋ ค๊ณ  ํ•œ๋‹ค๋ฉด, ๋‹น์‹ ์€ ๋ชจ๋Ž€์— ์•ฝ๊ฐ„์˜ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ฑฐ๋‚˜(์ตœ์•…์˜ ๊ฒฝ์šฐ) ๊ทธ ๋ฐ์ดํ„ฐ๋Š” ๊ฐ„๋‹จํžˆ ๋ฌด์‹œ๋  ๊ฒƒ์ด๋‹ค(์ผ๋ฐ˜์ ์œผ๋กœ ๊ฒฐ๊ณผ). ์•ž์—์„œ ์–ธ๊ธ‰ํ•œ ๋ฐ”์™€ ๊ฐ™์ด, ์ผ๋ถ€ ๋ ˆ์ง€์Šคํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋กํ•  ๋•Œ ํ•˜๋‚˜์˜ ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ์‚ฌ์šฉ๋  ํฌํŠธ I/O ์ฃผ์†Œ๋ฅผ ๊ณต์œ ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ๋™์ผํ•œ ์ฃผ์†Œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ๋‹ค๋ฅธ ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ์‚ฌ์šฉ๋  ๊ฒƒ์ด๋‹ค.

๊ฐ ์ง๋ ฌ ํ†ต์‹  ํฌํŠธ์—๋Š” ์ž์ฒด์ ์ธ ๋“ฑ๋ก๊ธฐ ์ง‘ํ•ฉ์ด ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด COM1์— ๋Œ€ํ•œ LSR(Line Status Register)์— ์•ก์„ธ์Šคํ•˜๊ณ  ๊ธฐ๋ณธ I/O Port ์ฃผ์†Œ๋ฅผ 3F8๋กœ ๊ฐ€์ •ํ•˜๋ฉด ์ด ๋ ˆ์ง€์Šคํ„ฐ์˜ ์ •๋ณด๋ฅผ ์–ป๊ธฐ ์œ„ํ•œ I/O Port ์ฃผ์†Œ๋Š” 3F8 + 05 ๋˜๋Š” 3FD๋กœ ํ™•์ธ๋  ์ˆ˜ ์žˆ๋‹ค. ์ผ๋ถ€ ์˜ˆ์ œ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

const
  COM1_Base = $3F8;
  COM2_Base = $2F8;
  LSR_Offset = $05;

function LSR_Value: Byte;
begin
  Result := Port[COM1_Base+LSR_Offset];
end;

์ด๋“ค ๊ฐ ๋ ˆ์ง€์Šคํ„ฐ์—๋Š” ๊ฝค ๋งŽ์€ ์ •๋ณด๊ฐ€ ๋“ค์–ด ์žˆ์œผ๋ฉฐ, ๋‹ค์Œ์€ ๊ฐ ๋ ˆ์ง€์Šคํ„ฐ์˜ ์˜๋ฏธ์™€ ๊ทธ ์•ˆ์— ๋“ค์–ด ์žˆ๋Š” ์ •๋ณด์— ๋Œ€ํ•œ ์„ค๋ช…์ด๋‹ค.

์†ก์‹ ๊ธฐ ํ™€๋”ฉ ๋ฒ„ํผ/์ˆ˜์‹ ๊ธฐ ๋ฒ„ํผ

์˜คํ”„์…‹: +0 . ์†ก์‹  ๋ฒ„ํผ์™€ ์ˆ˜์‹  ๋ฒ„ํผ๋Š” ๊ด€๋ จ์ด ์žˆ์œผ๋ฉฐ, ์‹ฌ์ง€์–ด ๋งค์šฐ ๋™์ผํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. ์ด๊ฒƒ์€ ๋˜ํ•œ ํ›„๊ธฐ ๋ชจ๋ธ๋“ค์ด ์ง๋ ฌ ๋ฐ์ดํ„ฐ๋กœ ์ „์†ก๋˜๊ธฐ ์ „์— ์นฉ ์•ˆ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ๋‚ด๋ถ€ ๋ฒ„ํผ๋ง์„ ์ผ๋ถ€ ํฌํ•จํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 8250 ์นฉ์˜ ํ›„๊ธฐ ๋ฒ„์ „๋“ค์ด ์ƒ๋‹นํ•œ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์˜์—ญ๋“ค ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ๊ธฐ๋ณธ 8250 ์นฉ์€ ํ•œ ๋ฒˆ์— ํ•œ ๋ฐ”์ดํŠธ๋งŒ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ˜๋ฉด, 16550 ์นฉ๊ณผ ๊ฐ™์€ ์นฉ์€ ์ „์†กํ•˜๊ฑฐ๋‚˜ ์ˆ˜์‹ ํ•˜๊ธฐ ์œ„ํ•ด ์ตœ๋Œ€ 16๋ฐ”์ดํŠธ๊นŒ์ง€ ๋ณด์œ ํ•˜๊ฒŒ ๋œ๋‹ค(๋•Œ๋กœ๋Š” ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘...). ๋ฌธ์ž๋ฅผ ๋ณด๋‚ผ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๊ธฐ ์ „์— ์ œ์กฐ์—…์ฒด์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค. ์ด๊ฒƒ์€ ์ปดํ“จํ„ฐ๊ฐ€ ๋งŽ์€ ์ผ์„ ํ•˜๋Š” ๋‹ค์ค‘ ์ž‘์—… ํ™˜๊ฒฝ์—์„œ ์œ ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ง๋ ฌ ๋ฐ์ดํ„ฐ ํ๋ฆ„์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ๊นŒ์ง€๋Š” ๋ช‡ ๋ฐ€๋ฆฌ์ดˆ๊ฐ€ ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ ˆ์ง€์Šคํ„ฐ๋Š” ์‹ค์ œ๋กœ ์ง๋ ฌ ๋ฐ์ดํ„ฐ ํ†ต์‹ ์˜ "์‹ฌ์žฅ"์ด๋ฉฐ, ๋ฐ์ดํ„ฐ๊ฐ€ ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ๋กœ ์ „์†ก๋˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋‹ค๋ฅธ ์žฅ์น˜์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์–ป๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ด๋Ÿฌํ•œ ๋ ˆ์ง€์Šคํ„ฐ์— ๋Œ€ํ•œ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ๋Š” ๋‹จ์ˆœํžˆ ๊ฐ๊ฐ์˜ UART์— ๋Œ€ํ•œ ํฌํŠธ I/O ์ฃผ์†Œ์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฌธ์ œ์ผ ๋ฟ์ด๋‹ค.

์ˆ˜์‹  ๋ฒ„ํผ๊ฐ€ ์‚ฌ์šฉ๋˜๊ฑฐ๋‚˜ FIFO๊ฐ€ ๊ฐ€๋“ ์ฐจ๋ฉด ์ˆ˜์‹  ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋˜๊ณ  ์ˆ˜์‹ ๊ธฐ ๋ผ์ธ ์ƒํƒœ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ IIR ๋ ˆ์ง€์Šคํ„ฐ์— ๊ธฐ๋ก๋œ๋‹ค. ์˜ค๋ฒ„๋Ÿฐ ์˜ค๋ฅ˜ ๋น„ํŠธ๋Š” ๋ผ์ธ ์ƒํƒœ ๋ ˆ์ง€์Šคํ„ฐ์—์„œ๋„ ์„ค์ •๋œ๋‹ค.

Divisor ๋ž˜์น˜

์˜คํ”„์…‹: +0๊ณผ +1 . Divisor Latch Bytes๋Š” ๋ชจ๋Ž€์˜ ๋ณด๋“œ ์†๋„๋ฅผ ์ œ์–ดํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด ๋ ˆ์ง€์Šคํ„ฐ์˜ ์ด๋ฆ„์—์„œ ์ถ”์ธกํ•  ์ˆ˜ ์žˆ๋“ฏ์ด, ์นฉ์ด ์†ก์‹ ํ•  ๋ณด๋ ˆ์ดํŠธ๋ฅผ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด ์ ์ˆ˜๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

์‹ค์ œ๋กœ๋Š” ๊ทธ๊ฒƒ๋ณด๋‹ค ๋” ๊ฐ„๋‹จํ•˜๋‹ค. ์ด๊ฒƒ์€ ์ •๋ง๋กœ UART์— ์˜ํ•ด ๋น„ํŠธ๊ฐ€ ์ „์†ก๋  ๋•Œ๋งˆ๋‹ค ์‚ฌ์šฉ๋˜๋Š” ์นด์šดํŠธ๋‹ค์šด ์‹œ๊ณ„๋‹ค. ๋น„ํŠธ๊ฐ€ ์ „์†ก๋  ๋•Œ๋งˆ๋‹ค ์นด์šดํŠธ๋‹ค์šด ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ์ด ๊ฐ’์œผ๋กœ ์žฌ์„ค์ •๋˜๊ณ  0์œผ๋กœ ์นด์šดํŠธ ๋‹ค์šด๋œ๋‹ค. ์ด ์‹œ๊ณ„๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ 115.2KHz๋กœ ์ž‘๋™ํ•œ๋‹ค. ์ฆ‰, ์ดˆ๋‹น 11๋งŒ 5์ฒœ ๋ฒˆ์œผ๋กœ ์นด์šดํ„ฐ๊ฐ€ ๋‚ด๋ ค๊ฐ€ ๋‹ค์Œ ๋น„ํŠธ๋ฅผ ์–ธ์ œ ๋ณด๋‚ผ์ง€ ๊ฒฐ์ •ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ•œ๋•Œ ์„ค๊ณ„ ํ”„๋กœ์„ธ์Šค ์ค‘์— UART ์ž‘๋™์„ ์œ„ํ•ด ๋‹ค๋ฅธ ์ฃผํŒŒ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒ๋˜์—ˆ์ง€๋งŒ, ์ด ์นฉ์— ๋Œ€ํ•ด ์ด๋ฏธ ์“ฐ์—ฌ์ง„ ๋งŽ์€ ์–‘์˜ ์†Œํ”„ํŠธ์›จ์–ด ๋•Œ๋ฌธ์— ์ด ์ฃผํŒŒ์ˆ˜๋Š” PC ํ”Œ๋žซํผ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ฑฐ์˜ ๋ชจ๋“  UART ์นฉ์— ๋Œ€ํ•ด ์ƒ๋‹นํžˆ ํ‘œ์ค€์ ์ด๋‹ค. ๊ทธ๋“ค์€ (1.843 MHz ํด๋Ÿญ๊ณผ ๊ฐ™์€) ์ผ๋ถ€์—์„œ ๋” ๋น ๋ฅธ ํด๋Ÿญ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๊ทธ ์ฃผํŒŒ์ˆ˜์˜ ์ผ๋ถ€๋ถ„์€ 115.2 KHz ํด๋Ÿญ์œผ๋กœ ํ™•์žฅํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ๊ฒƒ์ด๋‹ค.

UART ํด๋Ÿญ ์†๋„(๊ณ ๊ธ‰ ์ ์šฉ ๋ฒ”์œ„): ๋งŽ์€ UART ์นฉ์˜ ๊ฒฝ์šฐ, UART๋ฅผ ๊ตฌ๋™ํ•˜๋Š” ํด๋Ÿญ ์ฃผํŒŒ์ˆ˜๋Š” 1.8432 MHz์ด๋‹ค. ์ด ์ฃผํŒŒ์ˆ˜๋Š” 16๋ฐฐ๋งŒํผ ์ฃผํŒŒ์ˆ˜๋ฅผ ๋–จ์–ด๋œจ๋ฆฌ๋Š” ๋ถ„ํ•  ํšŒ๋กœ๋ฅผ ํ†ตํ•ด ์ „๋‹ฌ๋˜๋ฉฐ, ์ด๋Š” ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ 115.2KHz ์ฃผํŒŒ์ˆ˜๋ฅผ ์šฐ๋ฆฌ์—๊ฒŒ ์ œ๊ณตํ•œ๋‹ค. ๋งŒ์•ฝ ๋‹น์‹ ์ด ์ด ์นฉ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ช‡๋ช‡ ๋งž์ถค ์žฅ๋น„๋ฅผ ํ•œ๋‹ค๋ฉด, National Semiconductor ์‚ฌ์–‘ ์‹œํŠธ๋Š” 3.072 MHz ์‹œ๊ณ„์™€ 18.432 MHz ์‹œ๊ณ„๋ฅผ ํ—ˆ์šฉํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋†’์€ ์ฃผํŒŒ์ˆ˜๋Š” ๋” ๋†’์€ ๋ณด๋“œ ์†๋„๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ์ง€๋งŒ, ์ด๋Ÿฌํ•œ ์ƒˆ๋กœ์šด ์ฃผํŒŒ์ˆ˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋งˆ๋”๋ณด๋“œ์— ์‚ฌ์šฉ์ž ์ง€์ • ํšŒ๋กœ์™€ ์ข…์ข… ์ƒˆ๋กœ์šด ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ํฅ๋ฏธ๋กœ์šด ๊ฒƒ์€ ์ด๋Ÿฌํ•œ ๋” ๋†’์€ ํด๋Ÿญ ์ฃผํŒŒ์ˆ˜๋กœ 50๋ณด์—์„œ ์—ฌ์ „ํžˆ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด์ง€๋งŒ, ์›๋ž˜์˜ IBM-PC/XT๊ฐ€ ์ œ์กฐ๋˜์—ˆ์„ ๋•Œ ์ด๊ฒƒ์€ ๋” ๋†’์€ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ๋Ÿ‰์— ์žˆ์–ด ์ง€๊ธˆ์ฒ˜๋Ÿผ ํฐ ๋ฌธ์ œ๋Š” ์•„๋‹ˆ์—ˆ๋‹ค.

๋‹ค์Œ ์ˆ˜ํ•™ ๊ณต์‹์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, Divisor Latch Bytes์— ๋„ฃ์–ด์•ผ ํ•  ์ˆซ์ž๋ฅผ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

{\displaystyle {DivisorLatchValue}={115200 \over {BaudRate}}{\displaystyle {DivisorLatchValue}={115200 \over {BaudRate}}}}

์ด ํ‘œ๋Š” ์ง๋ ฌ ํ†ต์‹ ์˜ ์ผ๋ฐ˜์ ์ธ ๋ณด๋“œ ์†๋„๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์Œ ํ‘œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค.

Divisor Latch Byte Values (common baud rates)

Baud Rate

Divisor (in decimal)

Divisor Latch High Byte

Divisor Latch Low Byte

50

2304

$09

$00

110

1047

$04

$17

220

524

$02

$0C

300

384

$01

$80

600

192

$00

$C0

1200

96

$00

$60

2400

48

$00

$30

4800

24

$00

$18

9600

12

$00

$0C

19200

6

$00

$06

38400

3

$00

$03

57600

2

$00

$02

115200

1

$00

$01

ํ‘œ๋ฅผ ๋ณผ ๋•Œ ํ•œ ๊ฐ€์ง€ ๋ช…์‹ฌํ•ด์•ผ ํ•  ๊ฒƒ์€ ๋ณด๋ ˆ์ดํŠธ 600 ์ด์ƒ, ๋ฌด์—‡๋ณด๋‹ค๋„ ๋””๋น„์†Œ ๋ž˜์น˜ ํ•˜์ด ๋ฐ”์ดํŠธ๋ฅผ 0์œผ๋กœ ์„ค์ •ํ–ˆ๋‹ค๋Š” ์ ์ด๋‹ค. ์–ด์„คํ”ˆ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ์•„๋ฌด๋„ ๊ทธ๋ ‡๊ฒŒ ๋‚ฎ์€ ๋ณด๋ ˆ์ดํŠธ๋ฅผ ๋‹ค๋ฃจ์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ๊ฐ€์ •ํ•  ๋•Œ ๋†’์€ ๋ฐ”์ดํŠธ ์„ค์ •์„ ๊ฑด๋„ˆ๋›ฐ๋ ค๊ณ  ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์ด๊ฒƒ์€ ํ•ญ์ƒ ์ถ”์ธกํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค. ์ข‹์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์Šต๊ด€์€ ์—ฌ๋Ÿฌ๋ถ„์ด ํ•˜๊ณ  ์žˆ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ๋” ๋†’์€ ๋ณด๋ ˆ์ดํŠธ๋กœ ์‹คํ–‰๋˜๋”๋ผ๋„ ์ด๊ฒƒ์„ 0์œผ๋กœ ์„ค์ •ํ•˜๋„๋ก ๋…ธ๋ ฅํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•”์‹œํ•œ๋‹ค.

๋˜ ํ•˜๋‚˜ ์ฃผ๋ชฉํ•ด์•ผ ํ•  ๊ฒƒ์€ ์œ„์— ๋‚˜์—ด๋œ ํ‘œ์ค€ ๋ณด๋ ˆ์ดํŠธ ์ด์™ธ์˜ ๋‹ค๋ฅธ ์ž ์žฌ์  ๋ณด๋ ˆ์ดํŠธ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ์€ ์ „ํ˜•์ ์ธ ์‘์šฉ์—๋Š” ๊ถŒ์žฅ๋˜์ง€ ์•Š์ง€๋งŒ, ์‹คํ—˜์—๋Š” ์žฌ๋ฏธ์žˆ๋Š” ๊ฒƒ์ด ๋  ๊ฒƒ์ด๋‹ค. ๋˜ํ•œ ํ‘œ์ค€ API ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ํ˜ธํ™˜๋˜์–ด์•ผ ํ•˜๋Š” ํŠน์ • ๋ณด๋“œ ์†๋„๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜• ์žฅ๋น„์™€ ํ†ต์‹ ์„ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒƒ์€ ์™œ ์ด ์ˆ˜์ค€์˜ ์นฉ์— ๋Œ€ํ•œ ์ง€์‹์ด ์—ฌ์ „ํžˆ ๋งค์šฐ ์œ ์šฉํ•œ์ง€๋ฅผ ์ฆ๋ช…ํ•ด์•ผ ํ•œ๋‹ค.

์ด๋Ÿฌํ•œ ๋ ˆ์ง€์Šคํ„ฐ๋กœ ์ž‘์—…ํ•  ๋•Œ, Divisor Latch Access Bit๋ฅผ "1"๋กœ ์„ค์ •ํ•ด์•ผ ํ•˜๋Š” ์œ ์ผํ•œ ๋ ˆ์ง€์Šคํ„ฐ๋ผ๋Š” ๊ฒƒ๋„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค. ์•„๋ž˜ ๋‚ด์šฉ์€ ๋” ์ž์„ธํžˆ ์„ค๋ช…ํ•˜๊ฒ ์ง€๋งŒ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๋ณด๋ ˆ์ดํŠธ๋ฅผ ์ฆ‰์‹œ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด DLAB๋ฅผ "1"๋กœ ์„ค์ •ํ•œ ๋‹ค์Œ, ๋ชจ๋Ž€์— ๋Œ€ํ•œ I/O ์•ก์„ธ์Šค๋ฅผ ๋” ํ•˜๊ธฐ ๋ฐ”๋กœ ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๋˜๋Œ๋ฆฌ๋Š” ๊ฒƒ์ด ์œ ์šฉํ•  ๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ์€ ๋‹จ์ง€ ์ข‹์€ ์ž‘์—… ์Šต๊ด€์ผ ๋ฟ์ด๋ฉฐ, UART์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋‚˜๋จธ์ง€ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ํ›จ์”ฌ ๊นจ๋—ํ•˜๊ณ  ์‰ฝ๊ฒŒ ์œ ์ง€ํ•œ๋‹ค.

ํ•œ ๋งˆ๋”” ์ฃผ์˜: ๋‘ Divisor Latch ๋ฐ”์ดํŠธ์— ๋Œ€ํ•ด ๊ฐ’์„ "0"์œผ๋กœ ์„ค์ •ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. UART ์นฉ์„ ์†์ƒ์‹œํ‚ค์ง€๋Š” ์•Š๊ฒ ์ง€๋งŒ, UART๊ฐ€ ์ง๋ ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ํ•œ ์ปดํ“จํ„ฐ์—์„œ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ๋กœ, ํ˜น์€ ์ปดํ“จํ„ฐ๋ฅผ ๋ถ€ํŒ…ํ•  ๋•Œ ํ•œ ๋ฒˆ์—์„œ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ๋กœ ๋ฐ”๋€” ๊ฒƒ์ด๋‹ค. ์ด๋Š” ์˜ค๋ฅ˜ ์กฐ๊ฑด์ด๋ฉฐ, ์ด ์ˆ˜์ค€์—์„œ ๋ณด๋“œ ์†๋„ ์„ค์ •๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ, Divisor Latch์˜ ์ž ์žฌ์ ์ธ "0" ๊ฐ’์„ ํฌ์ฐฉํ•ด์•ผ ํ•œ๋‹ค.

์—ฌ๊ธฐ COM1์˜ ๋ณด๋“œ ์†๋„๋ฅผ ์„ค์ •ํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์ƒ˜ํ”Œ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์žˆ๋‹ค.

const
  COM1_Base = $3F8;
  COM2_Base = $2F8;
  LCR_Offset = $03;
  Latch_Low = $00;
  Latch_High = $01;

procedure SetBaudRate(NewRate: Word);
var
  DivisorLatch: Word;
begin
  DivisorLatch := 115200 div NewRate;
  Port[COM1_Base + LCR_Offset] := Port[COM1_Base + LCR_Offset] or $80; {Set DLAB}
  Port[COM1_Base + Latch_High] := DivisorLatch shr 8;
  Port[COM1_Base + Latch_Low] := DivisorLatch and $FF;
  Port[COM1_Base + LCR_Offset] := Port[COM1_Base + LCR_Offset] and $7F; {Clear DLAB}
end;

function GetBaudRate: Integer;
var
  DivisorLatch: Word;
begin
  Port[COM1_Base + LCR_Offset] := Port[COM1_Base + LCR_Offset] or $80; {Set DLAB}
  DivisorLatch := (Port[COM1_Base + Latch_High] shl 8) + Port[COM1_Base + Latch_Low];
  Port[COM1_Base + LCR_Offset] := Port[COM1_Base + LCR_Offset] and $7F; {Clear DLAB}
  Result := 115200 div DivisorLatch;
end;

์ธํ„ฐ๋ŸฝํŠธ ํ™œ์„ฑํ™” ๋ ˆ์ง€์Šคํ„ฐ

์˜คํ”„์…‹: +1 . ์ด ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด UART๊ฐ€ ์‹œ๋ฆฌ์–ผ COM ํฌํŠธ์— ์—ฐ๊ฒฐ๋œ ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋กœ ์ธํ„ฐ๋ŸฝํŠธ ์ด๋ฒคํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ์‹œ๊ธฐ์™€ ๋ฐฉ๋ฒ•์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋ฉด ์‹œ์Šคํ…œ ์ž์›์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹ค์‹œ๊ฐ„ ์กฐ๊ฑด์—์„œ ์ง๋ ฌ ๋ฐ์ดํ„ฐ ๋ผ์ธ์„ ํ†ตํ•ด ์ „์†ก๋˜๋Š” ์ •๋ณด์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ ๋ถ€๋ถ„์— ๋Œ€ํ•ด์„œ๋Š” ๋‚˜์ค‘์— ๋” ๋‹ค๋ฃจ๊ฒ ์ง€๋งŒ ์—ฌ๊ธฐ์„œ ์ค‘์š”ํ•œ ๊ฒƒ์€ UART๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์–ธ์ œ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•ด์•ผ ํ•˜๋Š”์ง€ ์ •ํ™•ํžˆ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒ๋‹ˆ๋‹ค. ์ด ๋ ˆ์ง€์Šคํ„ฐ์—๋Š” ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ๋‹ค.

๋‹ค์Œ์€ ์ด ๋ ˆ์ง€์Šคํ„ฐ์˜ ๊ฐ ๋น„ํŠธ ๋ฐ ์ด ์นฉ์˜ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฒคํŠธ๋ฅผ ๋ณด์—ฌ ์ฃผ๋Š” ํ‘œ์ž…๋‹ˆ๋‹ค.

Interrupt Enable Register (IER)

Bit

Notes

7

Reserved

6

Reserved

5

Enables Low Power Mode (16750)

4

Enables Sleep Mode (16750)

3

Enable Modem Status Interrupt

2

Enable Receiver Line Status Interrupt

1

Enable Transmitter Holding Register Empty Interrupt

0

Enable Received Data Available Interrupt

Received Data interrupt๋Š” UART์—์„œ ์ฒ ์ˆ˜ํ•˜๊ธฐ ์œ„ํ•ด ๋Œ€๊ธฐํ•˜๊ณ  ์žˆ๋Š” ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์Œ์„ ์•Œ๋ ค ์ฃผ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ด๊ฒƒ์€ ์•„๋งˆ๋„ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„๋ณด๋‹ค ๋” ๋งŽ์ด ์‚ฌ์šฉํ•  ๊ฒƒ์ด๊ณ , ๋” ๋งŽ์ด ์‚ฌ์šฉํ•  ๊ฒƒ์ด๋‹ค.

์†ก์‹ ๊ธฐ ํ™€๋”ฉ ๋ ˆ์ง€์Šคํ„ฐ ๋นˆ ์ธํ„ฐ๋ŸฝํŠธ๋Š” (16550๊ณผ ๊ฐ™์€ ๋” ์ง„๋ณด๋œ ์นฉ ๋ชจ๋ธ์— ๋Œ€ํ•œ) ์ถœ๋ ฅ ๋ฒ„ํผ๊ฐ€ ๋ฒ„ํผ์— ๋ฐ€์–ด๋„ฃ์€ ๋ชจ๋“  ๊ฒƒ์„ ์ „์†กํ•˜๋Š” ๊ฒƒ์„ ์™„๋ฃŒํ–ˆ์Œ์„ ์•Œ๋ ค ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฃจํ‹ด์„ ๊ฐ„์†Œํ™”ํ•˜์—ฌ CPU ์‹œ๊ฐ„์„ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.

์ˆ˜์‹ ๊ธฐ ๋ผ์ธ ์ƒํƒœ ์ธํ„ฐ๋ŸฝํŠธ๋Š” LSR ๋ ˆ์ง€์Šคํ„ฐ์˜ ๋‚ด์šฉ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Œ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค. ์ด๊ฒƒ์€ ๋ณดํ†ต ์˜ค๋ฅ˜ ์กฐ๊ฑด์ด๋ฉฐ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ตœ์ข… ์‚ฌ์šฉ์ž์—๊ฒŒ ์ผ๋ฐ˜ ํ…์ŠคํŠธ ์„ค๋ช…์„ ์ œ๊ณตํ•˜๋Š” UART์˜ ํšจ์œจ์ ์ธ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ๊ธฐ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋ฉด ์ด ์‚ฌํ•ญ์„ ๊ณ ๋ คํ•ด์•ผ ํ•œ๋‹ค. ์ด๊ฒƒ์€ ํ™•์‹คํžˆ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๋Œ€ํ•œ ์ข€ ๋” ์ง„๋ณด๋œ ์ง€์‹์„ ํ•„์š”๋กœ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋ชจ๋Ž€ ์ƒํƒœ ์ธํ„ฐ๋ŸฝํŠธ๋Š” ์ปดํ“จํ„ฐ์— ์—ฐ๊ฒฐ๋œ ์™ธ๋ถ€ ๋ชจ๋Ž€์ด ๋ณ€๊ฒฝ๋  ๋•Œ ์ด๋ฅผ ์•Œ๋ ค ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์ „ํ™” "๋ฒจ" ์šธ๋ฆผ(์†Œํ”„ํŠธ์›จ์–ด์—์„œ ์ด ๊ฒƒ์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•  ์ˆ˜ ์žˆ์Œ), ๋‹ค๋ฅธ ๋ชจ๋Ž€์— ์„ฑ๊ณต์ ์œผ๋กœ ์—ฐ๊ฒฐํ•œ ๊ฒƒ(ํ†ต์‹ ์‚ฌ ๊ฐ์ง€๊ฐ€ ์ผœ์ ธ ์žˆ์Œ) ๋˜๋Š” ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ „ํ™”๋ฅผ "์ถฉ์ „"ํ•œ ๊ฒƒ(ํ†ต์‹ ์‚ฌ ๊ฐ์ง€๊ฐ€ ๊บผ์ง)๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ์™ธ๋ถ€ ๋ชจ๋Ž€์ด๋‚˜ ๋ฐ์ดํ„ฐ ์žฅ๋น„๊ฐ€ ๊ณ„์†ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค(๋ณด๋‚ผ ๋•Œ ์‚ญ์ œ). ๋ณธ์งˆ์ ์œผ๋กœ, ์ด๊ฒƒ์€ ์—„๊ฒฉํ•˜๊ฒŒ ์†ก์ˆ˜์‹ ์„ ์„ ์ œ์™ธํ•œ RS-232 ํ‘œ์ค€์˜ ๋‹ค๋ฅธ ์™€์ด์–ด๋ฅผ ๋‹ค๋ฃฌ๋‹ค.

๋‹ค๋ฅธ ๋‘ ๊ฐ€์ง€ ๋ชจ๋“œ๋Š” ์—„๊ฒฉํžˆ 16750 ์นฉ์„ ์œ„ํ•œ ๊ฒƒ์ด๋ฉฐ, ์ด ์นฉ์„ "์ €์ „๋ ฅ" ์ƒํƒœ๋กœ ์ „ํ™˜ํ•˜์—ฌ ๋…ธํŠธ๋ถ ์ปดํ“จํ„ฐ๋‚˜ ๋ฐฐํ„ฐ๋ฆฌ์ฒ˜๋Ÿผ ๋งค์šฐ ์ œํ•œ๋œ ์ „๋ ฅ์„ ๊ฐ€์ง„ ์ž„๋ฒ ๋””๋“œ ์ปจํŠธ๋กค๋Ÿฌ์™€ ๊ฐ™์€ ๊ฒƒ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š”๋‹ค. ์ด์ „์˜ ์นฉ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋น„ํŠธ๋ฅผ "์˜ˆ์•ฝ๋œ" ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•˜๊ณ  "0"๋งŒ ๋„ฃ์–ด์•ผ ํ•œ๋‹ค.

์ธํ„ฐ๋ŸฝํŠธ ์‹๋ณ„ ๋ ˆ์ง€์Šคํ„ฐ

์˜คํ”„์…‹: +2 . ์ด ๋ ˆ์ง€์Šคํ„ฐ๋Š” ์‚ฌ์šฉ ์ค‘์ธ UART ์นฉ์˜ ๊ณ ์œ ํ•œ ํŠน์„ฑ์ด ๋ฌด์—‡์ธ์ง€ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค. ์ด ์นฉ์—๋Š” ๋‘ ๊ฐ€์ง€ ์šฉ๋„๊ฐ€ ์žˆ๋‹ค.

UART๊ฐ€ ์ค‘๋‹จ์„ ์œ ๋ฐœํ•œ ์ด์œ  ํ™•์ธ. UART ์นฉ ์ž์ฒด์˜ ์‹๋ณ„. ์ด ์ค‘์—์„œ ์ธํ„ฐ๋ŸฝํŠธ ์„œ๋น„์Šค ๋ฃจํ‹ด์ด ํ˜ธ์ถœ๋œ ์ด์œ ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์•„๋งˆ๋„ ๊ฐ€์žฅ ์ค‘์š”ํ•  ๊ฒƒ์ด๋‹ค.

๋‹ค์Œ ํ‘œ์—์„œ๋Š” ์ด ๋ ˆ์ง€์Šคํ„ฐ์˜ ์ผ๋ถ€ ์„ธ๋ถ€์‚ฌํ•ญ๊ณผ ์—ฌ๊ธฐ์— ์žˆ๋Š” ๊ฐ ๋น„ํŠธ๊ฐ€ ๋ฌด์—‡์„ ๋‚˜ํƒ€๋‚ด๋Š”์ง€ ์„ค๋ช…ํ•œ๋‹ค.

Interrupt Identification Register (IIR)

Bit

Notes

7 and 6

Bit 7

Bit 6

0

0

No FIFO on chip

0

1

Reserved condition

1

0

FIFO enabled, but not functioning

1

1

FIFO enabled

5

64 Byte FIFO Enabled (16750 only)

4

Reserved

3, 2 and 1

Bit 3

Bit 2

Bit 1

Reset Method

0

0

0

Modem Status Interrupt

Reading Modem Status Register(MSR)

0

0

1

Transmitter Holding Register Empty Interrupt

Reading Interrupt Identification Register(IIR) or Writing to Transmit Holding Buffer(THR)

0

1

0

Received Data Available Interrupt

Reading Receive Buffer Register(RBR)

0

1

1

Receiver Line Status Interrupt

Reading Line Status Register(LSR)

1

0

0

Reserved

N/A

1

0

1

Reserved

N/A

1

1

0

Time-out Interrupt Pending (16550 & later)

Reading Receive Buffer Register(RBR)

1

1

1

Reserved

N/A

0

Interrupt Pending Flag

250 ์นฉ์— ๋Œ€ํ•œ ์ธํ„ฐ๋ŸฝํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ(๊ทธ๋ฆฌ๊ณ  ๋‚˜์ค‘์—), ์ธํ„ฐ๋ŸฝํŠธ์˜ ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ์ •ํ™•ํžˆ ๋ฌด์—‡์ธ์ง€ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด ์‚ดํŽด๋ด์•ผ ํ•  ๋ ˆ์ง€์Šคํ„ฐ ์ž…๋‹ˆ๋‹ค.

์•ž์—์„œ ์„ค๋ช…ํ•œ ๋ฐ”์™€ ๊ฐ™์ด ๋ณต์ˆ˜์˜ ์ง๋ ฌ ํ†ต์‹ ๊ธฐ๊ธฐ๋Š” ๋™์ผํ•œ ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ๋ ˆ์ง€์Šคํ„ฐ์˜ "๋น„ํŠธ 0"์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด๊ฒƒ์ด ์‹ค์ œ๋กœ ๋ฐฉํ•ด๋ฅผ ์ผ์œผํ‚จ ์žฅ์น˜๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค(๋˜๋Š” ํ™•์ธ). ๋ชจ๋“  ์ง๋ ฌ ์žฅ์น˜(๋ณ„๋„์˜ ํฌํŠธ I/O ์ฃผ์†Œ ๊ณต๊ฐ„์— ์žˆ์Œ)๋ฅผ ํ™•์ธํ•˜๊ณ  ์ด ๋ ˆ์ง€์Šคํ„ฐ์˜ ๋‚ด์šฉ์„ ๊ฐ€์ ธ์˜ค์‹ญ์‹œ์˜ค. ๋‘ ๊ฐœ ์ด์ƒ์˜ ์žฅ์น˜๊ฐ€ ๋™์‹œ์— ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์‹œ๋ฆฌ์–ผ ์žฅ์น˜์— ๋Œ€ํ•œ ์ด ์Šค์บ”์„ ์ˆ˜ํ–‰ํ•  ๋•Œ๋Š” ๋ชจ๋“  ์žฅ์น˜๋ฅผ ๊ฒ€์‚ฌํ•˜์‹ญ์‹œ์˜ค. ์‹ค์ œ๋กœ ์ฒซ ๋ฒˆ์งธ ์žฅ์น˜ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์„ ๋ช…์‹ฌํ•˜์‹ญ์‹œ์˜ค. ์–ด๋–ค ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์€ ์ด๋Ÿฐ ์ผ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋„๋ก ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, ์–ด์จŒ๋“  ์ด๊ฒƒ์€ ์ข‹์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ฐ์Šต์ด๋‹ค. ๋˜ํ•œ UART๋ฅผ ๋” ์ผ์ฐ ์ฒ˜๋ฆฌํ•œ ๋ฐฉ๋ฒ• ๋•Œ๋ฌธ์— ์ฃผ์–ด์ง„ ์ธํ„ฐ๋ŸฝํŠธ์— ๋Œ€ํ•ด ๋ชจ๋“  UART๋ฅผ ์ด๋ฏธ ์ฒ˜๋ฆฌํ–ˆ์„ ์ˆ˜๋„ ์žˆ๋‹ค. ์ด ๋น„ํŠธ๊ฐ€ "0"์ผ ๋•Œ, UART๊ฐ€ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๊ณ  ์žˆ์Œ์„ ํ™•์ธํ•œ๋‹ค. "1"์ธ ๊ฒฝ์šฐ, ์ด๋Š” ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ์ด๋ฏธ ์ฒ˜๋ฆฌ๋˜์—ˆ๊ฑฐ๋‚˜ ์ด ํŠน์ • UART๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ ์žฅ์น˜๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ์ปดํ“จํ„ฐ์— ์‚ฌ์šฉ๋˜๋Š” ์ „ํ˜•์ ์ธ ๋น„ํŠธ ํ”Œ๋ž˜๊ทธ์—๊ฒŒ๋Š” ์•ฝ๊ฐ„ ๋’ค์ฒ˜์ ธ ๋ณด์ธ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ์ง€๋งŒ, ์ด๊ฒƒ์„ ๋””์ง€ํ„ธ ๋กœ์ง์ด๋ผ๊ณ  ํ•˜๋ฉฐ, ์ „๊ธฐ ํšŒ๋กœ ์„ค๊ณ„์—์„œ ์ƒ๋‹นํžˆ ํ”ํ•˜๋‹ค. ์ด ๋…ผ๋ฆฌ ํŒจํ„ด์ด ์†Œํ”„ํŠธ์›จ์–ด ์˜์—ญ์œผ๋กœ ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์€ ์ข€ ๋” ์ด๋ก€์ ์ด๋‹ค.

๋น„ํŠธ 1, 2 ๋ฐ 3์€ UART ๋‚ด์—์„œ ์–ด๋–ค ์ข…๋ฅ˜์˜ ์ธํ„ฐ๋ŸฝํŠธ ์ด๋ฒคํŠธ๊ฐ€ ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์—ˆ๋Š”์ง€ ์ •ํ™•ํ•˜๊ฒŒ ์‹๋ณ„ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋œ๋‹ค. ์ด๊ฒƒ๋“ค์€ IER ๋ ˆ์ง€์Šคํ„ฐ๋กœ ์ด์ „์— ํ™œ์„ฑํ™”๋˜์—ˆ๋˜ ๊ฒƒ๊ณผ ๊ฐ™์€ ์ธํ„ฐ๋ŸฝํŠธ๋“ค์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ฒฝ์šฐ, ๋‹น์‹ ์ด ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ๋งˆ๋‹ค ๊ทธ๊ฒƒ์€ ๋…ํŠนํ•  ๊ฒƒ์ด๋‹ค. UART์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ผ์ด ๋™์‹œ์— ๋ฐœ์ƒํ•˜์—ฌ ๋ณต์ˆ˜์˜ "ํŠธ๋ฆฌ๊ฑฐ"๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ, ๋ณต์ˆ˜์˜ ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ํ†ตํ•ด ํ˜ธ์ถœ๋œ๋‹ค. ์ด์ „์˜ ์นฉ ์„ธํŠธ๋Š” ๋น„ํŠธ 3์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์ง€๋งŒ, ์ด๊ฒƒ์€ UART ์‹œ์Šคํ…œ์—์„œ ์˜ˆ์•ฝ๋œ ๋น„ํŠธ๋กœ์„œ ํ•ญ์ƒ ๋…ผ๋ฆฌ ์ƒํƒœ "0"์œผ๋กœ ์„ค์ •๋˜๋ฏ€๋กœ, ์–ด๋–ค ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ์‚ฌ์šฉ๋˜์—ˆ๋Š”์ง€ ํ•ด๋…ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋…ผ๋ฆฌ๋Š” ๋‹ค๋ฅผ ํ•„์š”๊ฐ€ ์—†๋‹ค.

FIFO ์‹œ๊ฐ„ ์ดˆ๊ณผ ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์„ค๋ช…ํ•˜๊ธฐ ์œ„ํ•ด, ์ด๊ฒƒ์€ ํŒจํ‚ท์˜ ๋์ด๋‚˜ ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์ด ์ค‘์ง€๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐํ•˜๋ ค๋ฉด ๋‹ค์Œ ์กฐ๊ฑด์ด ์กด์žฌํ•ด์•ผ ํ•œ๋‹ค. ์ผ๋ถ€ ๋ฐ์ดํ„ฐ๋Š” ๋“ค์–ด์˜ค๋Š” FIFO์— ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ์ปดํ“จํ„ฐ์— ์˜ํ•ด ์ฝํ˜€์ง€์ง€ ์•Š์•˜๋‹ค. ์ง๋ ฌ ๋ฐ์ดํ„ฐ ๋งํฌ๋ฅผ ํ†ตํ•ด UART๋กœ ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ ์ „์†ก์€ ์ƒˆ๋กœ์šด ๋ฌธ์ž๋ฅผ ์ˆ˜์‹ ํ•˜์ง€ ์•Š๊ณ  ์ข…๋ฃŒ๋˜์–ด์•ผ ํ•œ๋‹ค. CPU๊ฐ€ ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์ „์— FIFO์—์„œ ์–ด๋–ค ๋ฐ์ดํ„ฐ๋„ ๊ฒ€์ƒ‰ํ•˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค. ์‹œ๊ฐ„ ์ œํ•œ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ตœ์†Œ 4์ž ์ด์ƒ์˜ ๋ฌธ์ž๋ฅผ ์ „์†กํ•˜๊ฑฐ๋‚˜ ์ˆ˜์‹ ํ•˜๋Š” ๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„ ์ดํ›„์— ๋ฐœ์ƒํ•œ๋‹ค. 1200baud, 8๊ฐœ์˜ ๋ฐ์ดํ„ฐ ๋น„ํŠธ, 2๊ฐœ์˜ ์ •์ง€ ๋น„ํŠธ, ํ™€์ˆ˜ ํŒจ๋ฆฌํ‹ฐ๋กœ ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•œ๋‹ค๋ฉด, ์•ฝ 40๋ฐ€๋ฆฌ์ดˆ๊ฐ€ ์†Œ์š”๋  ๊ฒƒ์ด๋ฉฐ, ์ด๋Š” ์ปดํ“จํ„ฐ๊ฐ€ 4GHz Pentium CPU๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์œผ๋กœ ๋ณผ ๋•Œ ๊ฑฐ์˜ ์˜์›ํ•  ๊ฒ๋‹ˆ๋‹ค.

์œ„์— ์—ด๊ฑฐ๋œ "๋ฆฌ์…‹ ๋ฐฉ๋ฒ•"์€ UART๊ฐ€ ์ฃผ์–ด์ง„ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ์ฒ˜๋ฆฌ๋˜์—ˆ์Œ์„ ํ†ต์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ๋‹ค. ์žฌ์„ค์ • ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ์–ธ๊ธ‰๋œ ๋ ˆ์ง€์Šคํ„ฐ์— ์•ก์„ธ์Šคํ•˜๋ฉด UART์˜ ์ธํ„ฐ๋ŸฝํŠธ ์ƒํƒœ๊ฐ€ ์‚ญ์ œ๋œ๋‹ค. ๋™์ผํ•œ UART์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋œ ๊ฒฝ์šฐ CPU์˜ ์ธํ„ฐ๋ŸฝํŠธ ์‹ ํ˜ธ(์™„๋ฃŒ ์‹œ ์ƒˆ ํ•˜๋“œ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ ํŠธ๋ฆฌ๊ฑฐ)๊ฐ€ ์‚ญ์ œ๋˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ด ๋ ˆ์ง€์Šคํ„ฐ(IIR)๋กœ ๋Œ์•„๊ฐ€์„œ ์ธํ„ฐ๋ŸฝํŠธ ๋ณด๋ฅ˜ ํ”Œ๋ž˜๊ทธ์— ์ฟผ๋ฆฌํ•˜์—ฌ ์ฒ˜๋ฆฌํ•  ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ๋” ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์‹ญ์‹œ์˜ค. ์ ์ ˆํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ์ค‘๋‹จํ•˜์‹ญ์‹œ์˜ค.

๋น„ํŠธ 5, 6 ๋ฐ 7์€ ๋ฌธ์ž๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” FIFO ๋ฒ„ํผ์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๋ณด๊ณ ํ•˜๊ณ  ์žˆ๋‹ค. ์ตœ์ดˆ์˜ 16550 ์นฉ ์„ค๊ณ„๋Š” FIFO์— ์‹ฌ๊ฐํ•œ ๊ฒฐํ•จ์ด ์žˆ๋Š” ๋ฒ„๊ทธ๊ฐ€ ์ฒ˜์Œ ์ถœ์‹œ๋˜์—ˆ์„ ๋•Œ ์žˆ์—ˆ๊ณ , ์ด๋กœ ์ธํ•ด FIFO๋Š” ๊ทธ๊ฒƒ์ด ์ž‘๋™ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๋ณด๊ณ ํ–ˆ์ง€๋งŒ ์‚ฌ์‹ค์€ ๊ทธ๋ ‡์ง€ ์•Š์•˜๋‹ค. ์ผ๋ถ€ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์ด๋ฏธ FIFO์™€ ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋„๋ก ์ž‘์„ฑ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ด ๋น„ํŠธ(๋ณธ ๋ ˆ์ง€์Šคํ„ฐ์˜ ๋น„ํŠธ 7)๋Š” ์œ ์ง€๋˜์—ˆ์ง€๋งŒ, 16550 ์นฉ์˜ ์ด์ „ ๋ฒ„์ „์— ์žˆ๋Š” ํ•˜๋“œ์›จ์–ด FIFO๋ฅผ ์ผ๋ถ€ ์ƒˆ๋กœ์šด ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ๋ฌด์‹œํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์— ๋Œ€๋น„ํ•ด, ์‹ค์ œ๋กœ FIFO๊ฐ€ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜๊ณ  ์žˆ์Œ์„ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋น„ํŠธ 6์„ ์ถ”๊ฐ€ํ•˜์˜€๋‹ค. ์ด ํŒจํ„ด์€ ์ด ์นฉ์˜ ๋ฏธ๋ž˜ ๋ฒ„์ „์—์„œ๋„ ์œ ์ง€๋˜์—ˆ๋‹ค. 16750 ์นฉ์—๋Š” 64๋ฐ”์ดํŠธ FIFO๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์œผ๋ฉฐ, ๋น„ํŠธ 5๋Š” ์ด ํ™•์žฅ ๋ฒ„ํผ์˜ ์กด์žฌ๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์ด๋Ÿฌํ•œ FIFO ๋ฒ„ํผ๋Š” ์•„๋ž˜์— ๋‚˜์—ด๋œ ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ผœ๊ณ  ๋Œ ์ˆ˜ ์žˆ๋‹ค.

FIFO ์ œ์–ด ๋ ˆ์ง€์Šคํ„ฐ

์˜คํ”„์…‹: +2 . ๋ณธ๋ž˜์˜ 8250 UART ๊ตฌํ˜„์—๋Š” ํฌํ•จ๋˜์ง€ ์•Š์•˜๋˜ ๋น„๊ต์  "์‹ ๊ทœ" ๋ ˆ์ง€์Šคํ„ฐ ์ž…๋‹ˆ๋‹ค. ์ด ๋ ˆ์ง€์Šคํ„ฐ์˜ ๋ชฉ์ ์€ FIFO(First In/First Out) ๋ฒ„ํผ๊ฐ€ ์นฉ์—์„œ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹์„ ์ œ์–ดํ•˜๊ณ  ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์„ฑ๋Šฅ์„ ๋ฏธ์„ธ ์กฐ์ •ํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ์€ ์‹ฌ์ง€์–ด ๋‹น์‹ ์—๊ฒŒ FIFO๋ฅผ "์ผœ"๊ฑฐ๋‚˜ "๋„๋Š”" ๋Šฅ๋ ฅ์„ ์ค€๋‹ค.

์ด๊ฒƒ์€ "์“ฐ๊ธฐ ์ „์šฉ" ๋ ˆ์ง€์Šคํ„ฐ๋ผ๋Š” ๊ฒƒ์„ ๋ช…์‹ฌํ•˜๋ผ. ๋‚ด์šฉ์„ ์ฝ์œผ๋ ค๊ณ  ํ•˜๋ฉด ์ „ํ˜€ ๋‹ค๋ฅธ ๋งฅ๋ฝ์˜ ์ธํ„ฐ๋ŸฝํŠธ ์‹๋ณ„ ๋ ˆ์ง€์Šคํ„ฐ(IIR)๋งŒ ์ค€๋‹ค.

FIFO Control Register (FCR)

Bit

Notes

7 & 6

Bit 7

Bit 6

Interrupt Trigger Level (16 byte)

Trigger Level (64 byte)

0

0

1 Byte

1 Byte

0

1

4 Bytes

16 Bytes

1

0

8 Bytes

32 Bytes

1

1

14 Bytes

56 Bytes

5

Enable 64 Byte FIFO (16750)

4

Reserved

3

DMA Mode Select

2

Clear Transmit FIFO

1

Clear Receive FIFO

0

Enable FIFOs

๋น„ํŠธ 0์— "0"์„ ์“ฐ๋ฉด FIFO๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋˜๋ฉฐ, ๋ณธ์งˆ์ ์œผ๋กœ UART๋ฅผ 8250 ํ˜ธํ™˜์„ฑ ๋ชจ๋“œ๋กœ ์ „ํ™˜ํ•œ๋‹ค. ์‚ฌ์‹ค์ƒ ์ด๊ฒƒ์€ ๋˜ํ•œ ์ด ๋ ˆ์ง€์Šคํ„ฐ์˜ ๋‚˜๋จธ์ง€ ์„ค์ •์„ ์“ธ๋ชจ ์—†๊ฒŒ ๋งŒ๋“ ๋‹ค. ์—ฌ๊ธฐ์„œ "0"์„ ์ž‘์„ฑํ•˜๋ฉด FIFO๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์†ก์‹ ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์‹ ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ๋˜๋ฏ€๋กœ, ์ด ์„ค์ •์„ ๋ณ€๊ฒฝํ•œ ํ›„ ์ง๋ ฌ ๋ฐ์ดํ„ฐ ํฌํŠธ๋ฅผ ํ†ตํ•ด ์ „์†ก๋˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์Šคํฌ๋žจ๋ธ”๋  ์ˆ˜ ์žˆ๋‹ค. ์‹œ๋ฆฌ์–ผ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ์„ ์žฌ์„ค์ •ํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์†Œํ”„ํŠธ์›จ์–ด์— ์žˆ์„ ์ˆ˜ ์žˆ๋Š” ์ž‘๋™ ๋ฒ„ํผ๋ฅผ ์ง€์šฐ๋ ค๋Š” ๊ฒฝ์šฐ์—๋งŒ FIFO๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ผ๋ถ€ ๋ฌธ์„œ์—์„œ๋Š” ์ด ๋น„ํŠธ๋ฅผ "0"์œผ๋กœ ์„ค์ •ํ•˜๋ฉด FIFO ๋ฒ„ํผ๋„ ์ง€์›Œ์ง€์ง€๋งŒ ๋น„ํŠธ 1๊ณผ 2๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  ๋ช…์‹œ์ ์ธ ๋ฒ„ํผ ์‚ญ์ œ๋ฅผ ๊ถŒ์žฅํ•œ๋‹ค.

๋น„ํŠธ 1๊ณผ 2๋Š” ๋‚ด๋ถ€ FIFO ๋ฒ„ํผ๋ฅผ ์ฒญ์†Œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋œ๋‹ค. ์ด ๊ธฐ๋Šฅ์€ UART๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์ „ ์†Œํ”„ํŠธ์›จ์–ด์—์„œ "๋’ค์ณ์ง„" ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋ ค๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์ฒ˜์Œ ์‹œ์ž‘ํ•  ๋•Œ ๋˜๋Š” ํ†ต์‹  ์—ฐ๊ฒฐ์„ ์žฌ์„ค์ •ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์— ์œ ์šฉํ•˜๋‹ค. ์ด๋Ÿฌํ•œ ๋น„ํŠธ๋Š” "์ž๋™์œผ๋กœ" ์žฌ์„ค์ •๋˜๋ฏ€๋กœ, ์ด ์ค‘ ํ•˜๋‚˜๋ฅผ ๋…ผ๋ฆฌ์ ์ธ "1" ์ƒํƒœ๋กœ ์„ค์ •ํ•˜๋ฉด ๋‚˜์ค‘์— "0"์œผ๋กœ ๋˜๋Œ๋ฆด ํ•„์š”๊ฐ€ ์—†๋‹ค. ๋…ผ๋ฆฌ์ ์ธ "0"์„ ๋ณด๋‚ด๋Š” ๊ฒƒ์€ FIFO ์ œ์–ด์˜ ๋‹ค๋ฅธ ์ธก๋ฉด์ด ๋ณ€๊ฒฝ๋˜๋”๋ผ๋„ UART์—๊ฒŒ FIFO ๋ฒ„ํผ๋ฅผ ์žฌ์„ค์ •ํ•˜์ง€ ๋ง๋ผ๊ณ  ๋งํ•  ๋ฟ์ด๋‹ค.

๋น„ํŠธ 3์€ ์ฃผ๋กœ FIFO์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋ ค๊ณ  ํ•  ๋•Œ DMA(Direct Memory Access)๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๋ฐฉ์‹์— ๊ด€ํ•œ ๊ฒƒ์ด๋‹ค. ์ด๋Š” ์ฃผ๋กœ ์ง๋ ฌ ๋ฐ์ดํ„ฐ์— ์ง์ ‘ ์•ก์„ธ์Šคํ•˜์—ฌ ๋‚ด๋ถ€ ๋ฒ„ํผ์— ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ ค๋Š” ์นฉ ์„ค๊ณ„์ž์—๊ฒŒ ์œ ์šฉํ•  ๊ฒƒ์ด๋‹ค. UART ์นฉ ์ž์ฒด์— RXRDY์™€ TXRDY๋ผ๋Š” ๋‘ ๊ฐœ์˜ ๋””์ง€ํ„ธ ๋กœ์ง ํ•€์ด ์žˆ๋‹ค. UART ์นฉ์œผ๋กœ ์ปดํ“จํ„ฐ ํšŒ๋กœ๋ฅผ ์„ค๊ณ„ํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋ฉด ์ด๊ฒƒ์€ ์œ ์šฉํ•  ์ˆ˜๋„ ์žˆ๊ณ  ์‹ฌ์ง€์–ด ์ค‘์š”ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ, PC ์‹œ์Šคํ…œ์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์ž์˜ ๋ชฉ์ ์ƒ ๊ทธ๊ฒƒ์€ ๊ฑฐ์˜ ์“ธ๋ชจ๊ฐ€ ์—†๊ณ  ๋‹น์‹ ์€ ์•ˆ์ „ํ•˜๊ฒŒ ๋ฌด์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.

๋น„ํŠธ 5๋Š” 16750 UART ์นฉ์ด ๋ฒ„ํผ๋ฅผ 16๋ฐ”์ดํŠธ์—์„œ 64๋ฐ”์ดํŠธ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. ์ด๋Š” ๋ฒ„ํผ์˜ ํฌ๊ธฐ์— ์˜ํ–ฅ์„ ์ค„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค์Œ์— ๊ธฐ์ˆ ํ•œ ํŠธ๋ฆฌ๊ฑฐ ์ž„๊ณ„๊ฐ’์˜ ํฌ๊ธฐ๋„ ์ œ์–ดํ•œ๋‹ค. ์ด์ „์˜ ์นฉ ํƒ€์ž…์—์„œ๋Š” ์ด๊ฒƒ์€ ์˜ˆ์•ฝ๋œ ๋น„ํŠธ๋กœ์„œ ๋…ผ๋ฆฌ์ ์ธ "0" ์ƒํƒœ๋กœ ์œ ์ง€๋˜์–ด์•ผ ํ•œ๋‹ค. 16750๋…„์—๋Š” 16550๋…„์— ๋น„ํ•ด UART๊ฐ€ 165 ๋ฐ”์ดํŠธ FIFO์™€ ๋” ํก์‚ฌํ•˜๊ฒŒ ๊ณต์—ฐ๋œ๋‹ค.

๋น„ํŠธ 6๊ณผ 7์€ ํŠธ๋ฆฌ๊ฑฐ ์ž„๊ณ„๊ฐ’์— ๋Œ€ํ•ด ์„ค๋ช…ํ•œ๋‹ค. ์ด๊ฒƒ์€ FIFO์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ฃผ๋Š” ์ธํ„ฐ๋ŸฝํŠธ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋˜๊ธฐ ์ „์— FIFO์— ์ €์žฅ๋  ๋ฌธ์ž ์ˆ˜์ž…๋‹ˆ๋‹ค. ์‹œ๋ฆฌ์–ผ ๋ฐ์ดํ„ฐ ๋งํฌ๋ฅผ ํ†ตํ•ด ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ „์†ก๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•  ๊ฒฝ์šฐ ๋ฒ„ํผ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ฆด ์ˆ˜ ์žˆ๋‹ค. ํŠธ๋ฆฌ๊ฑฐ์˜ ์ตœ๋Œ€๊ฐ’์ด FIFO ๋ฒ„ํผ ํฌ๊ธฐ๋ณด๋‹ค ์ž‘์€ ์ด์œ ๋Š” ์ผ๋ถ€ ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ UART์— ์ ‘์†ํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ๋‹ค์†Œ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. FIFO๊ฐ€ ๊ฐ€๋“ ์ฐจ๋ฉด FIFO์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์†์‹ค๋˜๊ธฐ ์‹œ์ž‘ํ•˜๋ฏ€๋กœ ์ด ์ž„๊ณ„๊ฐ’์— ๋„๋‹ฌํ•œ ํ›„ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ–ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค. UART ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋™์•ˆ ์†Œํ”„ํŠธ์›จ์–ด ํƒ€์ด๋ฐ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ ์ž„๊ณ„๊ฐ’์„ ๋‚ฎ์ถ”๊ณ  ์‹ถ์„ ์ˆ˜ ์žˆ๋‹ค. ์ž„๊ณ„๊ฐ’์ด 1๋ฐ”์ดํŠธ๋กœ ์„ค์ •๋œ ๊ทนํ•œ ๋๋ถ€๋ถ„์—์„œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๊ธฐ๋ณธ 8250๊ณผ ๊ฐ™์€ ์—ญํ• ์„ ํ•˜์ง€๋งŒ, ์ผ๋ถ€ ์บ๋ฆญํ„ฐ๋Š” ์ฆ‰์‹œ ๋ชจ๋“  ๊ฒƒ์„ ์–ป์„ ๊ธฐํšŒ๊ฐ€ ์—†๋Š” ์ƒํ™ฉ์—์„œ ๋ฒ„ํผ์— ๊ฑธ๋ฆด ์ˆ˜ ์žˆ๋‹ค๋Š” ์ถ”๊ฐ€ ์‹ ๋ขฐ๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

๋ผ์ธ ์ œ์–ด ๋ ˆ์ง€์Šคํ„ฐ

์˜คํ”„์…‹: +3 . ์ด ๋ ˆ์ง€์Šคํ„ฐ๋Š” ๋‘ ๊ฐ€์ง€ ์ฃผ์š” ๋ชฉ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

DLAB(Divisor Latch Access Bit) ์„ค์ •์œผ๋กœ, Divisor Latch Bytes ๊ฐ’์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ง๋ ฌ ๋ฐ์ดํ„ฐ ์ˆ˜์‹  ๋ฐ ์ „์†ก์— ์‚ฌ์šฉํ•  ๋น„ํŠธ ํŒจํ„ด ์„ค์ •. ์ฆ‰, ์‚ฌ์šฉํ•  ์ง๋ ฌ ๋ฐ์ดํ„ฐ ํ”„๋กœํ† ์ฝœ(8-1-์—†์Œ, 5-2- ์ง์ˆ˜ ๋“ฑ).

Line Control Register (LCR)

Bit

Notes

7

Divisor Latch Access Bit

6

Set Break Enable

3, 4 & 5

Bit 5

Bit 4

Bit 3

Parity Select

0

0

0

No Parity

0

0

1

Odd Parity

0

1

1

Even Parity

1

0

1

Mark

1

1

1

Space

2

0

One Stop Bit

1

1.5 Stop Bits or 2 Stop Bits

0 & 1

Bit 1

Bit 0

Word Length

0

0

5 Bits

0

1

6 Bits

1

0

7 Bits

1

1

8 Bits

์ฒซ ๋ฒˆ์งธ ๋‘ ๋น„ํŠธ(๋น„ํŠธ 0๊ณผ ๋น„ํŠธ 1)๋Š” ์ง๋ ฌ ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ์ „์†ก๋˜๋Š” ๊ฐ ๋ฐ์ดํ„ฐ "์›Œ๋“œ"์— ๋Œ€ํ•ด ์ „์†ก๋˜๋Š” ๋ฐ์ดํ„ฐ ๋น„ํŠธ์˜ ์ˆ˜๋ฅผ ์ œ์–ดํ•œ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์ง๋ ฌ ๋ฐ์ดํ„ฐ ์ „์†ก์˜ ๊ฒฝ์šฐ 8๋น„ํŠธ๊ฐ€ ๋˜์ง€๋งŒ, ๋ฐ์ดํ„ฐ ๋น„ํŠธ๊ฐ€ ๋” ์ ๊ฒŒ ํ•„์š”ํ•œ ์ผ๋ถ€ ์ด์ „ ํ”„๋กœํ† ์ฝœ๊ณผ ๊ตฌํ˜• ์žฅ๋น„๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ผ๋ถ€ ๊ตฐ์‚ฌ์šฉ ์•”ํ˜ธํ™” ์žฅ๋น„๋Š” ์ผ๋ถ€ TELEX ์žฅ๋น„์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ง๋ ฌ "์›Œ๋“œ"๋‹น 5๊ฐœ์˜ ๋ฐ์ดํ„ฐ ๋น„ํŠธ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค. ์ดˆ๊ธฐ ASCII ํ…”๋ ˆํƒ€์ดํ”„ ๋‹จ์ž๋Š” 7๊ฐœ์˜ ๋ฐ์ดํ„ฐ ๋น„ํŠธ๋งŒ ์‚ฌ์šฉํ–ˆ์œผ๋ฉฐ, ์‹ค์ œ๋กœ ์ด ์œ ์‚ฐ์€ ์ด๋ฉ”์ผ ๋ฉ”์‹œ์ง€์— 7๋น„ํŠธ ASCII๋งŒ ์‚ฌ์šฉํ•˜๋Š” SMTP ํ˜•์‹์œผ๋กœ ๋ณด์กด๋˜์–ด ์™”๋‹ค. ๋ถ„๋ช…ํžˆ ์ด๊ฒƒ์€ ๋‹น์‹ ์ด RS-232 ํ”„๋กœํ† ์ฝœ์„ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๊ณต์ ์œผ๋กœ ๋ฉ”์‹œ์ง€ ์ „์†ก์„ ์™„๋ฃŒํ•˜๊ธฐ ์ „์— ํ™•๋ฆฝ๋˜์–ด์•ผ ํ•  ๊ฒƒ์ด๋‹ค.

๋น„ํŠธ 2๋Š” UART์— ์˜ํ•ด ์ˆ˜์‹  ์žฅ์น˜๋กœ ์ „์†ก๋˜๋Š” ์ •์ง€ ๋น„ํŠธ์˜ ์ˆ˜๋ฅผ ์ œ์–ดํ•œ๋‹ค. ์ด๊ฒƒ์€ 1๊ฐœ์˜ ์ •์ง€ ๋น„ํŠธ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋…ผ๋ฆฌ์ ์ธ "0"๊ณผ 2๊ฐœ์˜ ์ •์ง€ ๋น„ํŠธ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” "1" ์ค‘ ํ•˜๋‚˜๋กœ ์„ ํƒ ๊ฐ€๋Šฅํ•˜๋‹ค. 5๊ฐœ์˜ ๋ฐ์ดํ„ฐ ๋น„ํŠธ์˜ ๊ฒฝ์šฐ, UART๋Š” ๋Œ€์‹  "1.5 ์ •์ง€ ๋น„ํŠธ"๋ฅผ ์ „์†กํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ๋งฅ๋ฝ์—์„œ '๋น„ํŠธ'๋Š” ์‹ค์ œ๋กœ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์ž„์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค. ๊ฐ ๋น„ํŠธ๋Š” 50๋ณด(์ดˆ๋‹น ๋น„ํŠธ ์ˆ˜)์—์„œ 20ms๊ฐ€ ๊ฑธ๋ฆฐ๋‹ค๋Š” ์ ์„ ๊ธฐ์–ตํ•˜์‹ญ์‹œ์˜ค. ๋”ฐ๋ผ์„œ "1.5 ์ •์ง€ ๋น„ํŠธ"๋Š” ๋ฌธ์ž ์‚ฌ์ด์— ์ตœ์†Œ 30ms๋ฅผ ๊ฐ€์งˆ ๊ฒƒ์ด๋‹ค. ์ด๋Š” 7๋น„ํŠธ ๋˜๋Š” 8๋น„ํŠธ ASCII๊ฐ€ ์•„๋‹Œ 5๋น„ํŠธ Baudot๋ฅผ ์‚ฌ์šฉํ•œ ์žฅ๋น„๋งŒ "1.5 ์ •์ง€ ๋น„ํŠธ"๋ฅผ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— "5 ๋ฐ์ดํ„ฐ ๋น„ํŠธ" ์„ค์ •๊ณผ ์—ฐ๊ด€๋œ๋‹ค.

๋˜ ํ•œ ๊ฐ€์ง€ ์œ ์˜ํ•ด์•ผ ํ•  ๊ฒƒ์€ RS-232 ํ‘œ์ค€์€ ๊ฐ ์ง๋ ฌ ๋ฐ์ดํ„ฐ ์›Œ๋“œ์˜ ๋์— ์ ์–ด๋„ ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ๋น„ํŠธ ์‚ฌ์ดํด์ด ๋…ผ๋ฆฌ์ ์ธ "1"๋กœ ์œ ์ง€๋  ๊ฒƒ"(์ฆ‰, ์‹œ์ž‘ ๋น„ํŠธ, ๋ฐ์ดํ„ฐ ๋น„ํŠธ, ํŒจ๋ฆฌํ‹ฐ ๋น„ํŠธ, ์ •์ง€ ๋น„ํŠธ๋กœ๋ถ€ํ„ฐ์˜ ์™„์ „ํ•œ ๋ฌธ์ž)์ด๋ผ๊ณ ๋งŒ ๋ช…์‹œํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ ์ด๋‹ค. ๋‘ ์ปดํ“จํ„ฐ ์‚ฌ์ด์— ํƒ€์ด๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ํ•œ ๋ฒˆ์— ํ•˜๋‚˜์”ฉ ๋ฌธ์ž๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋ณด๋“œ ์†๋„๋ฅผ ์ค„์ด๋Š” ๋Œ€์‹  ๋‘ ๋ฒˆ์งธ ์ •์ง€ ๋น„ํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ด๋Š” (์ผ๋ฐ˜์ ์œผ๋กœ) ๋ณด ๋ ˆ์ดํŠธ๋ฅผ ๋–จ์–ด๋œจ๋ ค ์ „์†ก ์†๋„๋ฅผ ์ ˆ๋ฐ˜์œผ๋กœ ์ค„์ด๋Š” ๋Œ€์‹  ๋ฌธ์ž๋‹น ์ „์†ก ์†๋„์— 1๋น„ํŠธ ํŽ˜๋„ํ‹ฐ๋ฅผ ๋”ํ•œ๋‹ค.

๋น„ํŠธ 3, 4, 5๋Š” ๊ฐ ์ง๋ ฌ ์›Œ๋“œ๊ฐ€ ํŒจ๋ฆฌํ‹ฐ ์ •๋ณด์— ๋ฐ˜์‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ์–ดํ•œ๋‹ค. ๋น„ํŠธ 3์ด ๋…ผ๋ฆฌ "0"์ธ ๊ฒฝ์šฐ, ์ด๋Š” ํŒจ๋ฆฌํ‹ฐ ๋น„ํŠธ๊ฐ€ ์ง๋ ฌ ๋ฐ์ดํ„ฐ ์›Œ๋“œ์™€ ํ•จ๊ป˜ ์ „์†ก๋˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค. ๋Œ€์‹ ์— ๊ทธ๊ฒƒ์€ ์ฆ‰์‹œ ์ •์ง€ ๋น„ํŠธ๋กœ ์˜ฎ๊ฒจ๊ฐ€๊ณ , ์ด ์ˆ˜์ค€์—์„œ ํŒจ๋ฆฌํ‹ฐ๋ฅผ ํ™•์ธํ•˜๋Š” ๊ฒƒ์€ ์ •๋ง ์“ธ๋ชจ์—†๋Š” ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ์ธ์ •ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋‹น์‹ ์€ ์—ฌ์ „ํžˆ ํŒจ๋ฆฌํ‹ฐ ๋น„ํŠธ๋ฅผ ํฌํ•จ์‹œํ‚ด์œผ๋กœ์จ ๋ฐ์ดํ„ฐ ์ „์†ก์œผ๋กœ ์•ฝ๊ฐ„์˜ ์‹ ๋ขฐ์„ฑ์„ ์–ป์„ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด ์ฑ…์˜ ๋‹ค๋ฅธ ์žฅ์—์„œ ๋…ผ์˜๋  ๋” ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๊ณ  ์‹ค์šฉ์ ์ธ ๋ฐฉ๋ฒ•๋“ค์ด ์žˆ๋‹ค. ํŒจ๋ฆฌํ‹ฐ ๊ฒ€์‚ฌ๋ฅผ ํฌํ•จํ•˜๋ ค๋ฉด "์—†์Œ" ํŒจ๋ฆฌํ‹ฐ ์ด์™ธ์˜ ๊ฐ ํŒจ๋ฆฌํ‹ฐ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•˜์‹ญ์‹œ์˜ค.

์˜ค๋“œ ํŒจ๋ฆฌํ‹ฐ ์ง๋ ฌ ์›Œ๋“œ์˜ ๋ฐ์ดํ„ฐ ๋ถ€๋ถ„์˜ ๊ฐ ๋น„ํŠธ๋Š” ๋…ผ๋ฆฌ "1" ๋น„ํŠธ ์ˆ˜์˜ ๋‹จ์ˆœํ•œ ์นด์šดํŠธ๋กœ ์ถ”๊ฐ€๋œ๋‹ค. ๋งŒ์•ฝ ์ด๊ฒƒ์ด ํ™€์ˆ˜ ๋น„ํŠธ ์ˆ˜๋ผ๋ฉด, ํŒจ๋ฆฌํ‹ฐ ๋น„ํŠธ๋Š” ๋…ผ๋ฆฌ์ ์ธ "0"์œผ๋กœ ์ „์†ก๋  ๊ฒƒ์ด๋‹ค. ์นด์šดํŠธ๊ฐ€ ์ง์ˆ˜์ผ ๊ฒฝ์šฐ ํŒจ๋ฆฌํ‹ฐ ๋น„ํŠธ๋Š” ๋…ผ๋ฆฌ "1"๋กœ ์ „์†ก๋˜์–ด "1" ๋น„ํŠธ์˜ ์ˆ˜๋ฅผ ํ™€์ˆ˜ํ™”ํ•œ๋‹ค. ์ง์ˆ˜ ํŒจ๋ฆฌํ‹ฐ ์˜ค๋“œ ํŒจ๋ฆฌํ‹ฐ์ฒ˜๋Ÿผ ๋น„ํŠธ๊ฐ€ ํ•จ๊ป˜ ์ถ”๊ฐ€๋œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ฒฝ์šฐ ๋น„ํŠธ ์ˆ˜๊ฐ€ ํ™€์ˆ˜ ์ˆซ์ž๋กœ ๋๋‚˜๊ฒŒ ๋˜๋ฉด "1" ๋น„ํŠธ ์ˆ˜๊ฐ€ ๊ท ๋“ฑํ•ด์ง€๋„๋ก ๋…ผ๋ฆฌ์ ์ธ "1"๋กœ ์ „์†ก๋˜๋Š”๋ฐ ์ด๋Š” ํ™€์ˆ˜ ํŒจ๋ฆฌํ‹ฐ์™€ ์ •๋ฐ˜๋Œ€๋‹ค. ๋งˆํฌ ํŒจ๋ฆฌํ‹ฐ ์ด ๊ฒฝ์šฐ ํŒจ๋ฆฌํ‹ฐ ๋น„ํŠธ๋Š” ํ•ญ์ƒ ๋…ผ๋ฆฌ "1"์ด ๋œ๋‹ค. ์ด๊ฒƒ์€ ์•ฝ๊ฐ„ ์ด์ƒํ•ด ๋ณด์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด๊ฒƒ์€ ์‹œํ—˜๊ณผ ์ง„๋‹จ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์ง๋ ฌ ์—ฐ๊ฒฐ์˜ ์ˆ˜์‹  ๋์— ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ํŒจ๋ฆฌํ‹ฐ ์˜ค๋ฅ˜์— ์ •ํ™•ํ•˜๊ฒŒ ๋ฐ˜์‘ํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด, ๋งˆํฌ๋‚˜ ์ŠคํŽ˜์ด์Šค ํŒจ๋ฆฌํ‹ฐ๋ฅผ ๋ณด๋‚ด๊ณ , ์ˆ˜์‹  UART๋‚˜ ์žฅ์น˜๊ฐ€ ํŒจ๋ฆฌํ‹ฐ์— ๋Œ€ํ•ด ๊ธฐ๋Œ€ํ•˜๋Š” ๊ฒƒ์„ ์ถฉ์กฑํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ž๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. Mark Parity์˜ ๊ฒฝ์šฐ์—๋งŒ ์ด ๋น„ํŠธ๋ฅผ ์ถ”๊ฐ€ "Stop ๋น„ํŠธ"๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. RS-232 ํ‘œ์ค€์€ ์ง๋ ฌ ๋ฐ์ดํ„ฐ ์›Œ๋“œ๋ฅผ ๋๋‚ด๊ธฐ ์œ„ํ•œ ๋…ผ๋ฆฌ "1"์„ ์˜ˆ์ƒํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ˆ˜์‹  ์ปดํ“จํ„ฐ๋Š” "๋งˆํฌ" ํŒจ๋ฆฌํ‹ฐ ๋น„ํŠธ์™€ ์ •์ง€ ๋น„ํŠธ ์‚ฌ์ด์˜ ์ฐจ์ด๋ฅผ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์—†๋‹ค๋Š” ๊ฒƒ์„ ๊ธฐ์–ตํ•œ๋‹ค. ๋ณธ์งˆ์ ์œผ๋กœ, ๋‹น์‹ ์€ ์ด ์„ค์ •์„ ์‚ฌ์šฉํ•˜๊ณ  ๋˜ํ•œ ์ด ๋ ˆ์ง€์Šคํ„ฐ์˜ ์ •์ง€ ๋น„ํŠธ ๋ถ€๋ถ„์„ ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ 3 ๋˜๋Š” 2.5์˜ ์ •์ง€ ๋น„ํŠธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” ์ผ๋ฐ˜์ ์ธ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฐฉ์‹์œผ๋กœ ์ปดํ“จํ„ฐ์˜ ์„ค์ •์„ "์ทจ์•ฝ"ํ•˜๊ฑฐ๋‚˜ ์ตœ์†Œํ•œ ์ง๋ ฌ ๋ฐ์ดํ„ฐ ์„ค์ •์— ๋Œ€ํ•œ ๋ณด๋‹ค ๊นŠ์€ ํ†ต์ฐฐ๋ ฅ์„ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ŠคํŽ˜์ด์Šค ํŒจ๋ฆฌํ‹ฐ ๋งˆํฌ ํŒจ๋ฆฌํ‹ฐ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ์ด๊ฒƒ์€ ํŒจ๋ฆฌํ‹ฐ ๋น„ํŠธ๋ฅผ "sticky"๋กœ ๋งŒ๋“ค์–ด, ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด ๊ฒฝ์šฐ ๋ฌธ์ž๋ฅผ ์ „์†กํ•  ๋•Œ๋งˆ๋‹ค ํŒจ๋ฆฌํ‹ฐ ๋น„ํŠธ์— ๋Œ€ํ•ด ๋…ผ๋ฆฌ "0"์„ ์ž…๋ ฅํ•œ๋‹ค. ๊ฐ ์ผ๋ จ ๋‹จ์–ด์— ๋Œ€ํ•ด 9๊ฐœ์˜ ๋ฐ์ดํ„ฐ ๋น„ํŠธ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ์กฐ์žกํ•œ ๋ฐฉ๋ฒ• ๋˜๋Š” ์œ„์—์„œ ์„ค๋ช…ํ•œ ์ง„๋‹จ ๋ชฉ์  ์ด์™ธ์˜ ์‹ค์งˆ์ ์ธ ์šฉ๋„๋Š” ๋งŽ์ง€ ์•Š๋‹ค. ๋น„ํŠธ 6์„ 1๋กœ ์„ค์ •ํ•˜๋ฉด TX ์™€์ด์–ด๊ฐ€ ๋…ผ๋ฆฌ์ ์œผ๋กœ "0"์ด ๋˜์–ด ๊ทธ๋Œ€๋กœ ์œ ์ง€๋˜๋ฉฐ, ์ˆ˜์‹  UART - "๋ธŒ๋ ˆ์ดํฌ ์ƒํƒœ"์— ์˜ํ•ด "0" ๋น„ํŠธ์˜ ๊ธด ์ŠคํŠธ๋ฆผ์œผ๋กœ ํ•ด์„๋œ๋‹ค. "break"๋ฅผ ๋๋‚ด๋ ค๋ฉด ๋น„ํŠธ 6์„ ๋‹ค์‹œ 0์œผ๋กœ ์„ค์ •ํ•˜์‹ญ์‹œ์˜ค.

๋ชจ๋Ž€ ์ œ์–ด ๋ ˆ์ง€์Šคํ„ฐ

์˜คํ”„์…‹: +4 . ์ด ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์†Œํ”„ํŠธ์›จ์–ด ์ œ์–ด ํ•˜์— "ํ•˜๋“œ์›จ์–ด" ํ”Œ๋กœ์šฐ ์ œ์–ด๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜๋Š” ๋ณด๋‹ค ์‹ค์šฉ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ UART์˜ 4๊ฐœ์˜ ๋‹ค๋ฅธ ์™€์ด์–ด๋ฅผ ์ง์ ‘ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์–ด๋–ค ์ผ๋ จ์˜ ๋…๋ฆฝ์ ์ธ ๋…ผ๋ฆฌ์  ์ƒํƒœ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ชจ๋Ž€์˜ ์ œ์–ด๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋‹ค. ๋˜ํ•œ ๋Œ€๋ถ€๋ถ„์˜ UART์—๋Š” ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด ๋…ผ๋ฆฌ์  "1"๋กœ ์„ค์ •๋œ ๋ณด์กฐ ์ถœ๋ ฅ 2๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ์ ์— ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค.

Modem Control Register (MCR)

Bit

Notes

7

Reserved

6

Reserved

5

Autoflow Control Enabled (16750)

4

Loopback Mode

3

Auxiliary Output 2

2

Auxiliary Output 1

1

Request To Send

0

Data Terminal Ready

์ผ๋ฐ˜์ ์ธ PC ํ”Œ๋žซํผ์— ์žˆ๋Š” ์ด๋Ÿฌํ•œ ์ถœ๋ ฅ ์ค‘ ์‹ค์ œ๋กœ DB-9 ์ปค๋„ฅํ„ฐ์˜ PC ์ถœ๋ ฅ์— ์—ฐ๊ฒฐ๋œ ๊ฒƒ์€ ์†ก์‹  ์š”์ฒญ(RTS)๊ณผ ๋ฐ์ดํ„ฐ ํ„ฐ๋ฏธ๋„ ์ค€๋น„(DTR)๋ฟ์ด๋‹ค. DB-25 ์‹œ๋ฆฌ์–ผ ์ปค๋„ฅํ„ฐ(PC ํ”Œ๋žซํผ์—์„œ ๋ณ‘๋ ฌ ํ†ต์‹ ์— ๋” ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋จ)๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ํ™•์žฅ ์นด๋“œ์— ์‚ฌ์šฉ์ž ์ •์˜ UART๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๋ณด์กฐ ์ถœ๋ ฅ์ด RS-232 ์—ฐ๊ฒฐ์— ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ๋‹ค. ์‚ฌ์šฉ์ž ์ง€์ • ํšŒ๋กœ์—์„œ ์ด ์นฉ์„ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ์ด๊ฒƒ์€ ์นฉ ์„ค๊ณ„์—์„œ TTL ์ถœ๋ ฅ์— ์˜ํ•ด ํŠธ๋ฆฌ๊ฑฐ๋˜๊ณ  ์‹ถ์€ ๋ชจ๋“  ๊ฒƒ์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ "๋ฌด๋ฃŒ" ์ถ”๊ฐ€ ์ถœ๋ ฅ ์‹ ํ˜ธ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ์†Œํ”„ํŠธ์›จ์–ด ์ œ์–ด ํ•˜์— ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒƒ์„ ํ•˜๋Š” ๋” ์‰ฌ์šด ๋ฐฉ๋ฒ•๋“ค์ด ์žˆ์ง€๋งŒ, ์ด ๊ฒฝ์šฐ ๊ทธ๊ฒƒ์€ ๋‹น์‹ ์˜ ๋ ˆ์ด์•„์›ƒ์— ์ถ”๊ฐ€ ์นฉ์„ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค.

"๋ฃจํ”„๋ฐฑ" ๋ชจ๋“œ๋Š” ์ฃผ๋กœ UART๋ฅผ ํ…Œ์ŠคํŠธํ•˜์—ฌ ์ฃผ CPU์™€ UART ์‚ฌ์ด์—์„œ ํšŒ๋กœ๊ฐ€ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์ด๊ฒƒ์€, ๋น„๋ก, ์ตœ์ข… ์‚ฌ์šฉ์ž๊ฐ€ ์‹œํ—˜ํ•  ํ•„์š”๋Š” ๊ฑฐ์˜ ์—†์ง€๋งŒ, UART๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ผ๋ถ€ ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ดˆ๊ธฐ ์‹œํ—˜์—๋Š” ์œ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒƒ์ด "1"์˜ ๋…ผ๋ฆฌ์  ์ƒํƒœ๋กœ ์„ค์ •๋˜๋ฉด ์†ก์‹  ๋ ˆ์ง€์Šคํ„ฐ์— ์ž…๋ ฅ๋˜๋Š” ๋ชจ๋“  ๋ฌธ์ž๋Š” UART์˜ ์ˆ˜์‹  ๋ ˆ์ง€์Šคํ„ฐ์—์„œ ์ฆ‰์‹œ ๋ฐœ๊ฒฌ๋œ๋‹ค. ์œ„์— ๋‚˜์—ด๋œ RTS์™€ DTS์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๋…ผ๋ฆฌ์  ์‹ ํ˜ธ๋Š” ์ง๋ ฌ ํ†ต์‹  ํฌํŠธ ๋์— ๋ฃจํ”„๋ฐฑ RS-232 ์žฅ์น˜๋ฅผ ๋†“์€ ๊ฒƒ์ฒ˜๋Ÿผ ๋ชจ๋Ž€ ์ƒํƒœ ๋ ˆ์ง€์Šคํ„ฐ์— ๋‚˜ํƒ€๋‚œ๋‹ค. ์š”์ปจ๋Œ€, ์ด๊ฒƒ์€ ๋‹น์‹ ์ด ์†Œํ”„ํŠธ์›จ์–ด๋งŒ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฃจํ”„๋ฐฑ ํ…Œ์ŠคํŠธ๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. ์ด๋Ÿฌํ•œ ์ง„๋‹จ ๋ชฉ์ ๊ณผ UART๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์˜ ์ผ๋ถ€ ์ดˆ๊ธฐ ๊ฐœ๋ฐœ ํ…Œ์ŠคํŠธ๋ฅผ ์ œ์™ธํ•˜๊ณ , ์ด ํ…Œ์ŠคํŠธ๋Š” ๊ฒฐ์ฝ” ์‚ฌ์šฉ๋˜์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค.

16750์—๋Š” ๋ชจ๋Ž€ ์ œ์–ด ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ˆ˜ ๋ชจ๋“œ๊ฐ€ ์žˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ด๊ฒƒ์€ UART๊ฐ€ FIFO์˜ ํ˜„์žฌ ์ƒํƒœ์— ๋”ฐ๋ผ ํ•˜๋“œ์›จ์–ด ๋ฌธ์ž ํ๋ฆ„ ์ œ์–ด๋ฅผ ์œ„ํ•ด RTS์™€ DTS์˜ ์ƒํƒœ๋ฅผ ์ง์ ‘ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. ์ด ๋™์ž‘์€ FIFO Control Register(FCR)์˜ ๋น„ํŠธ 5 ์ƒํƒœ์—๋„ ์˜ํ–ฅ์„ ๋ฐ›๋Š”๋‹ค. ์ด๊ฒƒ์ด ์œ ์šฉํ•˜๊ณ  UART ์ œ์–ด ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋…ผ๋ฆฌ์˜ ์ผ๋ถ€๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์ง€๋งŒ, 16750์€ ์นฉ์œผ๋กœ์„œ ๋น„๊ต์  ์ƒˆ๋กญ๊ณ  ๋งŽ์€ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์—์„œ ํ”ํžˆ ์ฐพ์•„๋ณผ ์ˆ˜ ์—†๋‹ค. ์ปดํ“จํ„ฐ์— 16750 UART๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด, ์ด ํ–ฅ์ƒ๋œ ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•ด ๋ณด์‹ญ์‹œ์˜ค.

๋ผ์ธ ์ƒํƒœ ๋ ˆ์ง€์Šคํ„ฐ

์˜คํ”„์…‹: +5 . ์ด ๋ ˆ์ง€์Šคํ„ฐ๋Š” ์ˆ˜์‹ ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ UART ๋‚ด์— ์กด์žฌํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜ ์ƒํƒœ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ฐ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์ด ๋ ˆ์ง€์Šคํ„ฐ๋Š” "์ฝ๊ธฐ ์ „์šฉ" ๋ ˆ์ง€์Šคํ„ฐ์ด๋ฉฐ, ์ด ๋ ˆ์ง€์Šคํ„ฐ์— ๊ธฐ๋ก๋œ ๋ฐ์ดํ„ฐ๋Š” ๋ฌด์‹œ๋˜๊ฑฐ๋‚˜ ๋” ๋‚˜๋น ์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฉฐ, UART์—์„œ ๋‹ค๋ฅธ ํ–‰๋™์„ ์œ ๋ฐœํ•œ๋‹ค๋Š” ์ ์„ ์œ ๋…ํ•˜์‹ญ์‹œ์˜ค. ์ด ์ •๋ณด์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์šฉ๋„๊ฐ€ ์žˆ์œผ๋ฉฐ, ์ง๋ ฌ ๋ฐ์ดํ„ฐ ์—ฐ๊ฒฐ ๋ฌธ์ œ๋ฅผ ์ง„๋‹จํ•˜๋Š” ๋ฐ ์œ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ์ •๋ณด๊ฐ€ ์•„๋ž˜์— ์ œ๊ณต๋  ๊ฒƒ์ด๋‹ค.

Line Status Register (LSR)

Bit

Notes

7

Error in Received FIFO

6

Empty Data Holding Registers

5

Empty Transmitter Holding Register

4

Break Interrupt

3

Framing Error

2

Parity Error

1

Overrun Error

0

Data Ready

๋น„ํŠธ 7์€ FIFO์— ๋ฌธ์ž๊ฐ€ ์žˆ๋Š” ์˜ค๋ฅ˜๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ๋งŒ์•ฝ ํ˜„์žฌ FIFO์— ์žˆ๋Š” ์–ด๋–ค ์บ๋ฆญํ„ฐ๊ฐ€ ์—ฌ๊ธฐ์— ๋‚˜์—ด๋œ ๋‹ค๋ฅธ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€(ํ”„๋ ˆ์ž„ ์˜ค๋ฅ˜, ํŒจ๋ฆฌํ‹ฐ ์˜ค๋ฅ˜ ๋“ฑ)๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด, ์ด๊ฒƒ์€ FIFO์˜ ๋ฌธ์ž ๋ฐ์ดํ„ฐ๊ฐ€ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๊ณ  ํ•˜๋‚˜ ์ด์ƒ์˜ ์˜ค๋ฅ˜๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— FIFO๋ฅผ ์ง€์šธ ํ•„์š”๊ฐ€ ์žˆ์Œ์„ ์ƒ๊ธฐ์‹œํ‚ค๋Š” ๊ฒƒ์ด๋‹ค. FIFO๊ฐ€ ์—†๋Š” UART ์นฉ์—์„œ๋Š” ์˜ˆ์•ฝ ๋น„ํŠธ ํ•„๋“œ ์ž…๋‹ˆ๋‹ค.

๋น„ํŠธ 5์™€ 6์€ ๋ฌธ์ž ์†ก์‹ ๊ธฐ ํšŒ๋กœ์˜ ์ƒํƒœ๋ฅผ ๋งํ•˜๋ฉฐ UART๊ฐ€ ๋‹ค๋ฅธ ๋ฌธ์ž๋ฅผ ์ˆ˜์‹ ํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋‹ค. ๋น„ํŠธ 6์€ ๋ชจ๋“  ๋ฌธ์ž๋ฅผ ์ „์†ก(FIFO ํฌํ•จ, ํ™œ์„ฑํ™”๋œ ๊ฒฝ์šฐ)ํ•˜๊ณ  "์‹œํ”„ํŠธ ๋ ˆ์ง€์Šคํ„ฐ"๋„ ์ „์†กํ•˜๋Š” ๊ฒฝ์šฐ ๋…ผ๋ฆฌ "1"๋กœ ์„ค์ •๋œ๋‹ค. ์ด ์‹œํ”„ํŠธ ๋ ˆ์ง€์Šคํ„ฐ๋Š” ์†ก์‹ ๊ธฐ ํ™€๋”ฉ ๋ฒ„ํผ(THB)๋‚˜ FIFO๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š” UART ๋‚ด์˜ ๋‚ด๋ถ€ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์œผ๋กœ, ๋ฐ์ดํ„ฐ๋ฅผ ์ง๋ ฌ ํ˜•์‹์œผ๋กœ ์‹ค์ œ ๋ณ€ํ™˜ํ•˜์—ฌ ํ•œ ๋ฒˆ์— 1๋น„ํŠธ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ณ  ์‹œํ”„ํŠธ ๋ ˆ์ง€์Šคํ„ฐ์˜ ๋‚ด์šฉ์„ 1๋น„ํŠธ ์•„๋ž˜๋กœ "์ „ํ™˜"ํ•˜์—ฌ t์˜ ๊ฐ’์„ ์–ป๋Š” ํšŒ๋กœ๋‹ค.๊ทธ ๋‹ค์Œ์—. ๋น„ํŠธ 5๋Š” ๋‹จ์ง€ ์ „์†ก์„ ์œ„ํ•œ FIFO๋ฅผ ํฌํ•จํ•˜์—ฌ UART๊ฐ€ ๋” ๋งŽ์€ ๋ฌธ์ž๋ฅผ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋งํ•ด์ค€๋‹ค.

Break Interrupt (๋น„ํŠธ 4)๋Š” ์—ฐ์† ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ๋ผ์ธ์ด "0" ๋น„ํŠธ๋ฅผ ์ตœ์†Œํ•œ ์ „์ฒด ์ง๋ ฌ ๋ฐ์ดํ„ฐ "word"๋งŒํผ ๊ธด ์‹œ๊ฐ„ ๋™์•ˆ Divisor Latch Bytes์˜ ์ง€์ •๋œ ๋ณด๋ ˆ์ดํŠธ์— ๋Œ€ํ•ด "0" ๋น„ํŠธ๋ฅผ ์ˆ˜์‹ ํ–ˆ์„ ๋•Œ ๋…ผ๋ฆฌ์ ์œผ๋กœ "1"์— ๋„๋‹ฌํ•œ๋‹ค. (์ง๋ ฌ ๋ผ์ธ์˜ ์ •์ƒ ์ƒํƒœ๋Š” se์— ํ•ด๋‹นํ•จ)nd "1" ๋น„ํŠธ ๋˜๋Š” ํ•ญ์ƒ "0" ๋น„ํŠธ์ธ ์‹œ์ž‘ ๋น„ํŠธ๋ฅผ ๋ณด๋‚ธ ๋‹ค์Œ ๊ฐ€๋ณ€ ๋ฐ์ดํ„ฐ ๋ฐ ํŒจ๋ฆฌํ‹ฐ ๋น„ํŠธ๋ฅผ ๋ณด๋‚ธ ๋‹ค์Œ "1"์ธ ์ •์ง€ ๋น„ํŠธ๋Š” ๋ผ์ธ์ด ์œ ํœด ์ƒํƒœ์ผ ๊ฒฝ์šฐ ๋” "1"s๋กœ ๊ณ„์† ์ง„ํ–‰๋จ.) ๋ณดํ†ต ์ •์ƒ ์ƒํƒœ ๋Œ€์‹  "0" ๋น„ํŠธ์˜ ๊ธด ์‹œํ€€์Šค๋Š” ์ปดํ“จํ„ฐ์— ์ง๋ ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๋Š” ์žฅ์น˜๊ฐ€ ์–ด๋–ค ์ด์œ ๋กœ ์ค‘์ง€๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•œ๋‹ค. ์ข…์ข… ์ง๋ ฌ ํ†ต์‹ ์˜ ๊ฒฝ์šฐ ์ด๊ฒƒ์€ ์ •์ƒ์ ์ธ ์ƒํƒœ์ง€๋งŒ, ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ๋‹ค๋ฅธ ์žฅ์น˜๊ฐ€ ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. ์ผ๋ถ€ ์ง๋ ฌ ๋‹จ์ž๋Š” Out-of-Band ์‹ ํ˜ธ ๋ฐฉ์‹์œผ๋กœ์„œ ์ด "Break ์กฐ๊ฑด"์„ ์ƒ์„ฑํ•˜๊ฒŒ ํ•˜๋Š” ํ‚ค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

ํ”„๋ ˆ์ž„ ์˜ค๋ฅ˜(๋น„ํŠธ 3)๋Š” ๋งˆ์ง€๋ง‰ ๋น„ํŠธ๊ฐ€ ์ •์ง€ ๋น„ํŠธ๊ฐ€ ์•„๋‹ ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค. ๋˜๋Š” ์ข€ ๋” ์ •ํ™•ํžˆ ๋งํ•˜๋ฉด ์ •์ง€ ๋น„ํŠธ๋Š” ๋…ผ๋ฆฌ์ ์ธ "0"์ด๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋ช‡ ๊ฐ€์ง€ ์›์ธ์ด ์žˆ๋Š”๋ฐ, ์—ฌ๊ธฐ์—๋Š” ๋‘ ์ปดํ“จํ„ฐ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ํƒ€์ด๋ฐ์ด ์žˆ๋‹ค. ์ด๋Š” ๊ธฐ๊ธฐ ๊ฐ„ ๋ฌผ๋ฆฌ์  ์ผ€์ด๋ธ”์˜ ๋ฌธ์ œ ๋˜๋Š” ์ผ€์ด๋ธ”์ด ๋„ˆ๋ฌด ๊ธธ๋‹ค๋Š” ๋“ฑ์˜ ๋‹ค๋ฅธ ์›์ธ๋“ค๋„ ์ˆ˜๋ฐ˜๋  ์ˆ˜ ์žˆ์ง€๋งŒ, ์ผ๋ฐ˜์ ์œผ๋กœ ๋ณด๋ ˆ์ดํŠธ ๋ถˆ์ผ์น˜๋กœ ์ธํ•ด ๋ฐœ์ƒํ•œ๋‹ค. ๋ฐ์ดํ„ฐ ๋น„ํŠธ์˜ ๊ฐœ์ˆ˜๋„ ๊บผ์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ UART(๋ฐ์ดํ„ฐ ๋น„ํŠธ ๊ธธ์ด, ํŒจ๋ฆฌํ‹ฐ ๋ฐ ์ค‘์ง€ ๋น„ํŠธ ์ˆ˜)์— ๋Œ€ํ•œ ๋ชจ๋“  ์„ค์ •์ด ์˜ˆ์ƒ๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ง๋ ฌ ๋ฐ์ดํ„ฐ ํ”„๋กœํ† ์ฝœ์„ ๋งค์šฐ ๋ฉด๋ฐ€ํ•˜๊ฒŒ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

ํŒจ๋ฆฌํ‹ฐ ์˜ค๋ฅ˜(๋น„ํŠธ 2)๋Š” ํ”„๋ ˆ์ž„ ์˜ค๋ฅ˜์™€ ๊ฐ™์ด ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๋ณด๋ ˆ์ดํŠธ๋ฅผ ๋‚˜ํƒ€๋‚ผ ์ˆ˜๋„ ์žˆ๋‹ค(ํŠนํžˆ ๋‘ ์˜ค๋ฅ˜๊ฐ€ ๋™์‹œ์— ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ). ์ด ๋น„ํŠธ๋Š” ์˜ˆ์ƒ๋˜๋Š” ํŒจ๋ฆฌํ‹ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜(์˜ค๋“œ, ์ง์ˆ˜, ๋งˆํฌ ๋˜๋Š” ๊ณต๋ฐฑ)์ด ๋ฐœ๊ฒฌ๋˜์ง€ ์•Š์•˜์„ ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค. UART ์„ค์ •์—์„œ "No parity"๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, ์ด ๋น„ํŠธ๋Š” ํ•ญ์ƒ ๋…ผ๋ฆฌ์ ์ธ "0"์ด์–ด์•ผ ํ•œ๋‹ค. ํ”„๋ ˆ์ž„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์„ ๋•Œ, ์ด๊ฒƒ์€ ์ผ€์ด๋ธ”์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๋‹ค๋ฅธ ๋ฌธ์ œ๋“ค๋„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ค๋ฒ„๋Ÿฐ ์˜ค๋ฅ˜(๋น„ํŠธ 1)๋Š” UART์— ์ œ๋Œ€๋กœ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ถˆ๋Ÿ‰ ๋˜๋Š” ์šด์˜ ์ฒด์ œ์˜ ํ‘œ์‹œ๋‹ค. ์ด ์˜ค๋ฅ˜ ์ƒํƒœ๋Š” ํŒ๋… ๋Œ€๊ธฐ ์ค‘์ธ ๋ฌธ์ž๊ฐ€ ์žˆ๊ณ  ๋“ค์–ด์˜ค๋Š” ๋ณ€์† ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ๋‹ค์Œ ๋ฌธ์ž์˜ ๋‚ด์šฉ์„ ์ˆ˜์‹ ๊ธฐ ๋ฒ„ํผ(RBR)๋กœ ์ด๋™ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฐœ์ƒํ•œ๋‹ค. FIFO๊ฐ€ ์žฅ์ฐฉ๋œ UART์˜ ๊ฒฝ์šฐ FIFO๋„ ๊ฐ€๋“ ์ฐผ์Œ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.

UART์— ์•ก์„ธ์Šคํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์–ผ๋งˆ๋‚˜ ํšจ์œจ์ ์ธ์ง€, ํŠนํžˆ ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์ฝ๋Š” ๋ถ€๋ถ„์„ ํฌํ•จํ•˜์—ฌ ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์ž‘์—…์„ ํ•˜์‹ญ์‹œ์˜ค. ๋ฉ€ํ‹ฐํƒœ์Šคํ‚น ์šด์˜ ์ฒด์ œ์—์„œ๋Š” ์ˆ˜์‹  ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๋ถ€๋ถ„์ด ๋ณ„๋„์˜ ์Šค๋ ˆ๋“œ์— ์žˆ๋Š”์ง€, ์Šค๋ ˆ๋“œ ์šฐ์„  ์ˆœ์œ„๊ฐ€ ๋†’๊ฑฐ๋‚˜ ์‹œ๊ฐ„์ด ์ค‘์š”ํ•œ์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ์„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด๋Š” ์ง๋ ฌ ํ†ต์‹  ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ๋งค์šฐ ์ค‘์š”ํ•œ ์ž‘์—…์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋˜ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ์ข‹์€ ์†Œํ”„ํŠธ์›จ์–ด ๊ด€ํ–‰์—๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ํ†ตํ•ด ์ˆ˜ํ–‰๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๋ณ„ "๋ฒ„ํผ"๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ, ํ•„์š”์— ๋”ฐ๋ผ ๋“ค์–ด์˜ค๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋” ๋งŽ์€ ๊ธฐํšŒ๋ฅผ ์ œ๊ณตํ•˜๊ณ , UART์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋นผ๋‚ด๋Š” ๋ฐ ํ•„์š”ํ•œ ์ค‘์š”ํ•œ ์„œ๋ธŒ๋ฃจํ‹ด์—์„œ ๋ฒ—์–ด๋‚˜๊ฒŒ ํ•ด์ค€๋‹ค. ์ด ๋ฒ„ํผ๋Š” 1KB์—์„œ ์ตœ๋Œ€ 1MB๊นŒ์ง€ ์ž‘์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ž‘์—… ์ค‘์ธ ๋ฐ์ดํ„ฐ์˜ ์ข…๋ฅ˜์— ๋”ฐ๋ผ ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง„๋‹ค. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ์˜์—ญ์—๋„ ์ ์šฉ๋˜๋ฉฐ, ์ดํ›„ ๋ชจ๋“ˆ์—์„œ๋„ ์ ์šฉ๋  ์ˆ˜ ์žˆ๋Š” ์ข€ ๋” ์ด๊ตญ์ ์ธ ๋ฒ„ํผ๋ง ๊ธฐ๋ฒ•์ด ์žˆ๋‹ค.

๋ชจ๋Ž€ ์ƒํƒœ ๋ ˆ์ง€์Šคํ„ฐ

์˜คํ”„์…‹: +6 . ์ด ๋ ˆ์ง€์Šคํ„ฐ๋Š” ๋ชจ๋Ž€์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ์†Œํ”„ํŠธ์›จ์–ด์— ์•Œ๋ฆฌ๊ธฐ ์œ„ํ•ด ์—ฌ๊ธฐ์— ์žˆ๋Š” ๋˜ ๋‹ค๋ฅธ ์ฝ๊ธฐ ์ „์šฉ ๋ ˆ์ง€์Šคํ„ฐ ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์•ก์„ธ์Šคํ•˜๋Š” ๋ชจ๋Ž€์€ ์™ธ๋ถ€ ๋ชจ๋Ž€์ด๊ฑฐ๋‚˜ UART๋ฅผ ์ปดํ“จํ„ฐ์— ๋Œ€ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋‚ด๋ถ€ ๋ชจ๋Ž€์ผ ์ˆ˜ ์žˆ๋‹ค.

Modem Status Register (MSR)

Bit

Notes

7

Carrier Detect

6

Ring Indicator

5

Data Set Ready

4

Clear To Send

3

Delta Data Carrier Detect

2

Trailing Edge Ring Indicator

1

Delta Data Set Ready

0

Delta Clear To Send

๋น„ํŠธ 7๊ณผ 6์€ ๋ชจ๋Ž€ ํ™œ๋™๊ณผ ์ง์ ‘ ๊ด€๋ จ์ด ์žˆ๋‹ค. ๋ฐ˜์†กํŒŒ ํƒ์ง€๊ธฐ๋Š” ๋ชจ๋Ž€์ด ๋‹ค๋ฅธ ๋ชจ๋Ž€์— "์—ฐ๊ฒฐ"๋˜์–ด ์žˆ๋Š” ๋™์•ˆ "1"์˜ ๋…ผ๋ฆฌ์  ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•  ๊ฒƒ์ด๋‹ค. ์ด๊ฒƒ์ด "0"์ด๋ผ๋Š” ๋…ผ๋ฆฌ์ ์ธ ์ƒํƒœ๋กœ ๊ฐˆ ๋•Œ, ๋‹น์‹ ์€ ์ „ํ™” ์—ฐ๊ฒฐ์ด ๋Š๊ฒผ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ง ํ‘œ์‹œ๊ธฐ ๋น„ํŠธ๋Š” "RI" ๋˜๋Š” ๋ง ํ‘œ์‹œ๊ธฐ๋ผ๊ณ ๋„ ํ•˜๋Š” RS-232 ์™€์ด์–ด์— ์ง์ ‘ ์—ฐ๊ฒฐ๋œ๋‹ค. ๋ณดํ†ต ์ด ๋น„ํŠธ๋Š” ์ „ํ™”์„ ์˜ "๋ง ์ „์••"์ด ๊ฐ์ง€๋œ ๊ฒฐ๊ณผ "1"์˜ ๋…ผ๋ฆฌ์  ์ƒํƒœ๋กœ ์ „ํ™˜๋˜๋Š”๋ฐ, ๋งˆ์น˜ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋‹น์‹ ์—๊ฒŒ ์ „ํ™”๋ฅผ ๊ฑธ๋ ค๊ณ  ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ ค์ฃผ๊ธฐ ์œ„ํ•ด ์žฌ๋ž˜์‹ ์ „ํ™”๊ฐ€ ์šธ๋ฆด ๋•Œ์™€ ๊ฐ™๋‹ค.

AT ๋ชจ๋Ž€ ๋ช…๋ น์˜ ์„น์…˜์— ๋„๋‹ฌํ•˜๋ฉด ๋ชจ๋Ž€์˜ ์ƒํƒœ์— ๊ด€ํ•œ ์ด ์ •๋ณด ๋ฐ ๊ธฐํƒ€ ์ •๋ณด๋ฅผ ์•Œ๋ ค์ฃผ๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์ด ์žˆ์„ ๊ฒƒ์ด๋ฉฐ, ๋Œ€์‹  ์ด ์ •๋ณด๋Š” ํŠน์ˆ˜ ์™€์ด์–ด ๋Œ€์‹  ์ผ๋ฐ˜์ ์ธ ์ง๋ ฌ ๋ฐ์ดํ„ฐ ์ŠคํŠธ๋ฆผ์˜ ๋ฌธ์ž๋กœ ๋ณด๋‚ด์งˆ ๊ฒƒ์ด๋‹ค. ์‚ฌ์‹ค, ์ด๋Ÿฌํ•œ ์—ฌ๋ถ„์˜ ๋น„ํŠธ๋Š” ์ƒ๋‹นํžˆ ๊ฐ€์น˜๊ฐ€ ์—†์ง€๋งŒ, ์ฒ˜์Œ๋ถ€ํ„ฐ ๊ทœ๊ฒฉ์˜ ์ผ๋ถ€์˜€์œผ๋ฉฐ UART ์„ค๊ณ„์ž๋“ค์€ ๋น„๊ต์  ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ๊ทธ๊ฒƒ์€ ์ผ๋ถ€ ์ถ”๊ฐ€ ์ •๋ณด๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ „์†กํ•˜๊ฑฐ๋‚˜ UART๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์„ค๊ณ„์ž๊ฐ€ ๋‹ค๋ฅธ ๋ชฉ์ ์„ ์œ„ํ•ด ๋‹ค๋ฅธ ์žฅ์น˜๋กœ๋ถ€ํ„ฐ ๋…ผ๋ฆฌ ๋น„ํŠธ ์‹ ํ˜ธ๋ฅผ ์ˆ˜์‹ ํ•˜๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋  ์ˆ˜ ์žˆ๋‹ค.

"Data Set Ready"์™€ "Clear To Send" ๋น„ํŠธ(๋น„ํŠธ 4, 5)๋Š” RS-232 ์ผ€์ด๋ธ”์—์„œ ์ง์ ‘ ๋ฐœ๊ฒฌ๋˜๋ฉฐ, "Modem Control Register (MCR)๋กœ ์ „์†ก๋˜๋Š” "Receest To Derminal Ready"์™€ ์™€์ด์–ด๋ฅผ ์ผ์น˜์‹œํ‚ค๊ณ  ์žˆ๋‹ค. 2๊ฐœ์˜ ๋ ˆ์ง€์Šคํ„ฐ์— ์ด 4๊ฐœ์˜ ๋น„ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด "ํ•˜๋“œ์›จ์–ด ํ”Œ๋กœ์šฐ ์ œ์–ด"๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์žฅ์น˜์— ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ๋•Œ๋ผ๊ณ  ์‹ ํ˜ธ๋ฅผ ๋ณด๋‚ด๊ฑฐ๋‚˜ ์ •๋ณด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋™์•ˆ ๋ฐ์ดํ„ฐ ์ „์†ก์„ ๋ณด๋ฅ˜ํ•˜๊ณ  ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฐ์ดํ„ฐ ํ๋ฆ„ ์ œ์–ด์— ๋„๋‹ฌํ•˜๋ฉด ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ ์ด ์ฃผ์ œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์ด ๊ธฐ๋ก๋  ๊ฒƒ์ด๋‹ค.

"๋ธํƒ€" ๋น„ํŠธ(๋น„ํŠธ 0, 1, 2, 3)์— ๋Œ€ํ•œ ์ฐธ๊ณ  ์‚ฌํ•ญ. ์ด ๊ฒฝ์šฐ "๋ธํƒ€"๋ผ๋Š” ๋‹จ์–ด๋Š” ๋น„ํŠธ ์ค‘ ํ•˜๋‚˜์˜ ์ƒํƒœ ๋ณ€ํ™”์—์„œ์™€ ๊ฐ™์ด ๋ณ€ํ™”๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ด๊ฒƒ์€ ๋ธํƒ€๋ฒ ๊ฐ€ ์†๋„์˜ ๋ณ€ํ™”๋ฅผ ์˜๋ฏธํ•˜๋Š” ๋กœ์ผ“ ๊ณผํ•™๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ๊ณผํ•™ ๋ถ„์•ผ๋กœ๋ถ€ํ„ฐ ์˜จ๋‹ค. ์ด ๋ ˆ์ง€์Šคํ„ฐ์˜ ๋ชฉ์ ์ƒ, ๋‹ค์Œ์— ์ด ๋ชจ๋Ž€ ์ƒํƒœ ๋ ˆ์ง€์Šคํ„ฐ์— ์ ‘๊ทผํ•  ๋•Œ(์˜ˆ: ์บ๋ฆฌ์–ด ๋””ํ…ํŠธ๋ฅผ ์‚ฌ์šฉํ•œ ๋ธํƒ€ ๋ฐ์ดํ„ฐ ์บ๋ฆฌ์–ด ๋””ํ…ํŠธ)์™€ ๊ด€๋ จ๋œ ๋น„ํŠธ๊ฐ€ ์ด์ „ ๋ ˆ์ง€์Šคํ„ฐ์— ์•ก์„ธ์Šคํ–ˆ์„ ๋•Œ์™€ ๋…ผ๋ฆฌ์  ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋œ ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ ๋น„ํŠธ๋Š” ๊ฐ๊ฐ ๋…ผ๋ฆฌ "1"์ด ๋œ๋‹ค. "๋ง ํ‘œ์‹œ๊ธฐ" ๋น„ํŠธ๊ฐ€ ๋…ผ๋ฆฌ "1"์—์„œ ๋…ผ๋ฆฌ "0" ์ƒํƒœ๋กœ ๋ฐ”๋€ ๊ฒฝ์šฐ์—๋งŒ ๋…ผ๋ฆฌ "1" ์ƒํƒœ์— ์žˆ๋‹ค๋Š” ์ ์„ ์ œ์™ธํ•˜๋ฉด, ์ถ”์  ์—์ง€ ๋ง ํ‘œ์‹œ๊ธฐ๋Š” ๋‚˜๋จธ์ง€ ๊ฒƒ๊ณผ ๊ฑฐ์˜ ๋น„์Šทํ•˜๋‹ค. ์ด ์ง€์‹์—๋Š” ์‹ค์ œ๋กœ ์‹ค์ œ์ ์ธ ์šฉ๋„๋Š” ๋ณ„๋กœ ์—†์ง€๋งŒ, ์ด๋Ÿฌํ•œ ๋น„ํŠธ๋ฅผ ์ด์šฉํ•˜์—ฌ UART๋กœ๋ถ€ํ„ฐ ์ˆ˜์‹ ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ด ๋น„ํŠธ์— ๊ทผ๊ฑฐํ•˜์—ฌ ์–ด๋Š ์ •๋„ ์กฐ์ž‘ํ•˜๋ ค๊ณ  ํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์žˆ๋‹ค. ๋งŒ์•ฝ ๋‹น์‹ ์ด ์ด 4๋น„ํŠธ๋ฅผ ๋ฌด์‹œํ•œ๋‹ค๋ฉด ๋‹น์‹ ์€ ์—ฌ์ „ํžˆ ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ์ง๋ ฌ ํ†ต์‹  ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.

์Šคํฌ๋ž˜์น˜ ๋ ˆ์ง€์Šคํ„ฐ

์˜คํ”„์…‹: +7 . Scratch ๋ ˆ์ง€์Šคํ„ฐ๋Š” ํฅ๋ฏธ๋กœ์šด ์ˆ˜์ˆ˜๊ป˜๋ผ๋‹ค. ์„ค๊ณ„์ž๋“ค์ด ๋ฌด์—‡์„ ํ•ด์•ผ ํ• ์ง€ ๋ชจ๋ฅด๋Š” ์ถ”๊ฐ€ "๋“ฑ๋ก"์„ ๊ฐ€์ง„ ๋‹ค๋ฅธ ๋ชจ๋“  I/O ํฌํŠธ ์ฃผ์†Œ๋กœ ๋ ˆ์ง€์Šคํ„ฐ ์ „์ฒด๋ฅผ ์••์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ๋งŽ์€ ๋…ธ๋ ฅ์„ ๊ธฐ์šธ์˜€๋‹ค. ์ปดํ“จํ„ฐ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋‹ค๋ฃฐ ๋•Œ๋Š” 2์˜ ํž˜์„ ๋‹ค๋ฃฐ ๋•Œ ๋” ์‰ฌ์› ๊ธฐ ๋•Œ๋ฌธ์— 8๊ฐœ์˜ I/O ํฌํŠธ๋ฅผ "์ ‘๊ทผ"ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋ช…์‹ฌํ•˜๋ผ. ๋‹ค๋ฅธ ๊ธฐ๊ธฐ๊ฐ€ ์ด ์ถ”๊ฐ€ I/O ํฌํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ—ˆ์šฉํ•˜๋ฉด ๋งˆ๋”๋ณด๋“œ ์„ค๊ณ„๊ฐ€ ๋„ˆ๋ฌด ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

8250 UART์˜ ์ผ๋ถ€ ๋ณ€ํ˜•์—์„œ๋Š” ์ด ์Šคํฌ๋ž˜์น˜ ๋ ˆ์ง€์Šคํ„ฐ์— ๊ธฐ๋ก๋œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ด ๋ ˆ์ง€์Šคํ„ฐ์˜ I/O ํฌํŠธ๋ฅผ ์ฝ์„ ๋•Œ ์†Œํ”„ํŠธ์›จ์–ด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์‚ฌ์‹ค์ƒ, ์ด๊ฒƒ์€ ์—ฌ๋Ÿฌ๋ถ„์ด ์œ ์šฉํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ๋“  ์—ฌ๋Ÿฌ๋ถ„์˜ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” "๋ฉ”๋ชจ๋ฆฌ"๋ฅผ ํ•œ ๋ฐ”์ดํŠธ ๋” ์ค€๋‹ค. ๋ฐ”์ด๋Ÿฌ์Šค ์ž‘์„ฑ์ž ์™ธ์— (์•„๋ฌด๋Ÿฐ ์•„์ด๋””์–ด๋ผ๋„ ๋‚ด์„œ๋Š” ์•ˆ ๋  ๊ฒƒ ๊ฐ™๋‹ค) ์ด ๋ ˆ์ง€์Šคํ„ฐ์—๋Š” ์‹ค์ œ๋กœ ์ข‹์€ ์šฉ๋„๊ฐ€ ์—†๋‹ค. ์›๋ž˜ 8250์€ ์ด ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ํ†ตํ•ด ์ „์†ก๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ UART์˜ ํŠน์ • ๋ณ€ํ˜•์„ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ด ์ œํ•œ์ ์ด๋‹ค. ๊ทธ ์นฉ์€ PC ๋””์ž์ธ์— ๋” ์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— (๊ทธ ํšŒ์‚ฌ๋“ค์€ 16550๊ณผ ๊ฐ™์ด ๋” ์ง„๋ณด๋œ ์นฉ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค), ๋‹น์‹ ์€ ๋Œ€๋ถ€๋ถ„์˜ ์ตœ์‹  PC ํƒ€์ž… ํ”Œ๋žซํผ์—์„œ ๊ทธ "๋ฒ„๊ทธ"๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์„ ๊ฒƒ์ด๋‹ค. ์•„๋ž˜์— ์‚ฌ์šฉ์ž ์ปดํ“จํ„ฐ์—์„œ ์‚ฌ์šฉ ์ค‘์ธ UART ์นฉ์„ ์†Œํ”„ํŠธ์›จ์–ด๋กœ ์‹๋ณ„ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๊ฐ ์ง๋ ฌ ํฌํŠธ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๊ฐ€ ์ œ๊ณต๋  ๊ฒƒ์ด๋‹ค.

UART์˜ ์†Œํ”„ํŠธ์›จ์–ด ์‹๋ณ„

์†Œํ”„ํŠธ์›จ์–ด ๋ฃจํ‹ด๋งŒ์œผ๋กœ ์ปดํ“จํ„ฐ ์‹œ์Šคํ…œ์˜ ๋งŽ์€ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ, ์ปดํ“จํ„ฐ์—์„œ๋„ ๋ฐœ๊ฒฌ๋œ UART์˜ ์–ด๋–ค ๋ฒ„์ „์ด๋‚˜ ๋ณ€ํ˜•์„ ๊ฐ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ ์ด์œ ๋Š” UART ์นฉ์˜ ๊ฐ ๋ฒ„์ „๋งˆ๋‹ค ๋ช‡ ๊ฐ€์ง€ ๊ณ ์œ ํ•œ ํŠน์„ฑ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ œ๊ฑฐ ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉด ์–ด๋–ค ๋ฒ„์ „์„ ๋‹ค๋ฃจ๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋Š” ์ง๋ ฌ I/O ๋ฃจํ‹ด์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ณ , ์ •๋ณด๋ฅผ ์ „์†กํ•˜๊ณ  ์ „์†กํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํผ๊ฐ€ ์žˆ๋Š”์ง€ ์•Œ๊ณ , PC์˜ ์žฅ๋น„๋ฅผ ๋” ์ž˜ ์•Œ๊ณ ์ž ํ•˜๋Š” ๊ฒฝ์šฐ์— ์œ ์šฉํ•œ ์ •๋ณด๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.

UART ๋ฒ„์ „์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ํ•œ ์˜ˆ๋Š” Scratch Register๊ฐ€ ์ž‘๋™ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋‹ค. ์ฒ˜์Œ 8250๊ณผ 8250A ์นฉ์—๋Š” ์Šคํฌ๋ž˜์น˜ ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์นฉ ๋ชจ๋ธ์˜ ์„ค๊ณ„์— ๊ฒฐํ•จ์ด ์žˆ์—ˆ๋‹ค. ๋งŒ์•ฝ ๋‹น์‹ ์ด ์ด ๋ ˆ์ง€์Šคํ„ฐ์— ์•ฝ๊ฐ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ผ๋‹ค๊ฐ€ ๊ทธ๊ฒƒ์ด ๋‹ค์‹œ ๋ฐ”๋€๋‹ค๋ฉด, ๋‹น์‹ ์€ ๋‹น์‹ ์˜ ์ปดํ“จํ„ฐ์— ์žˆ๋Š” UART๊ฐ€ ์ด ๋‘ ๊ฐœ์˜ ์นฉ ๋ชจ๋ธ ์ค‘ ํ•˜๋‚˜๋ผ๋Š” ๊ฒƒ์„ ์•Œ ๊ฒƒ์ด๋‹ค.

FIFO ์ œ์–ด ๋ ˆ์ง€์Šคํ„ฐ๊ฐ€ ์žˆ๋Š” ๊ณณ์ด ๋˜ ์žˆ๋‹ค. ์ด ๋ ˆ์ง€์Šคํ„ฐ์˜ ๋น„ํŠธ "0"์„ ๋…ผ๋ฆฌ 1๋กœ ์„ค์ •ํ•˜๋ฉด, ์ด ์นฉ์˜ ์ตœ์‹  ๋ฒ„์ „์—์„œ๋งŒ ๋ณผ ์ˆ˜ ์žˆ๋Š” UART์˜ FIFO๋ฅผ ํ™œ์„ฑํ™”ํ•˜๋ ค๊ณ  ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๋น„ํŠธ "6"๊ณผ "7"์„ ์ฝ์œผ๋ฉด 16550 ๋˜๋Š” 16550A ์นฉ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š”์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ด๋‹ค. ๋น„ํŠธ "5"๋Š” ์นฉ์ด 16750์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ด๋‹ค.

๋‹ค์Œ์€ ์‚ฌ์šฉ ์ค‘์ธ ์นฉ์˜ ์ข…๋ฅ˜๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์ „์ฒด ์˜์‚ฌ ์ฝ”๋“œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.

Set the value "0xE7" to the FCR to test the status of the FIFO flags.
Read the value of the IIR to test for what flags actually got set.
If Bit 6 is set Then
  If Bit 7 is set Then
    If Bit 5 is set Then
      UART is 16750
    Else
      UART is 16550A
    End If
  Else
    UART is 16550
  End If
Else you know the chip doesn't use FIFO, so we need to check the scratch register
  Set some arbitrary value like 0x2A to the Scratch Register.  
  You don't want to use 0xFF or 0x00 as those might be returned by the Scratch Register instead for a false postive result.
  Read the value of the Scratch Register
  If the arbitrary value comes back identical
    UART is 16450
  Else
    UART is 8250
  End If
End If

Last updated