| 
                          [½ÇÀü °ÀÇ½Ç VHDL] 
                       | 
                      
                           
                       | 
                     
                   
                  Çϵå¿þ¾î ¼³°è, ÀÌÁ¦´Â ÇÁ·Î±×·¡¹ÖÀ¸·Î! 3 
                  ³ªÀÇ Ã¹ Çϵå¿þ¾î ÇÁ·Î±×·¡¹Ö, À򮂱â ÇÁ·ÎÁ§Æ®
                    
                  Áö³ µÎ ¹øÀÇ ¿¬À縦 ÅëÇØ ´Ù¾çÇÑ µðÁöÅРȸ·ÎÀÇ ±¸Çö ¹æ¹ý°ú ´ëÇ¥ÀûÀÎ Çϵå¿þ¾î ±â¼ú ¾ð¾îÀÎ VHDL¿¡ ´ëÇØ »ìÆìºÃ´Ù. '¹é¹®ÀÌ ºÒ¿©ÀÏÇà'À̶ó Çß´ø°¡. ÀÌÁ¦´Â Á÷Á¢ ½Ç½ÀÀ» ÇØ º¼ Â÷·ÊÀÌ´Ù. ¸ÕÀú ±âÃÊÀûÀÎ µðÁöÅРȸ·Î¿¡ ´ëÇÑ ÇÁ·Î±×·¡¹ÖÀ» ¼öÇàÇÒ °ÍÀÌ´Ù. À̸¦ ¹ÙÅÁÀ¸·Î Á»´õ º¹ÀâÇÑ À򮂱âÀÇ µ¿ÀÛÀ» ¹¦»çÇÒ ¼ö ÀÖ´Â Çϵå¿þ¾î ¸ðµâÀ» ¼³°èÇØ º¸ÀÚ. 
                    
                  
                    
                      | 
                         ¿¬Àç¼ø¼ 
                       | 
                      
                           
                       | 
                     
                    
                      | 
                           
                       | 
                     
                    
                      | 
                         1ȸ 2002.8 | ÃÖ»óÀÇ Çϵå¿þ¾î ¼³°è ¹æ¹ýÀ» ã¾Æ¶ó 
                       | 
                     
                    
                      | 
                         2ȸ 2002.9 | ¿Ïº®ÇÑ Çϵå¿þ¾î ±â¼ú¾ð¾î, VHDL 
                       | 
                     
                    
                      | 
                         3ȸ 2002.10| ³ªÀÇ Ã¹ Çϵå¿þ¾î ÇÁ·Î±×·¡¹Ö, ÀÚÆÇ±â ¼³°è ÇÁ·ÎÁ§Æ® 
                       | 
                     
                    
                      | 
                           
                       | 
                     
                    
                      | 
                         ¿¬Àç°¡À̵å 
                       | 
                      
                           
                       | 
                     
                    
                      | 
                           
                       | 
                     
                    
                      | 
                         ¿î¿µÃ¼Á¦ | À©µµ¿ì 98 ÀÌ»ó 
                       | 
                     
                    
                      | 
                         °³¹ßµµ±¸ | Xilinx Foundation (PC & UNIX) 
                       | 
                     
                    
                      | 
                         ±âº»Áö½Ä | ³í¸® ȸ·Î, µðÁöÅÐ ½Ã½ºÅÛ 
                       | 
                     
                    
                      | 
                         ÀÀ¿ëºÐ¾ß | µðÁöÅРȸ·ÎÀÇ ¼³°è, ASIC/FPGAÀÇ ¼³°è 
                       | 
                     
                    
                      | 
                           
                       | 
                     
                    
                      | 
                           
                       | 
                     
                    
                      | 
                         °ûÁ¾¿í celot@naver.com 
                       | 
                     
                    
                      | 
                           
                       | 
                     
                    
                      | 
                         Çϵå¿þ¾î¸¦ µðÀÚÀÎÇÒ ¼ö ÀÖ´Â ¾ð¾î VHDL°ú Verilog ÇÁ·Î±×·¡¹Ö¿¡ °ü½ÉÀ» °®°í ÀÖÀ¸¸ç, ¸µ ±â¹Ý °í¼º´É ´ëÇü ÄÄÇ»ÅÍ °³¹ß ÇÁ·ÎÁ§Æ®¿¡ Âü¿©ÇÑ ¹Ù ÀÖ´Ù. ÀÚ½ÅÀ» Çϵå¿þ¾î ¿£Áö´Ï¾î¶ó°í ¼Ò°³ÇÏ´Â ÇÊÀÚ´Â ÀÌ ±ÛÀ» ÅëÇØ µðÁöÅÐ ½Ã½ºÅÛ ¼³°è¿Í Çϵå¿þ¾î ±â¼ú ¾ð¾î¸¦ ÀÌ¿ëÇÑ ÇÁ·Î±×·¡¹Ö¿¡ °ü½ÉÀ» °®´Â µ¶ÀÚ°¡ ¸¹¾ÆÁö±â¸¦ ¹Ù¶õ´Ù°í. 
                       | 
                     
                   
                    
                  Áö³ ¿¬Àç¿¡¼ ¿ì¸®´Â ´Ù¾çÇÑ Çϵå¿þ¾îÀÇ ¼³°è ¹æ¹ýÀ» ¾Ë¾ÆºÃ´Ù. ±×¸®°í ¼³°èÇÏ´Â ½Ã½ºÅÛÀÇ Æ¯Â¡¿¡ µû¶ó¼ ¿©·¯°¡Áö ¼³°è ¹æ¹ýÀÌ Á¸ÀçÇÑ´Ù´Â »ç½ÇÀ» ¾Ë¾Ò´Ù. ±× Áß¿¡¼µµ Çϵå¿þ¾îÀÇ µ¿ÀÛÀ» ¹¦»çÇÒ ¼ö ÀÖ´Â ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÎ VHDL¿¡ ´ëÇØ º°µµÀÇ ¿¬À縦 ÇÒ¾ÖÇØ °¡¸é¼ ÀÚ¼¼È÷ »ìÆìºÃ´Ù. À̹ø È£¿¡¼´Â Áö±Ý±îÁöÀÇ Áö½ÄÀ» ¹ÙÅÁÀ¸·Î Á÷Á¢ ÇϳªÇϳª ÇÁ·Î±×·¡¹Ö ÇØ º¸ÀÚ. º» ¿¬Àç¿¡¼ ÃÖÁ¾ ¸ñÇ¥·Î »ïÀº ½Ç½À °úÁ¦´Â À򮂱âÀÇ µ¿ÀÛÀ» ¹¦»çÇÒ ¼ö ÀÖ´Â Çϵå¿þ¾î ¸ðµâÀÇ ¼³°èÀÌ´Ù. ÇÏÁö¸¸ óÀ½ºÎÅÍ ÀÌ¿Í °°Àº ¸ðµâÀ» ¼³°èÇϱ⿡´Â ±âº»ÀûÀÎ ¹è°æ Áö½ÄÀÌ ÇÊ¿äÇÏ´Ù. µû¶ó¼ À̹ø ¿¬Àç¿¡¼´Â µðÁöÅРȸ·Î¿¡ ´ëÇÑ ±âº» ¹è°æ¿¡ ´ëÇØ ¼³¸íÇÑ µÚ À̸¦ ÀÀ¿ëÇϰí ÁÖÁ¦¸¦ Á»´õ È®Àå½ÃÄÑ ¿ì¸®ÀÇ ÃÖÁ¾ °á°ú¹°ÀÎ À򮂱â ÇÁ·ÎÁ§Æ®¸¦ ¼öÇàÇØ º¸ÀÚ. 
                    
                  µðÁöÅРȸ·ÎÀÇ ¸ðµ¨¸µ
                  µðÁöÅРȸ·Î´Â ÀϹÝÀûÀ¸·Î Á¶ÇÕ È¸·Î(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; 
                       | 
                     
                   
                  Àá±ñ ¿©±â¼ ¿ì¸®°¡ °ÅÃÄ ¿Â ±æÀ» »ìÆìº¸ÀÚ. ¿ì¸®´Â Áö±Ý±îÁö Á¶ÇÕ È¸·Î¿Í ¼øÂ÷ ȸ·Î¿¡ ´ëÇØ¼ »ìÆìºÃ´Ù. ±×·¸´Ù¸é ÀÌ·± °ÍµéÀÌ ÀÚÆÇ±â¸¦ ¼³°èÇÏ´Â °Í°ú ¹«½¼ °ü°è°¡ Àִ°¡¶ó°í ¹Ý¹®ÇÒ ¼ö ÀÖ´Ù. ±×¸®°í ´ÙÀ½¿¡¼ ¾Ë¾Æº¼ ½ºÅ×ÀÌÆ® ¸Ó½Å(FSM, Finite State Machine)Àº ¶Ç ¹«¾ùÀΰ¡. »ç½Ç ÀÌ ¸ðµç °ÍµéÀÌ ÀÚÆÇ±â¸¦ ¼³°èÇϱâ À§ÇØ ¹Ì¸® ¾Ë°í ÀÖ¾î¾ß ÇÒ ³»¿ëµéÀÌ´Ù. ¸¶Ä¡ ¾î¶² ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ ¹®¹ýÀ» ¾È´Ù°í ÇØ¼ ¹Ù·Î ÇÁ·Î±×·¡¹ÖÀÌ °¡´ÉÇÏÁö ¾Ê´Â °Í°ú °°Àº ÀÌÄ¡ÀÏ °ÍÀÌ´Ù. ¶§·Î´Â ÀڷᱸÁ¶¿¡ ´ëÇÑ Áö½Äµµ ÇÊ¿äÇÏ°í ¿î¿µÃ¼Á¦¿¡ ´ëÇÑ Áö½Äµµ ÇÊ¿äÇÑ °Íó·³ Çϵå¿þ¾î ÇÁ·Î±×·¡¹Öµµ ÀÌ¿Í ¸¶Âù°¡ÁöÀÌ´Ù. ¿ì¸®°¡ ¼³°èÇÒ ÀÚÆÇ±â ¸ðµâµµ Á¶ÇÕ È¸·Î¿Í ¼øÂ÷ ȸ·Î°¡ È¥ÇյǾî ÀÖ´Â ÇüÅÂÀÌ´Ù. ¶ÇÇÑ ÀÌÁ¦ ¼³¸íÇÒ ½ºÅ×ÀÌÆ® ¸Ó½Å ¿ª½Ã ÀÚÆÇ±â¸¦ ¼³°èÇÏ´Â µ¥ ÀÌ¿ëÇÏ°Ô µÈ´Ù. ±×·³ Áö±ÝºÎÅÍ ½ºÅ×ÀÌÆ® ¸Ó½ÅÀ» ÀÌ¿ëÇÑ 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>¿¡¼ º¸´Â ¹Ù¿Í °°ÀÌ Ãâ·Â ÇÔ¼ö°¡ ÇöÀçÀÇ »óŸ¸À» ÀÔ·ÂÀ¸·Î ÇÑ´Ù. µû¶ó¼ ÇÑ °³ÀÇ »óÅ¿¡ ´ëÇØ¼ ÇÑ °³ÀÇ Ãâ·Â¸¸À» °®´Â´Ù. ÀÌ´Â ¹Ð¸® ¸Ó½Å¿¡ ºñÇØ »óżö°¡ »ó´ëÀûÀ¸·Î Áõ°¡ÇÏ´Â ´ÜÁ¡ÀÌ ÀÖ±â´Â ÇÏÁö¸¸ ÀÔ·ÂÀÇ ³ëÀÌÁî°¡ Ãâ·Â¿¡ Àü´ÞµÇÁö ¾Ê°í ÀÔ·Â ½ÅÈ£ÀÇ ¿µÇâÀ» ´ÙÀ½ ´Ü¿¡ Àü´ÞÇÏÁö ¾Ê±â ¶§¹®¿¡ ¹Ð¸® ¸Ó½Åº¸´Ù Á»´õ ¾ÈÁ¤ÀûÀÎ µ¿ÀÛÀ» ÇÑ´Ù°í ¸»ÇÒ ¼ö ÀÖ´Ù. 
                    
                    
                  ù ÇÁ·ÎÁ§Æ®, ÀÚÆÇ±â ±¸Çö
                  ÀÌÁ¦±îÁö ¿ì¸®´Â Çϵå¿þ¾î ±â¼ú¾ð¾îÀÎ VHDLÀÇ ±âº» °ñ°Ý°ú ¹®¹ýÀû Ư¡, ¸ðµ¨¸µ ¹æ¹ý µî¿¡ ´ëÇØ ¾Ë¾ÆºÃ´Ù. Áö±ÝºÎÅÍ´Â ÀÌ·¯ÇÑ VHDLÀ» ÀÌ¿ëÇØ ¿ì¸®ÀÇ ÃÖÁ¾ ¸ñÇ¥ÀÎ À򮂱âÀÇ µ¿ÀÛÀ» ¹¦»çÇÒ ¼ö ÀÖ´Â Çϵå¿þ¾î ¸ðµâÀ» ±¸ÇöÇØ º¸µµ·Ï ÇÏÀÚ. ÀÏ¹Ý ¼ÒÇÁÆ®¿þ¾î ÇÁ·Î±×·¡¹Ö¿¡¼µµ ¸¶Âù°¡Áö°ÚÁö¸¸ ƯÁ¤ Á¦Ç°ÀÇ °³¹ßÀ» À§Çؼ´Â ÅëÇÕ °³¹ß ȯ°æ(IDE, Integrate Development Environment)ÀÌ ÇÊ¿äÇÏ´Ù. ÅëÇÕ °³¹ß ȯ°æÀ̶õ ½±°Ô ¸»ÇØ ÇÁ·Î±×·¡¹ÖÇϰí ÄÄÆÄÀϸµÇϸç, ³¡À¸·Î µð¹ö±ë¿¡¼ ½ÇÇà ÆÄÀÏÀ» »ý¼ºÇϱâ±îÁö À̸¦ ÇϳªÀÇ È¯°æ ¾Æ·¡¿¡¼ °¡´ÉÄÉ ÇØÁÖ´Â Á¾ÇÕ °³¹ß ÅøÀÌ´Ù. Çϵå¿þ¾îÀÇ °³¹ß¿¡¼µµ ¸¶Âù°¡ÁöÀÌ´Ù. ¿ì¸®°¡ ÀÌ ¿¹Á¦¿¡¼ »ç¿ëÇÒ ÅëÇÕ °³¹ß ȯ°æÀº Xilinx FoundationÀÌ´Ù. 
                  ÀÌ·¯ÇÑ Xilinx FoundationÀº »ó¿ë Á¦Ç°À̶ó ÀÚ¼¼È÷ ¼³¸íÇϱâ´Â ¹«¸®°¡ ÀÖÁö¸¸ ÀÌ´Â Çϵå¿þ¾î °³¹ßÀ» À§ÇÑ Design Entry Tool°ú ÀÌ·¯ÇÑ µðÀÚÀÎµÈ ¸ðµâÀ» ½Ã¹Ä·¹À̼ÇÀ» ÅëÇØ °ËÁõÇØ ÁÖ´Â Design Verification Tool, ±×¸®°í À̸¦ ½ÇÁ¦ Çϵå¿þ¾îÀûÀ¸·Î ¹è¼±/¹èÄ¡¿¡±îÁöÀÇ ±¸ÇöÀ» Ã¥ÀÓÁö´Â Design Implementation ToolÀÌ Çϳª·Î ÅëÇյŠÀÖ´Ù. Áï Áö³ ¿¬Àç¿¡¼ ¼³¸íÇÑ ¹Ù ÀÖ´Â ÀÏ¹Ý FPGA °ü·Ã ¼³°è ÀýÂ÷ÀÇ Àü °úÁ¤À» Áö¿øÇÏ¸ç ¶ÇÇÑ VHDLÀ» ÀÌ¿ëÇÑ ÄÚµù, ½Ã¹Ä·¹À̼Ç, ÇÕ¼º µîÀÇ ¸ðµç °úÁ¤À» Áö¿øÇÑ´Ù. <ȸé 1>Àº Xilinx FoundationÀÇ Ãʱâ ȸéÀÌ´Ù. 
                    
                  ÀÌ·¯ÇÑ Xilinx FoundationÀ» ÀÌ¿ëÇØ ¿ì¸®°¡ ÀÛ¼ºÇÒ ¿¹Á¦´Â ÀÚÆÇ±â¸¦ Á¦¾îÇÏ´Â ¸ðµâÀÌ´Ù. ÀÏ¹Ý À򮂱âÀÇ ¿ø¸®¸¦ »ý°¢ÇØ º¸±â ¹Ù¶õ´Ù. Áï À½·á¸¦ ¼±ÅÃÇÑ ÈÄ ±Ý¾×À» ³ÖÀ¸¸é(°¡·É 500¿ø, 100¿ø, 50¿ø, 10¿ø) ÇØ´ç À½·áÀÇ ±Ý¾×°ú ºñ±³ÇÏ¿© ÇØ´ç ±Ý¾× ÀÌ»óÀÇ µ·ÀÌ µé¾î ¿Ã °æ¿ì À½·á¸¦ Ãâ·ÂÇØ ÁÖ¸ç °Å½º¸§µ·À» ¾Ë¸Â°Ô °Å½½·¯ ÁØ´Ù. À̸¦ ¹ÙÅÁÀ¸·Î ¸ÕÀú ¼öÇàÇØ¾ß ÇÒ ÀÛ¾÷Àº HDL ¿¡µðÅ͸¦ ÀÌ¿ëÇØ ÄÚµùÀ» ¼öÇàÇÏ´Â ÀÛ¾÷ÀÌ´Ù. <ȸé 2>¿¡¼ º¸´Â ¹Ù¿Í °°ÀÌ HDL ÆíÁý±â¸¦ ÀÌ¿ëÇØ ÇÁ·Î±×·¡¹ÖÇÑ´Ù. ÀÌ·¯ÇÑ VHDLÀÇ ½ÇÁ¦ÄÚµå´Â 'ÀÌ´ÞÀÇ µð½ºÄÏ'ÀÇ ÀÚÆÇ±â ³»ºÎ µ¿ÀÛ °ü·Ã Äڵ带 Âü°íÇϱ⠹ٶõ´Ù. 
                    
                  ÀÌ·¸°Ô ÄÚµù ÀÛ¾÷À» ¸¶Ä£ ÈÄ¿¡´Â Àü¼úÇÑ ¹Ù¿Í °°ÀÌ ÇÕ¼º ÀÛ¾÷À» °ÅÄ£´Ù. ¹°·Ð ÇÕ¼º ÀÛ¾÷À» Çϱâ Àü¿¡ ÀÏ¹Ý ¼ÒÇÁÆ®¿þ¾î ÇÁ·Î±×·¡¹ÖÀÇ ¹®¹ý °Ë»ç¿Í °°Àº ÀÛ¾÷À» ¼öÇàÇÑ´Ù. ¹®¹ýÀûÀ¸·Î ÀÌ»óÀÌ ¾ø¾î¾ß ÇÕ¼º ÀÛ¾÷À» ¼öÇàÇÒ ¼ö ÀÖ´Ù. ÀÌ·¸°Ô ÇÕ¼º ÀÛ¾÷À» ¼öÇàÇÔ¿¡ ÀÖ¾î ´Ù½Ã ¿¡·¯°¡ °ËÃâµÉ ¼ö ÀÖ´Ù. ¸¶Ä¡ ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡¼ 'Syntax Error'´Â ¾øÁö¸¸ 'Semantic Error'°¡ Á¸ÀçÇÏ´Â °Í°ú °°Àº ÀÌÄ¡ÀÌ´Ù. ÀÌ·¸°Ô ÇÕ¼º °úÁ¤À» °ÅÄ£ ÀÌÈÄ¿¡´Â <ȸé 3>°ú °°ÀÌ º»°ÝÀûÀΠȸ·ÎÀÇ ±â´ÉÀû Ãø¸é(functional level)¿¡ ´ëÇÑ Å¸ÀÌ¹Ö ½Ã¹Ä·¹À̼ÇÀ» ¼öÇàÇÑ´Ù. 
                    
                  ÀÌ ½Ã¹Ä·¹ÀÌ¼Ç °úÁ¤À» °ÅÄ£ ÈÄ¿¡´Â <ȸé 4>¿¡¼ º¸´Â ¹Ù¿Í °°ÀÌ ±¸Çö °úÁ¤À» °ÅÄ£´Ù. ÀÌ´Â ÄÚµù°ú ½Ã¹Ä·¹ÀÌ¼Ç »ó¿¡¼ÀÇ ¼³°è°¡ ¾Æ´Ñ ½ÇÁ¦ ƯÁ¤ Çϵå¿þ¾î Ĩ ¸ðµâ¿¡¼ÀÇ ±¸ÇöÀ» ¼öÇàÇÏ´Â °úÁ¤ÀÌ´Ù. ÀÌ·¸°Ô ±¸Çö °úÁ¤À» °ÅÄ£ ´ÙÀ½¿¡´Â ³¡À¸·Î °ËÁõ °úÁ¤À» °ÅÄ£´Ù. ¿©±â¼ ´Ù½Ã ÇÑ ¹ø ŸÀÌ¹Ö ½Ã¹Ä·¹À̼ÇÀ» ¼öÇàÇϴµ¥ ÀÌ´Â ¾Õ¼ ¼öÇàÇÑ ±â¼ú µ¶¸³Àû ŸÀÌ¹Ö ½Ã¹Ä·¹À̼ǰú´Â Â÷À̰¡ ÀÖ´Â °ÍÀ¸·Î¼ ƯÁ¤ ¾÷ü¿¡¼ Á¦°øÇϴ ƯÁ¤ Çϵå¿þ¾î ĨÀ» »ç¿ëÇßÀ» °æ¿ì ¹Ý¿µÇØ¾ß ÇÒ Å¸À̹ÖÀÇ µô·¹À̸¦ °í·ÁÇÑ ½Ã¹Ä·¹À̼ÇÀÌ´Ù. ÀÌ·± ½ÄÀ¸·Î ÃÖÁ¾ÀûÀΠȸ·ÎÀÇ °ËÁõ °úÁ¤À» °ÅÄ¡¸é¼ ½ÇÁ¦ ƯÁ¤ FPGA ĨÀ¸·ÎÀÇ ´Ù¿î·Îµù ÀÛ¾÷À» °ÅÄ£´Ù. 
                    
                  Áö±Ý±îÁö ¿ì¸®´Â Çϵå¿þ¾î ±â¼ú¾ð¾îÀÎ VHDLÀ» ÀÌ¿ëÇØ ĨÀ» ¼³°èÇÏ´Â ÀýÂ÷¸¦ ¾Õ¼ ¼³¸íÇÑ µÎ ¿¬ÀçÀÇ ¹è°æ Áö½ÄÀ» ¹ÙÅÁÀ¸·Î ¼³¸íÇß´Ù. º» ¿¬ÀçÀÇ ÃÊÁ¡Àº VHDLÀÌ¿´À¸¹Ç·Î ÀÚ¼¼ÇÑ ÇÕ¼º °úÁ¤°ú ±¸Çö ¹× °ËÁõ °úÁ¤¿¡ ´ëÇÑ ¼³¸íÀº ¸¹ÀÌ Ãà¼Ò½ÃŲ °ÍÀÌ »ç½ÇÀÌ´Ù. ÇÏÁö¸¸ VHDLÀÇ »ç¿ë ¹æ¹ý¸¸ÀÌ¶óµµ º» ¿¬À縦 ÅëÇØ ÃæºÐÈ÷ ¼÷ÁöÇÑ µ¶ÀÚ°¡ ³ª¿Ô´Ù¸é ÇÊÀÚ´Â ³ª¸§´ë·Î ¸¸Á·ÇÑ´Ù. ³¡À¸·Î ÇÑ °¡Áö¸¸ ´õ ¼Ò°³Çϱâ·Î ÇÑ´Ù. À򮂱âÀÇ ³»ºÎ µ¿ÀÛ¿¡ ´ëÇÑ ¹¦»ç¿Í´Â º°°³·Î ¶ÇÇÑ ÀÏ¹Ý »ç¿ëÀÚ°¡ º¸±â¿¡ À򮂱âÀÇ ¿ÜºÎ Ãâ·Â¿¡ ´ëÇØ¼ ÇÁ·Î±×·¡¹ÖÇØ º¼ ¼ö ÀÖÀ» °ÍÀÌ´Ù. ½ÇÁ¦·Î µ¿ÀüÀÌ ÀÔ·ÂµÇ¾î ¿À´Â ±Ý¾×¿¡ µû¶ó¼ ÇØ´ç »óÅ·ΠÀ̵¿ÇÏ´Â ¸ð½À°ú ¿ÜºÎ¿¡ µ¿ÀüÀÇ ÀÔ·ÂÀÌ Ç¥½ÃµÇ´Â Äڵ带 ÇÁ·Î±×·¡¹ÖÇÒ ¼ö ÀÖ´Ù('ÀÌ´ÞÀÇ µð½ºÄÏ'Âü°í). º¸´Ù ¿Ïº®ÇÑ Äڵ带 À§ÇØ ³»ºÎ µ¿ÀÛ°ú ¿ÜºÎ Ãâ·Â¿¡ ´ëÇÑ Äڵ带 ÅëÇÕÇØ¾ß ÇÒ °ÍÀÌ´Ù. ÀÌ´Â µ¶ÀÚ ¿©·¯ºÐ¿¡°Ô ¾ÕÀ¸·ÎÀÇ °úÁ¦·Î ³²±ä´Ù. 
                    
                  ºñ¸Þ¸ð¸® ºÐ¾ßÀÇ °±¹À» ²Þ²Ù¸ç
                  À̹ø È£¿¡¼´Â ¾Õ¼ ÁøÇàÇÑ µÎ ¹øÀÇ ¿¬Àç ³»¿ëÀ» Åä´ë·Î ½ÇÁ¦ VHDL¿¡ ´ëÇØ ¿¹Á¦¸¦ ÅëÇØ ½Ç½ÀÇß´Ù. Ä«¿îÅ͸¦ ºñ·ÔÇØ ƯÈ÷ CPUÀÇ ÇÙ½É ¸ðµâÀ̶ó°í ÇÒ ¼ö ÀÖ´Â ALU¿Í ·¹Áö½ºÅÍÀÇ ¸ðµ¨¸µÀ» VHDL·Î Á÷Á¢ ÇØ º¸¾Ò´Ù. ¶Ç ¿ì¸®ÀÇ ÃÖÁ¾ ¸ñÇ¥ÀÎ ÀÚÆÇ±â¸¦ Á¦¾îÇÏ´Â ¸ðµâµµ ¼³°èÇß´Ù Ãæ½ÇÈ÷ ³»¿ëÀ» ¼÷ÁöÇÑ µ¶ÀÚ¶ó¸é 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 Çø³Ç÷ÓÀº Ãâ·ÂÀÇ º¯È°¡ ¾øÁö¸¸ ·¡Ä¡´Â Ŭ·° ÆÞ½ºÀÇ ÆøÀÌ ³ÐÀ¸¸é ±× µ¿¾È¿¡ ÀÔ·ÂÀÇ º¯È°¡ Ãâ·Â¿¡ ³ªÅ¸³ª°Ô µÈ´Ù. ÀÌ´Â ·¡Ä¡º¸´Ù´Â Çø³Ç÷ÓÀÌ Á»´õ ¾ÈÁ¤ÀûÀÎ µ¿ÀÛÀ» º¸ÀåÇÑ´Ù´Â ÀǹÌÀ̱⵵ ÇÏ´Ù. 
                          
                       | 
                     
                   
                 |