¹ÜÀíÉÌÆÌ ·¢²¼²úÆ· ·¢²¼Çó¹º Ñ°ÕÒÉÌ»ú
TOP
»ùÓÚFPGAµÄ¸ßÇåÊÓÆµ²É¼¯ÓëÏÔʾϵͳÉè¼Æ
[ ±à¼­:qiraosky | Ê±¼ä:2012-08-04 22:40:42 | ä¯ÀÀ:256´Î | À´Ô´:µÂÖݵçÄÔ·þÎñÍø | ×÷Õß:µÂÖݵçÄÔ·þÎñÍø ]

¡¡¡¡½üÄêÀ´£¬¸ßÇåÍøÂçÉãÏñ»úϯ¾íÊÓÆµ¼à¿ØÊг¡£¬´«Í³µÄÄ£ÄâÉãÏñ»úÒ²ÔÚѰÕÒеijö·ÌáÉýͼÏñÖÊÁ¿£¬²ÉÓ÷ÇѹËõ·½°¸µÄ¸ßÇåÄ£ÄâÉãÏñ»ú³ÉΪÊ×Ñ¡¡£Ò»°ãÀ´Ëµ£¬·ÇѹËõ·½°¸µÄÓ²¼þƽ̨ÓÐDSP»òASIC»òFPGA¡£±¾ÎĽéÉÜÁËÒ»ÖÖ»ùÓÚFPGAµÄÊÓÆµ²É¼¯ÓëÏÔʾϵͳµÄÉè¼Æ¡£ÏµÍ³ÒÔFPGAΪºËÐÄ£¬ÅäºÏ¸ß·Ö±æÂÊCCDͼÏñ´«¸ÐÆ÷¡¢ADCÄ£Êýת»»¡¢ÊÓÆµ±àÂëÆ÷µÈ£¬ÊµÏÖÁ˸ßÇåÊÓÆµÊµÊ±²É¼¯ÓëÏÔʾ¡£Ïêϸ²ûÊöÁËÉ«²Ê²åÖµÓëÉ«²Ê¿Õ¼äת»»Ëã·¨ºÍBURST´«ÊäµÄFPGAÓ²¼þʵÏÖ¡£

¡¡¡¡±¾ÎĽéÉÜÁËÒ»ÖÖ»ùÓÚFPGAµÄÊÓÆµ²É¼¯ÓëÏÔʾϵͳµÄÉè¼Æ¡£ÏµÍ³ÒÔFPGAΪºËÐÄ£¬ÅäºÏ¸ß·Ö±æÂÊCCDͼÏñ´«¸ÐÆ÷¡¢ADCÄ£Êýת»»¡¢ÊÓÆµ±àÂëÆ÷µÈ£¬ÊµÏÖÁ˸ßÇåÊÓÆµÊµÊ±²É¼¯ÓëÏÔʾ¡£Ïêϸ²ûÊöÁËÉ«²Ê²åÖµÓëÉ«²Ê¿Õ¼äת»»Ëã·¨ºÍBURST´«ÊäµÄFPGAÓ²¼þʵÏÖ¡£²âÊÔ±íÃ÷£¬¸ÃϵͳÔËÐÐÁ¼ºÃ£¬Äܹ»Âú×ã¸ßÇåÊÓÆµÊµÊ±¼à¿ØÒªÇó¡£

¡¡¡¡½üÄêÀ´£¬¸ßÇåÍøÂçÉãÏñ»úϯ¾íÊÓÆµ¼à¿ØÊг¡£¬´«Í³µÄÄ£ÄâÉãÏñ»úÒ²ÔÚѰÕÒеijö·ÌáÉýͼÏñÖÊÁ¿£¬²ÉÓ÷ÇѹËõ·½°¸µÄ¸ßÇåÄ£ÄâÉãÏñ»ú³ÉΪÊ×Ñ¡¡£Ò»°ãÀ´Ëµ£¬·ÇѹËõ·½°¸µÄÓ²¼þƽ̨ÓÐDSP»òASIC»òFPGA¡£ËüÃǸ÷ÓÐÓÅȱµã£¬FPGAÊÇÏÖ³¡¿É±à³ÌÃÅÕóÁУ¬¼æ¹ËÁËʵʱÐÔÓëÁé»îÐÔ£¬¶øÇÒ»¹¿ÉÒÔÄÚǶCPU£¬Òò´ËÊʺÏÓÃÀ´×öͼÏñ´¦Àí¡£FPGAµÄ×î´óȱµãÊǹ¦ºÄÌ«´ó£¬µ«±¾ÎÄÉè¼ÆµÄ²»ÊDZãЯʽÏû·Ñµç×Ó£¬¹¦ºÄÎÊÌâ¿ÉÒÔ²»¿¼ÂÇ¡£

