Òì²½FIFOÔÚFPGAÓëDSPͨÐÅÖеÄÔËÓÃ[ͼ]

ÕªÒª£ºÀûÓÃÒì²½FIFOʵÏÖFPGAÓëDSP½øÐÐÊý¾ÝͨÐŵķ½°¸¡£FPGAÔÚдʱÖӵĿØÖÆϽ«Êý¾ÝдÈëFIFO£¬ÔÙÓëDSP½øÐÐÎÕÊÖºó£¬DSPͨ¹ýEMIFA½Ó¿Ú½«Êý¾Ý¶ÁÈë¡£ÎÄÖиø³öÁËÒì²½FIFOµÄʵÏÖ´úÂëºÍFPGAÓëDSPµÄÓ²¼þÁ¬½Óµç·¡£¾­ÑéÖ¤£¬ÀûÓÃÒì²½FIFOµÄ·½·¨£¬ÔÚFPGAÓëDSPͨÐÅÖеÄÓ¦Ó㬾ßÓд«ÊäËٶȿ졢Îȶ¨¿É¿¿¡¢ÊµÏÖ·½±ãµÄÓŵ㡣

ÔÚÄ¿Ç°µç×ÓϵͳµÄÉè¼ÆÖУ¬DSP+FPGA¼Ü¹¹Ô½À´Ô½¶à£¬ÆäÔ­ÒòÔÚÓڸüܹ¹¼æ¹ËÁËËٶȺÍÁé»îÐÔ¡£Í¨ÓÃDSPµÄÓŵãÊÇͨ¹ý±à³Ì¿ÉÒԹ㷺ӦÓõ½²úÆ·ÖУ¬²¢ÇÒÖ÷Á÷ÖÆÔìÉÌÉú²úµÄDSPÒÑÄÜÂú×ãËã·¨¿ØÖƽṹ¸´ÔÓ¡¢ÔËËãËٶȸߡ¢Ñ°Ö··½Ê½Áé»îºÍͨÐÅÐÔÄÜÇ¿´óµÈÐèÇó¡£µ«ÊÇ´«Í³µÄDSP²ÉÓ÷ë-ŵÒÀÂü½á¹¹»òijÖÖÀàÐÍÀ©Õ¹¡£´ËÖֽṹ±¾ÖÊÉÏÊÇ´®Ðеģ¬Òò´ËÓöµ½Ðè´¦ÀíµÄÊý¾ÝÁ¿´ó£¬¶Ô´¦ÀíËÙ¶ÈÒªÇó¸ß£¬µ«ÊǶÔÔËËã½á¹¹Ïà¶Ô±È½Ï¼òµ¥µÄµ×²ãÐźŴ¦ÀíËã·¨ÔòÏÔ²»³öÓŵ㣬ÊʺϲÉÓÃFPGAÓ²¼þʵÏÖ¡£¶ø²ÉÓÃDSP+FPGAµÄÊý×ÖÓ²¼þϵͳ¾Í¿ÉÒ԰ѶþÕßÓŵã½áºÏÆðÀ´£¬¼æ¹ËËٶȺÍÁé»îÐÔ£¬¼ÈÂú×ãµ×²ãÐźŴ¦ÀíÒªÇó£¬ÓÖÂú×ã¸ß²ãÐźŴ¦ÀíÒªÇó¡£²ÉÓô˼ܹ¹£¬¾Í²»¿É±ÜÃâµØÓöµ½FPGAÓëDSPÖ®¼äÊý¾ÝͨÐŵÄÎÊÌâ¡£±¾ÎÄÌÖÂÛÁËÒì²½FIFOÔÚFPGAÓëDSPͨÐÅÖеÄÔËÓ㬸÷½·¨¾ßÓд«ÊäËٶȿ죬Îȶ¨¿É¿¿²¢ÇÒʵÏÖ·½±ãµÈÓŵ㡣

1 Òì²½FIFOµÄ½á¹¹

