VHDL °³¿ä

±¹ÀÏÈ£


¿äÁò µðÁöÅ» ȸ·Î¿¡ Á¶±ÝÀÌ¶óµµ °ü½ÉÀÌ ÀÖ´Â »ç¶÷À̶ó¸é VHDLÀ̳ª Verilog HDL¿¡ ´ëÇؼ­ ÇѹøÂë µé¾î ºÃÀ» °ÍÀÌ´Ù. º» ¿¬Àç´Â µðÁöÅ» ¼³°è¿¡ ÀÌÇØ°¡ ÀÖ°í ÇÁ·Î±×·¡¹Ö °æÇèÀ» °¡Áö°í ÀÖÀ¸¸ç VHDL¿¡ ´ëÇÑ ¼Ò¹®À» µé¾úÁö¸¸ ¸·»ó ¹æ¹ýÀ» ã°íÀÚ ÇÏ´Â »ç¶÷, ±×¸®°í VHDLÀ» ÀÌ¿ëÇÏ¿© ¹º°¡ ¼³°èÇØ º¸·Á´Â ÀÇÁö°¡ ÀÖ´Â »ç¶÷µéÀ» À§ÇÏ¿© ´ÙÀ½°ú °°Àº ¼ø¼­·Î ÁøÇàÇÏ°Ô µÉ °ÍÀÌ´Ù. ¿¹Á¦µéÀº PC ȯ°æ ÇÏ¿¡¼­ ÁÖ·Î CPLD/FPGA¿ë ÅøÀ» ÀÌ¿ëÇÏ¿© ÁøÇàÇϵµ·Ï ÇÏ°Ú´Ù. ¿¬Àç°¡ ÁøÇàµÅ´Â µ¿¾È Áú¹®À̳ª ÀÇ°ß È¤Àº ¿À·ù¿¡ ´ëÇÑ ÁúŸ´Â ¾ðÀçµçÁö ȯ¿µÀÌ´Ù. ÇÊÀÚÀÇ ÇÏÀÌÅÚ ID´Â GoodKook (E-Mail : goodkook@csvlsi.kyunghee.ac.kr)ÀÌ´Ù. ÇöÀç ÇÏÀÌÅÚ µðÁöÅ» µ¿È£È¸(go dig)¿¡ VHDL °è½ÃÆÇÀÌ °³¼³µÅ¾î ÀÖÀ¸¹Ç·Î ¸¹Àº ÀÌ¿ë ¹Ù¶õ´Ù.¡¡

HDLÀ» ÀÌ¿ëÇÑ ¼³°è°³¿ä

1. HDL À̶õ?

HDL¿¡ ´ëÇؼ­ »ý°¢ÇØ º¸±â·Î ÇÑ´Ù. HDLÀº Hardware Description LanguageÀÇ Ã¹ÀÚ¸¦ µý°ÍÀÌ´Ù. ¿ì¸®¸»·Î ±×´ë·Î ¿Å±â¸é ¸»±×´ë·Î Çϵå¿þ¾î¸¦ ±â¼úÇÏ´Â ¾ð¾îÀÌ´Ù. Çϵå¿þ¾î¸¦ ±â¼ú ÇÑ´Ù´Â °ÍÀº ȸ·Î¸¦ Ç¥Çö ÇÑ´Ù´Â °ÍÀ» ÀǹÌÇÑ´Ù. ¸¹Àº ÀüÀÚȸ·Î ijµå Åø(CAD Tool)µéÀ» º¸¸é ½ºÄɸ¶Æ½À¸·Î ȸ·Î¸¦ "±×¸²"ÇüÅ·Π±×·Á¼­ "Ç¥Çö" ȤÀº "±â¼ú" ÇÑ´Ù. HDLÀº ÀüÀÚȸ·Î¸¦ ¾ð¾î·Î¼­ Ç¥ÇöÇÏ´Â °ÍÀÌ´Ù. °á±¹ ȸ·Î¸¦ Ç¥ÇöÇÏ´Â °ÍÀº ºÎÇ°µéÀÇ »óÈ£¿¬°á °ü°è¸¦ ÀÏÁ¤ÇÑ ¹®¹ý¿¡ ÀÇÇÏ¿© ±â¼úÇϴµ¥ ÀÌÁß Çϳª°¡ EDIFÀÏ°ÍÀÌ´Ù.

HDLÀ̶õ ÀÌ¿Í °°ÀÌ ÀüÀÚȸ·Î¸¦ Á¤ÇØÁø ¹®¹ý°ú Å°¿öµå ±×¸®°í »ç¿ëÀÚ Á¤ÀÇ °´Ã¼µé(user define objects)À» °¡Áö°í ȸ·Î¸¦ ±â¼ú(description)ÇÏ´Â °ÍÀÌ´Ù. ÀÌÁ¦ºÎÅÍ ¸»ÇÏ·Á´Â VHDLÀº EDIF¿Í°°ÀÌ ³×Æ®¸®½ºÆ®ÀÇ ¼º°Ý »Ó¸¸¾Æ´Ï¶ó ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ ¼º°Ýµµ °¡Áö°í À־ ¸Å¿ì ´Ù¾çÇÑ Çϵå¿þ¾î ±â¼ú ¹æ¹ýÀ» Á¦°øÇÑ´Ù. HDLÀÌ ÇÁ·Î±×·¡¹Ö ¾ð¾î¿Í ´Ù¸¥ Á¡Àº ÇÁ·Î±×·¡¹Ö ¾ð¾î´Â ÀüºÎ ¼øÂ÷±¸¹® (sequential statements) ÀÌÁö¸¸ HDLÀº µ¿½Ã±¸¹®(ȤÀº º´·Ä±¸¹®, concurrent statements)ÀÌ ÀÖ´Ù´Â Á¡ÀÌ´Ù. ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡¼­´Â ¸ðµç ±¸¹®Àº ¼øÂ÷ÀûÀ¸·Î ½ÇÇàµÈ´Ù. ÀÌ´Â ÇÁ·Î±×·¥ ³»¿¡¼­ ±¸¹®ÀÌ ¾²¿©Áø (¶Ç´Â ³õ¿©Áø)À§Ä¡°¡ ¸Å¿ì Áß¿äÇÏÁö¸¸ HDL¿¡¼­ concurrent±¸¹®Àº Á» ´Ù¸£´Ù.

ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡¼­,

    1: if ( Sel==0 )
    2:     D = A;
    3: else
    4:     D=B;
    5:
    6: E = D + C;


6¹ø ¶óÀÎÀÇ ½ÇÇà ¼ø¼­°¡ ¸Å¿ì Áß¿äÇÏ´Ù. E °ªÀÌ °áÁ¤µÇ±â À§Çؼ­ ¹Ì¸® if~else ±¸¹®ÀÌ ¸ÕÀú ½ÇÇàµÇ¾î º¯¼ö D°ªÀ» Á¤ÇØÁÖ¾î¾ß(assign) ÇÑ´Ù. À̹ø¿¡´Â ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ °´Ã¼µé, °£´ÜÈ÷ ¸»Çؼ­ º¯¼öµéÀÇ Àǹ̸¦ »ìÆ캸ÀÚ. ¼øÂ÷ ó¸®ÇÏ´Â ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡¼­ º¯¼ö´Â ½Ã°£ÀÌ Áö³­ ÈÄ¿¡ »õ·Î¿î assignÀÌ ÀÖÀ»¶§ ±îÁö Á¤ÇØÁø °ªÀ» "À¯Áö"ÇÏ°í ÀÖ´Ù. ÀÌ´Â º¯¼öµéÀÌ "¸Þ¸ð¸®" ¶ó´Â sequential ȸ·Î¿¡ "ÀúÀå"µÇ¾î ÀÖÀ½À» ¶æÇÑ´Ù. À§ÀÇ ³»¿ëÀÌ ½ÇÇà µÉ¶§ ¼Ò¿äµÇ´Â ½Ã°£À» º¸¸é 2-stepÀÌ ÇÊ¿äÇÏ´Ù. À̸¦ °£´ÜÇÏ°Ô PMS(Processor-Memory-Switch)ÀÇ °ü°è·Î ³ªÅ¸³»º¸¸é ±×¸² 1°ú °°´Ù.

±×¸² 1. PMS (Processor-Memory-Switch) ¸ðµ¨¿¡¼­ÀÇ ¼øÂ÷±¸¹® ½ÇÇÛ

À̹ø¿¡´Â Àü¿ëÀÇ Çϵå¿þ¾î·Î ±¸¼ºÇÑ´Ù°í ÇÏÀÚ. ±×¸²2¿Í °°Àº ȸ·Î°¡ µÉ°ÍÀÌ´Ù.

±×¸² 2. VHDL º´·Ä±¸¹®(Concurrent statement)ÀÇ ¿¹

VHDLÀÇ º´·Ä ±¸¹®(concurrent statements)À¸·Î ±â¼úÇÏ¸é ´ÙÀ½°ú °°´Ù.

    1: D <= A when Sel='0' else B;
    2: E <= D + C;