¡¡¡¡±¾ÎÄÔÚÊý¾Ý´«Ê䷽ʽÉϽøÐÐÁË´´Ð£¬Ò»°ãµÄÊÓÆµ²É¼¯ÓëÏÔʾ·½°¸¾ùÐèҪʹÓÃ2¸öDMAͨµÀºÍ2ƬSDRAM×ö»º´æ£¬±¾ÎIJÉÓÃ×ÔÐбàдµÄBURSTÄ£¿é´«Ê䣬½öÐèҪһƬSDRAM£¬½ÚʡӲ¼þ¿ªÏúµÄͬʱ½µµÍÁËPCB°åµÄ¸´ÔÓ¶È¡£

¡¡  ϵͳ×ÜÌåÉè¼Æ

¡¡¡¡FPGAÊÇÕû¸öϵͳµÄºËÐÄ£¬±¾ÎIJÉÓõÄFPGAÊÇCycloneϵÁеÄEP3C16£¬ËüÄÚ²¿¼¯³ÉÁË15408¸öÂß¼­µ¥Ôª£¬56¸ö18¡Á18³Ë·¨Æ÷£¬4¸öËøÏà»·£¬CCDÊÇSONYµÄICX274£¬ÆäÓÐЧ·Ö±æÂÊÊÇ1600¡Á1200£¬ÏñËØÊ±ÖÓÊÇ36MHz£¬²¢ÇÒÖðÐÐɨÃè¡£SDRAMÊÇMicronµÄMT48LC2M32B2£¬ÈÝÁ¿ÊÇ2M¡Á32bit£¬ÍêÈ«Âú×ã±¾Éè¼ÆµÄÐèÒª¡£

¡¡¡¡Ê×ÏÈADCÇý¶¯CCD£¬CCDÊä³öÄ£ÄâÊÓÆµ£¬¾­¹ýADCת»»³ÉÊý×ÖͼÏñÊý¾Ý£¬È»ºóͨ¹ýFPGAÄÚ²¿µÄBURST´«Êäдµ½SDRAM£¬ÔÚSDRAMÄÚ²¿¿ª±ÙÈý¶ÎÊý¾Ý¿Õ¼ä¡£ÆäÖÐcodeÇøÓò´æ·ÅNIOSÈí¼þ´úÂ룬bufferAºÍbufferB×÷ΪͼÏñÊý¾Ý»º´æ£¬µ±Í¼ÏñÊý¾ÝдÈëbufferAʱ£¬¿ÉÒÔ¶ÁbufferBÓÃÓÚÏÔʾ£¬µ±Ò»Ö¡Êý¾Ý²É¼¯Íêºó£¬Çл»BURST´«Ê䵨ַ£¬Ð´ÈëbufferB£¬´Ëʱ¶ÁbufferAÓÃÓÚÏÔʾ£¬ÕâÑùÊý¾Ý¿ÉÒÔ²»¼ä¶ÏµØ²É¼¯ºÍÏÔʾ£¬Õâ¾ÍÊÇËùνƹÅÒ²Ù×÷¡£FPGAÊä³öµÄÊÓÆµÊý¾Ý¾­¹ý±àÂëÆ÷±àÂëºóÐγɴ®ÐÐÂëÁ÷£¬¼´SDIÊý¾Ý£¬È»ºó¾­¹ýͬÖáµçÀÂÏß´«Êäµ½¾ßÓÐSDI½Ó¿ÚµÄÏÔʾÆ÷ÏÔʾ¡£ÆäÖУ¬FLASHÓÃÀ´±£´æNIOSÈí¼þºÍFPGAÓ²¼þÅäÖÃÐÅÏ¢¡£

