¿ù°£ ¸¶ÀÌÅ©·Î ¼ÒÇÁÆ®¿þ¾î...


 


[½ÇÀü °­ÀÇ½Ç VHDL]

Çϵå¿þ¾î ¼³°è, ÀÌÁ¦´Â ÇÁ·Î±×·¡¹ÖÀ¸·Î! 3

³ªÀÇ Ã¹ Çϵå¿þ¾î ÇÁ·Î±×·¡¹Ö, ÀÚÆDZâ ÇÁ·ÎÁ§Æ®

 

Áö³­ µÎ ¹øÀÇ ¿¬À縦 ÅëÇØ ´Ù¾çÇÑ µðÁöÅРȸ·ÎÀÇ ±¸Çö ¹æ¹ý°ú ´ëÇ¥ÀûÀÎ Çϵå¿þ¾î ±â¼ú ¾ð¾îÀÎ VHDL¿¡ ´ëÇØ »ìÆìºÃ´Ù. '¹é¹®ÀÌ ºÒ¿©ÀÏÇà'À̶ó Çß´ø°¡. ÀÌÁ¦´Â Á÷Á¢ ½Ç½ÀÀ» ÇØ º¼ Â÷·ÊÀÌ´Ù. ¸ÕÀú ±âÃÊÀûÀÎ µðÁöÅРȸ·Î¿¡ ´ëÇÑ ÇÁ·Î±×·¡¹ÖÀ» ¼öÇàÇÒ °ÍÀÌ´Ù. À̸¦ ¹ÙÅÁÀ¸·Î Á»´õ º¹ÀâÇÑ ÀÚÆDZâÀÇ µ¿ÀÛÀ» ¹¦»çÇÒ ¼ö ÀÖ´Â Çϵå¿þ¾î ¸ðµâÀ» ¼³°èÇØ º¸ÀÚ.

 

¿¬Àç¼ø¼­

 

 

1ȸ 2002.8 | ÃÖ»óÀÇ Çϵå¿þ¾î ¼³°è ¹æ¹ýÀ» ã¾Æ¶ó

2ȸ 2002.9 | ¿Ïº®ÇÑ Çϵå¿þ¾î ±â¼ú¾ð¾î, VHDL

3ȸ 2002.10| ³ªÀÇ Ã¹ Çϵå¿þ¾î ÇÁ·Î±×·¡¹Ö, ÀÚÆDZ⠼³°è ÇÁ·ÎÁ§Æ®

 

¿¬Àç°¡À̵å

 

 

¿î¿µÃ¼Á¦ | À©µµ¿ì 98 ÀÌ»ó

°³¹ßµµ±¸ | Xilinx Foundation (PC & UNIX)

±âº»Áö½Ä | ³í¸® ȸ·Î, µðÁöÅÐ ½Ã½ºÅÛ

ÀÀ¿ëºÐ¾ß | µðÁöÅРȸ·ÎÀÇ ¼³°è, ASIC/FPGAÀÇ ¼³°è

 

 

°ûÁ¾¿í celot@naver.com

 

Çϵå¿þ¾î¸¦ µðÀÚÀÎÇÒ ¼ö ÀÖ´Â ¾ð¾î VHDL°ú Verilog ÇÁ·Î±×·¡¹Ö¿¡ °ü½ÉÀ» °®°í ÀÖÀ¸¸ç, ¸µ ±â¹Ý °í¼º´É ´ëÇü ÄÄÇ»ÅÍ °³¹ß ÇÁ·ÎÁ§Æ®¿¡ Âü¿©ÇÑ ¹Ù ÀÖ´Ù. ÀÚ½ÅÀ» Çϵå¿þ¾î ¿£Áö´Ï¾î¶ó°í ¼Ò°³ÇÏ´Â ÇÊÀÚ´Â ÀÌ ±ÛÀ» ÅëÇØ µðÁöÅÐ ½Ã½ºÅÛ ¼³°è¿Í Çϵå¿þ¾î ±â¼ú ¾ð¾î¸¦ ÀÌ¿ëÇÑ ÇÁ·Î±×·¡¹Ö¿¡ °ü½ÉÀ» °®´Â µ¶ÀÚ°¡ ¸¹¾ÆÁö±â¸¦ ¹Ù¶õ´Ù°í.

 

Áö³­ ¿¬Àç¿¡¼­ ¿ì¸®´Â ´Ù¾çÇÑ Çϵå¿þ¾îÀÇ ¼³°è ¹æ¹ýÀ» ¾Ë¾ÆºÃ´Ù. ±×¸®°í ¼³°èÇÏ´Â ½Ã½ºÅÛÀÇ Æ¯Â¡¿¡ µû¶ó¼­ ¿©·¯°¡Áö ¼³°è ¹æ¹ýÀÌ Á¸ÀçÇÑ´Ù´Â »ç½ÇÀ» ¾Ë¾Ò´Ù. ±× Áß¿¡¼­µµ Çϵå¿þ¾îÀÇ µ¿ÀÛÀ» ¹¦»çÇÒ ¼ö ÀÖ´Â ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÎ VHDL¿¡ ´ëÇØ º°µµÀÇ ¿¬À縦 ÇÒ¾ÖÇØ °¡¸é¼­ ÀÚ¼¼È÷ »ìÆìºÃ´Ù. À̹ø È£¿¡¼­´Â Áö±Ý±îÁöÀÇ Áö½ÄÀ» ¹ÙÅÁÀ¸·Î Á÷Á¢ ÇϳªÇϳª ÇÁ·Î±×·¡¹Ö ÇØ º¸ÀÚ. º» ¿¬Àç¿¡¼­ ÃÖÁ¾ ¸ñÇ¥·Î »ïÀº ½Ç½À °úÁ¦´Â ÀÚÆDZâÀÇ µ¿ÀÛÀ» ¹¦»çÇÒ ¼ö ÀÖ´Â Çϵå¿þ¾î ¸ðµâÀÇ ¼³°èÀÌ´Ù. ÇÏÁö¸¸ óÀ½ºÎÅÍ ÀÌ¿Í °°Àº ¸ðµâÀ» ¼³°èÇϱ⿡´Â ±âº»ÀûÀÎ ¹è°æ Áö½ÄÀÌ ÇÊ¿äÇÏ´Ù. µû¶ó¼­ À̹ø ¿¬Àç¿¡¼­´Â µðÁöÅРȸ·Î¿¡ ´ëÇÑ ±âº» ¹è°æ¿¡ ´ëÇØ ¼³¸íÇÑ µÚ À̸¦ ÀÀ¿ëÇÏ°í ÁÖÁ¦¸¦ Á»´õ È®Àå½ÃÄÑ ¿ì¸®ÀÇ ÃÖÁ¾ °á°ú¹°ÀÎ ÀÚÆDZâ ÇÁ·ÎÁ§Æ®¸¦ ¼öÇàÇØ º¸ÀÚ.

 

µðÁöÅРȸ·ÎÀÇ ¸ðµ¨¸µ

µðÁöÅРȸ·Î´Â ÀϹÝÀûÀ¸·Î Á¶ÇÕ È¸·Î(combinational circuit)¿Í ¼øÂ÷ ȸ·Î(sequential circiut)·Î ±¸ºÐµÈ´Ù. Á¶ÇÕ È¸·Î´Â ÇöÀçÀÇ ÀÔ·ÂÀÌ ÁÖ¾îÁö¸é Áï½Ã ±×¿¡ ´ëÇÑ Ãâ·ÂÀÇ °ªÀÌ °áÁ¤µÇ´Â ȸ·Î¸¦ ÀǹÌÇÑ´Ù. ¹Ý¸é ¼øÂ÷ ȸ·Î´Â ÇöÀçÀÇ ÀÔ·ÂµÈ Á¤º¸¿Í °ú°Å¿¡ ÀúÀåµÇ¾î ÀÖ¾ú´ø ±â¾ï °ª¿¡ ÀÇÇؼ­ Ãâ·Â °ªÀÌ °áÁ¤µÇ´Â ȸ·Î¸¦ ¸»ÇÑ´Ù. Áï ÇöÀçÀÇ ÀԷ°ú ȸ·ÎÀÇ ±â¾ïµÈ »óÅ¿¡ µû¶ó¼­ ±× Ãâ·ÂÀÌ °áÁ¤µÊÀ» ÀǹÌÇÑ´Ù. ´ç¿¬È÷ ȸ·ÎÀÇ º¹Àâµµ·Î µûÁöÀÚ¸é ¼øÂ÷ ȸ·Î°¡ Á¶±Ý ´õ º¹ÀâÇÑ ÇüŸ¦ º¸ÀδÙ. ÇÏÁö¸¸ ±â¾ïÇÒ ¼ö Àִٴ Ư¼º ¶§¹®¿¡ ¼øÂ÷ ȸ·Î°¡ ¾ø´Â µðÁöÅÐ ½Ã½ºÅÛÀº °ÅÀÇ ¾ø´Ù°í ºÁµµ ¹«¹æÇÒ °ÍÀÌ´Ù. ±×·³ Áö±ÝºÎÅÍ Á¶ÇÕ È¸·Î¿Í ¼øÂ÷ ȸ·Î¿¡ ´ëÇؼ­ Çϳª¾¿ ¾Ë¾Æº¸±â·Î ÇÏÀÚ.

 

Á¶ÇÕ È¸·ÎÀÇ ¸ðµ¨¸µ