À§ÀÇ ±¸¹®À» netlistÇüÅ·Πº¸°í °´Ã¼µéÀÎ A, B, C, D, E ¸¦ "signal name"À¸·Î ÀÌÇØ Çϱâ·Î ÇÏÀÚ. Áï ¸Þ¸ð¸®¿¡ "ÀúÀåµÈ" º¯¼ö°¡ ¾Æ´Ñ ´Ü¼øÇÑ "¿¬°á¼±"(wire)ÀÇ À̸§ÀÌ´Ù. º´·Ä±¸¹® 1°ú 2ÀÇ ¼ø¼­°¡ ¹Ù²ï´Ù°í Çؼ­ ¹®Á¦ µÉ°ÍÀÌ ¾ø´Ù. "ÀԷ½ÅÈ£" (Signal) A, B, C°¡ MUX¿Í ADDER¸¦ Åë°ú Çϸ鼭 ¹ß»ýÇÏ´Â ¾à°£ÀÇ Áö¿¬ÀÌ ÀÖ°ÚÁö¸¸ ÀԷ¿¡¼­ Ãâ·Â±îÁö "µ¿½Ã"¿¡ ÀÌ·ç¾îÁø´Ù. ÀÌ¿Í °°ÀÌ HDLÀº concurrent ¹®À¸·Î ÀÌ·ç¾î Áø´Ù. ¶ÇÇÑ °´Ã¼µéÀº ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÇ º¯¼öµé°ú´Â Àǹ̰¡ ´Ù¸£´Ù. HDLÀÇ °´Ã¼µéÀº SIGNALÀÇ À̸§ÀÏ »ÓÀ̸ç À̵é SignalÀÇ °ü°è¸¦ ±â¼úÇÏ´Â ¹æ¹ý¿¡ µû¶ó Flip-Flop°ú °°Àº sequential ȸ·Î¸¦ ¹¦»ç(Modeling)ÇÒ¼ö ÀÖ´Ù. ¼øÂ÷ȸ·Î¸¦ ±â¼úÇϱâ À§Çؼ­ VHDLÀÇ ¼øÂ÷±¸¹® ºí·°(process block)¿¡ F/F¸¦ Ç¥ÇöÇÏ¸é ´ÙÀ½°ú°°´Ù. À̸¦ µðÁöÅ» ȸ·Î·Î ³ªÅ¸³»¸é ±×¸² 3°ú °°´Ù.
 

    1: MUX_OUT <= A when Sel='0' else B;
    2: process (Clk)
        begin
            if (Clk'EVENT AND Clk='1') then
                 D <= MUX_OUT;
            end if;
        end process;
    3: E <= D + C;


ÀÌ°æ¿ì¿¡µµ ¿ª½Ã °´Ã¼ A, B, C, D, E, MUX_OUTÀº ¹è¼±ÀÇ À̸§(signal name)ÀÏ »ÓÀÌ´Ù. ´Ù¸¸ MUX_OUT°ú DÀÇ °ü°è¸¦ ±â¼úÇÏ´Â ºÎºÐ¿¡¼­ "else"°¡ ¾ø´Â "if~end if" °¡ Rising-Edge triggerÀÇ D-F/F¸¦ ¹¦»çÇÑ °ÍÀÌ´Ù. ¼øÂ÷±¸¹® ºí·°Àº 1°³ÀÇ º´·Ä ±¸¹®À¸·Î °£ÁֵȴÙ. À̶§ ±¸¹® 1,2,3ÀÇ ¼ø¼­´Â Àǹ̰¡ ¾ø´Ù.

À§ÀÇ °£´ÜÇÑ ¿¹¸¦ ÅëÇؼ­ º»°Í°ú °°ÀÌ VHDLÀ» ÀÌ¿ëÇؼ­ µðÁöÅ» ȸ·Î¸¦ Ç¥ÇöÇÒ ¶§¿¡´Â ±¸¹® ÇüÅÂÀÇ Àǹ̸¦ Á¤È®ÇÏ°Ô ÆÄ¾Ç ÇÏ¿©¾ß ¿øÇÏ´Â ÀûÀýÇÑ È¸·Î¸¦ ¾òÀ»¼ö ÀÖ´Ù. VHDLÀ» ÀÌ¿ëÇؼ­ µðÁöÅ» ȸ·ÎÀÇ ¿ä¼Ò(primitives)µéÀ» Ç¥ÇöÇÏ´Â ¹æ¹ý¿¡ ´ëÇؼ­´Â "ÇÕ¼º°¡´ÉVHDL"ÀÇ ±â¼ú¿¡¼­ ÀÚ¼¼È÷ »ìÆì º¸µµ·Ï ÇÏ°Ú´Ù.¡¡

±×¸² 3. VHDL ¼øÂ÷±¸¹®ÀÇ ¿¹¡¡

2. "¾ÆÀ̵ð¾î"¿¡¼­ "½ÇÁ¦È¸·Î" ±îÁö.....

¼³°èÀÚÀÇ ¸Ó¸®¼Ó¿¡ ÀÖ´Â "¾ÆÀ̵ð¾î"·ÎºÎÅÍ ½ÇÁ¦È¸·Î¸¦ ¸¸µå´Â °úÁ¤À» º¸¸é ´ÙÀ½°ú °°ÀÌ ¸î°¡Áö ´Ü°è¸¦ °ÅÄ¡°Ô µÈ´Ù.

ȸ·ÎÀÇ Ç¥Çö ´Ü°è¿¡¼­ ½ºÄɸ¶Æ½À» ÀÌ¿ëÇÏ°Ç HDLÀ» ÀÌ¿ëÇÏ°Ç ¼³°èÀÚÀÇ ÃëÇâÀÌ´Ù. °£´ÜÇÑ È¸·Î³ª ÀÌ¹Ì ±â´ÉÀÌ Á¤ÇØÁø CPU, Memory, GateµîÀ» ÀÌ¿ëÇؼ­ º¸µå ¼³°è¸¦ ÇÒ°æ¿ì ±»ÀÌ ½Ã¹Ä·¹ÀÌ¼Ç ÇÒÇÊ¿äµµ ¾ø°í À̸¦ ½Ã¹Ä·¹ÀÌ¼Ç ÇØÁִ ijµåµéµµ ¾ø´Ù. ´Ù¸¸ º¸µå¸¦ ¿Ï¼ºÇϱâ À§Çؼ­ PCB¸¦ ¸¸µé±â À§Çؼ­ ijµå¸¦ »ç¿ëÇÒ »ÓÀÌ´Ù. À̶§ ijµå ÅøµéÀº ȸ·ÎÀÇ ³×Æ®¸®½ºÆ®¿Í ¼³°èµÈ Layout°úÀÇ ºñ±³¸¦ ¼öÇàÇÏ¿© un-routeµÈ°ÍÀÌ ¾ø´ÂÁö °Ë»çÇØÁÖ´Â Áß¿äÇÑ ¿ªÈ°À» ÇÑ´Ù.

±×·¯³ª CPU¿Í °°ÀÌ º¹ÀâÇÑ ±â´ÉÀ» ¼öÇàÇϴ ȸ·Î¸¦ ¼³°è ÇÑ´Ù°í »ý°¢ÇØ º¸ÀÚ. ³»°¡ ±×¸°(¶Ç´Â Ç¥ÇöÇÑ ¶Ç´Â ±â¼úÇÑ)ȸ·Î°¡ »ý°¢´ë·Î Àß ¿òÁ÷¿© ÁÙ °ÍÀ̶ó°í ¹Ï°í ½ÇÁ¦ Á¦ÀÛ¿¡ µé¾î°¡ÀÚ. ¸¸ÀÏ Á¦´ë·Î ÀÛµ¿ÇÏÁö ¾Ê´Â´Ù¸é? ȸ·Î¸¦ ¸¸µå´À¶ó µç ºñ¿ë°ú ¼ö°í°¡ ¸ðµÎ Çã»ç°¡ µÇ¾î ¹ö¸°´Ù. ½ÇÁ¦·Î Á¦ÀÛÇϱâ Àü¿¡ ÃæºÐÇÑ °ËÁõÀÌ ÀÌ·ç¾îÁöÁö ¾ÊÀ¸¸é ¾ÊµÇ¸ç ¹Ýµå½Ã ÃæºÐÇÑ ½Ã¹Ä·¹À̼ÇÀÌ ÇÊ¿äÇÏ´Ù. ½Ã¹Ä·¹À̼ÇÀÇ ´Ü°è´Â Å©°Ô 3°¡Áö·Î ³ª´©¾î »ý°¢ÇÒ¼ö ÀÖ´Ù.

ù°, ¾Ë°í¸®Áò ´Ü°è¿¡¼­ÀÇ ½Ã¹Ä·¹ÀÌ¼Ç (algorithmic simulation)ÀÌ´Ù. ÀÌ´Â »ç¶÷¸Ó¸® ¼ÓÀÇ º¹ÀâÇÑ »ý°¢À» ´Ü°èº°·Î ÀûÀýÇÏ°Ô Á¤¸®ÇÑÈÄ ÀÌ Ã³¸®ÀýÂ÷(Procedure)°¡ ¿Ã¹Ù¸¥Áö ³í¸®»óÀÇ ¿À·ù´Â ¾ø´ÂÁö È®ÀÎÇØ º¸´Â ´Ü°è¶ó ÇÏ°Ú´Ù. ÀÌ °úÁ¤¿¡¼­ ½±°Ô »ç¿ëÇÒ ¼ö ÀÖ´Â "µµ±¸"°¡ ¹Ù·Î C ¿Í °°Àº ÇÁ·Î±×·¡¹Ö ¾ð¾îÀÌ´Ù. ¸¸ÀÏ PMS ¸ðµ¨¿¡¼­ "¾ÆÀ̵ð¾î"¸¦ ó¸® ÇÑ´Ù¸é ÀÌ°ÍÀ¸·Î ¸¸Á·ÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª "¾ÆÀ̵ð¾î"¸¦ Çϵå¿þ¾î·Î ¼³°èÇÏ°íÀÚ ÇÑ´Ù¸é ¾Ë°í¸®ÁòÀ» Àß ºÐ¼®ÇÏ¿© Á¶ÇÕȸ·Î, ¼øÂ÷ȸ·Î, ȤÀº ±â´ÉºÎºÐÀ¸·Î ÀûÀýÈ÷ ºÐÇÒÇÑ ÈÄ ÀÌ¿¡ ¸Â°Ô VHDLÀ» ÀÌ¿ëÇÏ¿© ±â¼úÇÒ ¼ö ÀÖ´Ù. VHDLÀº Çϵå¿þ¾î»Ó¸¸ ¾Æ´Ï¶ó ÇÁ·Î±×·¡¹Ö ¾ð¾î·Î¼­ÀÇ ±â´Éµµ Áö¿øÇÑ´Ù. ´ÜÀûÀ¸·Î VHDLÀ» ¿ÏÀüÇÑ ÇÁ·Î±×·¡¹Ö ¾ð¾î¶ó°í ¸»ÇÏ´Â »ç¶÷µµ ÀÖ´Ù. ½ÇÁ¦·Î VHDL¿¡¼­ ¼±¾ðÇÒ ¼ö ÀÖ´Â °´Ã¼Çü(object types)Àº bit »Ó¸¸ ¾Æ´Ï¶ó char, real, integer µîµµ Áö¿øÇÏ¸ç »ç¿ëÀÚ Á¤ÀÇÇüµµ ¾ó¸¶µçÁö ¼±¾ðÇÏ¿© »ç¿ëÇÒ ¼ö ÀÖ°í È­ÀÏ ÀÔÃâ·Âµµ Áö¿øÇÑ´Ù.

µÑ°, Çϵå¿þ¾î ±â´É¼öÁØ ´Ü°è¿¡¼­ÀÇ ½Ã¹Ä·¹À̼Ç(Functional Simulation)ÀÌ´Ù. ¾Ë°í¸®Áò ´Ü°è¿¡¼­ÀÇ ±â¼úÀº ½ÇÁ¦ Çϵå¿þ¾î¿Í´Â »ó´çÇÑ Â÷ÀÌ°¡ ÀÖ´Ù. ¾Ë°í¸®Áò ´Ü°è´Â "¾ÆÀ̵ð¾î"¿¡ ´ëÇÑ Ã¼°èÀûÀΠó¸® ÀýÂ÷¸¦ ±¸Ã¼È­ ÇÏ´Â ´Ü°è¶ó ÇÑ´Ù¸é ±â´É ¼öÁØÀº ½ÇÁ¦ Çϵå¿þ¾îÀÇ ¿ä±¸¿Í ÀÌ¿¡´ëÇÑ ±¸Ã¼ÀûÀÎ ¼³°è´Ü°è¶ó ÇÒ¼ö ÀÖ´Ù. ¾î¶² "¾ÆÀ̵ð¾î"¸¦ Çϵå¿þ¾î·Î ¿Å±â·Á´Â ÀÌÀ¯´Â ¹«¾ù º¸´Ùµµ ½Ç½Ã°£ 󸮶ó´Â °í¼ÓÀÇ ¿ä±¸¿¡ ´ëÀÀÇÏ°íÀÚ ÇÔÀÏ °ÍÀÌ´Ù. À̸¦ À§ÇÏ¿© ¹«ÀÛÁ¤ ȸ·Î¸¦ ¸¸µé¼ö´Â ¾ø´Ù. Çϵå¿þ¾îÀÇ ÀüüÀûÀÎ Å©±â, ´Ù¸¥ ȸ·Î¿ÍÀÇ ÀÎÅÍÆäÀ̽º¸¦ À§ÇÑ Å¸ÀÌ¹Ö ¿ä±¸µîÀ» °í·Á ÇؾßÇÑ´Ù. 󸮼ӵµ¿Í Çϵå¿þ¾îÀÇ Å©±â¿¡´Â ¼­·Î ¹ÐÁ¢ÇÑ °ü°è°¡ ÀÖÀ¸¹Ç·Î ŸÇùÁ¡ÀÌ ÇÊ¿äÇÏ¸ç ´Ù¸¥ ȸ·Î¿ÍÀÇ ÀÎÅÍÆäÀ̽º ŸÀֵ̹µ Àß °í·ÁÇØ¾ß ÇÑ´Ù. ¾Æ¹«¸® ÁÁÀº Çϵå¿þ¾î¶ó Çصµ ÀÔÃâ·ÂÀ» ÀûÀýÈ÷ ÁÖ°í¹ÞÀ» ´ëÃ¥ÀÌ ¾ø´Ù¸é ¾Æ¹« ¾µ¸ð°¡ ¾øÀ» °ÍÀÌ´Ù. ¸ðµç Çϵå¿þ¾îÀÇ µ¥ÀÌŸ ½¬Æ®(data-sheet)¸¦ º¸¸é ¹Ýµå½Ã ŸÀֵ̹µ°¡ ÀÖÁö ¾ÊÀº°¡!

±â´É¼öÁØÀÇ ¼³°èÀÇ ÇÑ ¿¹·Î¼­ "c = a + b"ÀÇ °è»êÀ» »ý°¢Çغ¸ÀÚ. ¾Ë°í¸®Áò ´Ü°è¿¡¼­ a, b, c ¸ðµÎ Á¤¼öÀΰæ¿ì ´ÙÀ½°ú °°ÀÌ ³ªÅ¸³¾¼ö ÀÖ´Ù.
 

    signal a, b, c : integer;
    c <= a + b;


±×·¯³ª Çϵå¿þ¾î·Î ¼³°èÇÒ ¶§¿¡´Â ¾Ë°í¸®ÁòÀ» ºÐ¼®ÇÏ¿© ÀԷµǴ a, bÀÇ ¼ýÀÚ¹üÀ§¿¡ µû¶ó ¸îºñÆ® Â¥¸®·Î ¿¬»ê ÀåÄ¡¸¦ ¸¸µé °ÍÀÎÁö °áÁ¤ÇØ¾ß ÇÑ´Ù. ¿¹¸¦µé¾î a ¿Í bÀÇ ÀԷ¹üÀ§°¡ 0~255 (00000000~11111111) ¶ó¸é 8ºñÆ® °¡»ê±â¸¦ »ç¿ëÇÏ¸é µÈ´Ù. ±×·¯³ª b ÀÇ ÁÖµÈ ¹üÀ§°¡ 0~240 (00000000~11110000) À̸é 8ºñÆ® °¡»ê±â¸¦ ¸¸µå´Â°ÍÀº ºÒÇÕ¸®ÇÏ´Ù.

¡¡

±×¸² 4. ¿¬»ê ¹üÀ§°¡ ´Ù¸¥ ¿¬»ê±âÀÇ ÃÖÀû ¼³°è ¹æ¹ýÀÇ ¿¹¡¡

LSBÀÇ 4°³ ºñÆ®´Â ¿¬»êµÇÁö ¾ÊÀ¸¹Ç·Î, 4ºñÆ® °¡»ê±â·Î¼­ MSB¿¡¸¸ Àû¿ëÇÏ¸é µÈ´Ù. ÀÌ·¸°Ô ȸ·Î°¡ ¸¸µé¾î Áö°í³ª¸é ³ªÁß¿¡ º¯°æÀÌ ºÒ°¡´ÉÇÏ´Ù. ¸¸ÀÏ bÀÇ ÀÔ·Â ¹üÀ§°¡ ¼³°è½Ã ¿¹ÃøÇÑ ´ë·Î 240º¸´Ù ÀÛÀº °ªÀÌ ¹ß»ýÇÒ °¡´É¼ºÀÌ ÀÖ´Â °æ¿ì ±×°á°ú ÀüüÀûÀÎ °á°ú¿¡ ´ëÇÑ Á¤È®µµ¸¦ ¹Ýµå½Ã °ËÁõÇØ º¸¾Æ¾ß ÇÒ°ÍÀÌ´Ù. ½ÇÁ¦·Î ÀÌ·¯ÇÑ ¹®Á¦´Â ½Åȣó¸® ½Ã½ºÅÛ ¼³°è½Ã ºó¹øÈ÷ ¹ß»ýÇÏ´Â ¹®Á¦ÀÌ´Ù. Çϵå¿þ¾îÀÇ ÃÖÀûÈ­¿Í ¾Ë°í¸®ÁòÀÇ Á¤È®¼º¿¡ ´ëÇÑ ¹®Á¦ÀÎ °ÍÀÌ´Ù.¡¡

¼Â°, ÇÕ¼º(synthesis)ÈÄ ½Ã¹Ä·¹À̼ÇÀÌ´Ù(Post-Simulation). ÇÕ¼º(synthesis)À̶õ HDL ¾ð¾î·Î¼­ ±â¼úÇÑ Çϵå¿þ¾î¸¦ ½ÇÁ¦ ³í¸® ¼ÒÀÚµéÀÇ ³×Æ®¸®½ºÆ®·Î ¹Ù²Ù´Â °úÁ¤À̶ó ÇÒ¼ö ÀÖ´Ù. À̶§ ¹°·Ð ³í¸® ÃÖÀûÈ­(logic optimize)°¡ ¼öÇàµÇ´Â °ÍÀº ¹°·ÐÀÌ´Ù. ÀÌ·¯ÇÑ ³í¸® ÇÕ¼º/³í¸® ÃÖÀûÈ­ °úÁ¤ÀÌ ÀÚµ¿ ¶ó¿ìÆÃ(Auto-Routing)°ú ÇÔ²² ¼³°èÀÚµ¿È­(DA:Design-Automation)ÀÇ ÁÖ¿äÇÑ ºÎºÐÀ̶ó ÇÏ°Ú´Ù. ÇÕ¼º±â(synthesizer)À» °ÅÄ¡°Ô µÇ¸é ³×Æ®-¸®½ºÆ®°¡ »ý¼º µÇ´Âµ¥ ¸ðµç HDL ±¸¹®µéÀÌ ÇÕ¼º±â¸¦ °ÅÃļ­ ³×Æ®-¸®½ºÆ®·Î ¸¸µé¾î ÁöÁø ¾Ê´Â´Ù. ¼ÒÀ§ ¸»ÇÏ´Â "ÇÕ¼º°¡´ÉÇÑ" ÇüÅ·Π±â¼ú µÇ¾î¾ß ÇÑ´Ù. VHDLÀÇ °æ¿ì integer³ª realµîÀ» Á÷Á¢ ÇÕ¼ºÇس»Áö ¸øÇÏ¸ç ¿¬»êÁß ³ª´°¼ÀÀº ÇÕ¼ºÇÏÁö ¸øÇÑ´Ù. ÇÕ¼º °¡´ÉÇÑ VHDL (Sybthesizable VHDL)Àº IEEE¿¡¼­ std_logic_1164¿Í std_logic_signed, std_logic_unsigned·Î ±ÔÁ¤µÇ¾î ÀÖ°í ÇöÀç ´ëºÎºÐ ÇÕ¼º±âµéÀÌ À̸¦ Áö¿øÇÏ°í ÀÖ´Ù.¡¡

ÇÕ¼º±â´Â ¸ñÇ¥·Î ÇÏ´Â Çϵå¿þ¾îÀÇ ¶óÀ̺귯¸®¿¡ ÀÇ°ÅÇÏ¿© ³×Æ®-¸®½ºÆ®¸¦ »ý¼ºÇÑ´Ù. ¿¹¸¦ µé¾î 8ÀÔ·Â AND ¸¦ ±â¼ú ÇÑ´Ù°í ÇÏÀÚ.¡¡

ÇÕ¼º±â´Â ÀÌ ±¸¹®À» ³×Æ®-¸®½ºÆ®·Î »ý¼ºÇϱâ À§Çؼ­ Á¦°øµÇ´Â ¶óÀ̺귯¸®(library)¸¦ ÂüÁ¶ÇÑ´Ù. ¶óÀ̺귯¸®(library)´Â Çϵå¿þ¾î Á¦Àۻ翡¼­ Á¦°øÇÏ´Â °ÍÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ´Â ±âº» ½ìµéÀ» ¸ð¾Æ³õÀº °Í(cell library)ÀÌ´Ù. ¸¸ÀÏ A»çÀÇ°æ¿ì 8ÀÔ·Â NAND¿Í NOT °ÔÀÌÆ®¸¦ Á¦°ø ÇÑ´Ù¸é ±×¸²5(a)¿Í °°ÀÌ µÇ°ÚÁö¸¸, 5ÀÔ·Â NAND ¸¸À» Á¦°øÇÏ´Â B»ç¿¡ Á¦ÀÛÀ» ÀÇ·ÚÇÒ °æ¿ì ±×¸² 5(b)¿Í °°Àº ȸ·Î·Î ÇÕ¼ºÇÒ °ÍÀÌ´Ù. ¹ÝµµÃ¼ Á¦ÀÛ»çµéÀº ´õ¸¹Àº Á¾·ùÀÇ ¶óÀ̺귯¸®¸¦ Á¦°øÇÒ¼ö ÀÖµµ·Ï ³ë·ÂÇÏ°í ÀÖ´Ù.¡¡

¶óÀ̺귯¸®´Â ½ìµéÀÇ ³í¸®ÀûÀÎ ±â´É»Ó¸¸ ¾Æ´Ï¶ó ÆÒ-ÀÎ,ÆÒ-¾Æ¿ô¿¡ ´ëÇÑ Æ¯¼º°ú Áö¿¬µîÀÇ Á¤º¸¸¦ °¡Áö°í ÀÖ°í °°Àº ±â´ÉÀ» ÇÏ´õ¶óµµ Ãâ·ÂÀÇ ±¸µ¿(driving)´É·Â¿¡ µû¶ó ¿©·¯°¡Áö Á¾·ù¸¦ °®´Â´Ù. ±×·¯³ª ÇÕ¼º¿¡ ÀÇÇÏ¿© ¾ò¾îÁø ³×Æ®¸®½ºÆ®´Â ȸ·ÎÀÇ ³í¸®ÀûÀÎ ¸éÀ» ÁÖ·Î ³ªÅ¸³½´Ù. µû¶ó¼­ ³×Æ®¸®½ºÆ®¸¦ ÀÌ¿ëÇÑ ÆÒ-ÀÎ(Fan-In), ÆÒ-¾Æ¿ô(Fan-Out)ÀÇ °ËÁõ(verify)ÀÌ ¹Ýµå½Ã ÇÊ¿äÇϸç, Áö¿¬(delay)µî¿¡ ´ëÇÑ °ËÁõÀÌ ÇÊ¿äÇÏ´Ù. ½ÇÁ¦·Î ÇÕ¼º¿¡ ÀÇÇÏ¿© ¾ò¾îÁø ³×Æ®¸®½ºÆ®¸¦ ÀÌ¿ëÇؼ­ ÆÒ-ÀÎ, ÆÒ-¾Æ¿ô °ËÁõÀ» Çغ¸¸é ¿¡·¯°¡ ¾È³ª´Â °æ¿ì´Â ¾ø´Ù. À̶§ ¿¡·¯ ¸®½ºÆ®¸¦ º¸¸é¼­ ³×Æ®¸®½ºÆ®¸¦ ¼öÁ¤ÇÏ°Ô µÈ´Ù. ÀÌ·¯ÇÑ ³×Æ®¸®½ºÆ®ÀÇ ¼öÁ¤Àº ¼ö°í½º·´±ä ÇÏÁö¸¸ ÀÇ¿Ü·Î ´Ü¼øÇÑ ÀÛ¾÷ÀÌ´Ù. ¶óÀ̺귯¸®ÀÇ µ¥ÀÌŸ ½¬Æ®¸¦ º¸¸é¼­ µî°¡ ±â´ÉÀÇ ½ìÁß ±¸µ¿ ´É·ÂÀÌ ³ôÀº °ÍÀ¸·Î ½ìÀ» ¹Ù²ã Áְųª ÀÓÀÇ·Î ¹öÆÛ¸¦ Ãß°¡½ÃŲ´Ù.¡¡

ÀÏ´Ü ³×Æ®¸®½ºÆ®°¡ ¸¸µé¾îÁö¸é Á¦´ë·Î ÇÕ¼ºÀÌ µÇ¾ú´ÂÁö, ¼³°è»ç¾çÀÇ ¼Óµµ¿¡ ¸Â´ÂÁö ½Ã¹Ä·¹ÀÌ¼Ç Çغ»´Ù. HDL·ÎºÎÅÍ ³í¸®ÃÖÀûÈ­(logic optimization)µîÀ» °ÅÃÄ ³×Æ®¸®½ºÆ®¸¦ »ý¼ºÇÏ´Â ÇÕ¼º±â(synthesizer)µµ ¼ÒÇÁÆ®¿þ¾î ÇÁ·Î±×·¥ÀÌ´Ù. ²À ÇÕ¼º±âÀÇ ¼º´ÉÀÌ ¸ø ¹Ì´õ¿î°Ç ¾Æ´ÏÁö¸¸ Á¦´ë·ÎµÈ ³×Æ®¸®½ºÆ®°¡ ³ª¿Ô´ÂÁö °ËÁõÇغ¼ ÇÊ¿ä°¡ ÀÖ´Ù. ³×Æ®¸®½ºÆ®´Â ½ÇÁ¦ »ç¿ëµÈ ½ìµéÀÇ ¿¬°áÀ̹ǷΠ½Ã°£ ½Ã¹Ä·¹À̼ÇÀÌ °¡´ÉÇÏ´Ù. À̶§ °¢ ¶óÀ̺귯¸® ½ìÀÇ Áö¿¬ Á¤º¸°¡ ÀÌ¿ëµÈ´Ù. ºñ·Ï ±â´ÉÀº Á¤È®ÇÏ´Ù Çصµ Áö¿¬¿¡ ÀÇÇÑ ¿Àµ¿ÀÛÀÌ ¹ß»ýÇÒ¼ö ÀÖ´Ù. ÀÌ·¯ÇÑ ¿Àµ¿ÀÛÀÌ Áö³ªÄ¡°Ô ±ä critical-path·Î ÀÎÇÑ °ÍÀÌ¸é ¼³°èÀÇ Àü¸éÀûÀÎ ¼öÁ¤ÀÌ ÇÊ¿äÇÒÁö ¸ð¸¥´Ù. critical-path¶õ ·¹Áö½ºÅÍ¿Í ·¹Áö½ºÅÍ »çÀÌÀÇ Á¶ÇÕ³í¸® ȸ·ÎÁß °¡Àå ±æ°Ô ¿¬À̾îÁ® ÀÖ´Â °ÔÀÌÆ®µéÀÇ ¼ö¸¦ ¶æÇÑ´Ù. ÀÌ critical-path°¡ Àüü ȸ·ÎÀÇ ¼Óµµ¸¦ °áÁ¤Â¢°Ô µÈ´Ù. ÀÌ·¯ÇÑ ¿¡·¯¸¦ °¡´ÉÇÑ ÁÙÀ̱â À§Çؼ­´Â HDL·Î óÀ½ ÄÚµùÇÒ¶§ ÀûÀýÇÑ ºÐÇÒ°ú ÇÕ¼º ¿É¼ÇÀÇ Àû¿ëÀÌ ÇÊ¿äÇÏ´Ù. ÀÌ¿Í °°Àº °úÁ¤ÀÇ ½Ã¹Ä·¹À̼ÇÀº Pre-Route (Pre-Layout) ½Ã¹Ä·¹À̼ÇÀ̶ó ÇÑ´Ù. Pre-Route ½Ã¹Ä·¹À̼ÇÀº ½ì ÀÚüÀÇ µ¿ÀÛ Áö¿¬¸¸À» °í·ÁÇÑ °ÍÀ̸ç ĨÀ§¿¡ ½ìµéÀ» ¹èÄ¡ÇÏ°í À̵鰣ÀÇ ¶ó¿ìÆÃ(P&R : Placement and Route)ÀÌ ³¡³ª¸é ¹è¼± Áö¿¬µéÀ» °í·ÁÇÑ ½Ã¹Ä·¹À̼ÇÀÌ ÇÊ¿äÇѵ¥ À̸¦ Post-Route (Post-Layout) ½Ã¹Ä·¹À̼ÇÀ̶ó ÇÑ´Ù. ÀÌ·¯ÇÑ ÀÏ·ÃÀÇ °ËÁõ °úÁ¤ÀÌ ¿Ï·áµÈ ÈÄ¿¡ ºñ·Î¼­ ½ÇÁ¦ Çϵå¿þ¾îÀÇ Á¦ÀÛ¿¡ µé¾î°£´Ù. Ĩ Á¦ÀÛÀ» À§Çؼ­´Â P&R °á°ú·ÎºÎÅÍ Layout GenerationÀ¸·Î ½ìÀÇ À§Ä¡¿Í ¹è¼± ·¹À̾ƿôÀ» ¾ò°í ¿©±â¿¡ ½ìÀÇ ·¹À̾ƿôÀ» merge ÇÏ¿© ¿ÏÀüÇÑ ·¹À̾ƿôÀÌ °øÁ¤¿¡ ÁÖ¾îÁø´Ù. ASICÀÇ °æ¿ì ÀÌ·¯ÇÑ ÀÏ·ÃÀÇ °úÁ¤À» °ÅÄ¡Áö ¾ÊÀ¸¸é °øÁ¤¿¡¼­ ¹Þ¾ÆÁÖÁö ¾ÊÀ¸¸ç ½Ã¹Ä·¹ÀÌ¼Ç Á¶°Çµµ ¸Å¿ì ±î´Ù·Ó´Ù. °øÁ¤»ç¿¡¼­´Â ¶óÀ̺귯¸®¸¦ Á¦°øÇÏ°í ¹Þ¾ÆµéÀÏ ¼ö ÀÖ´Â Å×½ºÆ® Á¶°ÇÀ» Á¦½ÃÇÑ´Ù. µ¿ÀÛ¿¡ ´ëÇÑ ³»¿ë¿¡´Â °ü½ÉÀÌ ¾øÀ¸¸ç À̵éÀÌ Âü°íÇÏ´Â Á¶°ÇÀ̶õ ÃæºÐÈ÷ Å×½ºÆ®°¡ µÇ¾ú´ÂÁöÀÇ ¿©ºÎÀÌ´Ù. ¼³°èÀÚ´Â ÀÔ·Â ÆÐÅÏ(input stimuli, test vector)À» Á¦ÃâÇÏ°í À̸¦ Åä´ë·Î ÀÔÃâ·Â½ÅÈ£ÀÇ È®ÀÎÀº ¹°·Ð, Post-SimulationÀ» ÇÏ°í³ª¸é ȸ·Î³»ÀÇ ¸ðµç °ÔÀÌÆ®¿¡ ÀԷ½ÅÈ£¸¦ ÁÖ¾î Á³´Â°¡¿¡ ´ëÇÑ Á¤º¸¸¦ ¾ò¾î¼­ °øÁ¤¿¡ ¹Þ¾ÆµéÀÏ °ÍÀÎÁö °áÁ¤ÇÑ´Ù. ºÒÃæºÐÇÑ Å×½ºÆ® ÀÔ·ÂÀ¸·Î ÀÎÇÑ ¿Àµ¿ÀÛÀº ´©°¡ Ã¥ÀÓÁú °ÍÀΰ¡? Å×½ºÆ® °úÁ¤Àº ¸Å¿ì Áß¿äÇϹǷΠÀÌ¿¡ ´ëÇÑ Àü·«¼ö¸³ÀÌ ÇÊ¿äÇÏ°í Å×½ºÆ®°¡ ¿ëÀÌÇϵµ·Ï ¼³°èÇÏ´Â °Íµµ Áß¿äÇÑ ¹®Á¦ÀÌ´Ù. Å×½ºÆ®¿¡ ´ëÇÑ ³»¿ëÀº ´ÙÀ½¿¡ ¶Ç ÀÚ¼¼È÷ ´Ù·ç±â·Î ÇÑ´Ù.¡¡

¡¡

±×¸² 5. ÇÕ¼º ¶óÀ̺귯¸®¿¡ µû¸¥ ³×Æ®¸®½ºÆ®ÀÇ º¯È­

½Ã¹Ä·¹ÀÌ¼Ç °úÁ¤À» ÅëÇÏ¿© »ìÆ캻 °Í°ú °°ÀÌ "¾ÆÀ̵ð¾î"¿¡¼­ Çϵå¿þ¾îÀÇ Á¦ÀÛ°úÁ¤À» º¸¸é Front-End(FE)¿Í Back-End(BE)·Î Å©°Ô µÎ°¡Áö ºÎºÐÀ¸·Î ³ª´©¾î ¸»ÇÑ´Ù. ¾Ë°í¸®ÁòÀ» ±¸»óÇÏ°í ¼³°èÇÏ´Â °úÁ¤(Design Entry), ÇÕ¼º(ÇÕ¼ºÀ» "°ÔÀÌÆ® ¸ÅÇÎ"-Gate Mapping-À̶ó°í Çϱ⵵ ÇÑ´Ù.)°ú ½Ã¹Ä·¹À̼Ç, Pre-Layout ½Ã¹Ä·¹À̼ÇÀ» FE¶ó ÇÏ°í, P & R °ú Post-Layout, DRC, Layout Pattern GenerationÀ» BE ¶ó°íÇÑ´Ù. »ç½Ç FE¿Í FE¸¦ ±¸ºÐ ¢´Â°ÍÀº ¸ðÈ£ÇÏ´Ù. ¿äÁòµé¾î ¼³°èÀÚµ¿È­°¡ »ó´çÈ÷ ¹ßÀüÇÑ ¸¸Å­ ¼³°èÀÚ´Â BEÀÇ ¸¹Àº ºÎºÐ±îÁö ÀÛ¾÷À» ¼öÇàÇÑ´Ù.¡¡

ASICÀÇ °æ¿ì ¸»±×´ë·Î "¸Ç¶¥¿¡ ÇìµùÇϱâ"¶ó ÇÒ ¼ö ÀÖ´Ù. ¾Æ¹«°Íµµ ¾ø´Â ºóÁ¾ÀÌ¿¡ ¼³°è¿Í ¹èÄ¡,¹è¼±, °ËÁõÀ» ¼öÇàÇÏ¿©¾ß ÇÑ´Ù. ƯÈ÷ ¹èÄ¡¿Í ¹è¼±Àº ´ë´ÜÇÑ ³ë·Â°ú ½Ã°£ÀÌ ¼Ò¿äµÈ´Ù. ±×·¯³ª CPLD/FPGAÀÇ °æ¿ì ¸ðµç ¿ä¼ÒµéÀº ºí·°´ÜÀ§·Î ¹èÄ¡µÇ¾î ÀÖ°í ÀÌµé »çÀÌÀÇ ¶ó¿ìÆÃÀ» À§ÇÑ ¹è¼± ¹æ¹ýÀÌ ÀÌ¹Ì °áÁ¤µÇ¾î ÀÖ´Â ÇüÅ·ΠÁ¦°øµÈ´Ù. ¼³°èÀÚ´Â VHDL·Î ±â¼úÇÑÈÄ ÇÕ¼º°úÁ¤À» °ÅÃÄ ³×Æ®¸®½ºÆ®°¡Áö°í P&R (¹èÄ¡¿Í ¹è¼±)À» ¼öÇàÇÏ¸é µÈ´Ù. P&R °úÁ¤µµ ÀÌ¹Ì ±× ¹æ¹ýÀÌ Á¤ÇØÁ® ÀÖÀ¸¹Ç·Î ÅøÀ» »ç¿ëÇÏ¿© ó¸®ÇÑ´Ù. ASIC°ú °°ÀÌ ¼³°èÀÇ ÀÚÀ¯µµ´Â ¶³¾îÁöÁö¸¸ "¾Æħ¿¡ ¼³°èÇؼ­ Àú³á¿¡ ĨÀ» ³»¼Õ¿¡.." ¶ó´Â ±¸È£´ë·Î ´Ü½ÃÀÏ ³»¿¡ Ä¿½ºÅÒ Ä¨À» ±¸ÇöÇÒ ¼ö ÀÖ´Ù.¡¡

±×¸² 6Àº "¾ÆÀ̵ð¾î"¿¡¼­ "ĨÀ» ³»¼Õ¿¡..." ±îÁöÀÇ ÀÏ·ÃÀÇ °úÁ¤À» º¸¿©ÁØ´Ù. VHDLÀº ¾Ë°í¸®Áò¿¡¼­ ±â´É ½Ã¹Ä·¹¿¡¼ÇÀ» Æ÷ÇÔÇÑ Àü´Ü°è(Front-End)¼³°è °úÁ¤°ú ÈÄ´Ü°è(Back-End) ½Ã¹Ä·¹À̼DZîÁö ÀÌ¿ëµÉ ¼ö ÀÖ´Â ¸Å¿ì °­·ÂÇÑ µµ±¸ÀÌ´Ù. ĨÀ» Á¦ÀÛÇϱ⠱îÁö ÀÏ°üµÈ ÇϳªÀÇ µµ±¸·Î ó¸®ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀº °æÁ¦ÀûÀ¸·Î³ª ½Ã°£ÀûÀ¸·Îµµ Å« ÀåÁ¡À̶ó ÇÏ°Ú´Ù.

¡¡

±×¸² 6. VHDLÀ» ÀÌ¿ëÇÑ PLD (CPLD/FPGA)ÀÇ ¼³°è°úÁ¤

3. ¿Ö HDLÀ» »ç¿ëÇϴ°¡?¡¡

¹ÝµµÃ¼ »ê¾÷ÀÇ ¹ß´Þ·Î ´ÜÀÏ Ä¨¾È¿¡ ÁýÀû½Ãų¼ö ÀÖ´Â µðÀÚÀÎ Å©±â°¡ ¾öû³ª°Ô Ä¿Á³´Ù´Â Á¡ÀÌ´Ù. ÀÌ¿¡µû¶ó ÀÌÀü¿¡ ¹ü¿ë ÇÁ·Î¼¼¼­·Î ¼ÒÇÁÆ®¿þ¾î¿¡ ÀÇÇÏ¿© 󸮵Ǵø ¾îÁö°£ÇÑ °è»êµéÀÌ Çϵå¿þ¾î·Î ¸¸µé¾îÁú¼ö ÀÖ°Ô µÇ¾ú´Ù. ¼öõ ¼ö¸¸°³ÀÇ °ÔÀÌÆ®¿¡ À̸£´Â ¼³°è¸¦ ÀÏÀÏÀÌ ½ºÄɸ¶Æ½ Åø·Î ±×·Á³¾¼ö ÀÖÀ»±î? ½Ã¹Ä·¹ÀÌ¼Ç Áß¿¡ ȸ·ÎÀÇ ¼öÁ¤ÀÌ ½±°Ô ÀÌ·ç¾îÁú ¼ö ÀÖÀ»±î? ¼ÒÇÁÆ®¿þ¾î·Î 󸮵Ǵø º¹ÀâÇÑ °è»êÀ» ½±°Ô Çϵå¿þ¾îÀûÀΠǥÇöÀ¸·Î ±¸ÇöÇس¾ ¼ö ÀÖÀ»±î? ½Ã¹Ä·¹À̼ǿ¡¼­ ¿¡·¯°¡ ³ª¸é ¼³°è¸¦ ¿ëÀÌÇÏ°Ô À߸øµÈ ºÎºÐÀ» ã¾Æ³¾ ¼ö ÀÖÀ»±î? ºÒ°¡´ÉÀ̶õ ¾ø´Ù. ½Ã°£¸¸ ÃæºÐ ÇÏ´Ù¸é! ±×·¯³ª ½ÃÀåÀº Á¦Ç°ÀÌ ³ª¿Ã¶§ ±îÁö ±â´Ù·ÁÁÖÁö ¾Ê´Â´Ù´Â Á¡À» ÀØÁö¸»¾Æ¾ß ÇÑ´Ù (Time-To-Market). ¼º´ÉÀÌ Á» µÚÁ®µµ ¸ÕÀú ½ÃÀåÀ» ¼±Á¡ÇÑ Á¦Ç°ÀÇ ±âµæ±ÇÀº ¹«½ÃÇÒ ¼ö ¾ø´Ù´Â°ÍÀº ÀÍÈ÷ ¾Ë°í ÀÖ´Â »ç½Ç ¾Æ´Ñ°¡?¡¡

1) HDLÀ» »ç¿ëÇϸé "¾ÆÀ̵ð¾î"¸¦ ½±°Ô Ç¥ÇöÇÒ¼ö ÀÖ´Ù.¡¡