¡¡¡¡ÔÚFPGAÄÚ²¿ÊµÏÖµÄÄ£¿éÖУ¬VIDEOIPÊǸù¾ÝAVALON×ÜÏ߹淶±àдµÄÓû§×Ô¶¨ÒåÄ£¿é£¬ÆäÓàµÄÄ£¿é¾ùÊÇALTERAÌṩµÄ±ê׼ģ¿é£¬Ö»ÐèÒªÔÚSoPCBuilderÖе÷Óü´¿É£¬Òò´Ë±¾ÏµÍ³µÄÉè¼ÆÖ÷ÒªÊÇVIDEOIPµÄÉè¼Æ¡£

¡¡¡¡Ó²¼þÄ£¿éÉè¼Æ

¡¡¡¡Ó²¼þÄ£¿éÒ²¾ÍÊÇVIDEOIPÄ£¿é£¬Ö÷ÒªÓÉÉ«²Ê²åÖµ¡¢É«²Ê¿Õ¼äת»»¡¢FIFOÈý²¿·Ö¹¹³É¡£»ùÓڳɱ¾Ó빤³Ì¸´ÔӶȵĿ¼ÂÇ£¬±¾ÏµÍ³Îªµ¥CCDϵͳ£¬ÔÚCCD±íÃæ¸²¸ÇÒ»²ãÉ«²ÊÂ˲¨ÕóÁÐ(CFA)£¬¸ÃÂ˲¨ÕóÁвÉÓÃBayer¸ñʽ£¬Ã¿¸öÏñËØµãÖ»ÓÐÒ»¸öÑÕɫͨµÀ£¬ÎªÁËʵÏÖ²ÊÉ«ÏÔʾ£¬Ã¿¸öÏñËØµã±ØÐëÒªÓÐRGB3¸öͨµÀ£¬ÒªÍ¨¹ýÉ«²Ê²åÖµ²ÅÄÜ»ñµÃÆäÓàÁ½¸öͨµÀ¡£±¾ÎÄ´¦ÀíµÄÊÓÆµÊý¾Ý¶¼ÊÇYCbCr¸ñʽ£¬Òò´Ë»¹ÐèÒª¾­¹ýÉ«²Ê¿Õ¼äת»»½«RGB¸ñʽת»»³ÉYCbCr¸ñʽ¡£ÓÉÓÚNIOS´¦ÀíÆ÷µÄλ¿íÊÇ32bit£¬¶øYCbCr(4£º2£º2)ÊÇ16bit£¬ËùÒÔYCbCr±ØÐë¾­¹ýFIFO£¬µ±FIFO°ëÂúʱ£¬Í¨¹ýBURST´«ÊäдÊý¾Ýµ½SDRAM¡£ÖµµÃ×¢ÒâµÄÊÇ£ºÐ´ÈëFIFO֮ǰ£¬YCbCrµÄ¸ñʽÊÇ4£º4£º4£¬ÎªÁË·½±ãÏÔʾ£¬±ØÐëת»»³É4£º2£º2£¬±¾Éè¼Æ²ÉÈ¡ÁË×î¼òµ¥µÄ´¦Àí·½Ê½£¬¾ÍÊÇCbºÍCr¼ä¸ô²ÉÑù¡£ÊµÑé±íÃ÷£¬ÕâÖÖ´¦Àí²»Ó°ÏìÏÔʾЧ¹û¡£

¡¡¡¡É«²Ê²åÖµËã·¨

