[½ÇÀü °ÀÇ½Ç 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)
Âü°íÀÚ·á
- 'HDL Chip Design' A Practical Guide for Designing, Synthesizing and Simulating ASICs and FPGAs using VHDL or Verilog, Douglas J. Smith, Doone Publications
- Xilinx FoundationÀ» ÀÌ¿ëÇÑ µðÁöÅÐ ½Ã½ºÅÛ ¼³°è, ÀÌÁؼº ¿Ü, º¹µÎ ÃâÆÇ»ç
- VHDLÀ» ÀÌ¿ëÇÑ CPLD/FPGA ¼³°è, Â÷¿µ¹è ÆíÀú, ´Ù´Ù¹Ìµð¾î
- µðÁöÅРȸ·Î ±â¼ú ¾ð¾î ÀÔ¹®, ³í¸®¼³°è¿Í HDLÀÇ ±âÃÊ, Á¤Èñ¼º ¿Ü, È«¸ª °úÇÐ ÃâÆÇ»ç
- ÁÖ¹®Çü ¹ÝµµÃ¼ ¼³°è ASIC DESIGN, ÃÖ¸í·Ä, ÇÏÀÌÅ×Å©Á¤º¸
|
¹Ú½º±â»ç
·¡Ä¡¿Í Çø³Ç÷ÓÀÇ ºñ±³
¼øÂ÷ ȸ·Î¸¦ Á¢ÇÒ ¶§¸¶´Ù Ç×»ó µîÀåÇÏ´Â °ÍÀÌ ¹Ù·Î ·¡Ä¡¿Í Çø³Ç÷ÓÀÌ´Ù. ·¡Ä¡¿Í Çø³Ç÷ÓÀ̶õ µÎ °³ÀÇ ¾ÈÁ¤ »óŸ¦ °®´Â ÀÏÁ¾ÀÇ ±â¾ïȸ·Î¸¦ ¶æÇÑ´Ù. ÀÌ ¶§ ¸»ÇÏ´Â ¾ÈÁ¤ »óŶõ ȸ·ÎÀÇ ¿ÜºÎ·ÎºÎÅÍ ÀÔ·ÂÀ» °¡ÇÏÁö ¾Ê´Â ÇÑ º»·¡ÀÇ °ªÀ» À¯ÁöÇÒ ¼ö Àִ ȸ·ÎÀÇ »óŸ¦ ÀǹÌÇϸç ÈçÈ÷ µÎ °¡ÁöÀÇ ¾ÈÁ¤ »óŸ¦ ¸»ÇÒ °æ¿ì ÀÌÀü °ªÀ¸·Î 1 ȤÀº 0ÀÇ °ªÀ» ±â¾ïÇÏ°í ÀÖÀ» ¼ö ÀÖ´Ù´Â ÀǹÌÀÌ´Ù. ±×·³ ÀÌ µÑ »çÀÌ¿¡ Â÷ÀÌÁ¡Àº ¹«¾ùÀϱî. ¿ì¼± ·¡Ä¡ÀÇ °æ¿ì´Â ·¹º§ Æ®¸®°Å(level trigger)¿¡ ÀÇÇØ µ¿ÀÛÇÑ´Ù. µû¶ó¼ ·¡Ä¡´Â Ŭ·°ÀÌ 1(high)ÀÎ µ¿¾È ÀÔ·ÂÀÇ º¯È¸¦ ±×´ë·Î Ãâ·Â¿¡ ¹Ý¿µÇÑ´Ù. ÀÌ¿¡ ¹ÝÇØ Çø³Ç÷ÓÀº ¿¡Áö Æ®¸®°Å(edge trigger)¿¡ ÀÇÇØ µ¿ÀÛÇÑ´Ù. µû¶ó¼ Çø³Ç÷ÓÀº Ŭ·° ÆÞ½º°¡ ³ªÅ¸³ª±â ¹Ù·Î ÀÌÀüÀÇ ÀÔ·ÂÀÌ Ãâ·Â¿¡ ¹Ý¿µµÇ¾î ´ÙÀ½ Ŭ·° ÆÞ½º°¡ ³ªÅ¸³¯ ¶§±îÁö ±× »óŸ¦ À¯ÁöÇÔÀ» ÀǹÌÇÑ´Ù.
<±×¸²>Àº D-ŸÀÔÀÇ Çø³Ç÷Ӱú ·¡Ä¡¸¦ »ç¿ëÇÒ °æ¿ì¸¦ ¿¹·Î µç °ÍÀÌ´Ù. ȸ·Î ±¸¼ºÀº °°À¸³ª D Çø³Ç÷ÓÀº Ŭ·° ÆÞ½º°¡ »ó½Â ¶Ç´Â ÇÏ°ÇÏ´Â ¿¡Áö ¹Ù·Î Á÷ÀüÀÇ ÀÔ·Â ½ÅÈ£°¡ Ãâ·Â¿¡ ¹Ý¿µµÇ¾î ´ÙÀ½ Ŭ·° ÆÞ½º°¡ ³ªÅ¸³¯ ¶§°¡Áö ±× »óŸ¦ À¯ÁöÇÑ´Ù. µû¶ó¼ ÀÎÀ§ÀûÀÎ ¿¹Á¦ÀÌÁö¸¸ <±×¸²>¿¡¼ º¸´Â ¹Ù¿Í °°ÀÌ Å¬·° ÆÞ½ºÀÇ ÆøÀÌ ³Ð¾îµµ D Çø³Ç÷ÓÀº Ãâ·ÂÀÇ º¯È°¡ ¾øÁö¸¸ ·¡Ä¡´Â Ŭ·° ÆÞ½ºÀÇ ÆøÀÌ ³ÐÀ¸¸é ±× µ¿¾È¿¡ ÀÔ·ÂÀÇ º¯È°¡ Ãâ·Â¿¡ ³ªÅ¸³ª°Ô µÈ´Ù. ÀÌ´Â ·¡Ä¡º¸´Ù´Â Çø³Ç÷ÓÀÌ Á»´õ ¾ÈÁ¤ÀûÀÎ µ¿ÀÛÀ» º¸ÀåÇÑ´Ù´Â ÀǹÌÀ̱⵵ ÇÏ´Ù.
|
|