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