HDLÀº ¸¶Ä¡ ÇÁ·Î±×·¡¹Ö ¾ð¾î¿Í °°Àº ¼º°ÝÀ» Æ÷ÇÔÇÑ Çϵå¿þ¾î¸¦ À§ÇÑ ¾ð¾îÀÌ´Ù. µû¶ó¼­ ÀÏ°í¸®ÁòÀÇ Ç¥ÇöÀÌ ¸Å¿ì ¿ëÀÌÇÏ´Ù. VHDLÀ» ÀÌ¿ëÇÏ¿© ¾Ë°í¸®ÁòÀÇ ÄÚµùÀ» ½ÃÀÛÇÏ´Â ±× ¼ø°£ºÎÅÍ Çϵå¿þ¾î ¼³°èÀÇ ½ÃÀÛÀÎ ¼ÀÀÌ´Ù. VHDLÀÌ ÇÁ·Î±×·¡¹Ö ¾ð¾îÀûÀÎ ±â´ÉÀ» °¡Áö°í ÀÖ´Ù´Â Á¡ÀÌ À̸¦ ÀÌ¿ëÇÏ¿© ¼³°èÇÒ¶§ ÁÖÀÇ°¡ ÇÊ¿äÇϱä ÇÏÁö¸¸ ¾î·°Å³ª ¾ÆÀ̵ð¾î¸¦ Çϵå¿þ¾î·Î ¿Å±â±â À§ÇÑ ½±°í ºü¸¥ ¹æ¹ýÀÌ´Ù.¡¡