ÓÉÓÚFPGAºÍDSP¾ßÓи÷×ÔµÄÈ«¾ÖʱÖÓ£¬½«FPGAÖеÄÊý¾Ý´«µÝ¸øDSPʱ£¬Ò²¾ÍÊǽ«Êý¾Ý´ÓÒ»¸öʱÖÓÓò´«µÝµ½ÁíÒ»¸öʱÖÓÓò£¬²¢ÇÒÄ¿±êʱÖÓÓòÓëԴʱÖÓÓòÊDz»Ïà¹ØµÄ£¬Òò´ËÕâЩÓòÖеĶ¯×÷Ò²ÊDz»Ïà¹ØµÄ£¬´Ó¶øÏû³ýÁËͬ²½²Ù×÷µÄ¿ÉÄÜÐÔ£¬²¢Ê¹ÏµÍ³Öظ´µØ½øÈëÑÇÎȶ¨×´Ì¬¡£ÑÇÎÈ̬Ҳ¾ÍÊÇ´¥·¢Æ÷¹¤×÷ÔÚÒ»ÖÖ²»È·¶¨µÄ״̬£¬ÕâÖÖ²»È·¶¨µÄ״̬½«»áÓ°Ïìµ½ÏÂÒ»¼¶´¥·¢Æ÷£¬×îÖÕµ¼ÖÂÁ¬Ëø·´Ó¦£¬´Ó¶øʹÕû¸öϵͳ¹¦ÄÜʧ³£¡£µ±ÓдóÁ¿µÄÊý¾ÝÐèÒª½øÐпçʱÖÓÓò´«ÊäÇÒ¶ÔÊý¾Ý´«ÊäËÙ¶ÈÒªÇó±È½Ï¸ßµÄ³¡ºÏ£¬¿Ë·þÑÇÎÈ̬ʵÏÖÊý¾ÝµÄ¸ßËÙÎȶ¨´«Ê䣬Òì²½FIFOÊÇÒ»ÖÖ¼òµ¥¡¢¿ì½ÝµÄ½â¾ö·½°¸¡£

FIFO(First In First Out)ÊÇÒ»ÖÖÏȽøÏȳöµÄÊý¾Ý»º´æÆ÷£¬¶øÒì²½FIFOÊÇÓÃÒ»ÖÖʱÖÓдÈëÊý¾Ý£¬ÓÃÁíÒ»ÖÖʱÖÓ¶Á³öÊý¾Ý¡£ÒÔFPGAÏòDSP´«ÊäÊý¾ÝΪÀý£¬FPGA²úÉúдʱÖÓ£¬ÔÚдʱÖӵĿØÖÆÏÂͬ²½ÏòFIFOÖÐдÈëÊý¾Ý£¬²¢ÇÒʹÏàÓ¦µÄдָÕëÔö¼Ó1£»DSPÌṩ¶ÁʱÖÓ£¬ÔÚ¶ÁʱÖӵĿØÖÆÏÂͬ²½µØ´ÓFIFOÖÐÈ¡³öÊý¾Ý£¬²¢ÇÒʹÏàÓ¦µÄ¶ÁÖ¸ÕëÔö¼Ó1¡£ÕâÀïΨһµÄ¿çʱÖÓÓò²Ù×÷¾ÍÊǶÔFIFO¿Õ»òÂúµÄÅжϡ£ÈçºÎ¸ù¾ÝÒì²½µÄ¶Á¡¢Ð´Ö¸ÕëÐźŲúÉúÕýÈ·µÄ¿Õ¡¢Âú±êÖ¾£¬±£Ö¤Êý¾ÝÕýÈ·µÄдÈë»ò¶Á³ö£¬¶ø²»·¢ÉúÒç³ö»ò¶Á¿ÕµÄ״̬³öÏÖ¡£¾Í±ØÐë±£Ö¤FIFOÔÚÂúµÄÇé¿öÏ£¬²»ÄܽøÐÐд²Ù×÷£¬ÔÚ¿ÕµÄ״̬ϲ»ÄܽøÐжÁ²Ù×÷£¬ÕâÊÇÒì²½FIFOÉè¼ÆµÄ¹Ø¼ü¡£

