»ùÓÚFPGAµÄ¼ÆÊ±Æ÷Éè¼Æ(×îÖÕ) ÏÂÔØ±¾ÎÄ

2 FPGA¼¼Êõ¼°Ó²¼þÃèÊöÓïÑÔ

2.1 FPGAµÄ½éÉÜ

2.1.1 ¿É±à³ÌÂß¼­Æ÷¼þ·¢Õ¹¼òÊ·

Ëæ×Å΢µç×ÓÉè¼Æ¼¼ÊõÓ빤Òյķ¢Õ¹£¬Êý×Ö¼¯³Éµç·´Óµç×ӹܡ¢¾§Ìå¹Ü¡¢ÖÐС¹æÄ£¼¯³Éµç·¡¢³¬´ó¹æÄ£¼¯³Éµç·Öð²½·¢Õ¹µ½½ñÌìµÄרÓü¯³Éµç·(ASIC)¡£ASICµÄ³öÏÖ½µµÍÁ˲úÆ·µÄÉú²ú³É±¾£¬Ìá¸ßÁËϵͳµÄ¿É¿¿ÐÔ£¬ËõСÁËÉè¼ÆµÄÎïÀí³ß´ç£¬Íƶ¯ÁËÉç»áµÄÊý×Ö»¯½ø³Ì¡£µ«ÊÇASICÒòÆäÉè¼ÆÖÜÆÚ³¤£¬¸Ä°æÍ¶×Ê´ó£¬Áé»îÐÔ²îµÈȱÏÝÖÆÔ¼×ÅËüµÄÓ¦Ó÷¶Î§¡£Ó²¼þ¹¤³ÌʦϣÍûÓÐÒ»ÖÖ¸üÁé»îµÄÉè¼Æ·½·¨£¬¸ù¾ÝÐèÒª£¬ÔÚʵÑéÊÒ¾ÍÄÜÉè¼Æ¡¢¸ü¸Ä´ó¹æÄ£Êý×ÖÂß¼­£¬ÑÐÖÆ×Ô¼ºµÄASIC²¢ÂíÉÏͶÈëʹÓã¬ÕâÊÇÌá³ö¿É±à³ÌÂß¼­Æ÷¼þµÄ»ù±¾Ë¼Ïë¡£¿É±à³ÌÂß¼­Æ÷¼þËæ×Å΢µç×ÓÖÆÔ칤Òյķ¢Õ¹È¡µÃÁ˳¤×ãµÄ½ø²½¡£´ÓÔçÆÚµÄÖ»ÄÜ´æ´¢ÉÙÁ¿Êý¾Ý£¬Íê³É¼òµ¥Âß¼­¹¦ÄܵĿɱà³ÌÖ»¶Á´æ´¢Æ÷(PROM)¡¢×ÏÍâÏ߿ɲÁ³ýÖ»¶Á´æ´¢Æ÷(EPROM)ºÍµç¿É²Á³ýÖ»¶Á´æ´¢Æ÷(E2PROM)£¬·¢Õ¹µ½ÄÜÍê³ÉÖдó¹æÄ£µÄÊý×ÖÂß¼­¹¦ÄܵĿɱà³ÌÕóÁÐÂß¼­(PAL)ºÍͨÓÃÕóÁÐÂß¼­(GAL)£¬½ñÌìÒѾ­·¢Õ¹³ÉΪ¿ÉÒÔÍê³É³¬´ó¹æÄ£µÄ¸´ÔÓ×éºÏÂß¼­ÓëʱÐòÂß¼­µÄ¸´Ôӿɱà³ÌÂß¼­Æ÷¼þ(CPLD)ºÍÏÖ³¡¿É±à³ÌÃÅÕóÁÐ(FPGA)¡£Ëæ×ʤÒÕ¼¼ÊõµÄ·¢Õ¹ÓëÊг¡µÄÐèÒª£¬³¬´ó¹æÄ£¡¢¸ßËÙ¡¢µÍ¹¦ºÄµÄÐÂÐÍFPGA/CPLD²»¶ÏÍÆ³Â³öС£ÐÂÒ»´úµÄFPGAÉõÖÁ¼¯³ÉÁËÖÐÑë´¦ÀíÆ÷(CPU)»òÊý×Ö´¦ÀíÆ÷(DSP)Äںˣ¬ÔÚһƬFPGAÉϽøÐÐÈíÓ²¼þЭͬÉè¼Æ£¬ÎªÊµÏÖÆ¬ÉϿɱà³Ìϵͳ(SOPC, System On Programmable Chip)ÌṩÁËÇ¿´óµÄÓ²¼þÖ§³Ö¡£ 2.1.2 ¿É±à³ÌÂß¼­Æ÷¼þµÄ»ù±¾½á¹¹