2) HDLÀ» »ç¿ëÇϸé "¼³°èÀÇ °ü¸®"°¡ ¿ëÀÌÇÏ´Ù.¡¡

HDLÀº ¼öÁ¤°ú µð¹ö±ëÀ» ¿ëÀÌÇÏ°Ô ÇÏ¿© ¼³°èÀÇ °ü¸®°¡ ¿ëÀÌÇÏ´Ù. ¼³°èÀÇ ¼öÁ¤Àº ¼ÒÇÁÆ®¿þ¾î ÇÁ·Î±×·¥¿¡¼­ ÇϵíÀÌ "¸îÁÙ" °íÄ¡¸é ±×¸¸ÀÌ´Ù. ½ºÄɸ¶Æ½À¸·Î ¼³°è½Ã ´Ù·ê¼ö ÀÖ´Â Çϵå¿þ¾î Å©±â´Â 5,000¿¡¼­ 10,000°ÔÀÌÆ® Á¤µµ°¡ ÇÑ°èÁ¡ À̶ó°í ÇÑ´Ù. ¶ÇÇÑ "¾ÆÀ̵ð¾î"¿¡¼­ ³×Æ®¸®½ºÆ®, Áö¿¬¸ðµ¨µî ½ÇÁ¦È¸·Î¿¡ À̸£±â±îÁö ¸ðµç ¼öÁØÀÇ ±â¼ú ¹æ¹ý°ú ½Ã¹Ä·¹À̼ÇÀ» Áö¿ø ÇÑ´Ù. ÇÁ·Î±×·¡¹Ö ¾ð¾î¿Í °°ÀÌ ¼Ò½º µð¹ö°Å¸¦ ÀÌ¿ëÇϸé À߸øµÈ ºÎºÐÀ» ½±°Ô ã¾Æ³¾ ¼ö ÀÖ´Ù. ÀÌ´Â VHDL¿¡¼­ ȸ·ÎÀÇ Ç¥ÇöÀÌ ¸Å¿ì ´Ù¾çÇÔÀ» ÀǹÌÇÑ´Ù. ÃÖ±Ù FPGA º¥´õµéÀº 1¸¸¿¡¼­ 10¸¸ °ÔÀÌÆ®±ÞÀÇ ¼ÒÀÚµéÀÌ ¾Õ´ÙÅõ¾î °³¹ß, ¹ßÇ¥ÇÏ°í ÀÖ´Â ½ÇÁ¤ÀÌ´Ù.¡¡