¸ÕÀú »ìÆ캼 ȸ·Î´Â Á¶ÇÕ È¸·ÎÀÌ´Ù. Á¶ÇÕ ³í¸® ȸ·Î´Â ¾Õ¼­ ¼³¸íÇÑ ¹Ù¿Í °°ÀÌ Ãâ·ÂÀÌ ÇöÀçÀÇ ÀԷ¿¡ ÀÇÇؼ­¸¸ °áÁ¤µÇ´Â ȸ·Î¸¦ ÀǹÌÇÑ´Ù. ÀÌ·¯ÇÑ Á¶ÇÕ ³í¸® ȸ·ÎÀÇ ±âº»ÀûÀÎ ÇüÅ°¡ <±×¸² 1>¿¡ ³ªÅ¸³ª ÀÖ´Ù.

ÀÌ·¯ÇÑ Á¶ÇÕ ³í¸® ȸ·ÎÀÇ ´ëÇ¥ÀûÀÎ ¿¹·Î¼­ ±âº»ÀûÀÎ »ê¼ú ¿¬»êÀ» °¡´ÉÄÉ ÇÏ´Â °¡»ê±â/°¨»ê±â, ±×¸®°í ¿ÜºÎÀÇ ÀÔ·ÂÀ» ³»ºÎ ÇüÅ·Π¹Ù²Ù¾î ÁÖ°í ¶Ç ±× ¹Ý´ëÀÇ µ¿ÀÛÀ» ÃëÇÏ´Â ÀÎÄÚ´õ/µðÄÚ´õ, ¿©·¯ ÀÔ·Â Áß¿¡¼­ ÇϳªÀÇ °ªÀ» Ãâ·ÂÇÏ´Â ¸ÖƼÇ÷º¼­(multiplexer), ±×¸®°í ÀÌ¿Í´Â ¹Ý´ëÀÇ µ¿ÀÛÀ» ÇÏ´Â µð¸ÖƼÇ÷º¼­(demultiplexer), ¿©·¯ ÀÔ·Â °ªµéÀ» ºñ±³ÇÏ´Â ºñ±³±â(comparator) µîÀ» ±× ¿¹·Î µé ¼ö ÀÖ´Ù. ¹«¾ùº¸´Ùµµ °¡Àå ´ëÇ¥ÀûÀÎ ¿¹´Â ¹Ù·Î ALU(Arithmetic & Logic Unit)ÀÏ °ÍÀÌ´Ù. ÈçÈ÷ ÄÄÇ»ÅÍÀÇ ¸ÞÀÎ µÎ³ú¶ó ÇÒ ¼ö ÀÖ´Â CPU´Â ³»ºÎÀûÀ¸·Î °è»ê ¸ðµâ, Á¦¾î ¸ðµâ, ±â¾ï ¸ðµâ°ú °°Àº ¿©·¯ ¸ðµâ·Î ±¸¼ºµÇ¾î ÀÖ´Ù. ±× Áß¿¡¼­ »ê¼ú/³í¸® ¿¬»êÀ» ´ã´çÇÏ´Â ¸ðµâÀÌ ¹Ù·Î ALUÀÌ´Ù.

 

ALU¸¦ ¸ðµ¨¸µÇÏÀÚ

±×·³ Áö±ÝºÎÅÍ VHDLÀ» »ç¿ëÇØ ALU¸¦ Á÷Á¢ ¸ðµ¨¸µÇØ º¸ÀÚ. Áß¾Óó¸® ÀåÄ¡´Â ±âº»ÀûÀ¸·Î ·¹Áö½ºÅÍ¿Í °°Àº ±â¾ï ÀåÄ¡, Á¦¾î ÀåÄ¡µî ¿©·¯ ¼¼ºÎ ¸ðµâ·Î ÀÌ·ïÁ® Àִµ¥ ±× Áß¿¡¼­ Á¦ÀÏ ÇÙ½ÉÀÌ µÇ´Â ¸ðµâÀÌ ¹Ù·Î ALUÀÌ´Ù. ÀÌ·± ALU¾ß¸»·Î ¼ø¼öÇÑ Á¶ÇÕ È¸·Îµé·Î ÀÌ·ïÁ® ÀÖ´Â ¸ðµâÀÌ´Ù. ´õÇϱâ/»©±â¿Í °°Àº »ê¼ú ¿¬»ê»Ó¸¸ ¾Æ´Ï¶ó °¢Á¾ ³í¸® ¿¬»êÀÌ °¡´ÉÇÏ¸ç ¶ÇÇÑ n°³ÀÇ ÀÔ·ÂÀÌ ÀÖÀ» °æ¿ì À̸¦ Çؼ®ÇØ ¾î¶² ¿¬»ê ¸ðµâ¿¡ º¸³¾ °ÍÀÎÁö¸¦ °áÁ¤ÇÑ´Ù. ¾Õ¼­ ¿¹·Îµç Á¶ÇÕ ³í¸®È¸·ÎÀÇ ÃÑ ÁýÇÕü¶ó°í Çصµ °ú¾ðÀÌ ¾Æ´Ò °ÍÀÌ´Ù.

Á¶±Ý ´õ ±¸Ã¼È­ÇÏÀÚ. ¿ì¸®°¡ ¸ðµ¨¸µÇÒ ALU´Â ½ÇÁ¦ ½Ã½ºÅÛ¿¡¼­ »ç¿ëµÇ´Â ALUº¸´Ù ¾î´À Á¤µµ Á¦¾àÀÌ ÀÖ±â´Â ÇÏ´Ù. ÇÏÁö¸¸ À̸¦ È®Àå½ÃÅ°°í ³ª¸§´ë·ÎÀÇ ÃÖÀûÈ­ °úÁ¤À» °ÅÄ£ °ÍÀÌ »ó¿ëÈ­µÇ¾î ÀÖ´Â ALU¶ó°í ÇßÀ» ¶§ ¿ì¸®°¡ µðÀÚÀÎÇÏ°Ô µÉ ALU°¡ Çö½Ç°ú Å©°Ô µ¿¶³¾îÁø °Í¸¸Àº ¾Æ´Ï´Ù.

<Ç¥ 1>¿¡ ¿ì¸®°¡ ±¸ÇöÇÏ°íÀÚ ÇÏ´Â ALUÀÇ µ¿ÀÛÀ» Á¤¸®Çß´Ù. ÀÌ È¸·Î´Â S4ºÎÅÍ S0±îÁöÀÇ ½ÅÈ£¿Í CinÀÇ Á¦¾î ½ÅÈ£ÀÇ ÀԷ¿¡ µû¶ó¼­ °¢°¢ µÎ ÀÔ·Â, Áï A¿Í BÀÇ °ªÀ» ÀÌ¿ëÇØ Ãâ·Â Y¸¦ ¸¸µé¾î ³»´Â ¿ªÇÒÀ» ÇÏ°Ô µÈ´Ù. À̵é Á¦¾î ½ÅÈ£ÀÇ Á¶ÇÕ¿¡ µû¶ó¼­ °¢°¢ »ê¼ú ¿¬»ê°ú ³í¸® ¿¬»ê ±×¸®°í À̵¿ ¿¬»êÀ» ¼öÇàÇÏ°Ô µÈ´Ù.

<Ç¥ 1> ALU ±â´Éµµ

S4

S3

S2

S1

S0

Cin

¼öÇà ¿¬»ê

±â´É

±¸ÇöºÎ

0

0

0

0

0

0

Y <= A

AÀÇ °ª Àü¼Û

»ê¼ú ¿¬»êºÎ

0

0

0

0

0

1

Y <= A + 1

AÀÇ °ª 1 Áõ°¡

»ê¼ú ¿¬»êºÎ

0

0

0

0

1

0

Y <= A + B

´õÇϱâ

»ê¼ú ¿¬»êºÎ

0

0

0

0

1

1

Y <= A + B + 1

¹Þ¾Æ ¿Ã¸²ÀÌ ÀÖ´Â ´õÇϱâ

»ê¼ú ¿¬»êºÎ

0

0

0

1

0

0

Y <= A + B¡¯

A¿Í BÀÇ 1ÀÇ º¸¼ö¿ÍÀÇ ´õÇϱâ

»ê¼ú ¿¬»êºÎ

0

0

0

1

0

1

Y <= A + B¡¯+ 1

»©±â

»ê¼ú ¿¬»êºÎ

0

0

0

1

1

0

Y <= A - 1

AÀÇ °ª 1 °¨¼Ò

»ê¼ú ¿¬»êºÎ

0

0

0

1

1

1

Y <= A

AÀÇ °ª Àü¼Û

»ê¼ú ¿¬»êºÎ

0

0

1

0

0

0

Y <= A AND B

AND

³í¸® ¿¬»êºÎ

0

0

1

0

1

0

Y <= A OR B

OR

³í¸® ¿¬»êºÎ

0

0

1

1

0

0

Y <= A XOR B

EXCLUSIVE OR

³í¸® ¿¬»êºÎ

0

0

1

1

1

0

Y <= A¡¯

COMPLEMENT

³í¸® ¿¬»êºÎ

0

0

0

0

0

0

Y <= A

AÀÇ Àü¼Û

À̵¿ ¿¬»êºÎ

0

1

0

0

0

0

Y <= shl A

AÀÇ ÁÂÃø À̵¿

À̵¿ ¿¬»êºÎ

1

0

0

0

0

0

Y <= shr A

AÀÇ ¿ìÃø À̵¿

À̵¿ ¿¬»êºÎ

1

1

0

0

0

0

Y <= 0

0ÀÇ Àü¼Û

À̵¿ ¿¬»êºÎ