¿É±à³ÌÂß¼­Æ÷¼þµÄ»ùľ½á¹¹Èçͼ2.1Ëùʾ¡£ÓÉÊäÈë¿ØÖÆµç·¡¢ÓëÕóÁС¢»òÕóÁÐÒÔ¼°Êä³ö¿ØÖƵç·×é³É¡£ÔÚÊäÈë¿ØÖÆµç·ÖУ¬ÊäÈëÐźž­¹ýÊäÈ뻺³åµ¥Ôª²úÉúÿ¸öÊäÈë±äÁ¿µÄÔ­±äÁ¿ºÍ·´±äÁ¿£¬²¢×÷ΪÓëÕóÁеÄÊäÈëÏî¡£ÓëÕóÁÐÓÉÈô¸É¸öÓëÃÅ×é³É£¬ÊäÈ뻺³åµ¥ÔªÌṩµÄ¸÷ÊäÈëÏî±»ÓÐÑ¡ÔñµØÁ¬½Óµ½¸÷¸öÓëÃÅÊäÈë¶Ë£¬Ã¿¸öÓëÃŵÄÊä³öÔòÊDz¿·ÖÊäÈë±äÁ¿µÄ³Ë»ýÏî¡£¸÷ÓëÃÅÊä³öÓÖ×÷Ϊ»òÕóÁеÄÊäÈ룬ÕâÑù»òÕóÁеÄÊä³ö¾ÍÊÇÊäÈë±äÁ¿µÄÓë»òÐÎʽ¡£Êä³ö¿ØÖƵç·½«»òÕóÁÐÊä³öµÄÓë»òʽͨ¹ýÈý̬ÃÅ¡¢¼Ä´æÆ÷µÈµç·£¬Ò»·½Ãæ²úÉúÊä³öÐźţ¬ÁíÒ»·½Ãæ×÷Ϊ·´À¡ÐźÅËÍ»ØÊäÈë¶Ë£¬ÒÔ±ãʵÏÖ¸ü¸´ÔÓµÄÂß¼­¹¦ÄÜ¡£Òò´Ë£¬ÀûÓÿɱà³ÌÂß

3

¼­Æ÷¼þ¿ÉÒÔ·½±ãµØÊµÏÖ¸÷ÖÖÂß¼­¹¦ÄÜ¡£

ÊäÈë ÊäÈë¿ØÖÆÊä³ö2.1.3 ¿É±à³ÌÂß¼­Æ÷¼þ·ÖÀà

¹ãÒåÉϽ²£¬¿É±à³ÌÂß¼­Æ÷¼þÊÇÖ¸Ò»ÇÐͨ¹ýÈí¼þÊֶθü¸Ä¡¢ÅäÖÃÆ÷¼þÄÚ²¿Á¬½Ó½á¹¹ºÍÂß¼­µ¥Ôª£¬Íê³É¼È¶¨Éè¼Æ¹¦ÄܵÄÊý×Ö¼¯³Éµç·¡£Ä¿Ç°³£ÓõĿɱà³ÌÂß¼­Æ÷¼þÖ÷ÒªÓмòµ¥µÄÂß¼­ÕóÁÐ(PAL/GAL)¡¢¸´Ôӿɱà³ÌÂß¼­Æ÷¼þ(CPLD)ºÍÏÖ³¡¿É±à³ÌÃÅÕóÁÐ(FPGA)µÈ3´óÀà¡£ 1¡¢PAL/GAL