ÅжÏFIFOΪ¿Õ»¹ÊÇÂú£¬±¾ÎIJÉÓÃÈçÏÂËã·¨£º¹¹ÔìÒ»¸öÖ¸Õë¿í¶ÈΪN+1£¬Éî¶ÈΪ2N ByteµÄFIFO£¬µ±¶Á¡¢Ð´Ö¸ÕëµÄ¶þ½øÖÆÂëÖÐ×î¸ßλ²»Ò»Ö¶øÆäËûNλ¶¼ÏàµÈʱ£¬FIFOΪÂú¡£µ±¶Á¡¢Ð´Ö¸ÕëÍêÈ«ÏàµÈʱ£¬FIFOΪ¿Õ¡£ÀýÈ磺һ¸öÉî¶ÈΪ8 ByteµÄFIFO£¬FIFO_WIDTH=8£¬FIFO_DEPTH=2N= 8£¬N=3£¬Ö¸Õë¿í¶ÈΪN+1=4¡£Æð³õrd_ptr_binºÍwr_ptr_bin¾ùΪ“0000”¡£´ËʱFIFOÖÐдÈë8 ByteµÄÊý¾Ý£¬wr_ptr_bin=“1000”£¬rd_ptr_ bin=“0000”¡£µ±È»£¬Õâ¾ÍÊÇÂúÌõ¼þ¡£ÏÖÔÚ£¬¼ÙÉèÖ´ÐÐÁË8´Î¶Á²Ù×÷£¬Ê¹µÃrd_ptr_bin=“1000”£¬Õâ¾ÍÊÇ¿ÕÌõ¼þ¡£ÁíÍâµÄ8´Îд²Ù×÷½«Ê¹wr_ ptr_binµÈÓÚ“0000”£¬µ«rd_ptr_binÈÔÈ»µÈÓÚ“1000”£¬Òò´ËFIFOΪÂúÌõ¼þ¡£ÏÔÈ»ÆðʼָÕëÎÞÐèΪ“0000”¡£¼ÙÉèËüΪ“0100”£¬²¢ÇÒFIFOΪ¿Õ£¬ÄÇôдÈë8 Byte»áʹwr_ptr_bin=“1100”£¬rd_ptr_binÈÔΪ“0100”¡£Õâ˵Ã÷FIFOΪÂú¡£

²»¿ÉÒÔ½«¶Á¡¢Ð´Ö¸ÕëÖ±½Ó±È½Ï£¬ÒòΪ¶Á¡¢Ð´Ö¸ÕëÔÚ²»Í¬µÄʱÖÓÓò£¬Ö±½Ó±È½Ï»á³öÏÖÑÇÎÈ̬ÏÖÏó¡£ÔÚÉæ¼°µ½´¥·¢Æ÷µÄµç·ÖУ¬ÑÇÎÈ̬ÎÞ·¨³¹µ×Ïû³ý£¬Ö»Äܽ«Æä·¢ÉúµÄ¸ÅÂʽµµ½×îµÍ¡£ÆäÖеÄÒ»¸ö·½·¨¾ÍÊÇʹÓøñÀ×Âë¡£¸ñÀ×ÂëÔÚÏàÁÚµÄÁ½¸öÂëÔªÖ®¼äÖ»ÓÐһλ±ä»»¡£Õâ¾Í±ÜÃâÁ˶Á¡¢Ð´Ö¸ÕëÓëʱÖÓͬ²½µÄʱºò·¢ÉúÑÇÎÈ̬ÏÖÏó¡£ÁíÍâÒ»ÖÖ·½·¨¾ÍÊÇʹÓÃÁ½¼¶D´¥·¢Æ÷ͬ²½£¬¼ÙÉèÒ»¸öD´¥·¢Æ÷·¢ÉúÑÇÎÈ̬µÄ¸ÅÂÊΪP£¬ÄÇôÁ½¸ö¼¶ÁªµÄD´¥·¢Æ÷·¢ÉúÑÇÎÈ̬µÄ¸ÅÂʾÍΪP2¡£

