|
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Öа²Íø) |
ÈÈÃÅÎÄÕÂ
|