PALÊÇProgrammable Array LogicµÄËõд£¬¼´¿É±à³ÌÕóÁÐÂß¼­£»GALÊÇGeneric Array LogicµÄËõд£¬¼´Í¨Óÿɱà³ÌÕóÁÐÂß¼­¡£PAL/GALÊÇÔçÆÚ¿É±à³ÌÂß¼­Æ÷¼þµÄ·¢Õ¹ÐÎʽ£¬ÆäÌØµãÊÇ´ó¶à»ùÓÚE2CMOS¹¤ÒÕ£¬½á¹¹½ÏΪ¼òµ¥£¬¿É±à³ÌÂß¼­µ¥Ôª¶àΪÓë¡¢»òÕóÁУ¬¿É±à³ÌÂß¼­µ¥ÔªÃܶȽϵͣ¬½öÄÜʹÓÃÓÚijЩ¼òµ¥µÄÊý×ÖÂß¼­µç·¡£ËäÈ»PAL/GALÃܶȽϵͣ¬µ«ÊÇËüÃÇÒ»³öÏÖ¼´ÒÔÆäµÍ¹¦ºÄ£¬µÍ³É±¾¡¢¸ß¿É¿¿ÐÔ¡¢Èí¼þ¿É±à³Ì¡¢¿ÉÖØ¸´¸ü¸ÄµÈÌØµãÒý·¢ÁËÊý×Öµç·ÁìÓòµÄ¾Þ´óÕ𶯡£ËäȻĿǰ½Ï¸´ÔÓµÄÂß¼­µç·һ°ãʹÓÃCPLDÉõÖÁFPGA Íê³É£¬µ«ÊǶÔÓ¦ºÜ¶à¼òµ¥µÄÊý×ÖÂß¼­µç·£¬GALµÈ¼òµ¥µÄ¿É±à³ÌÂß¼­Æ÷¼þÈÔÈ»±»´óÁ¿Ê¹Óá£Ä¿Ç°£¬¹úÄÚÍâºÜ¶à¶Ô³É±¾Ê®·ÖÃô¸ÐµÄÉè¼Æ¶¼ÔÚʹÓÃGALµÈµÍ³É±¾¿É±à³ÌÂß¼­Æ÷¼þ£¬Ô½À´Ô½¶àµÄ74ϵÁÐÂß¼­µç·±»GALÈ¡´ú¡£GALµÈÆ÷¼þ·¢Õ¹ÖÁ½ñÒѾ­½ü20ÄêÁË£¬ÐÂÒ»´úµÄGALÒÔ¹¦ÄÜÁé»î£¬Ð¡·â×°¡¢µÍ³É±¾¡¢Öظ´¿É±à³Ì¡¢Ó¦ÓÃÁé»îµÈÌØµãÒÀÈ»ÔÚÊý×Öµç·ÁìÓò°çÑÝ×ÅÖØÒªµÄ½ÇÉ«¡£Ä¿Ç°±È½Ï´óµÄGALÆ÷¼þ¹©Ó¦ÉÌÖ÷ÒªÊÇLattice°ëµ¼Ìå¡£ 2¡¢CPLD

CPLDÊÇComplex Programmable Logic DeviceµÄËõд£¬¼´¸´ÔӵĿɱà³ÌÂß¼­Æ÷¼þ¡£CPLDÊÇÔÚPAL¡¢GALµÄ»ù´¡ÉÏ·¢Õ¹ÆðÀ´µÄ£¬Ò»°ãÒ²²ÉÓóÆÎªE2CMOS¹¤ÒÕ£¬Ò²ÓÐÉÙÊý³§É̲ÉÓÃFlash¹¤ÒÕ£¬Æä»ù±¾½á¹¹Óɿɱà³ÌI/Oµ¥Ôª¡¢»ù±¾Âß¼­µ¥Ôª¡¢²¼Ïß³ØºÍÆäËû¸¨Öú

4