×ÛÉÏËùÊö£¬±¾ÎÄÉè¼ÆÁËÈçͼ1ËùʾµÄFIFO£¬¸ÃFIFOµÄÊäÈë¶Ë¿ÚÓÐwclk(дʱÖÓ)£¬rclk(¶ÁʱÖÓ)£¬wrst_n(д¸´Î»)£¬rrst_n(¶Á¸´Î»)£¬sen-dbegin(Æô¶¯Êý¾Ý·¢ËÍ£¬ÓÉDSP·¢Ë͸øFPGA)£¬winc(дʹÄÜ)£¬rinc(¶ÁʹÄÜ)£¬wdata[DSIZE-1£®£®0](дÊý¾Ý£¬ÒÔ16λÊý¾ÝΪÀý)£¬Êä³ö¶Ë¿ÚΪrdata[DSIZE-1£®£®0](¶ÁÊý¾Ý£¬16λ)£¬wfull(дÂú±êÖ¾)£¬rempty(¶Á¿Õ±êÖ¾)£¬ready(Êý¾Ý×¼±¸ºÃ£¬ÓÉFPGA·¢Ë͸øDSP)¡£¸ÃFIFOµÄÉî¶ÈÉèΪ2 048£¬¼´Ò»¹²ÓÐ2 048¸ö16λÊý¾Ý´æÖüµ¥Ôª£¬µ±Ð´¸´Î»ÎÞЧ£¬Ð´Ê¹ÄÜÓÐЧʱ£¬FPGA¾ÍÔÚдʱÖӵĿØÖÆϽ«Êý¾ÝдÈëFIFOÖУ¬µ±Ð´ÂúÔ¼¶¨µÄ×Ö·ûÊýʱ£¬½«Êý¾Ý×¼±¸ºÃÐźÅÖÃΪÓÐЧ£¬Í¨ÖªDSP¿ÉÒÔÈ¡Êý¾Ý£¬µ±FIFOдÂúÇé¿ö³öÏÖʱ£¬Ð´Âú±êÖ¾ÖÃΪÓÐЧ£¬×èÖ¹¼ÌÐøÏòFIFOÖÐдÈëÊý¾Ý¡£µ±FIFO½ÓÊÕµ½DSP·¢À´µÄÆô¶¯Êý¾Ý·¢ËÍÐźÅÇÒ¶ÁʹÄÜÐźžùΪÓÐЧʱ£¬FIFO¾ÍÔÚDSP·¢À´µÄ¶ÁʱÖӵĿØÖÆÏ£¬ÒÀ´Î½«Êý¾Ý·Åµ½16λ¶ÁÊý¾Ý¶Ë£¬¹©DSP¶ÁÈ¡¡£

ʵÏÖ¸ÃFIFOµÄ¹Ø¼ü²¿·ÖVerilog´úÂëÈçÏ£º

ÐèҪ˵Ã÷µÄÊÇ£¬ÔÚ²úÉúдÂú±ê־ʱ£¬ÓÉÓÚ²ÉÓøñÀ×Â룬дÂú±êÖ¾ÅжϵÄÌõ¼þÊÇ£ºÈç¹û¶ÁдָÕëµÄ×î¸ßÁ½Î»²»Í¬£¬ÆäÓàλÏàͬ£¬ÔòΪдÂú״̬¡£ÎªÁË˵Ã÷¼ò±ã£¬ÒÔ4λ¸ñÀ×Âë±íʾÉî¶ÈΪ8µÄFIFOΪÀý£¬µ±¶ÁÖ¸ÕëÖ¸ÏòµÚ7¸öµØַʱ£¬¶ÁÖ¸ÕëΪ0100£¬´ËʱÈôдָÕëÖ¸ÏòµÚ8¸öµØÖ·£¬ÔòдָÕëΪ1100£¬´ËʱÁ½Õß½ö×î¸ßλ²»Í¬¶øÆäÓàλÏàͬ£¬µ«´ËʱFIFO²¢²»ÊÇ´¦ÓÚдÂú״̬£¬ÕâÓëÇ°ÎÄËùÐðÊöµÄÓöþ½øÖÆÂë±íʾµÄ¶ÁдָÕëÅжϷ½·¨ÊÇÓÐÇø±ðµÄ¡£µ±Ð´²Ù×÷дÂúһȦ£¬µÚ¶þ´Îµ½´ïµØÖ·7ʱ£¬´ËʱµÄдָÕëΪ1000£¬¿ÉÒÔ¿´³ö£¬´ËʱÁ½ÕßµÄ×î¸ßÁ½Î»²»Í¬£¬¶øÆäÓàλÏàͬ£¬ÕâʱFIFOÕæÕý´¦ÓÚдÂú״̬¡£