<¸®½ºÆ® 1>ÀÌ <Ç¥ 1>ÀÇ ALU ±â´ÉÀ» VHDLÀ» ÀÌ¿ëÇØ ÇÁ·Î±×·¡¹ÖÇÑ ÄÚµåÀÌ´Ù. ALU¶ó´Â ÇϳªÀÇ ¿£ÅÍƼ¸¦ ¼±¾ðÇßÀ¸¸ç ÀÌ ¸ðµâÀº Sell, CarryIn ±×¸®°í A, B¸¦ ÀÔ·ÂÀ¸·Î °®°í Y¸¦ Ãâ·Â °ªÀ¸·Î ³»º¸³»°Ô µÈ´Ù. ÀÌ¿Í °°Àº Äڵ带 ȸ·Îµµ·Î ³ªÅ¸³»¸é <±×¸² 2>¿Í °°ÀÌ µÉ °ÍÀÌ´Ù.

<¸®½ºÆ® 1> ALU ±â´É ÄÚµå

-- ¶óÀ̺귯¸®ÀÇ ÁöÁ¤ ¹× ÆÐÅ°Áö È£Ãâ
library IEEE;
use IEEE.STD_LOGIC_1164.all;

-- »ê¼ú ¿¬»êÀ» À§ÇÑ ÆÐÅ°Áö È£Ãâ
use IEEE.NUMERIC_STD.all;

-- ¿£ÅÍƼÀÇ ¼±¾ð¹®
entity ALU is
  port ( -- ÀÔ·Â Æ÷Æ®
    sel: in unsigned(4 downto 0);
    carryin: in std_logic;
    A, B: in unsigned(7 downto 0);
    -- Ãâ·Â Æ÷Æ®
    Y: out unsigned(7 downto 0)
  );
end entity ALU;

-- ¾ÆÅ°ÅØóÀÇ ¼±¾ð¹®
architecture ALU_body of ALU is
begin

  ALU_AND_SHIFT: process(sel, A, B, carryin)
    variable sel0_1_carryin : unsigned(2 downto 0);
    variable LogicUnit, ArithUnit,
    ALU_Noshift: unsigned(7 downto 0);
  begin
  -- ³í¸® ¿¬»ê ºÎºÐ
    Logic_Unit: case sel(1 downto 0) is
      when "00"=> LogicUnit := A and B;
      when "01"=> LogicUnit := A or B;
      when "10"=> LogicUnit := A xor B;
      when "11"=> LogicUnit := not A;
      when others => LogicUnit := (others => 'X');
    end case Logic_Unit;

  -- »ê¼ú ¿¬»ê ºÎºÐ
    sel0_1_carryin := sel(1 downto 0) & carryin;
    Arith_Unit: case sel0_1_carryin is
      when "000"=> ArithUnit := A;
      when "001"=> ArithUnit := A + 1;
      when "010"=> ArithUnit := A + B;
      when "011"=> ArithUnit := A + B + 1;
      when "100"=> ArithUnit := A + not B;
      when "101"=> ArithUnit := A - B;
      when "110"=> ArithUnit := A - 1;
      when "111"=> ArithUnit := A;
      when others => ArithUnit := (others => 'X');
    end case Arith_Unit;

  -- ³í¸® ¿¬»ê°ú »ê¼ú ¿¬»êÀÇ ¸ÖƼÇ÷º½Ì
    LA_MUX: if (sel(2) = '1') then
      ALU_Noshift := LogicUnit;
    else
      ALU_Noshift :=ArithUnit;
    end if LA_MUX;

  -- ½ÃÇÁÆ® ¿¬»ê ºÎºÐ
    Shift: case sel(4 downto 3) is
      when "00"=> Y <= ALU_Noshift;
      when "01"=> Y <= Shift_left(ALU_Noshift, 1);
      when "10"=> Y <= Shift_right(ALU_Noshift, 1);
      when "11"=> Y <= (others => '0');
      when others => Y <= (others => 'X');
    end case Shift;

  end process ALU_AND_SHIFT;

end architecture ALU_body;

 

¼øÂ÷ ȸ·ÎÀÇ ¸ðµ¨¸µ

´ÙÀ½À¸·Î ¾Ë¾ÆºÁ¾ß ÇÒ È¸·Î´Â ¼øÂ÷ ȸ·ÎÀÌ´Ù. ¼øÂ÷ ȸ·Î´Â ¹«¾ùº¸´Ùµµ ÀÌÀüÀÇ °ªÀ̳ª »óŸ¦ ±â¾ïÇÒ ¼ö ÀÖ´Ù´Â »ç½ÇÀÌ Á¶ÇÕ È¸·Î¿Í ºñ±³ÇßÀ» ¶§ °¡Àå Å« Â÷ÀÌÁ¡À̶ó ÇÒ ¼ö ÀÖ´Ù. Çø³Ç÷Ó(flip-flop)°ú Á¶ÇÕ ³í¸®È¸·Îµé·Î ±¸¼ºµÇ¸ç, Ãâ·ÂÀº ¿ÜºÎ ÀԷ°ú Çø³Ç÷ÓÀÇ ÇöÀç »óÅ¿¡ ÀÇÇØ °áÁ¤µÇ´Â ³í¸® ȸ·ÎÀÌ´Ù. ¿©±â¼­ Çø³Ç÷ÓÀÌ ¹Ù·Î ±â¾ï ÀåÄ¡·Î¼­ÀÇ ¿ªÇÒÀ» ÇÏ°Ô µÇ´Â °ÍÀÌ´Ù. <±×¸² 3>¿¡ ÀÌ·¯ÇÑ ¼øÂ÷ ȸ·ÎÀÇ ±âº» ±¸Á¶°¡ ³ªÅ¸³ª ÀÖ´Ù.

¼øÂ÷ ȸ·ÎÀÇ ´ëÇ¥ÀûÀÎ ¿¹·Î¼­ ·¹Áö½ºÅ͸¦ ²ÅÀ» ¼ö ÀÖ´Ù. ·¹Áö½ºÅÍ´Â CPU ³»ºÎ¿¡¼­ ƯÁ¤ µ¥ÀÌÅ͸¦ ÀúÀåÇÏ°í ÀÖ´Â ÀÏÁ¾ÀÇ ±â¾ïÀåÄ¡ÀÌ´Ù. ¶ÇÇÑ Ä«¿îÅ͵µ ¼øÂ÷ ȸ·Î·Î ±¸ÇöµÈ´Ù. ÀÌÀüÀÇ °ªÀ» ±â¾ïÇØ¾ß ´ÙÀ½ ¼ýÀÚ³ª »óŸ¦ ³ªÅ¸³¾ ¼ö ÀÖÁö ¾Ê°Ú´Â°¡.

 

Ä«¿îÅ͸¦ ¸ðµ¨¸µÇÏÀÚ

¾Õ¼­ Á¶ÇÕ ³í¸® ȸ·Î¿¡ ´ëÇØ ¾Ë¾Æº¸¸é¼­ ALU¸¦ VHDL·Î Á÷Á¢ ¸ðµ¨¸µÇß´Ù. ÀÌÁ¦´Â ¼øÂ÷ ȸ·ÎÀÇ ÇÑ °¡Áö ¿¹¸¦ °¡Áö°í À̸¦ ¸ðµ¨¸µÇÒ Â÷·ÊÀÌ´Ù. ¿©±â¼­´Â Ä«¿îÅ͸¦ °®°í ½ÇÁ¦ VHDL·Î ¸ðµ¨¸µÇØ º¸±â·Î ÇÑ´Ù. ¸ÕÀú Ä«¿îÅÍ¿¡ ´ëÇØ Á»´õ ÀÚ¼¼È÷ ¾Ë¾Æº¸ÀÚ.

µðÁöÅРȸ·Î¿¡¼­´Â ƯÁ¤ ½Ã°£ ³»¿¡ ÀÔ·ÂµÈ Å¬·° ¼ö¸¦ Çì¾Æ·Á¼­(counting) ÁÖÆļö¸¦ ÃøÁ¤Çϱ⵵ ÇÏ°í, µ¿ÀÛÀÇ ¼ø¼­¸¦ Á¦¾îÇϱ⵵ ÇÑ´Ù. ÀÌ¿Í °°Àº ¿ëµµ·Î Ä«¿îÅ͸¦ »ç¿ëÇϸç ÀÌ·¯ÇÑ Ä«¿îÅÍ´Â ÁÖ·Î Çø³Ç÷ÓÀ» »ç¿ëÇØ ±¸ÇöÇÑ´Ù. ÀϹÝÀûÀ¸·Î Ä«¿îÅÍ´Â <Ç¥ 2>¿Í °°ÀÌ ¿ÜºÎ¿¡¼­ Ŭ·°ÀÌ ÀÔ·ÂµÉ °æ¿ì ±× °ªÀÌ 1¾¿ Áõ°¡ÇÏ°Ô µÈ´Ù. ¿©±â¼­ Q3-Q0±îÁöÀÇ Àǹ̴ 4ºñÆ® 16Áø Ä«¿îÅ͸¦ ÀǹÌÇϸç, Q(t)´Â ÇöÀç Ŭ·°ÀÌ µé¾î¿À±â ÀüÀÇ °ªÀ» ÀǹÌÇÏ°í Q(t+1)ÀÇ °ªÀº ÇöÀçÀÇ Å¬·°ÀÌ µé¾î¿À°í ³­ ÀÌÈÄÀÇ °ªÀ» ÀǹÌÇÑ´Ù.

<Ç¥ 2> 16Áø Ä«¿îÅÍÀÇ ±â´Éµµ

ÀÌÀü »óÅÂ

´ÙÀ½ »óÅÂ

Q3(t)

Q2(t)

Q1(t)

Q0(t)

Q3(t+1)

Q2(t+1)

Q1(t+1)

Q0(t+1)

0

0

0