3) HDLÀ» »ç¿ëÇϸé "¼³°è Åø°ú °øÁ¤ ±â¼ú"¿¡ ±¸¾Ö¹ÞÁö ¾Ê´Â´Ù.¡¡

C ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ ÀÌ¿ëÇÏ¸é ¾î´Àȸ»çÀÇ ÄÄÆÄÀÏ·¯¸¦ ÀÌ¿ëÇÏµç »ó°ü ¾øµíÀÌ Àß Â¥¿©Áø VHDLÀº ƯÁ¤ÀÇ Åø°ú °øÁ¤¿¡ ±¸¾Ö¹ÞÁö ¾Ê´Â´Ù. VHDLÀ̳ª Verilog´Â °ÅÀÇ Ç¥ÁØÈ­µÇ¾î Àֱ⠶§¹®ÀÌ´Ù. °øÁ¤±â¼úÀÌ ¹Ù²î°í Á¦°øµÇ´Â ¶óÀ̺귯¸®°¡ ´Ù¸£°í »ç¿ëÇÏ´Â ÅøÀÌ ´Ù¸£´õ¶óµµ ¼³°è¸¦ ´Ù½Ã ½ÃÀÛÇÒ ÇÊ¿ä°¡ ¾ø´Ù. ´ÜÁö ÄÄÆÄÀÏ/ÇÕ¼º¸¸ ´Ù½ÃÇÏ¸é µÈ´Ù.¡¡