¡­¡­ ÓëÕóÁлòÕóÁÐÊä³ö¿ØÖÆ¡­¡­ ͼ2.1 ¿É±à³ÌÂß¼­Æ÷¼þµÄ»ùľ½á¹¹

¹¦ÄÜÄ£¿é¹¹³É¡£CPLD¿ÉʵÏÖµÄÂß¼­¹¦ÄܱÈPAL¡¢GALÓÐÁË´ó·ù¶ÈµÄÌáÉý£¬Ò»°ã¿ÉÒÔÍê³ÉÉè¼ÆÖнϸ´ÔÓ¡¢½Ï¸ßËٶȵÄÂß¼­¹¦ÄÜ£¬Èç½Ó¿Úת»»¡¢×ÜÏß¿ØÖƵȡ£CPLDµÄÖ÷ÒªÆ÷¼þ¹©Ó¦ÉÌÓÐAltera¡¢Lattice ºÍXilinxµÈ¡£ 3¡¢FPGA

FPGAÊÇField Programmable Gate ArrayµÄËõд£¬¼´ÏÖ³¡¿É±à³ÌÃÅÕóÁС£FPGAÊÇÔÚCPLDµÄ»ù´¡ÉÏ·¢Õ¹ÆðÀ´µÄÐÂÐ͸ßÐÔÄܿɱà³ÌÂß¼­Æ÷¼þ£¬ËüÒ»°ã²ÉÓÃSRAM¹¤ÒÕ£¬Ò²ÓÐһЩרÓÃÆ÷¼þ²ÉÓÃFlash¹¤ÒÕ»ò·´ÈÛË¿(Anti-Fuse)¹¤Òյȡ£FPGAµÄ¼¯³É¶ÈºÜ¸ß£¬ÆäÆ÷¼þÃܶȴÓÊýÍòϵͳÃŵ½ÊýǧÍòϵͳÃŲ»µÈ£¬¿ÉÒÔÍê³É¼«Æä¸´ÔÓµÄʱÐòÓë×éºÏÂß¼­µç·¹¦ÄÜ£¬ÊÊÓÃÓÚ¸ßËÙ¡¢¸ßÃܶȵĸ߶ËÊý×ÖÂß¼­µç·Éè¼ÆÁìÓò¡£FPGAµÄ»ù±¾×é³É²¿·ÖÓпɱà³ÌÊäÈë/Êä³öµ¥Ôª£¬»ù±¾¿É±à³ÌÂß¼­µ¥Ôª¡¢Ç¶ÈëʽRAM¡¢·á¸»µÄ²¼Ïß×ÊÔ´¡¢µ×²ãǶÈ빦Äܵ¥Ôª¡¢ÄÚǶרÓÃÓ²ºËµÈ¡£FPGAµÄÖ÷ÒªÆ÷¼þ¹©Ó¦ÉÌÓÐXilinx¡¢Altera¡¢Lattice¡¢ActelºÍAtmelµÈ¡£

2.1.4 Altera Cyclone ¢òϵÁÐÆ÷¼þ½éÉÜ

Altera Cyclone ¢ò²ÉÓÃȫͭ²ã¡¢µÍKÖµ¡¢1.2·üSRAM¹¤ÒÕÉè¼Æ£¬ÂãÆ¬³ß´ç±»¾¡¿ÉÄÜ×îСµÄÓÅ»¯¡£²ÉÓÃ300ºÁÃ×¾§Ô²£¬ÒÔTSMC³É¹¦µÄ90nm¹¤ÒÕ¼¼ÊõΪ»ù´¡£¬Cyclone ¢òÆ÷¼þÌṩÁË4,608µ½68,416¸öÂß¼­µ¥Ôª(LE)£¬²¢¾ßÓÐÒ»ÕûÌ××î¼ÑµÄ¹¦ÄÜ£¬°üÀ¨Ç¶Èëʽ18±ÈÌØx18±ÈÌØ³Ë·¨Æ÷¡¢×¨ÓÃÍⲿ´æ´¢Æ÷½Ó¿Úµç·¡¢4kbitǶÈëʽ´æ´¢Æ÷¿é¡¢ËøÏà»·(PLL)ºÍ¸ßËÙ²î·ÖI/OÄÜÁ¦¡£