0

0

0

0

1

0

0

0

1

0

0

1

0

0

0

1

0

0

0

1

1

0

0

1

1

0

1

0

0

0

1

0

0

0

1

0

1

0

1

0

1

0

1

1

0

0

1

1

0

0

1

1

1

0

1

1

1

1

0

0

0

1

0

0

0

1

0

0

1

1

0

0

1

1

0

1

0

1

0

1

0

1

0

1

1

1

0

1

1

1

1

0

0

1

1

0

0

1

1

0

1

1

1

0

1

1

1

1

0

1

1

1

0

1

1

1

1

1

1

1

1

0

0

0

0

Ä«¿îÅÍ´Â ±× µ¿ÀÛ ±â¹ý¿¡ µû¶ó¼­ Ŭ·°¿¡ µ¿±âÈ­µÇ¾î ÀÖ´Â µ¿±â½Ä(synchronous) Ä«¿îÅÍ¿Í µ¿±âÈ­µÇ¾î ÀÖÁö ¾ÊÀº ºñµ¿±â½Ä(asynchronous) Ä«¿îÅÍ·Î ±¸ºÐÇÒ ¼ö ÀÖ´Ù. ¶ÇÇÑ Ä«¿îÅÍ ¸®¼Â ±â´ÉÀÇ À¯¹«¿¡ µû¶ó¼­ ¸®¼Â ±â´ÉÀÌ ÀÖ´Â Ä«¿îÅÍ¿Í ±×·¸Áö ¾Ê°í °è¼Ó ƯÁ¤ °ªÀÇ ¹üÀ§¸¦ ¼øȯÇÏ´Â ¼øȯ Ä«¿îÅÍ·Î ±¸ºÐµÇ±âµµ ÇÑ´Ù. <Ç¥ 3>¿¡ ¹æ±Ý ¼³¸íÇÑ Ä«¿îÅÍ°¡ ¿¹·Î ³ªÅ¸³ª ÀÖ´Ù. ¿ì¸®°¡ ¼³°èÇÒ Ä«¿îÅÍÀÌ´Ù. ±×·¯¸é <Ç¥ 3>À» ±âº»À¸·Î ÇØ ½ÇÁ¦·Î ¸ðµ¨¸µÇØ º¸ÀÚ.

<Ç¥ 3> µ¿±â½Ä/ºñµ¿±â½Ä ¸®¼Â Ä«¿îÅÍ

µ¿±â½Ä ¸®¼Â Ä«¿îÅÍ

ºñµ¿±â½Ä ¸®¼Â Ä«¿îÅÍ

ÀÔ·Â

 

Ãâ·Â

ÀÔ·Â

 

Ãâ·Â

Clock

Reset

Q3~Q0

Clock

Reset

Q3~Q0

Rising Edge

1

0

X

1

0

Rising Edge

0

Counting

Rising Edge

0

Counting

<¸®½ºÆ® 2>´Â <Ç¥ 3>¿¡ ³ªÅ¸³ª ÀÖ´Â Ä«¿îÅÍ Áß¿¡¼­ µ¿±â½Ä ¸®¼Â ±â´ÉÀÌ ÀÖ´Â 4ºñÆ® 16Áø Ä«¿îÅ͸¦ ³ªÅ¸³½´Ù. Áï ¸®¼ÂÀÌ µé¾î¿Íµµ Ŭ·°ÀÇ ÀÔ·ÂÀÌ µé¾î¿Í¾ß ½ÇÁ¦·Î Ä«¿îÅÍÀÇ °ªÀÌ ÃʱâÈ­µÊÀ» ÀǹÌÇÑ´Ù. VHDL ÄÚµå ³»ÀÇ ÁÖ¼®À» ÂüÁ¶Çϸé ÀÌÇØµÉ °ÍÀÌ´Ù. <¸®½ºÆ® 3>Àº <Ç¥ 3>¿¡ ³ªÅ¸³ª ÀÖ´Â Ä«¿îÅÍ Áß¿¡¼­ ºñµ¿±â½Ä ¸®¼Â ±â´ÉÀÌ ÀÖ´Â 4ºñÆ® 16Áø Ä«¿îÅ͸¦ ³ªÅ¸³½´Ù. Áï Ŭ·°ÀÇ ÀԷ°ú´Â ¹«°üÇÏ°Ô ¸®¼ÂÀÌ µé¾î¿À¸é ¹Ù·Î Ä«¿îÅÍÀÇ °ªÀ» ÃʱâÈ­ÇÏ´Â °ÍÀÌ´Ù.

<¸®½ºÆ® 2> µ¿±â½Ä ¸®¼Â Ä«¿îÅÍ

-- ¶óÀ̺귯¸®ÀÇ ÁöÁ¤ ¹× ÆÐÅ°Áö È£Ãâ
library IEEE;
use IEEE.std_logic_1164.all;

-- ºÎÈ£ ¾ø´Â »ê¼ú ¿¬»êÀ» À§ÇÑ ÆÐÅ°Áö È£Ãâ
use IEEE.std_logic_unsigned.all;

-- ¿£ÅÍƼ ¼±¾ð¹®
entity counter_4bit_sync_reset is
  port (
    -- ÀÔ·Â Æ÷Æ®
    clock: in STD_LOGIC;
    reset: in STD_LOGIC;

    -- Ãâ·Â Æ÷Æ®
    q : out STD_LOGIC_VECTOR(3 downto 0)
  );
end counter_4bit_sync_reset;

-- ¾ÆÅ°ÅØóÀÇ ¼±¾ð¹®
architecture counter_4bit_sync_reset_arch of counter_4bit_sync_reset is

  signal counting : std_logic_vector(3 downto 0);

begin
-- <<enter your statements here>>
  count : process(clock)
  begin
  -- Ŭ·°ÀÇ »ó½Â ¿¡Áö¿¡¼­ÀÇ µ¿ÀÛ(active high)
    if(rising_edge(clock))
      then if(reset = '1')
        -- ¸®¼ÂÀÌ 1À̸é Ãâ·ÂÀº 0
        then counting <= "0000";

        -- Ä«¿îÆ® + 1
        else counting <= counting +"0001";
      end if;
    end if;
  end process count;

  -- Ä«¿îÆ® °ªÀÇ Ãâ·Â
  q <= counting;
end counter_4bit_sync_reset_arch;

 

<¸®½ºÆ® 3> ºñµ¿±â½Ä ¸®¼Â Ä«¿îÅÍ

-- ¶óÀ̺귯¸®ÀÇ ÁöÁ¤ ¹× ÆÐÅ°Áö È£Ãâ
library IEEE;
use IEEE.std_logic_1164.all;

-- ºÎÈ£ ¾ø´Â »ê¼ú ¿¬»êÀ» À§ÇÑ ÆÐÅ°Áö È£Ãâ
use IEEE.std_logic_unsigned.all;

-- ¿£ÅÍƼ ¼±¾ð¹®
entity counter_4bit_async_reset is
  port (
    -- ÀÔ·Â Æ÷Æ®
    clock: in STD_LOGIC;
    reset: in STD_LOGIC;

    -- Ãâ·Â Æ÷Æ®
    q : buffer std_logic_vector(3 downto 0)
  );
end counter_4bit_async_reset;

-- ¾ÆÅ°ÅØó ¼±¾ð¹®
architecture counter_4bit_async_reset_arch of counter_4bit_async_reset is

begin
-- <<enter your statements here>>
  count: process(clock , reset)
  begin
    -- ¸®¼ÂÀÌ 1À̸é Ãâ·ÂÀº 0
    if(reset='1')
      then q <= "0000";

    -- Ŭ·°ÀÇ »ó½Â ¿¡Áö¿¡¼­ÀÇ µ¿ÀÛ(active high)
    elsif (rising_edge(clock))
      -- Ä«¿îÅÍ °ªÀÇ Ãâ·Â
      then q <= q + "0001";
    end if;
  end process;
end counter_4bit_async_reset_arch;

Àá±ñ ¿©±â¼­ ¿ì¸®°¡ °ÅÃÄ ¿Â ±æÀ» »ìÆ캸ÀÚ. ¿ì¸®´Â Áö±Ý±îÁö Á¶ÇÕ È¸·Î¿Í ¼øÂ÷ ȸ·Î¿¡ ´ëÇؼ­ »ìÆìºÃ´Ù. ±×·¸´Ù¸é ÀÌ·± °ÍµéÀÌ ÀÚÆDZ⸦ ¼³°èÇÏ´Â °Í°ú ¹«½¼ °ü°è°¡ Àִ°¡¶ó°í ¹Ý¹®ÇÒ ¼ö ÀÖ´Ù. ±×¸®°í ´ÙÀ½¿¡¼­ ¾Ë¾Æº¼ ½ºÅ×ÀÌÆ® ¸Ó½Å(FSM, Finite State Machine)Àº ¶Ç ¹«¾ùÀΰ¡. »ç½Ç ÀÌ ¸ðµç °ÍµéÀÌ ÀÚÆDZ⸦ ¼³°èÇϱâ À§ÇØ ¹Ì¸® ¾Ë°í ÀÖ¾î¾ß ÇÒ ³»¿ëµéÀÌ´Ù. ¸¶Ä¡ ¾î¶² ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ ¹®¹ýÀ» ¾È´Ù°í Çؼ­ ¹Ù·Î ÇÁ·Î±×·¡¹ÖÀÌ °¡´ÉÇÏÁö ¾Ê´Â °Í°ú °°Àº ÀÌÄ¡ÀÏ °ÍÀÌ´Ù. ¶§·Î´Â ÀڷᱸÁ¶¿¡ ´ëÇÑ Áö½Äµµ ÇÊ¿äÇÏ°í ¿î¿µÃ¼Á¦¿¡ ´ëÇÑ Áö½Äµµ ÇÊ¿äÇÑ °Íó·³ Çϵå¿þ¾î ÇÁ·Î±×·¡¹Öµµ ÀÌ¿Í ¸¶Âù°¡ÁöÀÌ´Ù. ¿ì¸®°¡ ¼³°èÇÒ ÀÚÆDZ⠸ðµâµµ Á¶ÇÕ È¸·Î¿Í ¼øÂ÷ ȸ·Î°¡ È¥ÇյǾî ÀÖ´Â ÇüÅÂÀÌ´Ù. ¶ÇÇÑ ÀÌÁ¦ ¼³¸íÇÒ ½ºÅ×ÀÌÆ® ¸Ó½Å ¿ª½Ã ÀÚÆDZ⸦ ¼³°èÇÏ´Â µ¥ ÀÌ¿ëÇÏ°Ô µÈ´Ù. ±×·³ Áö±ÝºÎÅÍ ½ºÅ×ÀÌÆ® ¸Ó½ÅÀ» ÀÌ¿ëÇÑ VHDL ¸ðµ¨¸µ¿¡ ´ëÇØ ¾Ë¾Æº¸ÀÚ.

 