±×·¯³ª HDLÀÌ ¸¸´ÉÀº ¾Æ´Ï´Ù. ¾ÆÁ÷ ¾Æ³¯·Î±×ȸ·ÎÀÇ ¸ðµ¨¸µÀº °¡´ÉÇÏÁö¸¸ ÀÌÀÇ ÇÕ¼ºÀº °ÅÀÇ ºÒ°¡´ÉÇÏ´Ù°í »ý°¢µÈ´Ù. µðÁöÅ» ȸ·Î¶ó Çصµ ÇÕ¼ºÀÇ ¼öÁØÀÌ Á¦ÇѵǾî ÀÖ°í ÇÕ¼ºÅø¿¡ ´ëÇÑ ±âÁØÀÌ ¸íÈ®ÇÏÁö ¾Ê¾Æ¼­ ¼³°èÀÚ´Â HDL ÄÚµù¿¡ »ó´çÇÑ ÁÖÀÇ°¡ ÇÊ¿äÇÏ´Ù. HDL LRM(Language Reference Manual)Àº HDL ±¸¹®¿¡ ´ëÇÑ ±ÔÁ¤ÀÌ¸ç °ð¹Ù·Î Çϵå¿þ¾î ¸ðµ¨À» ±ÔÁ¤ÇÑ°ÍÀÌ ¾Æ´Ï´Ù. ±× ¿¹·Î¼­,

 

    process(clk,d)
    begin
        if(clk'event and clk='1') then
            zq <= d;
        else
            zq <= 'Z';
        end if;
    end process;


À§¿Í °°Àº °æ¿ì ¹®¹ýÀûÀÎ ¿À·ù´Â ¾øÀ¸¸ç Function SimulationÀÇ °á°ú´Â ´ÙÀ½°ú °°´Ù. ¾ð¾îÀûÀÎ ±â´ÉÀº °¡´ÉÇÏÁö¸¸ ÇÕ¼ºÀº ¾ÊµÈ´Ù. À§ÀÇ ¿¹¸¦ Çϵå¿þ¾î·Î »ó»óÇÒ¼ö ÀÖÀ»±î? ÇÕ¼º±âÀÇ Æ¯¼ºÀ» Àß ÆľÇÇÑÈÄ ¿¡¿¡ ¸Â´Â ÀûÀýÇÑ ±â¼ú´É·ÂÀÌ ´Ü½ÃÀϳ»¿¡ ÀÌ·ç¾îÁö´Â°ÍÀº ¾Æ´Ï°ÚÁö¸¸ VHDL¿¡ ÀÇÇѼ³°èÀÇ °ü°ÇÀ̶ó ÇÏ°Ú´Ù. À§ÀÇ VHDL ¸ðµ¨Àº ±â´É ½Ã¹Ä·¹ÀÌ¼Ç ÇÑ °á°ú´Â ±×¸²7°ú °°´Ù. MUXµµ ¾Æ´Ï°í F/Fµµ ¾Æ´Ï´Ù!

¡¡

±×¸² 7. ÇÕ¼º ºÒ°¡´ÉÇÑ VHDLÄÚµåÀÇ ¿¹

4. VHDL À̶õ?¡¡

"VHDLÀ̶õ ¹«¾úÀԴϱî?"¡¡

¾Æ¸¶µµ °¡Àå ¸¹Àº Áú¹®Áß¿¡ ÇϳªÀÌ´Ù. VHDLÀº HDLÀÇ ÇÑ Á¾·ùÀÌ´Ù. VHDL À̶õ VHSIC HDL (Veri-high speed integrated-circuit Hardware Description Language)ÀÇ ¾àÀÚÀÌ´Ù. VHDLÀº 80³â´ëÃÊ ¹Ì±¹ ±¹¹æ¼ºÀÇ VHSIC ÇÁ·Î±×·¥ÀÇ »ê¹°ÀÌ´Ù. µðÁöÅ» ÁýÀûȸ·ÎÀÇ ¼³°è±Ô¸ð°¡ ¹æ´ëÇØÁö°í °¢ ȸ»ç¸¶´Ù ¼­·Î´Ù¸¥ ¼³°èÅø°ú ¼³°è¹æ¹ýÀ» °¡Áö°í ÀÖ´Â »óȲ¿¡¼­ ÁýÀûȸ·ÎÀÇ Ç¥Çö¿¡ Ç¥ÁØÈ­µÈ ±â¼ú¾ð¾î°¡ ÇÊ¿äÇØÁ³´Ù. ÀÌ¿¡µû¶ó ź»ýÇÑ °ÍÀÌ VHDLÀÌ°í IEEE¿¡¼­ 87³â¿¡ Ç¥ÁØÈ­ ½ÃŲ°ÍÀÌ IEEE1076-87·Î ±ÔÁ¤µÈ VHDLÀ̸ç 5³âÈÄ 92³â¿¡ ¼öÁ¤µÇ¾î 93³â¿¡ Ç¥ÁØÈ­ µÈ°ÍÀÌ IEEE1076-93 ÀÌ´Ù.¡¡

VHDL°ú °ü·ÃÇÑ Ç¥ÁØÀº IEEE 1076ÀÌ¸ç »êÇÏ ¿¬±¸±×·ìÀ¸·Î ´ÙÀ½°ú°°Àº °ÍµéÀÌ ÀÖ´Ù.¡¡

¿äÁò VHDLÀÇ µ¿ÇâÀ» º¸°í ½ÍÀ¸¸é VIUF (VHDL International User Group)ÀÇ È¨ÆäÀÌÁö¿¡ °¡º¸¸é º¼°Å¸®°¡ ¸¹ÀÌ ÀÖ´Ù. ÀÌ°÷¿¡´Â Àü¼¼°èÀÇ °ÅÀÇ ¸ðµç VHDL °ü·Ã ȨÆäÀÌÁö°¡ ¸µÅ©µÇ¾î ÀÖ´Ù. ȨÆäÀÌÁö¿Í ftp ÀÇ ÁÖ¼Ò´Â,

5. VHDLÀ» ½ÃÀÛÇÏ·Á¸é?

VHDLÀ» ½ÃÀÛÇÏ·Á¸é VHDL Simulator/SynthesizerÅøÀÌ ÇÊ¿äÇÏ´Ù. ´ëºÎºÐ VHDL Simulator/Synthesizer ÅøµéÀÌ ¾ÆÁ÷ ¿öÅ©½ºÅ×À̼ǿëÀÌ ¸¹°í PC¿ëÀº ±×¸® ÈçÇÏÁö ¾Ê´Ù. ÀÌ´Â ¾Æ¸¶µµ ÀÌ·± ÅøµéÀÌ ¿ö³« ¸¹Àº °è»ê°ú ¸Þ¸ð¸®¸¦ ¿ä±¸Çϱ⠶§¹®ÀÏ °ÍÀÌ´Ù. ±×·¯³ª ¿äÁò°°ÀÌ PCÀÇ ¼º´ÉÀÌ ¿ùµîÇØÁö°í ÀÖ´Â Ãß¼¼¿¡¼­ VHDL Simulator¿Í PLD/CPLD/FPGA ¿ë ÇÕ¼ºÅøµéÀº PC¿ëÀ¸·Î ¸¹ÀÌ ³ª¿À°í ÀÖ´Ù. VHDL Simulation°ú PLD/CPLD/FPGA¸¦ ¸ñÇ¥·Î ÇÕ¼ºÅøÀ» »ç¿ëÇÏ·Á¸é ÆæƼ¾ö±ÞÀÇ CPU¿Í ¸Þ¸ð¸®´Â 32MbyteÁ¤µµ°¡ ÃÖÀú »ç¾çÀÌ µÉ°ÍÀÌ´Ù. VHDLÀ» ÀÌ¿ëÇؼ­ ¼³°è¸¦ ½ÃÀÛÇÏ·Á¸é ´ÙÀ½°ú °°Àº ÅøÀ» ±¸ºñ ÇÏ¿©¾ß ÇÑ´Ù.¡¡

C ÄÄÆÄÀÏ·¯´Â ½Ã¹Ä·¹ÀÌ¼Ç Å×½ºÆ® º¤ÅÍÀÇ »ý¼º, ¾Ë°í¸®Áò Å×½ºÆ®, °¢Á¾ È­ÀÏ Æ÷¸Ë º¯È¯, VHDL ¼Ò½º»ý¼º µî¿¡ ÇÊ¿äÇÏ´Ù. ¿äÁòÀº ½Ã½ºÅÛ ¼³°è±îÁö È®ÀåµÇ´Â °ÍÀÌ ÀϹÝÀûÀ̹ǷΠC ¾ð¾î ÇÁ·Î±×·¡¹ÖÀ» Æ÷ÇÔÇÑ ÇѵΠÁ¾·ùÀÇ ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ ´É¼÷ÇÏ°Ô »ç¿ëÇÒ¼ö ÀÖ¾î¾ß ÇÑ´Ù. ÀÌ¿Ü¿¡µµ FPGA¸¦ ProgramÇÏ·Á¸é FPGA Writer/Programmer ¶ó´Â Àåºñ°¡ ÇÊ¿äÇѵ¥ À̰͵µ °¢ Vendor »ç¸¶´Ù Àü¿ë Àåºñ°¡ ÀÖ´Ù. ½ÃÁß¿¡´Â ¹ü¿ëÀÇ ROM Writer¿¡ ¾î´ðÅ͸¦ ºÎÂøÇÏ¿© »ç¿ëÇÒ¼ö ÀÖ´Â Á¦Ç°ÀÌ ÀÖÀ¸¸ç ¿äÁòÀº ISP deviceµéÀÌ ¸¹ÀÌ ³ª¿À°í À־ Ưº°ÇÑ Àߺñ ¾øÀÌ °£´ÜÇÑ ÄÉÀ̺íÀ» ÀÚÀÛÇÏ¿© »ç¿ëÇÒ¼ö ÀÖ´Ù. À̵é ÄÉÀ̺íÀº ÇÁ¸°ÅÍ Æ÷Æ®³ª ½Ã¸®¾ó Æ÷Æ®¿¡ ¿¬°áÇÏ¿© CPLD/FPGA¿¡ ÇÁ·Î±×·¥ÇØ ³Ö´Â´Ù. ÄÉÀ̺íÀÇ °á¼±Àº °¢ º¥´õ»ç¸¶´Ù ´Ù¸£¹Ç·Î ÇØ´ç ÅøÀÇ ¸Þ´º¾óÀ» Âü°íÇϰųª ȨÆäÀÌÁö¿¡ °¡¸é ¹®¼­µéÀÌ °ø°³µÇ¾î ÀÖ´Ù.¡¡

6. CPLD/FPGA ±¸Á¶¿Í ÇÁ·Î±×·¡¹Ö

CPLD/FPGA ÇÁ·Î±×·¡¹ÖÀº º¸Åë ROM¿¡ ÇÁ·Î±×·¥À» ±â·Ï(ROM Write)ÇÏ´Â °Í°ú °°´Ù. ´Ù¸¸ FPGAÀÇ ³»ºÎ±¸Á¶°¡ ´Ü¼øÇÏÁö ¾ÊÀ¸¸ç ÇÉÀÇ ¹èÄ¡¿Í ÇÁ·Î±×·¥ ÇÏ´Â ¹æ½ÄÀÌ ROM°ú °°ÀÌ Ç¥ÁØÈ­ µÇ¾î ÀÖÁö ¾ÊÀ¸¹Ç·Î °¢»çº° Àü¿ëÀÇ ÇÁ·Î±×·¥ ±â·ÏÀåºñ(CPLS/FPGA Programmer)°¡ ÇÊ¿äÇÏ´Ù. ´ëºÎºÐÀÇ CPLD/FPGAµéÀÌ ¼Ò°Å¿Í ±â·ÏÀÌ °¡´ÉÇÑ °Í µé·Î¼­ UV-EPROM, EEPROM, Flash ROMµîÀÌ ÀÖ°í Àú°¡ÇüÀ¸·Î´Â 1ȸÀÇ ÇÁ·Î±×·¥ÀÌ °¡´ÉÇÑ OTP (One-Time-Program)ŸÀÔµµ ÀÖ°í Å« ¿ë·®ÀÇ FPGAµé Áß¿¡´Â SRAM ŸÀÔµµ ÀÖ´Ù.¡¡

±×¸²8Àº FPGAÀÇ ÀϹÝÀûÀÎ ³»ºÎ±¸Á¶ ¸ð½ÀÀÌ´Ù. ·ÎÁ÷ ºí·°(À̴ ȸ»ç ¸¶´Ù ÇüÅ¿¡ µû¶ó ºÎ¸£´Â À̸§ÀÌ ´Ù¸£´Ù.)ÀÌ ¹è¿­µÇ¾î ÀÖ°í ÀÌµé »çÀÌ·Î Á¾È¾À¸·Î ±Ý¼Ó ¼±µéÀÌ ´©ºñ°í ÀÖ´Â ÇüÅÂÀÌ´Ù. ±Ý¼Ó ¼±µéÀÌ ±³Â÷ÇÏ´Â ºÎºÐ°ú ·ÎÁ÷ ºí·°ÀÇ ÀÔÃâ·Â ¼±µé°ú ±³Â÷ÇÏ´Â ºÎºÐ¿¡ Á¢ÃË(Junction)À» ÇØ ³ÖÀ¸¹Ç·Î¼­ ȸ·Î¸¦ ¿Ï¼ºÇÏ°Ô µÈ´Ù. ·ÎÁ÷ ºí·°ÀÇ ±¸Á¶´Â ȸ»ç¸¶´Ù ´Ù¾çÇϸç À̵éÀÇ ºÎ¸£´Â À̸§µµ °¡Áö°¢»öÀÌ´Ù. È¿À²ÀûÀÎ ±¸Á¶ÀÇ ·ÎÁ÷ ºí·°ÀÇ ¼³°è, Á¢ÃË ºÎºÐ(Junction)ÀÇ ÀúÇ×°ª ±×¸®°í À̸¦ ¹ÙÅÁÀ¸·ÎÇÑ P&R ÅøÀÇ ±â´ÉÀÌ FPGA ÀÚüÀÇ ¼º´ÉÀ» Á¿ì ÇÑ´Ù°í ÇÏ°Ú´Ù.¡¡

·ÎÁ÷ ºí·°Àº ¸î°³ÀÇ °ÔÀÌÆ®µé°ú ¸ÖƼÇ÷º¼­ ±×¸®°í Çø³Ç÷ÓÀ¸·Î ±¸¼ºµÇ¾î ÀÖ´Ù. µû¶ó¼­ ROMÀ̳ª RAM °°ÀÌ ´Ü¼ø ¸Þ¸ð¸® ½ìÀÇ ¹Ýº¹ ±¸Á¶¸¦ °°´Â ¼³°è³ª Á¶ÇÕȸ·Î¸¸ÀÇ ¼³°è¿¡´Â ¾ÆÁÖ ºÎÀûÇÕ´Ù°í ÇÒ¼ö ÀÖ´Ù. (ÃÖ±Ù¿¡ ³ª¿À°í ÀÖ´Â FPGAÀÇ ³»ºÎ ±¸Á¶¸¦ º¸¸é ÀÌ·¯ÇÑ ´ÜÁ¡À» °¨¾ÈÇÏ¿© Ưº°È÷ ROM ¿µ¿ªÀ» ¸¸µé¾î ³ÖÀº °Íµéµµ ÀÖ´Ù.) FPGAÀÇ ¶Ç´Ù¸¥ ´ÜÁ¡À¸·Î´Â Data-Path ±¸Á¶¿¡ ºÎÀûÀý ÇÏ´Ù´Â Á¡ÀÌ´Ù. Data-Path ±¸Á¶¶õ 16-ºñÆ® ¿¬»ê±â, 32-ºñÆ® ·¹Áö½ºÅÍ¿Í °°ÀÌ ÇÑ°¡Áö ±â´ÉÀÌ ´Ù¼ö ºñÆ®·Î ¹¬¿©Á® ÀÖ´Â °ÍÀ» ¸»ÇÑ´Ù. FPGAÀÇ ÀÌ·¯ÇÑ ´ÜÁ¡À» ±Øº¹Çϱâ À§ÇÑ ¿¬±¸¿Í °³¹ßÀÌ È°¹ßÇÏ°Ô ÀÌ·ç¾îÁö°í ÀÖ°í »õ·Î¿î Á¦Ç°µéÀÌ ³ª¿À°í ÀÖ´Ù. ÀÌ¹Ì ±¸Á¶°¡ °áÁ¤µÇ¾î ¹èÄ¡°¡µÈ »óÅ¿¡¼­ ±Ý¼Ó¼±¸¸ÀÇ Á¢¼ÓÀ¸·Î ȸ·Î¸¦ ¿Ï¼º½ÃÅ°´Â FPGA¿¡¼­´Â Tri-State ´Â ÀÖÀ» ¼ö ¾ø´Ù. ´Ù¸¸ ÀÔÃâ·Â Æе忡¸¸ Á¸ÀçÇÑ´Ù. ¡¡

FPGAÀÇ ÀÌ·¯ÇÑ ´ÜÁ¡¿¡µµ ºÒ±¸ÇÏ°í ³Î¸® ÀÌ¿ëµÇ´Â ÀÌÀ¯´Â ±¸Á¶ÀÇ ²ÙÁØÇÑ °³¹ß·Î ´ë±Ô¸ð °íÁýÀû, °í¼Ó ¼ÒÀÚµéÀÌ ¼Ó¼Ó ¹ßÇ¥ µÇ°í ÀÖÀ¸¸ç °íÁ¤µÈ ±¸Á¶¶ó´Â Á¡ÀÌ ¿ÀÈ÷·Á Àü¿ë ĨÀÇ °³¹ßÀ» ¿ëÀÌÇÏ°Ô ¸¸µé°í ÀÖ´Ù´Â Á¡ÀÌ´Ù. HDLÀ» ÀÌ¿ëÇÑ ÇÕ¼ºÀÌ ¿ëÀÌÇϸç P&R ÀÛ¾÷ÀÌ ASIC¿¡ ºñÇÏ¿© ¾öû³ª°Ô ´Ü¼øÇϹǷΠÀü´Ü°è ¼³°è(Front-End), ÈÄ´Ü°è ¼³°è(Back-End)ÀÇ ±¸ºÐ¾øÀÌ ¼³°èÀÇ ÀÚµ¿È­°¡ ½±°Ô ÀÌ·ç¾îÁú ¼ö ÀÖ°Ô µÇ¾ú´Ù. °á±¹ ¼Ò±Ô¸ð ÀηÂÀ¸·Î ´ë±Ô¸ð ȸ·Î ÁýÀûÈ­°¡ ¸î°³¿ùÀÇ ±â°£¿¡¼­ ¸îÁÖÀÇ ±â°£À¸·Î ´ÜÃàµÇ¾ú´Ù. FPGA¸¦ ÀÌ¿ëÇÑ DSPÀÀ¿ë ¼³°è, °¢Á¾ ÄÁÆ®·Ñ·¯, State-Machine·ùÀÇ ¼³°è°¡ È°¹ßÇÏ´Ù.¡¡

ÃÖ±Ù °¢±¤À» ¹Þ°í ÀÖ´Â ISP (In-System-Programability)ÀÇ °³³äÀº "º¸µå ¼³°è¿Í Ĩ¼³°è¸¦ µ¿½Ã¿¡..."¶ó´Â ijġ Ç÷¹À̽º ¾Æ·¡ ÆÐÅ°Áö Á¶Â÷ QFP(Quad Flat Pack)³ª BGA(Ball-Grid-Array)·Î »ý»ê µÇ°í ÀÖ´Ù. ±âÁ¸ÀÇ FPGAÀÇ °æ¿ì DIP ȤÀº PLCC ·Î »ý»êµÇ¾î »ç¿ë °¡´ÉÇÑ ÀÔÃâ·Â ÇÉÀÇ ¼ö°¡ Á¦ÇÑ µÇ¾î À־ ĨÀÇ °íÁýÀû È­¿¡ ´ëÀÀÇÏÁö ¸øÇÏ°í ÀÖ¾ú´Ù. ÀÌ´Â FPGAÀÇ ÇÁ·Î±×·¥½Ã »ó´ëÀûÀ¸·Î µ¿ÀÛ Àü¾Ð¿¡ ºñÇÏ¿© °í Àü¾ÐÀÌ ÇÊ¿äÇÏ¿© Ưº°ÇÑ ±â·Ï ÀåÄ¡ (FPGA Writer/Programmer)°¡ ¿ä±¸ µÇ¾úÀ¸¹Ç·Î ´Ù·ê ¼ö ÀÖ´Â ÇÉÀÇ ¹°¸®ÀûÀÎ Å©±â°¡ Á¦ÇÑ µÉ¼ö ¹Ú¿¡ ¾ø¾ú±â ¶§¹®ÀÌ´Ù. ÀÌ°æ¿ì Á¦ÇÑµÈ ÀÔÃâ·Â ÇÉÀÇ È¿°úÀûÀÎ »ç¿ëÀ» À§Çؼ­´Â ¼³°è°¡ ¿Ï·á µÉ¶§ ±îÁö ¹èÄ¡¸¦ °íÁ¤ ½ÃÅ°´Â °ÍÀº ºÒ°¡´É ÇÏ°Ô µÈ´Ù. ISP ¼ÒÀÚµéÀº µ¿ÀÛ Àü¾Ð¿¡¼­ ÇÁ·Î±×·¡¹ÖÀÌ °¡´É Çϵµ·Ï Á¦ÀÛ µÇ¾ú°í ÇÁ·Î±×·¥ ¹æ¹ýµµ °³¼± µÅ¾î Ưº°ÇÑ ÇÁ·Î±×·¥ Àåºñ ¾øÀÌ ÄÉÀÌºí ¸¸À¸·Î ½Ã¸®¾ó ´Ù¿î ·Îµå¿¡ ÀÇÇØ ÇÁ·Î±×·¡¹ÖÀÌ °¡´É ÇØÁ³´Ù. µû¶ó¼­ dzºÎÇÑ ÀÔÃâ·Â ÇÉÀÌ »ç¿ë °¡´ÉÇÔ¿¡ µû¶ó ´Ù¾çÇÑ ±â´ÉÀ» ÁýÀûÇØ ³ÖÀ»¼ö ÀÖ°í ÇÉ ¹èÄ¡µµ ÀûÀýÇÑ ¿¹Ãø¸¸ ÀÌ·ç¾î Áø´Ù¸é ÇÉ °íÁ¤ÀÌ °¡´É ÇϹǷΠº¸µå »ó¿¡ ½ÇÀåÇÑÈÄ °³¹ßÀ» °è¼Ó ÇÒ¼ö ÀÖÀ¸¹Ç·Î Ĩ ¼³°è »Ó¸¸ ¾Æ´Ï¶ó ½Ã½ºÅÛ ¼³°è±â°£µµ ´ÜÃàÇÒ¼ö ÀÖ´Ù.

SRAM ¹æ½ÄÀÇ FPGA´Â ¹è¼± ¹æ½Ä¿¡ À־ ½ÇÁ¦·Î ¹°¸®ÀûÀÎ Á¢Ã˺Î(Junction)À» ¸¸µå´Â ´ë½Å FET¿Í 1ºñÆ® SRAM ½ìÀ» ÀÌ¿ëÇÑ´Ù. ¼³°è ¹æ½ÄÀº ISP¿Í µ¿ÀÏÇÏ°Ô ½Ã¸®¾ó ÄÉÀ̺íÀ» ÀÌ¿ëÇÏ°Ô µÈ´Ù. º¸µå¿¡ ½ÇÀå ÇÒ ¶§¿¡´Â º¸µåÀü¿øÀÇ OFF½Ã ÇÁ·Î±×·¥ Á¤º¸¸¦ ÀÒ°Ô µÇ¹Ç·Î ½Ã¸®¾ó ·ÒÀ» ºÎÂøÇϰųª Ÿ°Ù º¸µå¿¡ ÀåÂøµÈ MPUµî¿¡¼­ ½Ã½ºÅÛ ºÎÆ®½Ã ´Ù¿î·Îµå ÇØ¾ß ÇÑ´Ù. SRAM ¹æ½Ä FPGA ¿¡ ºÎÂøÇÏ´Â ½Ã¸®¾ó ·ÒÀ» Configuration ROMÀ̶ó ÇÏ¸ç ½Ã¸®¾ó ·Ò ´ë½Å 8-ºñÆ® Æз²·¼ ·ÒÀ» ºÎÂøÇÒ ¼öµµ ÀÖ´Ù.

±×¸² 8. FPGAÀÇ ³»ºÎ±¸Á¶

7. PC¿ë VHDL Simulator¿Í CPLD/FPGA ÇÕ¼º±â ¼Ò°³

PC¿ë VHDL Simulator·Î´Â Model Tech»çÀÇ V-System VHDL/PC°¡ °¡Àå ¿ùµîÇϸç ÀÌ ÅøÀº MentorÅøÀÇ ½Ã¹Ä·¹ÀÌÅÍ¿Í °°Àº Á¦Ç°ÀÌ´Ù. Model Tech.ÀÇ È¨ÆäÀÌÁö´Â,

ÀÌ¿Ü¿¡µµ ¸î°¡Áö Simulator°¡ Àִµ¥ PC¿ë Æò°¡ÆÇÀ» ½±°Ô ±¸ÇÒ¼ö ÀÖ´Â °ÍÀ¸·Î´Â ¿ì¸®³ª¶óÀÇ ¼­µÎ·ÎÁ÷ MyVHDL°ú Accolade DA»çÀÇ PeakVHDL/FPGAÀÌ ÀÖ´Ù. ÀÌµé µÎȸ»çÀÇ È¨ÆäÀÌÁö¿¡¼­ ´Ù¿î ¹ÞÀ»¼ö Àִµ¥ ÁÖ¼Ò´Â,

¼­µÎ·ÎÁ÷ÀÇ MyVHDLÀº Æò°¡ÆÇÀ¸·Î Á¦ÇÑÀº ¾øÀ¸³ª MicroSoft Visual C/C++ 4.0ÀÌ ÀÖ¾î¾ß ÇÏ¸ç ¾ÆÁ÷ VHDL subsetÀÎ µí ÇÏ´Ù. PeakVHDLÀº IEEE 1076-87°ú 93À» ¸ðµÎ Áö¿øÇÏ°í VITALÀº ¾ÆÁ÷ Áö¿øÇÏÁö ¾Ê´Â´Ù. Æò°¡ÆÇÀº VHDL ¼Ò½ºÀÇ Å©±â¿Í È­ÀÏ°¹¼ö¿¡ Á¦¾àÀÌ À־ ¾ÆÁÖ ÀÛÀº ±Ô¸ðÀÇ ½Ã¹Ä·¹À̼Ǹ¸ °¡´ÉÇÏ´Ù. ±×·¯³ª ÀÌ È¸»ç¿¡ E-MailÀ» º¸³»¸é µ¥¸ð¿ë ¶óÀ̼¾½º Äڵ带 º¸³»Áִµ¥ ÀÌÄÚµå´Â ³¯ÀÚ ÀÌ¿Ü¿¡ ´Ù¸¥ Á¦ÇÑÀº ¾ø´Ù. PeakVHDL/FPGA´Â Metamore»çÀÇ FPGA ÇÕ¼º±â°¡ Æ÷ÇԵǾî Àִµ¥ VHDLÀ» ÇÕ¼ºÇÏ¿© ³×Æ®¸®½ºÆ®¸¦ »ý¼ºÇÑ´Ù. ÀÌµé ³×Æ®¸®½ºÆ®¸¦ ÀÌ¿ëÇÏ¿© °¢ FPGA º¥´õÀÇ P&R ÅøÀ» ÀÌ¿ëÇÏ¿© Back-End ÀÛ¾÷À» ÇÒ¼ö ÀÖ´Ù. ÀÌ ÇÕ¼º±â´Â Actel, Altera, Xillinx, Lattice ÀÇ PLD/FPGA¸¦ Áö¿øÇÑ´Ù.

FPGA º¥´õ(FPGA Á¦ÀÛ»ç)ÅøÀÌ ÇÊ¿äÇÑ ÀÌÀ¯´Â °¢ ȸ»ç¸¶´Ù FPGAÀÇ ±âº» ·ÎÁ÷ ¼¿ ºí·° ±¸Á¶°¡ ´Ù¸£°í À̵éÀÌ ÀÌ¹Ì ¹èÄ¡°¡ µÇ¾î ÀÖ´Â »óÅÂÀÌ¸ç ¼³°èÀÚ´Â ´Ù¸¸ ÀÌµé »çÀÌÀÇ ¶ó¿ìÆà ¸¸À¸·Î ¼³°è¸¦ ¿Ï·áÇϱ⠶§¹®ÀÌ´Ù. ´ëºÎºÐ º¥´õ Åøµéµµ ÀÚüÀûÀ¸·Î VHDL ÇÕ¼º±â´ÉÀ» °¡Áö°í ÀÖÁö¸¸ ±×¼º´ÉÀÌ µÚÁö´Â °æ¿ìµµ ÀÖ°í VHDL subsetÀΰæ¿ì°¡ ¸¹´Ù. µû¶ó¼­ ÇÕ¼º¿¡ ÀÇÇÑ ³×Æ®¸®½ºÆ®ÀÇ »ý¼ºÀº Àü¹®È¸»çÀÇ ¿ÜºÎÅøÀ» »ç¿ëÇÏ°í Back-End ÀÛ¾÷ÀÎ Routing¸¸ º¥´õ ÅøÀ» »ç¿ëÇϴ°ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù°í ÇÏ°Ú´Ù.

FPGA º¥´õ ÅøÀº °¢»çÀÇ È¨ÆäÀÌÁö¿¡ °¡¸é Á¤º¸¸¦ ¾òÀ»¼ö ÀÖ´Ù. º¥´õ ÅøÀÇ °¡°Ýµµ ¸¸¸¸Ä¡ ¾ÊÀºµ¥ ¸î¸î ȸ»çÀÇ°æ¿ì Æò°¡ÆÇÀÌ °ø°³µÇ¾î ÀÖÀ¸¹Ç·Î À̸¦ Àß ÀÌ¿ëÇϸé VHDLÀ» ½ÃÀÛÇÏ´Â ÀÔÀå¿¡¼­ ¸Å¿ì À¯¿ëÇÏ°Ô ¾µ¼ö ÀÖÀ» °ÍÀÌ´Ù. PLD/CPLD/FPGA Åø¿¡ ´ëÇÑ Á¤º¸´Â ´ÙÀ½ÀÇ È¨ ÆäÀÌÁö¿¡ º¥´õ»çµé°ú VHDL ÇÕ¼º±â, ½Ã¹Ä·¹ÀÌÅÍ Á¦ÀÛ»çÀÇ ÁÖ¼Ò°¡ ¸ðµÎ ¸µÅ©µÇ¾î ÀÖÀ¸¹Ç·Î Âü°íÇÑ´Ù.

º¥´õ»çÀÇ È¨ÆäÀÌÁö´Â ´ÙÀ½°ú °°´Ù.

1) Altera MaxPlusII