2 DSP¶ËÊý¾Ý½ÓÊÕ

TI¹«Ë¾µÄTMS320C6000ϵÁÐDSP¾ùÌṩEMIFA½Ó¿Ú£¬±¾ÎÄÀûÓÃEMIFA½Ó¿ÚʵÏÖFPGAÏòDSP´«ÊäÊý¾Ý£¬ÊµÏÖÁ½ÕßÓ²¼þÁ¬½ÓµÄµç·Èçͼ2Ëùʾ¡£

ÆäÖУ¬EMIFAµÄ16λÊý¾Ý¶ËÓëFIFOµÄRdata¶ËÏàÁ¬ÒÔ±ã½ÓÊÕFPGA·¢À´µÄÊý¾Ý£¬GPI04_13£¬GPI04_12£¬GPI04_15Õâ3¸öͨÓÃIO¿ÚÓÃÀ´½ÓÊÕ»òÊä³öÏàÓ¦µÄÎÕÊÖÐźš£EMA_WEÓëFIFOµÄ¶ÁʹÄܶËÏàÁ¬£¬EMA_CSÓëFIFOµÄ¶ÁʱÖÓÏàÁ¬¡£

ͼ3ËùʾΪDSPµÄEMIFA¿Ú¶ÁÈ¡Êý¾ÝµÄʱÐòͼ£¬´ÓͼÖпÉÒÔ¿´³ö£¬Ã¿Ò»´Î¶ÁÊý¾Ý²Ù×÷¾ùÒÔEMA_CS(EMIFAʹÄÜÐźÅ)ϽµÑØ¿ªÊ¼£¬ÒÔEMA_CSµÄÉÏÉýÑؽáÊø¡£Í¬Ê±£¬ÒòΪÊǶÁÈ¡²Ù×÷£¬EMA_WE(EMA¶Áд¿ØÖÆÐźţ¬µÍΪд£¬¸ßΪ¶Á)ʼÖÕΪ¸ßµçƽ£¬EMA_OE(EMAÊä³öʹÄÜÐźţ¬µÍÓÐЧ)ÔÚÊý¾Ý¶Áȡʱ¿ÌΪµÍµçƽ¡£ËùÒÔ£¬½«EMA_CSÁ¬ÖÁFIFOµÄRclk¶Ë£¬Ç¡ºÃʵÏÖDSP¶ÁÈ¡Ò»´ÎÊý¾Ý£¬FIFO¸üÐÂÒ»¸öÊý¾Ý£¬¶øEMA_WE¿É×÷ΪFIFOµÄ¶ÁʹÄÜÐźš£

3 ·ÂÕæ½á¹ûÓë½áÂÛ

±¾ÎÄÉè¼ÆÁËÊý¾Ý¿í¶ÈΪ16룬Éî¶ÈΪ2 048µÄFIFO£¬²¢Ê¹ÓÃVerilogÓïÑÔ±àдÁËFIFOÄ£¿éºÍÓëDSPµÄ½Ó¿ÚÄ£¿é£¬ÀûÓøÃFIFO£¬FPGAʵÏÖÁ˽«Êý¾Ý1¡«65 535´«µÝ¸øDSP¡£ÔÚQuartus IIÈí¼þϽøÐзÂÕæµÃµ½µÄ½á¹ûÈçͼ4Ëùʾ¡£