½ºÅ×ÀÌÆ® ¸Ó½ÅÀ» ÀÌ¿ëÇÑ ¼³°è

½ºÅ×ÀÌÆ® ¸Ó½ÅÀº ¾Õ¼­ ¼³¸íÇÑ ¼øÂ÷ ȸ·Î¸¦ Á¦¾îÇÏ´Â Á¶±Ý ´õ º¹ÀâÇÑ ÇüÅÂÀÇ È¸·Î¸¦ ¼³°èÇÏ´Â µ¥ »ç¿ëµÈ´Ù. ¼øÂ÷ ȸ·Î´Â Ãâ·ÂÀÌ ÇöÀçÀÇ ÀԷ¸¸À¸·Î °áÁ¤µÇ´Â °ÍÀÌ ¾Æ´Ï¶ó °ú°ÅÀÇ Ãâ·Â°ú ÇöÀçÀÇ ÀÔ·Â ¹× ±â¾ïµÈ °ª¿¡ µû¶ó Ãâ·ÂÀÌ °áÁ¤µÇ´Âµ¥ ÀÌ·± ±âº» ±¸Á¶¸¦ ¹ÙÅÁÀ¸·Î »óÅÂ(state)¶ó´Â °³³äÀ» Ãß°¡ÇÑ °ÍÀ» ½ºÅ×ÀÌÆ® ¸Ó½ÅÀ̶ó ÇÑ´Ù.

<±×¸² 4>¿¡¼­ º¸´Â ¹Ù¿Í °°ÀÌ ½ºÅ×ÀÌÆ® ¸Ó½ÅÀº Å©°Ô ¼¼ ºÎºÐÀ¸·Î ³ª´¶´Ù. ÇöÀçÀÇ »óŸ¦ ±â¾ïÇÏ°í ÀÖ´Â ¸ðµâ°ú ´ÙÀ½ »óŸ¦ °è»êÇØ ³»±â À§ÇÑ ¸ðµâ ±×¸®°í ÀûÀýÇÑ Ãâ·ÂÀ» ¸¸µé¾î ³»±â À§ÇÑ ¸ðµâÀÌ ±×°ÍÀÌ´Ù. ¿©±â¼­ ÇöÀçÀÇ »óŸ¦ ±â¾ïÇÏ´Â ¸ðµâÀº ¼øÂ÷ ȸ·Î·Î ±¸¼ºÀÌ µÇ¸ç ´ÙÀ½ »óÅÂ¿Í Ãâ·ÂÀ» »ý¼ºÇØ ³»´Â ¸ðµâÀº Á¶ÇÕ È¸·Î·Î ±¸¼ºÀÌ µÈ´Ù. ±×·³ ÀÌÁ¦ ÇÑ °¡Áö ¿¹Á¦¸¦ ÅëÇØ ÀÌ·¯ÇÑ ½ºÅ×ÀÌÆ® ¸Ó½ÅÀ» ÀÌ¿ëÇÑ VHDL ¸ðµ¨¸µ¿¡ ´ëÇØ ¾Ë¾Æ º¸ÀÚ. À̹ø¿¡ ±¸ÇöÇÒ ¿¹Á¦´Â ·¹Áö½ºÅÍÀÌ´Ù. ·¹Áö½ºÅÍ´Â ¾Õ¼­ ¼³¸íÇÑ °Íó·³ CPU ³»ºÎ¿¡ À§Ä¡Çϸ鼭 ¸í·É°ú µ¥ÀÌÅ͸¦ ÀϽÃÀûÀ¸·Î ÀúÀåÇÏ´Â Àӽñâ¾ï ÀåÄ¡·Î¼­ÀÇ ¿ªÇÒÀ» ¼öÇàÇÑ´Ù. ÀÌ·¯ÇÑ ·¹Áö½ºÅÍ ¿ª½Ã ALU¿Í ´õºÒ¾î CPU¸¦ ±¸¼ºÇÏ´Â Áß¿äÇÑ ±¸¼º¿ä¼ÒÀÌ´Ù.

 

·¹Áö½ºÅ͸¦ ¸ðµ¨¸µÇÏÀÚ

±×·¯¸é <Ç¥ 4>¿Í °°Àº ±â´ÉÀÌ ÀÖ´Â ·¹Áö½ºÅ͸¦ ±¸ÇöÇØ º¸ÀÚ. ½ÇÁ¦ »ó¿ëÈ­µÈ CPU¿¡¼­´Â ÁÖ·Î 32ºñÆ® ·¹Áö½ºÅ͸¦ »ç¿ëÇÏÁö¸¸ ¿ì¸®°¡ Áö±Ý ¼³°èÇÒ ·¹Áö½ºÅÍ´Â 4ºñÆ® ·¹Áö½ºÅÍÀÌ´Ù. ±×¸®°í ±â´Éµµ ±¸Çö»óÀÇ ÆíÀǸ¦ À§ÇØ °ªÀÇ ·Îµå »óŸ¸À» ÀúÀåÇÏ°í ÀÖ´Â ÇüÅ·Π±¹ÇѽÃÄ×´Ù. ÇÏÁö¸¸ ±âº»ÀûÀÎ µ¿ÀÛ ¿ø¸®´Â »ó¿ëÈ­µÇ¾î ÀÖ´Â ÀÏ¹Ý 32ºñÆ® ·¹Áö½ºÅÍ¿Í À¯»çÇÏ´Ù. <¸®½ºÆ® 4>¿¡ ¿ì¸®°¡ ¼³°èÇÒ 4ºñÆ® ·Îµå ±â´ÉÀÌ ÀÖ´Â ·¹Áö½ºÅÍÀÇ Äڵ尡 ³ªÅ¸³ª ÀÖ´Ù.

<Ç¥ 4> 4ºñÆ® ·¹Áö½ºÅÍÀÇ ±â´É

Input

 

 

 

Output

 

Clock

Reset

Load

Data_In3~Data_In0

Data_Out3~Data_Out0

 

X

0

X

X

0

Ŭ¸®¾î

Rising Edge

1

1

Data_In3~Data_In0

Data_In3~Data_In0

·Îµå

Don't Care

1

X

X

Data_Out3~Data_Out0

±â¾ï»óÅÂ

 

<¸®½ºÆ® 4> ·¹Áö½ºÅÍ

-- ¶óÀ̺귯¸®ÀÇ ÁöÁ¤ ¹× ÆÐÅ°Áö È£Ãâ
library IEEE;
use IEEE.std_logic_1164.all;

-- ¿£ÅÍƼ ¼±¾ð¹®
entity register_4bit is
  port (
    -- Ŭ·°°ú Á¦¾î ½ÅÈ£ÀÇ ÀÔ·Â
    clock: in STD_LOGIC;
    reset: in STD_LOGIC;
    load: in STD_LOGIC;

    -- µ¥ÀÌÅÍ ÀÔ·Â
    Data_In: in STD_LOGIC_VECTOR(3 DOWNTO 0);

    -- µ¥ÀÌÅÍ Ãâ·Â
    Data_Out: out STD_LOGIC_VECTOR(3 DOWNTO 0)
  );
end register_4bit;

-- ¾ÆÅ°ÅØóÀÇ ¼±¾ð¹®
architecture register_arch of register_4bit is

  -- ÇöÀç »óÅÂ¿Í ´ÙÀ½ »óÅÂÀÇ ¼±¾ð
  signal next_state, current_state : std_logic_vector(3 downto 0);

begin
-- <<enter your statements here>>
  -- ÇöÀçÀÇ »óŸ¦ Ãâ·Â
  Data_Out <= current_state;

  -- Á¶ÇÕ È¸·Î ºÎºÐ
  comb : process(current_state, load, Data_In)
    begin
      next_state <= current_state;
      if(load='1')
        then next_state <= Data_In;
      end if;
  end process;
  -- ¼øÂ÷ ȸ·Î ºÎºÐ
  seq : process(clock, reset)
    begin
    -- ¸®¼ÂÀÌ 0À̸é ÇöÀç »óÅ Ŭ¸®¾î
      if(reset='0')
        then current_state <= (others => '0');
        -- ´ÙÀ½ »óÅÂÀÇ °áÁ¤
      elsif (clock¡¯event and clock='1')
        then current_state <= next_state;
      end if;
  end process;
end register_arch;

 

½ºÅ×ÀÌÆ® ¸Ó½ÅÀÇ Á¾·ù