Altera MaxPlusII´Â ÇöÀç 8.0¹öÁ¯±îÁö ³ª¿Í ÀÖÀ¸¸ç Æò°¡ÆÇ(ES Lisence)ÀÌ ÇÏÀÌÅÚ µðÁöÅ» µ¿È£È¸¿¡ µî·ÏµÇ¾î ÀÖ´Ù. VHDL subsetÀ̱ä ÇÏÁö¸¸ ÇÕ¼º±â°¡ µé¾î ÀÖÀ¸¸ç ÇÕ¼ºÈÄ ½Ã¹Ä·¹À̼ǵµ °¡´ÉÇÏ´Ù. P&RÈÄ VHDL Netlist¸¦ »ý¼ºÇÒ¼ö ÀÖÀ¸¸ç VITALÀ» Áö¿øÇÑ´Ù. FPGA ¼³°è Åø·Î¼­ ¸Å¿ì ¿ì¼öÇÏ´Ù.

2) AMD Mach Seriese

AMDÀÇ PLD ºÎºÐÀÌ Vantis·Î µ¶¸³µÇ¾î ÀÖ´Ù. AMDÀÇ ÅøÀº MachXL·Î¼­ 2.1À» Vantis FTP¿¡¼­ ¹«·á·Î ´Ù¿î ¹Þ¾Æ ¾µ¼ö ÀÖ´Ù.ÀÌ ¹öÁ¯Àº Abel ¸¸ °¡´ÉÇϸç VHDLÀ» ÇÕ¼ºÇÑÈÄ ¾ò¾îÁø ³×Æ®¸®½ºÆ®¸¦ ÀÌ¿ëÇÏ·Á¸é 5.x ÀÌ»óÀÌÇÊ¿äÇÏ´Ù.