¡¡¡¡¿¼Âǵ½±¾ÎÄÉè¼ÆµÄϵͳÖ÷ÒªÓÃÓÚÊÓÆµ¼à¿Ø£¬Òò´Ë²ÉÓÃ×î¼òµ¥µÄ²åÖµËã·¨£¬¼´Ë«ÏßÐÔÕý½»·¨¡£¸ÃËã·¨µÄÔ­ÀíÊÇÔÚÿ¸öÏñËØµÄÁìÓòÈ¡8¸öÏñËØ¹¹³É3¡Á3ÕóÁУ¬¸ÃÕóÁÐÖÐÐĵÄÏñËØÎª´ý²åÖµÏñËØ£¬ÆäÖÐÒ»¸öÉ«²ÊͨµÀÖ±½ÓʹÓøÃÏñËØµÄÊý¾Ý£¬ÁíÍâÁ½¸öÉ«²ÊͨµÀͨ¹ý¼ÆËãÁìÓòµÄ2¸ö»ò4¸öÏñËØµÄƽ¾ùÖµ»ñµÃ¡£²»Í¬Î»ÖõÄÏñËØËÄÖÜÇé¿ö²»Í¬£¬¸ù¾Ý´ý²åÖµÏñËØËù´¦Î»ÖÃ×ܽá³ö4ÖÖÇé¿ö(Éè´ý²åÖµÏñËØ×ø±êΪ(X£¬Y))¡£

¡¡¡¡(a)R(X£¬Y)=[R(X£¬Y-1)+R(X£¬Y+1)]/2£»

¡¡¡¡G(X£¬Y)=G(X£¬Y)£»

¡¡¡¡B(X£¬Y)=[B(X-1£¬Y)+B(X+1£¬Y)]/2£»

¡¡¡¡(b)R(X£¬Y)=[R(X-1£¬Y-1)+R(X+1£¬Y-1)+R(X-1£¬

¡¡¡¡Y+1)+R(X+1£¬Y+1)]/4£»

¡¡¡¡G(X£¬Y)=[G(X-1£¬Y)+G(X£¬Y-1)+G(X+1£¬Y)+

¡¡¡¡G(X£¬Y+1)]/4£»

¡¡¡¡B(X£¬Y)=B(X£¬Y)£»

¡¡¡¡(c)R(X£¬Y)=R(X£¬Y)£»

¡¡¡¡G(X£¬Y)=[G(X-1£¬Y)+G(X£¬Y-1)+G(X+1£¬Y)+

¡¡¡¡G(X£¬Y+1)]/4£»

¡¡¡¡B(X£¬Y)=[B(X-1£¬Y-1)+B(X+1£¬Y-1)+

¡¡¡¡B(X-1£¬Y+1)+B(X+1£¬Y+1)]/4£»

¡¡¡¡(d)R(X£¬Y)=[R(X-1£¬Y)+R(X+1£¬Y)]/2£»

¡¡¡¡G(X£¬Y)=G(X£¬Y)£»

¡¡¡¡B(X£¬Y)=[B(X£¬Y-1)+B(X£¬Y+1)]/2

¡¡¡¡ÓÉÓÚÒªÐγÉ3¡Á3ÕóÁУ¬Òò´ËFPGAÓ²¼þʵÏÖʱ£¬ÎªÉ«²Ê²åֵģ¿é£¬²ÉÓÃ3¸öË«¿ÚRAM·Ö±ð±£´æ3ÐÐÊý¾Ý£¬ÆäÖÐA¡¢B¡¢C¡¢D¡¢E¡¢F±íʾ¼Ä´æÆ÷£¬CCDµÄÊý¾ÝÊÇÔÚÐг¡Í¬²½¿ØÖÆÏ´Ó×óµ½ÓÒ¡¢´ÓÉϵ½ÏÂÊä³ö£¬ÔÚÐг¡Í¬²½ÏÂÏȰѵÚÒ»ÐÐÊý¾Ýдµ½RAM1£¬Ð´ÍêµÚÒ»ÐÐÔÙÇл»µ½µÚ¶þÐУ¬Ð´ÍêµÚ¶þÐÐÔÙдµÚÈýÐУ¬µÚÈýÐÐдÍêµÚ3¸öÊý¾Ý¼´¿É¶Á³öRAMºÍ¸÷¼Ä´æÆ÷µÄÊý¾Ý×öÉ«²Ê²åÖµ£¬µ±µÚÈýÐÐдÍêÒԺ󣬵ÚËÄÐÐÊý¾ÝÔÙдµ½RAM1£¬ÒÔ´ËÀàÍÆ£¬Ò»Ö±Ñ­»·Ö±µ½Ò»Ö¡Êý¾Ý´¦Àí½áÊø¡£ÖµµÃ×¢ÒâµÄÊÇ£º3¡Á3ÕóÁи÷ÐеÄÊý¾ÝÊÇÑ­»·Çл»µÄ£¬µ±RAM1±£´æµÄÊÇ3¡Á3ÕóÁеĵÚÒ»ÐÐÊý¾Ýʱ£¬3¡Á3ÕóÁеÚÒ»ÐÐÊý¾Ý´Ó×óµ½ÓÒÒÀ´ÎΪB¡¢A¡¢RAM1£¬µÚ¶þÐÐÊý¾Ý´Ó×óµ½ÓÒÒÀ´ÎD¡¢C¡¢RAM2£¬µÚÈýÐÐÊý¾Ý´Ó×óµ½ÓÒÒÀ´ÎΪF¡¢E¡¢RAM3£»µ±RAM2±£´æµÚÒ»ÐÐÊý¾Ýʱ£¬µÚÒ»ÐÐÊÇD¡¢C¡¢RAM2£¬ÒÔºó¸÷ÐÐÑ­»·Çл»£¬²»ÔÙ׸Êö¡£