½ºÅ×ÀÌÆ® ¸Ó½ÅÀº <±×¸² 4>¿Í °°ÀÌ ±¸¼ºµÇ´Â °ÍÀÌ ÀϹÝÀûÀÎ ÇüÅÂÀÌ´Ù. ÇÏÁö¸¸ ÀÌ·¯ÇÑ ½ºÅ×ÀÌÆ® ¸Ó½Å ¿ª½Ã ±¸ÇöÇÏ´Â ¹æ¹ý¿¡ µû¶ó¼­ ´ÙÀ½°ú °°ÀÌ µÎ °¡Áö·Î ¼¼ºÐÈ­µÈ´Ù.

 

¹Ð¸® ¸Ó½Å

¿ì¼± ¾Ë¾Æº¼ ½ºÅ×ÀÌÆ® ¸Ó½ÅÀº ¹Ð¸® ¸Ó½Å(mealy machine)ÀÌ´Ù. ÀÌ´Â <±×¸² 5>¿¡¼­ ³ªÅ¸³­ ¹Ù¿Í °°ÀÌ Ãâ·Â ÇÔ¼ö°¡ ´ÙÀ½ »óÅÂ¿Í ÇöÀçÀÇ ÀԷ¿¡ ÀÇÇؼ­ °áÁ¤µÇ´Â ±¸Á¶¸¦ ¸»ÇÑ´Ù. µû¶ó¼­ ÀÔ·Â ½ÅÈ£ÀÇ Á¶°Ç¿¡ µû¶ó¼­ ¿©·¯ °³ÀÇ Ãâ·Â ½ÅÈ£¸¦ °¡Áú ¼ö ÀÖÀ¸¸ç ºñ±³Àû ÀÚÀ¯µµ°¡ ³ôÀº »óŵµ¸¦ ±¸ÇöÇÒ ¼ö ÀÖ´Ù. ÇÏÁö¸¸ ¿ÜºÎ ÀÔ·ÂÀÌ Ãâ·Â ÇÔ¼ö¿¡ Á÷Á¢ Àü´ÞµÇ±â ¶§¹®¿¡ ÀԷ´ÜÀÇ ³ëÀÌÁî°¡ Ãâ·Â¿¡ ±×´ë·Î ¹Ý¿µµÉ ¼ö ÀÖ´Ù.

 

¹«¾î ¸Ó½Å

½ºÅ×ÀÌÆ® ¸Ó½ÅÀÇ ¶Ç ÇϳªÀÇ ±¸Çö ¹æ¹ýÀ¸·Î ¹«¾î ¸Ó½Å(moore machine)ÀÌ ÀÖ´Ù. ÀÌ´Â <±×¸² 6>¿¡¼­ º¸´Â ¹Ù¿Í °°ÀÌ Ãâ·Â ÇÔ¼ö°¡ ÇöÀçÀÇ »óŸ¸À» ÀÔ·ÂÀ¸·Î ÇÑ´Ù. µû¶ó¼­ ÇÑ °³ÀÇ »óÅ¿¡ ´ëÇؼ­ ÇÑ °³ÀÇ Ãâ·Â¸¸À» °®´Â´Ù. ÀÌ´Â ¹Ð¸® ¸Ó½Å¿¡ ºñÇØ »óżö°¡ »ó´ëÀûÀ¸·Î Áõ°¡ÇÏ´Â ´ÜÁ¡ÀÌ ÀÖ±â´Â ÇÏÁö¸¸ ÀÔ·ÂÀÇ ³ëÀÌÁî°¡ Ãâ·Â¿¡ Àü´ÞµÇÁö ¾Ê°í ÀÔ·Â ½ÅÈ£ÀÇ ¿µÇâÀ» ´ÙÀ½ ´Ü¿¡ Àü´ÞÇÏÁö ¾Ê±â ¶§¹®¿¡ ¹Ð¸® ¸Ó½Åº¸´Ù Á»´õ ¾ÈÁ¤ÀûÀÎ µ¿ÀÛÀ» ÇÑ´Ù°í ¸»ÇÒ ¼ö ÀÖ´Ù.

 

ù ÇÁ·ÎÁ§Æ®, ÀÚÆDZ⠱¸Çö

ÀÌÁ¦±îÁö ¿ì¸®´Â Çϵå¿þ¾î ±â¼ú¾ð¾îÀÎ VHDLÀÇ ±âº» °ñ°Ý°ú ¹®¹ýÀû Ư¡, ¸ðµ¨¸µ ¹æ¹ý µî¿¡ ´ëÇØ ¾Ë¾ÆºÃ´Ù. Áö±ÝºÎÅÍ´Â ÀÌ·¯ÇÑ VHDLÀ» ÀÌ¿ëÇØ ¿ì¸®ÀÇ ÃÖÁ¾ ¸ñÇ¥ÀÎ ÀÚÆDZâÀÇ µ¿ÀÛÀ» ¹¦»çÇÒ ¼ö ÀÖ´Â Çϵå¿þ¾î ¸ðµâÀ» ±¸ÇöÇØ º¸µµ·Ï ÇÏÀÚ. ÀÏ¹Ý ¼ÒÇÁÆ®¿þ¾î ÇÁ·Î±×·¡¹Ö¿¡¼­µµ ¸¶Âù°¡Áö°ÚÁö¸¸ ƯÁ¤ Á¦Ç°ÀÇ °³¹ßÀ» À§Çؼ­´Â ÅëÇÕ °³¹ß ȯ°æ(IDE, Integrate Development Environment)ÀÌ ÇÊ¿äÇÏ´Ù. ÅëÇÕ °³¹ß ȯ°æÀ̶õ ½±°Ô ¸»ÇØ ÇÁ·Î±×·¡¹ÖÇÏ°í ÄÄÆÄÀϸµÇϸç, ³¡À¸·Î µð¹ö±ë¿¡¼­ ½ÇÇà ÆÄÀÏÀ» »ý¼ºÇϱâ±îÁö À̸¦ ÇϳªÀÇ È¯°æ ¾Æ·¡¿¡¼­ °¡´ÉÄÉ ÇØÁÖ´Â Á¾ÇÕ °³¹ß ÅøÀÌ´Ù. Çϵå¿þ¾îÀÇ °³¹ß¿¡¼­µµ ¸¶Âù°¡ÁöÀÌ´Ù. ¿ì¸®°¡ ÀÌ ¿¹Á¦¿¡¼­ »ç¿ëÇÒ ÅëÇÕ °³¹ß ȯ°æÀº Xilinx FoundationÀÌ´Ù.

ÀÌ·¯ÇÑ Xilinx FoundationÀº »ó¿ë Á¦Ç°À̶ó ÀÚ¼¼È÷ ¼³¸íÇϱâ´Â ¹«¸®°¡ ÀÖÁö¸¸ ÀÌ´Â Çϵå¿þ¾î °³¹ßÀ» À§ÇÑ Design Entry Tool°ú ÀÌ·¯ÇÑ µðÀÚÀÎµÈ ¸ðµâÀ» ½Ã¹Ä·¹À̼ÇÀ» ÅëÇØ °ËÁõÇØ ÁÖ´Â Design Verification Tool, ±×¸®°í À̸¦ ½ÇÁ¦ Çϵå¿þ¾îÀûÀ¸·Î ¹è¼±/¹èÄ¡¿¡±îÁöÀÇ ±¸ÇöÀ» Ã¥ÀÓÁö´Â Design Implementation ToolÀÌ Çϳª·Î ÅëÇյŠÀÖ´Ù. Áï Áö³­ ¿¬Àç¿¡¼­ ¼³¸íÇÑ ¹Ù ÀÖ´Â ÀÏ¹Ý FPGA °ü·Ã ¼³°è ÀýÂ÷ÀÇ Àü °úÁ¤À» Áö¿øÇÏ¸ç ¶ÇÇÑ VHDLÀ» ÀÌ¿ëÇÑ ÄÚµù, ½Ã¹Ä·¹À̼Ç, ÇÕ¼º µîÀÇ ¸ðµç °úÁ¤À» Áö¿øÇÑ´Ù. <È­¸é 1>Àº Xilinx FoundationÀÇ Ãʱâ È­¸éÀÌ´Ù.

ÀÌ·¯ÇÑ Xilinx FoundationÀ» ÀÌ¿ëÇØ ¿ì¸®°¡ ÀÛ¼ºÇÒ ¿¹Á¦´Â ÀÚÆDZ⸦ Á¦¾îÇÏ´Â ¸ðµâÀÌ´Ù. ÀÏ¹Ý ÀÚÆDZâÀÇ ¿ø¸®¸¦ »ý°¢ÇØ º¸±â ¹Ù¶õ´Ù. Áï À½·á¸¦ ¼±ÅÃÇÑ ÈÄ ±Ý¾×À» ³ÖÀ¸¸é(°¡·É 500¿ø, 100¿ø, 50¿ø, 10¿ø) ÇØ´ç À½·áÀÇ ±Ý¾×°ú ºñ±³ÇÏ¿© ÇØ´ç ±Ý¾× ÀÌ»óÀÇ µ·ÀÌ µé¾î ¿Ã °æ¿ì À½·á¸¦ Ãâ·ÂÇØ ÁÖ¸ç °Å½º¸§µ·À» ¾Ë¸Â°Ô °Å½½·¯ ÁØ´Ù. À̸¦ ¹ÙÅÁÀ¸·Î ¸ÕÀú ¼öÇàÇØ¾ß ÇÒ ÀÛ¾÷Àº HDL ¿¡µðÅ͸¦ ÀÌ¿ëÇØ ÄÚµùÀ» ¼öÇàÇÏ´Â ÀÛ¾÷ÀÌ´Ù. <È­¸é 2>¿¡¼­ º¸´Â ¹Ù¿Í °°ÀÌ HDL ÆíÁý±â¸¦ ÀÌ¿ëÇØ ÇÁ·Î±×·¡¹ÖÇÑ´Ù. ÀÌ·¯ÇÑ VHDLÀÇ ½ÇÁ¦ÄÚµå´Â 'ÀÌ´ÞÀÇ µð½ºÄÏ'ÀÇ ÀÚÆDZ⠳»ºÎ µ¿ÀÛ °ü·Ã Äڵ带 Âü°íÇϱ⠹ٶõ´Ù.