ÓÉͼ4¿ÉÒÔ¿´³ö£¬ÔÚrst±äΪ¸ßµçƽÒÔºó£¬FPGAÔÚWclkµÄÉÏÉýÑØÒÀ´Î½«Êý¾ÝдÈëFIFOÖУ¬Ð´Ö¸ÕëÒ²´Ó0¿ªÊ¼Öð´ÎÔö1¡£ÔÚÊÕµ½DSP·¢À´µÄgp15(Æô¶¯Êý¾Ý·¢ËÍÐźÅ)ÓÐЧºó£¬ÔÚ¶ÁʱÖÓRclkµÄÉÏÉýÑØ£¬FPGA½«Êý¾Ý´Ó1¿ªÊ¼Öð´ÎÊä³öµ½Rada¶Ë£¬¹©DSP¶ÁÈ¡¡£DSP¶ËÔÚÅäÖúÃEMIFA¿Úºó£¬±àдµÄÏàÓ¦½ÓÊÕ³ÌÐò£¬ÕýÈ·½ÓÊÕµ½ÁË´Ó0¡«65 535Õâ65 536¸öÊý¾Ý¡£

ΪʵÏÖFPGAÓëDSPÖ®¼äµÄÊý¾ÝͨÐÅ£¬±¾ÎÄÌá³öÁËÀûÓÃÒì²½FIFOµÄ·½·¨£¬²ÉÓøñÀ×ÂëºÍÁ½¼¶D´¥·¢Æ÷ͬ²½µÄ·½·¨½µµÍÁËÑÇÎÈ̬ÏÖÏó³öÏֵĸÅÂÊ¡£Í¬Ê±£¬¸ø³öÁËFPGAºÍDSPʵÏÖÊý¾ÝͨÐŵÄÓ²¼þÁ¬½Óµç·¡£¾­ÑéÖ¤£¬ÀûÓÃÒì²½FIFOµÄ·½·¨£¬Äܹ»Îȶ¨¿É¿¿µØ´ÓFPGAÖд«ÊäÊý¾Ý¸øDSP¡£

×÷ÕߣºÎ÷°²µç×ӿƼ¼´óѧ ºú²¨ ÀîÅô À´Ô´£ºµç×ӿƼ¼


΢ÐÅɨÃè·ÖÏí±¾Îĵ½ÅóÓÑȦ
ɨÂë¹Ø×¢5GͨÐŹٷ½¹«ÖÚºÅ,Ãâ·ÑÁìÈ¡ÒÔÏÂ5G¾«Æ·×ÊÁÏ
  • 1¡¢»Ø¸´¡°LTBPS¡±Ãâ·ÑÁìÈ¡¡¶¡¶ÖйúÁªÍ¨5GÖն˰×ƤÊé¡·¡·
  • 2¡¢»Ø¸´¡°ZGDX¡±Ãâ·ÑÁìÈ¡¡¶ÖйúµçÐÅ5GNTN¼¼Êõ°×ƤÊé¡·
  • 3¡¢»Ø¸´¡°TXSB¡±Ãâ·ÑÁìÈ¡¡¶Í¨ÐÅÉ豸°²×°¹¤³ÌÊ©¹¤¹¤ÒÕͼ½â¡·
  • 4¡¢»Ø¸´¡°YDSL¡±Ãâ·ÑÁìÈ¡¡¶ÖйúÒƶ¯ËãÁ¦²¢Íø°×ƤÊé¡·
  • 5¡¢»Ø¸´¡°5GX3¡±Ãâ·ÑÁìÈ¡¡¶R1623501-g605GµÄϵͳ¼Ü¹¹1¡·
  • 7¡¢»Ø¸´¡°6G31¡±Ãâ·ÑÁìÈ¡¡¶»ùÓÚÔÆÍøÈںϵÄ6G¹Ø¼ü¼¼Êõ°×ƤÊé¡·
  • 8¡¢»Ø¸´¡°IM6G¡±Ãâ·ÑÁìÈ¡¡¶6GµäÐͳ¡¾°ºÍ¹Ø¼üÄÜÁ¦°×ƤÊé¡·
  • ±¾ÖÜÈȵ㱾ÔÂÈȵã

     

      ×îÈÈͨÐÅÕÐƸ

    Òµ½ç×îÐÂ×ÊѶ


      ×îÐÂÕÐƸÐÅÏ¢

    ×îм¼ÊõÎÄÕÂ

    ×îÐÂÂÛ̳Ìù×Ó