¡¡¡¡3¡Á3ÕóÁеÄÊý¾Ý½øÈë¶à·ѡÔñÆ÷£¬¸ù¾Ýµ±Ç°µÄλÖÃÒÔ¼°ËùÐèµÄÑÕɫͨµÀÑ¡³ö4¸öÏñËØ½øÐÐÏà¼ÓÇóºÍÔËËã¡£4¸öÏñËØµÄ»ñµÃ·½·¨ÊÇ£ºµ±ÊÇ1¸öÏñËØÊ±£¬¸´ÖÆ3´Î£»µÃµ½4¸öÏñËØ£¬µ±ÊÇ2¸öÏñËØÇ󯽾ùʱ£¬Ã¿¸öÏñËØ¸÷¸´ÖÆ1´Î£»µ±ÊÇ4¸öÏñËØÇ󯽾ùʱ£¬²»Óø´ÖÆ¡£

¡¡¡¡±¾ÎIJÉÓõÄCCDΪSONYµÄICX274£¬ÆäÓÐЧ·Ö±æÂÊΪ1600¡Á1200£¬¶øÓÃÓÚÏÔʾµÄ·Ö±æÂÊΪ1280¡Á720(720P)£¬Òò´ËÐèÒª½ØÈ¡1600¡Á1200Ϊ1282¡Á722½øÐвåÖµ£¬Ôö¼ÓÁ½ÐÐÁ½ÁÐÊÇΪÁË×ö±ß½ç´¦Àí¡£

¡¡¡¡É«²Ê¿Õ¼äת»»

¡¡¡¡±¾ÎIJÉÓõÄת»»¹ØÏµÈçÏ£º

¡¡¡¡Y=0.257¡ÁR+0.504¡ÁG+0.098¡ÁB+16

¡¡¡¡Cb=-0.148¡ÁR-0.291¡ÁG+0.439¡ÁB+128

¡¡¡¡Cr=0.439¡ÁR-0.368¡ÁG-0.071¡ÁB+128

¡¡¡¡ÔÚFPGAʵÏÖʱ£¬ÒÔÉÏת»»¹ØÏµÒªµ÷Óó˼ӵ¥Ôª¡£ÆäÖÐΪÁ˱£³ÖÊý¾ÝµÄÎȶ¨£¬Ôö¼Ó´¦ÀíËÙ¶È£¬Ôö¼ÓÁËÈý¼¶Á÷Ë®Ïߣ¬ÓÉÓÚϵÊýΪСÊý£¬Òò´ËÏÈ×óÒÆ8λ£¬È¡ÕûÊýºó·Ö±ðÓëR¡¢G¡¢BÏà³Ë£¬ÔÙÓÒÒÆ8λÊä³ö£¬×îºóÓëÕûÊýÏà¼ÓÊä³öYCbCr¸ñʽÊý¾Ý¡£