ÀÌ·¸°Ô ÄÚµù ÀÛ¾÷À» ¸¶Ä£ ÈÄ¿¡´Â Àü¼úÇÑ ¹Ù¿Í °°ÀÌ ÇÕ¼º ÀÛ¾÷À» °ÅÄ£´Ù. ¹°·Ð ÇÕ¼º ÀÛ¾÷À» Çϱâ Àü¿¡ ÀÏ¹Ý ¼ÒÇÁÆ®¿þ¾î ÇÁ·Î±×·¡¹ÖÀÇ ¹®¹ý °Ë»ç¿Í °°Àº ÀÛ¾÷À» ¼öÇàÇÑ´Ù. ¹®¹ýÀûÀ¸·Î ÀÌ»óÀÌ ¾ø¾î¾ß ÇÕ¼º ÀÛ¾÷À» ¼öÇàÇÒ ¼ö ÀÖ´Ù. ÀÌ·¸°Ô ÇÕ¼º ÀÛ¾÷À» ¼öÇàÇÔ¿¡ ÀÖ¾î ´Ù½Ã ¿¡·¯°¡ °ËÃâµÉ ¼ö ÀÖ´Ù. ¸¶Ä¡ ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡¼­ 'Syntax Error'´Â ¾øÁö¸¸ 'Semantic Error'°¡ Á¸ÀçÇÏ´Â °Í°ú °°Àº ÀÌÄ¡ÀÌ´Ù. ÀÌ·¸°Ô ÇÕ¼º °úÁ¤À» °ÅÄ£ ÀÌÈÄ¿¡´Â <È­¸é 3>°ú °°ÀÌ º»°ÝÀûÀΠȸ·ÎÀÇ ±â´ÉÀû Ãø¸é(functional level)¿¡ ´ëÇÑ Å¸ÀÌ¹Ö ½Ã¹Ä·¹À̼ÇÀ» ¼öÇàÇÑ´Ù.

ÀÌ ½Ã¹Ä·¹ÀÌ¼Ç °úÁ¤À» °ÅÄ£ ÈÄ¿¡´Â <È­¸é 4>¿¡¼­ º¸´Â ¹Ù¿Í °°ÀÌ ±¸Çö °úÁ¤À» °ÅÄ£´Ù. ÀÌ´Â ÄÚµù°ú ½Ã¹Ä·¹ÀÌ¼Ç »ó¿¡¼­ÀÇ ¼³°è°¡ ¾Æ´Ñ ½ÇÁ¦ ƯÁ¤ Çϵå¿þ¾î Ĩ ¸ðµâ¿¡¼­ÀÇ ±¸ÇöÀ» ¼öÇàÇÏ´Â °úÁ¤ÀÌ´Ù. ÀÌ·¸°Ô ±¸Çö °úÁ¤À» °ÅÄ£ ´ÙÀ½¿¡´Â ³¡À¸·Î °ËÁõ °úÁ¤À» °ÅÄ£´Ù. ¿©±â¼­ ´Ù½Ã ÇÑ ¹ø ŸÀÌ¹Ö ½Ã¹Ä·¹À̼ÇÀ» ¼öÇàÇϴµ¥ ÀÌ´Â ¾Õ¼­ ¼öÇàÇÑ ±â¼ú µ¶¸³Àû ŸÀÌ¹Ö ½Ã¹Ä·¹À̼ǰú´Â Â÷ÀÌ°¡ ÀÖ´Â °ÍÀ¸·Î¼­ ƯÁ¤ ¾÷ü¿¡¼­ Á¦°øÇϴ ƯÁ¤ Çϵå¿þ¾î ĨÀ» »ç¿ëÇßÀ» °æ¿ì ¹Ý¿µÇØ¾ß ÇÒ Å¸À̹ÖÀÇ µô·¹À̸¦ °í·ÁÇÑ ½Ã¹Ä·¹À̼ÇÀÌ´Ù. ÀÌ·± ½ÄÀ¸·Î ÃÖÁ¾ÀûÀΠȸ·ÎÀÇ °ËÁõ °úÁ¤À» °ÅÄ¡¸é¼­ ½ÇÁ¦ ƯÁ¤ FPGA ĨÀ¸·ÎÀÇ ´Ù¿î·Îµù ÀÛ¾÷À» °ÅÄ£´Ù.

Áö±Ý±îÁö ¿ì¸®´Â Çϵå¿þ¾î ±â¼ú¾ð¾îÀÎ VHDLÀ» ÀÌ¿ëÇØ Ä¨À» ¼³°èÇÏ´Â ÀýÂ÷¸¦ ¾Õ¼­ ¼³¸íÇÑ µÎ ¿¬ÀçÀÇ ¹è°æ Áö½ÄÀ» ¹ÙÅÁÀ¸·Î ¼³¸íÇß´Ù. º» ¿¬ÀçÀÇ ÃÊÁ¡Àº VHDLÀÌ¿´À¸¹Ç·Î ÀÚ¼¼ÇÑ ÇÕ¼º °úÁ¤°ú ±¸Çö ¹× °ËÁõ °úÁ¤¿¡ ´ëÇÑ ¼³¸íÀº ¸¹ÀÌ Ãà¼Ò½ÃŲ °ÍÀÌ »ç½ÇÀÌ´Ù. ÇÏÁö¸¸ VHDLÀÇ »ç¿ë ¹æ¹ý¸¸ÀÌ¶óµµ º» ¿¬À縦 ÅëÇØ ÃæºÐÈ÷ ¼÷ÁöÇÑ µ¶ÀÚ°¡ ³ª¿Ô´Ù¸é ÇÊÀÚ´Â ³ª¸§´ë·Î ¸¸Á·ÇÑ´Ù. ³¡À¸·Î ÇÑ °¡Áö¸¸ ´õ ¼Ò°³Çϱâ·Î ÇÑ´Ù. ÀÚÆDZâÀÇ ³»ºÎ µ¿ÀÛ¿¡ ´ëÇÑ ¹¦»ç¿Í´Â º°°³·Î ¶ÇÇÑ ÀÏ¹Ý »ç¿ëÀÚ°¡ º¸±â¿¡ ÀÚÆDZâÀÇ ¿ÜºÎ Ãâ·Â¿¡ ´ëÇؼ­ ÇÁ·Î±×·¡¹ÖÇØ º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ½ÇÁ¦·Î µ¿ÀüÀÌ ÀÔ·ÂµÇ¾î ¿À´Â ±Ý¾×¿¡ µû¶ó¼­ ÇØ´ç »óÅ·ΠÀ̵¿ÇÏ´Â ¸ð½À°ú ¿ÜºÎ¿¡ µ¿ÀüÀÇ ÀÔ·ÂÀÌ Ç¥½ÃµÇ´Â Äڵ带 ÇÁ·Î±×·¡¹ÖÇÒ ¼ö ÀÖ´Ù('ÀÌ´ÞÀÇ µð½ºÄÏ'Âü°í). º¸´Ù ¿Ïº®ÇÑ Äڵ带 À§ÇØ ³»ºÎ µ¿ÀÛ°ú ¿ÜºÎ Ãâ·Â¿¡ ´ëÇÑ Äڵ带 ÅëÇÕÇØ¾ß ÇÒ °ÍÀÌ´Ù. ÀÌ´Â µ¶ÀÚ ¿©·¯ºÐ¿¡°Ô ¾ÕÀ¸·ÎÀÇ °úÁ¦·Î ³²±ä´Ù.

 

ºñ¸Þ¸ð¸® ºÐ¾ßÀÇ °­±¹À» ²Þ²Ù¸ç

À̹ø È£¿¡¼­´Â ¾Õ¼­ ÁøÇàÇÑ µÎ ¹øÀÇ ¿¬Àç ³»¿ëÀ» Åä´ë·Î ½ÇÁ¦ VHDL¿¡ ´ëÇØ ¿¹Á¦¸¦ ÅëÇØ ½Ç½ÀÇß´Ù. Ä«¿îÅ͸¦ ºñ·ÔÇØ Æ¯È÷ CPUÀÇ ÇÙ½É ¸ðµâÀ̶ó°í ÇÒ ¼ö ÀÖ´Â ALU¿Í ·¹Áö½ºÅÍÀÇ ¸ðµ¨¸µÀ» VHDL·Î Á÷Á¢ ÇØ º¸¾Ò´Ù. ¶Ç ¿ì¸®ÀÇ ÃÖÁ¾ ¸ñÇ¥ÀÎ ÀÚÆDZ⸦ Á¦¾îÇÏ´Â ¸ðµâµµ ¼³°èÇß´Ù Ãæ½ÇÈ÷ ³»¿ëÀ» ¼÷ÁöÇÑ µ¶ÀÚ¶ó¸é VHDLÀ» °¡Áö°í ±âº»ÀûÀÎ Çϵå¿þ¾î ÇÁ·Î±×·¡¹ÖÀ» ¼öÇàÇÏ´Â µ¥ Å« ¹«¸®°¡ ¾øÀ¸¸®¶ó°í º»´Ù.

