Signal °ú Variable

±¹ÀÏÈ£

goodkook@csvlsi.kyunghee.ac.kr
http://www.csvlsi.kyunghee.ac.kr


VHDLÀÇ °´Ã¼µé·Î´Â SIGNAL, VARIABLE, Constant,±×¸®°í Loop º¯¼ö°¡ ÀÖ´Ù. SIGNAL, VARIABLE, CONSTANT´Â ¼±¾ðÇü °´Ã¼Àε¥ ºñÇØ Loop º¯¼ö´Â VHDLÀÇ FOR-LOOP¿Í °°Àº ¹Ýº¹±¸¹® ³»¿¡¼­ ¼±¾ðÇÏÁö ¾Ê°í »ç¿ëÇÑ´Ù. LOOP º¯¼ö¿¡ ´ëÇؼ­´Â VHDL±¸¹®À» ´Ù·ê ¶§ ¼³¸í Çϱâ·Î ÇÑ´Ù. SIGNAL°ú VARIABLE¿¡ ´ëÇÏ¿© »ìÆ캸ÀÚ. ÀÌµé µÎ °¡Áö °´Ã¼¸¦ ´ÜÀûÀ¸·Î ¸»Çϸé SIGNALÀº º´·Ä±¸¹®(concurrent statement)¿¡¼­ »ç¿ëµÇ¸ç VARIABLEÀº ¼øÂ÷±¸¹®(sequential statement)¿¡¼­ »ç¿ëµÇ´Â °´Ã¼ÀÌ´Ù. ¾Õ¼­ ¾ð±ÞÇßµíÀÌ VHDLÀ» Æ÷ÇÔÇÑ HDLµéÀº º´·Ä±¸¹®À» ±âº»À¸·Î ÇÏ¸ç ¼øÂ÷±¸¹®À» Áö¿øÇÑ´Ù.

  1. VHDLÀÇ º´·Ä±¸¹®°ú ¼øÂ÷±¸¹®

    VHDLÀ» Æ÷ÇÔÇÑ ´ëºÎºÐ HDLÀº º´·Ä±¸¹®(concurrent statement)±âº»À¸·Î ÇÏ¸ç ¼øÂ÷±¸¹®(sequential statement)À» Áö¿øÇÑ´Ù. ÀÌ´Â µðÁöÅРȸ·Î¸¦ ³ª´­ ¶§ ¼øÂ÷ȸ·Î¿Í Á¶ÇÕȸ·Î¸¦ ÀǹÌÇÏ´Â °ÍÀÌ ¾Æ´ÔÀ» ±â¾ïÇØ µÎ¾î¾ß ÇÑ´Ù. HDLÀÇ ±¸¹®»ó ±¸ºÐÀÌ´Ù. Çϵå¿þ¾î¸¦ ±â¼ú(description hardware)ÇÏ´Â °ÍÀº ¸ðµÎ º´·Ä±¸¹®ÀÌ´Ù. ÀÌ´Â Çϵå¿þ¾îÀÇ Ç¥Çö¿¡ À־ ¿¬°á¼±(wire)À» ÀÌ¿ëÇÏ¿© AND, OR °ÔÀÌÆ®¿Í °°Àº ȸ·Î ±¸¼ºÇ°(digital primitives)ÀÇ ¿¬°áÀ» ³ªÅ¸³»´Â °ÍÀ̱⠶§¹®ÀÌ´Ù. ÀÌ·¯ÇÑ º´·Ä±¸¹® ³»¿¡ ¼øÂ÷±¸¹®À» Æ÷ÇÔÇÏ°Ô µÇ´Âµ¥ À̸¦ À§ÇÏ¿© VHDL¿¡¼­´Â Ưº°È÷ PROCESS ºí·ÏÀ» »ç¿ëÇÑ´Ù. ½Ã¹Ä·¹À̼ǽà °¢ ±¸¹®ÀÌ ½ÇÇàµÉ ¶§ 1°³ÀÇ PROCESSºí·°Àº º´·Ä±¸¹® 1°³¿Í µ¿ÀÏÇÏ´Ù. VHDLÀÇ ARCHITECTURE BEGIN ~ END(ARCHITECTURE Body)ÀÇ ¸ðµç ±¸¹®Àº ±âº»ÀûÀ¸·Î º´·Ä±¸¹®À̸ç ÀÌ °÷¿¡ Ưº°È÷ PROCESS BEGIN-END°¡ ¼øÂ÷±¸¹®À» Æ÷ÇÔÇÏ°Ô µÈ´Ù. ±×¸²1Àº ARCHITECTURE³»ÀÇ º´·Ä±¸¹®°ú PROCESS ºí·ÏÀÇ º´·Ä°ü°è¸¦ Ç¥½ÃÇÑ °ÍÀÌ´Ù.

    PROCESS ºí·Ï³»ÀÇ ¼øÂ÷±¸¹®ÀÌ 1°³ÀÇ º´·Ä±¸¹®°ú µî°¡ÀÓÀ» º¸¿©ÁÖ´Â ¿¹´Â ´ÙÀ½°ú °°´Ù.

    ¿¡ ´ëÇÏ¿©,

    ¿Í °°ÀÌ PROCESS ºí·Ï ³»¿¡ Ç¥ÇöµÈ My_signal¿¡ ´ëÇÑ ÇÒ´ç¹®Àº º´·Ä±¸¹®ÀÇ,

    °ú µ¿ÀÏÇÏ´Ù. ±×·¯³ª º°·Ä±¸¹®À¸·Î¼­

    ¿Í °°Àº ÇÒ´çÀº 3 °ú 1¹ø° ºñÆ®¿¡ µðÁöÅаª '0'°ú '1'À» µ¿½Ã¿¡ ÁÖ°íÀÖ´Â ¿¡·¯ÀÌ´Ù. ¸»ÇÏÀÚ¸é ¹ö½ºÀÇ Ãæµ¹ÀÎ Ä¡¸íÀûÀÎ ¿¡·¯ÀÎ ¼ÀÀÌ´Ù. ±×·¯³ª ¼øÂ÷ºí·° PROCESS BEGIN~END¿¡¼­´Â ±¸¹®ÀÇ ÃÖÁ¾ÀûÀÎ °ªÀÌ 1°³ÀÇ º´·Ä±¸¹®À¸·Î Ãë±ÞµÇ±â ¶§¹®¿¡ ¹®Á¦µÇÁö ¾Ê´Â´Ù.

  1. VHDLÀÇ ¼øÂ÷±¸¹®°ú º´·Ä±¸¹®ÀÇ ½ÇÇà

    ÇÁ·Î±×·¡¹Ö ¾ð¾î¿Í °°ÀÌ ¼øÂ÷±¸¹®¸¸À» ó¸®ÇÏ´Â °æ¿ì ±× ½ÇÇàÀº ±¸¹®ÀÌ ³õÀÎ ¼ø¼­¿¡ ÀÇÇÑ´Ù. ±×·¯³ª HDL°ú °°ÀÌ º´·Ä±¸¹®À» ó¸®ÇÏ´Â °æ¿ì ±¸¹®ÀÇ ½ÇÇàÀ» À§Çؼ­´Â ½Ã¹Ä·¹ÀÌ¼Ç Å¬·°(simulation clock)°ú À̺¥Æ® Å¥(event queue)¿Í °°Àº Ưº°ÇÑ ÀåÄ¡°¡ ÇÊ¿äÇÏ´Ù. ¸ðµç ½ÇÇàÀº ±¸¹®ÀÇ ¼ø¼­°¡ ¾Æ´Ñ ½Ã¹Ä·¹ÀÌ¼Ç Å¬·°À» ±âÁØÀ¸·Î ÁøÇàµÇ´Â °Í ÀÌ´Ù. °ªÀÇ ÇÒ´ç, ½ÅÈ£ÀÇ º¯È­ µîÀº ¸ðµÎ À̺¥Æ® Å¥¿¡ ÀúÀåµÇ¸ç ½Ã¹Ä·¹ÀÌ¼Ç Å¬·°ÀÇ ÁøÇàÀº Å¥¿¡ ÀúÀåµÈ ¸ðµç À̺¥Æ®ÀÇ Ã³¸®°¡ ÀÌ·ç¾îÁø ÈÄ¿¡ ´ÙÀ½ 󸮷Π½Ã¹Ä·¹ÀÌ¼Ç Å¬·°À» ÁøÇàÇÑ´Ù. À̶§ ÁøÇàµÇ´Â ½Ã¹Ä·¹ÀÌ¼Ç ±âº» Ŭ·°ÀÇ °£°ÝÀ» µ¨Å¸ ½Ã°£(delta clock)À̶ó ÇÑ´Ù. º´·Ä±¸¹®°ú ¼øÂ÷±¸¹®À» ¸ðµÎ Áö¿øÇÏ´Â °æ¿ì ±¸¹®ÀÇ ¿µ¿ª±¸ºÐ, °´Ã¼ÀÇ ¼±¾ð, ÇÒ´ç µî¿¡ ´ëÇÑ ¹æ¹ýÀÌ µû·Î Á¸ÀçÇÏ°Ô µÈ´Ù.

    ¼øÂ÷±¸¹®°ú º´·Ä±¸¹®ÀÌ ½ÇÇàµÇ´Â °úÁ¤À» ¿¹¸¦ µé¾îº¸±â·Î ÇÏÀÚ. ´ÙÀ½°ú °°Àº µÎ º´·Ä±¸¹®,

    ±×¸®°í ¼øÂ÷±¸¹®,

    ¿¡ ´ëÇÏ¿© ½ÇÇà °úÁ¤Àº ±×¸² 2¿Í °°´Ù. º´·Ä±¸¹®¿¡¼­´Â ÇöÀç ½Ã¹Ä·¹ÀÌ¼Ç Å¬·°¿¡¼­ ¿¬»êÀÌ ÀÌ·ç¾î ÁøÈÄ ´ÙÀ½ÀÇ µ¨Å¸¿¡¼­ ÇÒ´çÀÌ ÀÌ·ç¾îÁø´Ù(delayed assignment). ÀÌ¿¡ ¹ÝÇØ ¼øÂ÷±¸¹®¿¡¼­´Â ±¸¹® ¼ø¼­¿¡ µû¶ó Áï°¢ÀûÀÎ ÇÒ´çÀÌ ÀÌ·ç¾î Áø´Ù(instaneous assignment).

  1. SIGNAL°ú VARIABLE

    SIGNALÀº º´·Ä±¸¹®¿¡¼­ »ç¿ëµÉ °´Ã¼ÀÇ ¼±¾ðÀÌ´Ù. µû¶ó¼­ SIGNALÀº ARCHITECTURE BEGIN~END¿¡¼­ Àü¿ªÀû(global)ÀÌ´Ù. ÇÒ´ç ¿¬»êÀÚ´Â "<=" ÀÌ¸ç ¾Õ¼­ ¼³¸íÇÑ °Í°ú °°ÀÌ Áö¿¬ ÇÒ´ç(delta delayed concurrent assignment)ÀÌ ÀÌ·ç¾îÁö°í 'event¿Í °°Àº ¼Ó¼ºÀ» »ç¿ëÇÒ ¼ö ÀÖ´Ù.
    VARIABLEÀº ¼øÂ÷±¸¹® ºí·Ï¿¡¼­ »ç¿ëµÉ °´Ã¼ÀÇ ¼±¾ðÀ̸ç PROCESS BEGIN~END³»¿¡¼­ Áö¿ªÀû(local)ÀÌ´Ù. ÇҴ翬»êÀÚ´Â ":=" ÀÌ¸ç ±¸¹®ÀÇ ¼ø¼­¿¡ ÀÇ°ÅÇÏ¿© Áï½Ã ÇÒ´ç(instaneous sequential assignment)ÀÌ ÀÌ·ç¾îÁø´Ù.

    SIGNAL°ú VARIABLEÀÇ ½Ã¹Ä·¹ÀÌ¼Ç ±×¸®°í ÇÕ¼ºÀ» ¿¹¸¦ µé¾î º¸µµ·Ï ÇÏ°Ú´Ù.

    [¿¹Á¦ 1] SIGNAL·Î ¼±¾ðµÈ °´Ã¼°¡ ¼øÂ÷±¸¹® ºí·Ï¿¡¼­ ÇÒ´çµÈ °æ¿ìÀÇ ¿¹ÀÌ´Ù. IF (clk'event AND clk='1') THEN ~ END IF; ¿¡ ÀÇÇؼ­ 3´ÜÀÇ Çø³-Ç÷Ó(Flip-Flop)ÀÌ µÈ´Ù. ½Ã¹Ä·¹À̼ǰú ÇÕ¼º °á°ú´Â ±×¸² 3°ú °°´Ù.

    [¿¹Á¦ 2] PROCESS BEGIN~END; ¼øÂ÷ ºí·Ï³»ÀÇ ÇÒ´çÀÇ °æ¿ìÀÌÁö¸¸ IF (clk'event AND clk='1') THEN ~ END IF; ¾È¿¡¼­ ÇÒ´çÀÌ ¾Æ´Ï¸é Çø³-Ç÷ÓÀÌ ¾Æ´Ï´Ù. ¼øÂ÷±¸¹®ÀÌ °ð ¼øÂ÷ µðÁöÅРȸ·Î°¡ ¾Æ´Ñ °Í ÀÌ´Ù. ÇÕ¼º°ú ½Ã¹Ä·¹ÀÌ¼Ç °á°ú´Â ±×¸² 4¿Í °°´Ù. ¼øÂ÷ ±¸¹® ºí·Ï¿¡¼­µµ SIGNALÀÇ ÇÒ´ç¹® ¼ø¼­´Â °ü°è¾øÀÌ °¢°¢ÀÇ ÇÒ´ç¹®¿¡¼­ Çø³-Ç÷ÓÀÌ Çü¼ºµÈ´Ù.

    [¿¹Á¦ 3] VARIABLEÀÇ °æ¿ì ¼øÂ÷±¸¹® ÇÒ´çÀº ±¸¹®ÀÇ ¼ø¼­°¡ Áß¿äÇÑ Àǹ̸¦ °®´Â´Ù. ÀÌ ¿¹Á¦¿¡¼­ var0¿Í var1Àº ¼ø¼­¿¡ ÀÇÇÏ¿© µî°¡ ½ÅÈ£·Î¼­ Çø³ Ç÷ÓÀÌ Çü¼ºµÇÁö ¾Ê´Â´Ù. ÇÕ¼º°ú ½Ã¹Ä·¹ÀÌ¼Ç °á°ú´Â ±×¸² 5¿Í °°´Ù. [¿¹Á¦ 3]ÀÇ °á°ú¿Í ºñ±³ÇØ º¸ÀÚ. "din"°ú "dout"»çÀÌ¿¡ Çø³ Ç÷ÓÀÌ Çü¼ºµÈ °ÍÀ» º¼¼öÀÖ´Ù.

    [¿¹Á¦ 4] À§ÀÇ [¿¹Á¦ 3]°ú ºñ±³ÇØ º¸ÀÚ. ¼ø¼­°¡ ´Ù¸¥°æ¿ì var0´Â Çø³ Ç÷ÓÀ» Çü¼ºÇÑ´Ù. ½Ã¹Ä·¹À̼ǰú ÇÕ¼ºÀÇ °á°ú´Â ±×¸² 6°ú °°´Ù. [¿¹Á¦ 2]ÀÇ °á°ú¿Í ºñ±³ÇØ º¸¸é °á±¹ °°Àº ȸ·ÎÀÌ´Ù.

     

    [¿¹Á¦ 5] VARIABLEÀ» ¼øÂ÷±¸¹® ºí·Ï³»¿¡ Áö¿ªÀûÀÎ °´Ã¼ÀÌ´Ù. µû¶ó¼­ Àü¿ªÀûÀÎ °´Ã¼ÀÎ SIGNAL·ÎÀÇ ÀÎÅÍÆäÀ̽º°¡ ÇÊ¿äÇÏ´Ù. ÀÌ ¿¹ÀÇ ½Ã¹Ä·¹À̼ǰú ÇÕ¼ºÀÇ °á°ú´Â [¿¹Á¦ 3]ÀÇ °Í°ú µ¿ÀÏÇÏ´Ù.

    [¿¹Á¦ 6] ¼øÂ÷ÀûÀÎ ÇÒ´ç¹®Àº ¸¶Áö¸· Ç×´çÀÌ ÀÌ·ç¾îÁø ÃÖÁ¾°á°ú¸¦ ÂüÁ¶ÇÑ´Ù. ÀÌ ¿¹Á¦ÀÇ ÇÕ¼º °á°ú¸¦ º¸¸é ¾Ë ¼ö ÀÖµíÀÌ HDL ÇÕ¼º±â´Â ÃÖÀûÈ­ °úÁ¤À» ¼öÇàÇÑ´Ù. ½Ã¹Ä·¹À̼ǰú ÇÕ¼ºÀÇ °á°ú´Â ±×¸² 7°ú °°´Ù. ±¸¹®À» Àß »ìÆ캸¸é Ãâ·Â "dout"ÀÇ 0¹ø °ú 2¹ø ºñÆ®°¡ Ç×»ó '0'À̹ǷΠÇø³ Ç÷ÓÀÌ ¸¸µé¾îÁöÁö ¾Ê´Â´Ù.

    ±×¸² 7. [¿¹Á¦ 6]ÀÇ ÇÕ¼º°ú ½Ã¹Ä·¹ÀÌ¼Ç °á°ú

     

    [¿¹Á¦ 7] ¼øÂ÷±¸¹® ºí·Ï¿¡¼­ SIGNALµµ ¼øÂ÷ÀûÀÎ ¼º°ÝÀ» °®´Â´Ù. [¿¹Á¦6]°ú °°Àº ÇÕ¼º°á°ú¸¦ ¾ò°ÔµÈ´Ù.