¡¡¡¡Í»·¢´«ÊäÄ£¿é

¡¡¡¡¾­¹ýÉÏÊöÁ½²½´¦ÀíÒÔºóµÄÊÓÆµÊý¾Ý¼´¿ÉÓÃÓÚÏÔʾ£¬±¾ÎIJÉÓÃÍ»·¢´«Êä·½°¸¡£ÊÓÆµÊý¾ÝÊ×ÏȾ­¹ýFIFO»º³å£¬È»ºó¾­¹ýÍ»·¢´«Êäдµ½SDRAM£¬Êý¾Ý´ÓSDRAM¶Á³öÒ²ÊDzÉÓÃÍ»·¢´«Ê䣬¶Á³öµÄÊý¾ÝÔÙ¾­¹ýÁíÍâµÄFIFO»º³åÒÔºó¼´¿ÉÓÃÓÚÏÔʾ¡£Í»·¢(BURST)´«ÊäÒ»´Î½øÐжà¸öÊý¾Ýµ¥ÔªµÄ´«Ê䣬¶ø²»½ö½öÊǰÑÿ¸öÊý¾Ýµ¥Ôª×÷Ϊһ´Îµ¥¶ÀµÄ´«Êä¡£ÕâÑù±ãÌá¸ßÁ˴Ӷ˿ڵÄÊý¾ÝÍÌÍÂÁ¿£¬ÔÚÖ÷¶Ë¿ÚÒ»´Î´¦Àí¶à¸öÊý¾Ýµ¥ÔªÊ±£¬¿ÉÒÔ´ïµ½¼«¸ßµÄЧÂÊ¡£ÒªÊ¹ÓÃÍ»·¢´«Êä¾Í±ØÐëÑϸñ°´ÕÕÍ»·¢´«ÊäµÄ¹æ·¶Éè¼ÆAVALON×ÜÏß½Ó¿Ú¡£ÏÞÓÚÆª·ù£¬±¾ÎIJ»ÔÙÏêÊöAVALON×ÜÏß½Ó¿Ú¡£

¡¡¡¡²âÊÔ½á¹û

¡¡¡¡±¾ÏµÍ³Ê¹ÓÃÁË48%µÄÂß¼­µ¥ÔªºÍ40%µÄ´æ´¢Æ÷£¬»¹ÓÐÊ£ÓàµÄ×ÊÔ´¿ÉÒÔ¸øÏµÍ³Ôö¼Ó¸ü¶àµÄ¹¦ÄÜ¡£¸ÃϵͳÔËÐÐÁ¼ºÃ¡£±¾ÎÄÉè¼ÆµÄ»ùÓÚFPGAµÄ¸ßÇåÊÓÆµ´¦Àíϵͳ£¬ÄÜÔÚFPGAÓ²¼þÉ豸ÖиßËÙ¡¢¸ßÖÊÁ¿µØ¶ÔCCD´«¸ÐÆ÷²É¼¯µÄBayerͼÏñ½øÐÐÉ«²Ê²åÖµºÍÉ«²Ê¿Õ¼äת»»£¬¾­¹ýSDI±àÂëºóÄܹ»ÊµÊ±ÏÔʾ¡£ÔÚ±¾Éè¼ÆµÄ»ù´¡ÉÏ¿ÉÒÔÔö¼Ó¸ü¶àµÄ¹¦ÄÜÒԸıäͼÏñÖÊÁ¿£¬ÀýÈç3AËã·¨(×Ô¶¯ÆØ¹â£¬×Ô¶¯°×ƽºâ£¬×Ô¶¯¾Û½¹)¡£(À´Ô´£ºCPSÖа²Íø)

¡¾´ó ÖРС¡¿ ¡¾´òÓ¡¡¿¡¾·±Ìå¡¿ ¡¾Í¶¸å¡¿ ¡¾¹Ø±Õ¡¿¡¾ÆÀÂÛ¡¿ ¡¾·µ»Ø¶¥²¿¡¿