3) Cypress Warp2/3

Cypress CPLD/FPGA ÅøÀº Warp2/3·Î¼­ ÇÕ¼º±â¸¦ °¡Áö°íÀÖ´Ù. Warp2´Â Cypress PLDÀÇ °æ¿ì JEDEC È­ÀÏ·Î ½Ã¹Ä·¹À̼ÇÀÌ °¡´ÉÇÏ´Ù. Warp2 R4.1Àº ¾ÆÁÖ Àú·ÅÇÑ °¡°ÝÀ¸·Î ±¸ÀÔÇÒ¼ö ÀÖ´Ù. Warp3¿¡´Â ViewLogicÅøÀÌ µé¾î ÀÖ´Ù. FPGAÀÇ °æ¿ì EDIFÇü½ÄÀ» ÀÔ·Â¹Þ¾Æ P&RÇÑ´Ù.

4) Xilinx XACT

XACT´Â VHDLÅø·Î¼­ ActiveCAD»çÀÇ ½Ã¹Ä·¹ÀÌÅÍ¿Í MetamorÀÇ ÇÕ¼º±â¸¦ Æ÷ÇÔÇÑ Foundation Seriese°¡ ¹ß¸ÅµÇ°í ÀÖ´Ù.

5) QuickLogic QuickWorks

QuickWorks ´Â Sinplify ÇÕ¼º±â¸¦ »ç¿ëÇÏ¿© VHDL/Verilog¸¦ ÇÕ¼ºÇÑ´Ù. ½Ã¹Ä·¹ÀÌÅÍ´Â Verilog ½Ã¹Ä·¹ÀÌÅÍ(Silos III)¿Í DataI/OÀÇ SCS ÅøÀÌ Æ÷ÇԵǾî Àִµ¥ ½ºÄɸ¶Æ½ ¿¡µðÅͷμ­ VHDL ¼Ò½º »ý¼º±â´ÉÀÌ ÀÖ´Ù. ÇöÀç ¹öÁ¯ 6.1ÀÇ EvluationÀÌ °¡´ÉÇÏ´Ù. VITALÀ» Áö¿øÇÑ´Ù.

6) Actel

ActelÀº ÃÖ±Ù ÀÚ»ç Åø Actel Lite 3.1.1À» ¹«·á·Î °ø°³ÇÏ°í Àִµ¥ VHDL ÇÕ¼º±â¿Í P&RÅøÀ» Æ÷ÇÔÇÏ°í ÀÖÀ¸¸ç 8,000°ÔÀÌÆ®±Þ ±îÁö °¡´ÉÇÏ´Ù°í ÇÑ´Ù. ½Ã¹Ä·¹ÀÌÅÍ´Â ³»ÀåµÇ¾î ÀÖÁö ¾ÊÁö¸¸ V-System°°Àº ´Ù¸¥ ½Ã¹Ä·¹ÀÌÅÍ¿Í ÀÎÅÍÆäÀ̽ºÇÏ¿© »ç¿ëÇÒ¼ö ÀÖ´Ù. VITALÀ» Áö¿øÇÑ´Ù.

7) Lattice

ViewLogicÅøÀ» ÀÌ¿ëÇÏ¿© ½Ã¹Ä·¹À̼ǰú ÇÕ¼º ÇÑ´Ù.


µÚ·Î Back 

 mailto:goodkook@csvlsi.kyunghee.ac.kr
CSA & VLSI Design Lab. Kyunghee Univ