Cyclone ¢òÆ÷¼þÀ©Õ¹ÁËFPGAÔڳɱ¾Ãô¸ÐÐÔ¡¢´óÅúÁ¿Ó¦ÓÃÁìÓòµÄÓ°ÏìÁ¦£¬ÑÓÐøÁ˵ÚÒ»´úCycloneÆ÷¼þϵÁеijɹ¦¡£Cyclone ¢òÆ÷¼þ°üº¬ÁËÐí¶àеÄÌØÐÔ£¬ÈçǶÈë´æ´¢Æ÷¡¢Ç¶Èë³Ë·¨Æ÷¡¢PLLºÍµÍ³É±¾µÄ·â×°£¬ÕâЩ¶¼ÎªÖîÈçÊÓÆµÏÔʾ¡¢Êý×ÖµçÊÓDTV)¡¢»ú¶¥ºÐSTB)¡¢DVD²¥·ÅÆ÷¡¢DSLµ÷ÖÆ½âµ÷Æ÷¡¢¼ÒÓÃÍø¹ØºÍÖеͶË·ÓÉÆ÷µÈÅúÁ¿Ó¦ÓýøÐÐÁËÓÅ»¯¡£±¾Éè¼ÆÕýÊDzÉÓÃCyclone ¢òϵÁеÄоƬEP2C35672C6¡£¸ÃоƬµÄ¿Õ¼ä×ã¹»Ó¦¸¶¸ÃϵͳËùÐèÒªµÄ×ÊÔ´¡£

2.1.5 FPGAµÄ¿ª·¢Á÷³Ì

FPGA¿ª·¢»ù±¾Á÷³Ì°üÀ¨£ºÉè¼ÆÊäÈë¡¢Éè¼Æ·ÂÕæ¡¢Éè¼Æ×ۺϡ¢²¼¾Ö²¼Ïߵȣ¬ËüÃǵÄÁ¬½Ó¹ØÏµÈçͼ2.2Ëùʾ¡£Í¼2.2ÖÐFPGA¿ª·¢Á÷³ÌͼÉè¼Æ×ÛºÏÊÇÕû¸öFPGAÉè¼ÆÁ÷³ÌÖÐÒ»¸ö

5

ÖØÒªµÄ²½Ö裬Ëü½«HDL´úÂëÉú³ÉÓÃÓÚ²¼¾Ö²¼ÏßµÄÍø±íºÍÏàÓ¦µÄÔ¼Êø¡£¶øÇÒËæ×ÅÐÂÒ»´úFPGAоƬƵÂʺÍÃܶȵÄÔö³¤£¬Ê±ÐòÊÕÁ²ÎÊÌâÔ½À´Ô½ÑÏÖØ£¬×ÛºÏÒѾ­³ÉΪÕû¸öÉè¼Æ³É°ÜµÄ¹Ø¼ü¡£Í¨³£Ð¾Æ¬¹©Ó¦É̵ÄFPGAÈí¼þÖж¼°üº¬×ۺϹ¦ÄÜ£¬µ«ËüÏà¶Ô¼òµ¥£¬²»ÄÜÊÊÓ¦ÐÂÒ»´úFPGAоƬµÄ·¢Õ¹£¬ÐèÒª¸ü¼ÓרҵµÄ×ۺϹ¤¾ß¡£

ͼ2.2 Altera FPGAµÄ¿ª·¢Á÷³Ì

2.2 FPGAÉè¼Æ·½·¨

ÔÚFPGAÉè¼ÆÖУ¬ÓÐÐí¶àÖØÒªµÄÔ­ÔòºÍ¹æÂÉ¿ÉÑ­£¬ÕÆÎÕÕâЩԭÔòºÍ¹æÂÉ£¬ÈËÃÇ¿ÉÒÔÉè¼Æ³öÐí¶à¸ßÐÔÄܵĵç×Óϵͳ¡£

6