»ç½Ç µðÁöÅÐ ½Ã½ºÅÛ ¼³°è¶ó´Â ¹æ´ëÇÑ ÁÖÁ¦¸¦ °¡Áö°í ÇÑÁ¤µÈ Áö¸é»ó¿¡¼­ 3ȸ Á¤µµÀÇ ºÐ·®À¸·Î ¿ÏÀüÇÑ ÀÌÇظ¦ ÇÑ´Ù´Â °ÍÀº Èûµç ÀÏÀÌ´Ù. ÇÏÁö¸¸ ÀÌ ±ÛÀ» ÅëÇØ µðÁöÅÐ ½Ã½ºÅÛÀ» ¼³°èÇÏ´Â ´Ù¾çÇÑ ¹æ¹ý¿¡ ´ëÇÑ ¼Ò°³°¡ µÇ¾úÀ¸¸ç ƯÈ÷ ±×·¯ÇÑ ´Ù¾çÇÑ ¼³°è ¹æ¹ý Áß¿¡¼­ Çϵå¿þ¾î ±â¼ú¾ð¾î¸¦ ÀÌ¿ëÇÑ ¼³°è ¹æ½Ä¿¡ ´ëÇØ VHDLÀ̶ó´Â ¾ð¾î¸¦ ¿¹·Î µé¾î ¼³¸íÇß´Ù. ±×¸®°í ÀÌ°ÍÀ» ½ÇÁ¦ ¿¹Á¦¸¦ ÅëÇØ ½Ç½ÀÇØ º¸¾Ò´Ù. ¸ðÂÉ·Ï ¸¹Àº µµ¿òÀÌ µÇ¾ú±â¸¦ ¹Ù¶õ´Ù.

¼ÒÇÁÆ®¿þ¾î ºÐ¾ßÀÇ ±â¼úÀÌ Áß¿ä½ÃµÇ°í ÀÖ´Â »óȲ¿¡¼­ IT °­±¹À» À§Çؼ­ ³ë·ÂÇÏ´Â °Íµµ Áß¿äÇÑ ÀÏÀÏ °ÍÀÌ´Ù. ÇÏÁö¸¸ ¸Þ¸ð¸® ºÐ¾ß ¼¼°è 1À§¸¦ ÁöÅ°°í ÀÖ´Â ¿ì¸®³ª¶óÀÇ ÀÔÀå¿¡¼­ º¸¸é DRAMÀ» Á¦¿ÜÇÑ ºñ¸Þ¸ð¸® ºÐ¾ß¿¡¼­´Â ¾ÆÁ÷ °íÀüÀ» ±Øº¹ÇÏÁö ¸øÇÏ°í ÀÖ´Â »óÅÂÀÌ´Ù. ºñ¸Þ¸ð¸® ºÐ¾ß ¿ª½Ã ¼¼°èÀûÀÎ °­±¹À» ²Þ²Ù¸ç º¸´Ù ¸¹Àº Çϵå¿þ¾î ¿£Áö´Ï¾îµéÀÌ Åº»ýÇϱ⸦ ±â´ëÇÏ¸ç ¿¬À縦 ¸¶°¨ÇÑ´Ù. mas o


Á¤¸® : À§À±Èñ iwish@sbmedia.co.kr

ÀÌ´ÞÀÇ µð½ºÄÏ: VHDL_example.zip (5,900 bytes)

 

Âü°íÀÚ·á

  1. 'HDL Chip Design' A Practical Guide for Designing, Synthesizing and Simulating ASICs and FPGAs using VHDL or Verilog, Douglas J. Smith, Doone Publications
  2. Xilinx FoundationÀ» ÀÌ¿ëÇÑ µðÁöÅÐ ½Ã½ºÅÛ ¼³°è, ÀÌÁؼº ¿Ü, º¹µÎ ÃâÆÇ»ç
  3. VHDLÀ» ÀÌ¿ëÇÑ CPLD/FPGA ¼³°è, Â÷¿µ¹è ÆíÀú, ´Ù´Ù¹Ìµð¾î
  4. µðÁöÅРȸ·Î ±â¼ú ¾ð¾î ÀÔ¹®, ³í¸®¼³°è¿Í HDLÀÇ ±âÃÊ, Á¤Èñ¼º ¿Ü, È«¸ª °úÇÐ ÃâÆÇ»ç
  5. ÁÖ¹®Çü ¹ÝµµÃ¼ ¼³°è ASIC DESIGN, ÃÖ¸í·Ä, ÇÏÀÌÅ×Å©Á¤º¸

 

¹Ú½º±â»ç

·¡Ä¡¿Í Çø³Ç÷ÓÀÇ ºñ±³

¼øÂ÷ ȸ·Î¸¦ Á¢ÇÒ ¶§¸¶´Ù Ç×»ó µîÀåÇÏ´Â °ÍÀÌ ¹Ù·Î ·¡Ä¡¿Í Çø³Ç÷ÓÀÌ´Ù. ·¡Ä¡¿Í Çø³Ç÷ÓÀ̶õ µÎ °³ÀÇ ¾ÈÁ¤ »óŸ¦ °®´Â ÀÏÁ¾ÀÇ ±â¾ïȸ·Î¸¦ ¶æÇÑ´Ù. ÀÌ ¶§ ¸»ÇÏ´Â ¾ÈÁ¤ »óŶõ ȸ·ÎÀÇ ¿ÜºÎ·ÎºÎÅÍ ÀÔ·ÂÀ» °¡ÇÏÁö ¾Ê´Â ÇÑ º»·¡ÀÇ °ªÀ» À¯ÁöÇÒ ¼ö Àִ ȸ·ÎÀÇ »óŸ¦ ÀǹÌÇϸç ÈçÈ÷ µÎ °¡ÁöÀÇ ¾ÈÁ¤ »óŸ¦ ¸»ÇÒ °æ¿ì ÀÌÀü °ªÀ¸·Î 1 ȤÀº 0ÀÇ °ªÀ» ±â¾ïÇÏ°í ÀÖÀ» ¼ö ÀÖ´Ù´Â ÀǹÌÀÌ´Ù. ±×·³ ÀÌ µÑ »çÀÌ¿¡ Â÷ÀÌÁ¡Àº ¹«¾ùÀϱî. ¿ì¼± ·¡Ä¡ÀÇ °æ¿ì´Â ·¹º§ Æ®¸®°Å(level trigger)¿¡ ÀÇÇØ µ¿ÀÛÇÑ´Ù. µû¶ó¼­ ·¡Ä¡´Â Ŭ·°ÀÌ 1(high)ÀÎ µ¿¾È ÀÔ·ÂÀÇ º¯È­¸¦ ±×´ë·Î Ãâ·Â¿¡ ¹Ý¿µÇÑ´Ù. ÀÌ¿¡ ¹ÝÇØ Çø³Ç÷ÓÀº ¿¡Áö Æ®¸®°Å(edge trigger)¿¡ ÀÇÇØ µ¿ÀÛÇÑ´Ù. µû¶ó¼­ Çø³Ç÷ÓÀº Ŭ·° ÆÞ½º°¡ ³ªÅ¸³ª±â ¹Ù·Î ÀÌÀüÀÇ ÀÔ·ÂÀÌ Ãâ·Â¿¡ ¹Ý¿µµÇ¾î ´ÙÀ½ Ŭ·° ÆÞ½º°¡ ³ªÅ¸³¯ ¶§±îÁö ±× »óŸ¦ À¯ÁöÇÔÀ» ÀǹÌÇÑ´Ù.

<±×¸²>Àº D-ŸÀÔÀÇ Çø³Ç÷Ӱú ·¡Ä¡¸¦ »ç¿ëÇÒ °æ¿ì¸¦ ¿¹·Î µç °ÍÀÌ´Ù. ȸ·Î ±¸¼ºÀº °°À¸³ª D Çø³Ç÷ÓÀº Ŭ·° ÆÞ½º°¡ »ó½Â ¶Ç´Â ÇÏ°­ÇÏ´Â ¿¡Áö ¹Ù·Î Á÷ÀüÀÇ ÀÔ·Â ½ÅÈ£°¡ Ãâ·Â¿¡ ¹Ý¿µµÇ¾î ´ÙÀ½ Ŭ·° ÆÞ½º°¡ ³ªÅ¸³¯ ¶§°¡Áö ±× »óŸ¦ À¯ÁöÇÑ´Ù. µû¶ó¼­ ÀÎÀ§ÀûÀÎ ¿¹Á¦ÀÌÁö¸¸ <±×¸²>¿¡¼­ º¸´Â ¹Ù¿Í °°ÀÌ Å¬·° ÆÞ½ºÀÇ ÆøÀÌ ³Ð¾îµµ D Çø³Ç÷ÓÀº Ãâ·ÂÀÇ º¯È­°¡ ¾øÁö¸¸ ·¡Ä¡´Â Ŭ·° ÆÞ½ºÀÇ ÆøÀÌ ³ÐÀ¸¸é ±× µ¿¾È¿¡ ÀÔ·ÂÀÇ º¯È­°¡ Ãâ·Â¿¡ ³ªÅ¸³ª°Ô µÈ´Ù. ÀÌ´Â ·¡Ä¡º¸´Ù´Â Çø³Ç÷ÓÀÌ Á»´õ ¾ÈÁ¤ÀûÀÎ µ¿ÀÛÀ» º¸ÀåÇÑ´Ù´Â ÀǹÌÀ̱⵵ ÇÏ´Ù.

  Send to a colleague | Print this document