µ¥Æ¬DSP´¦ÀíÆ÷¹¦ÄÜϵͳµÄSOPC¼¼ÊõÉè¼Æ
¡¡¡¡½áºÏAltera¹«Ë¾ÍƳöµÄNios IIǶÈëʽÈíºË´¦ÀíÆ÷£¬Ìá³öÒ»ÖÖ¾ßÓг£¹æDSP´¦ÀíÆ÷¹¦ÄܵÄNiosIIϵͳSOPC½â¾ö·½°¸£»ÀûÓÃNiosII¿É×Ô¶¨²æÖ¸ÁîµÄÌØµã¡£
¡¡¡¡Í¨¹ýMatlabºÍDSP Builder»òÖ±½ÓÓÃVHDLÉè¼Æ²¢Éú³É¸´Êý³Ë·¨Æ÷¡¢ÕûÊý³Ë·¨Æ÷ºÍ¸¡µã³Ë·¨Æ÷µÈÓ²¼þÄ£¿é£¬½«ËüÃǶ¨ÖÆÎªÏàÓ¦µÄÖ¸Á´Ó¶ø½«Èí¼þµÄÁé»îÐÔºÍÓ²¼þµÄ¸ßËÙÐÔ½áºÏÆðÀ´£¬½ÏºÃµØ½â¾öÁË´«Í³DSP´¦ÀíÆ÷ËùÃæÁÙµÄËÙ¶ÈÎÊÌâ¡¢Ó²¼þ½á¹¹²»¿ÉÖØ¹¹ÐÔÎÊÌâ¡¢¿ª·¢Éý¼¶ÖÜÆÚ³¤ºÍ²»¿ÉÒÆÖ²ÐÔµÈÎÊÌâ¡£
¡¡¡¡Ëæ×Å΢µç×Ó¼¼ÊõºÍ¼ÆËã»ú¹¤¾ßÈí¼þµÄ·¢Õ¹£¬¿É±à³ÌƬÉÏϵͳSOPCµÄÉè¼ÆÀíÄîºÍÉè¼Æ·½·¨³ÉΪÁËÒ»ÖÖÇ÷ÊÆ¡£ÎªÁ˽â¾ö´«Í³DSP´¦ÀíÆ÷ËùÃæÁÙµÄËÙ¶ÈÎÊÌâ¡¢Ó²¼þ½á¹¹²»¿ÉÖØ¹¹ÐÔÎÊÌâ¡¢¿ª·¢Éý¼¶ÖÜÆÚ³¤ºÍ²»¿ÉÒÆÖ²ÐÔµÈÎÊÌ⣬ÎÒÃÇÓ¦ÓÃAltera¹«Ë¾ÍƳöµÄNios IIǶÈëʽÈíºË´¦ÀíÆ÷£¬Ìá³öÁËÒ»ÖÖ¾ßÓг£¹æDSP´¦ÀíÆ÷¹¦ÄܵÄNios IIϵͳSOPC½â¾ö·½°¸¡£
¡¡¡¡ÓÉÓڿɱ༵ÄNios IIºËº¬ÓÐÐí¶à¿ÉÅäÖõĽӿÚÄ£¿éºË£¬Òò´ËÓû§¿É¸ù¾ÝÉè¼ÆÒªÇó£¬ÀûÓÃQuar-tusIIºÍSOPC Builder¶ÔNiosII¼°ÆäÍâΧϵͳ½øÐй¹½¨¡£¶øÇÒÓû§¿Éͨ¹ýMatlabºÍDSP Builder£¬»òÖ±½ÓÓÃVHDLµÈÓ²¼þÃèÊöÓïÑÔÉè¼Æ£¬ÎªNios IIǶÈëʽ´¦ÀíÆ÷Éè¼Æ¸÷ÀàÓ²¼þÄ£¿é£¬²¢ÒÔÖ¸ÁîµÄÐÎʽ¼ÓÈëNios IIµÄÖ¸Áîϵͳ£¬´Ó¶ø³ÉΪNios IIϵͳµÄÒ»¸ö½Ó¿ÚÉ豸£¬ÓëÕû¸öƬÄÚǶÈëʽϵͳÈÚΪһÌ壬¶ø²»ÊÇÖ±½ÓÏÂÔØµ½FPGAÖÐÉú³ÉÅÓ´óµÄÓ²¼þϵͳ¡£ÕýÊÇNios IIËù¾ßÓеÄÕâÐ©ÖØÒªÌØµã£¬Ê¹µÃ¿ÉÖØ¹¹µ¥Æ¬DSP´¦ÀíÆ÷¹¦ÄÜϵͳµÄÉè¼Æ³ÉΪ¿ÉÄÜ¡£
¡¡¡¡1 ϵͳ½á¹¹
¡¡¡¡±¾ÏµÍ³Îªµ¥Æ¬DSP¿ÉÖØ¹¹ÏµÍ³£¬ÄÜʵÏÖÊý×ÖÐźŴ¦Àí·½Ãæ¸÷ÖÖ¹¦ÄÜ¡£ÆäÖУ¬Nios IIÈíºË´¦ÀíÆ÷µÄ½¨Á¢£¬Ö÷ÒªÆðÈË»ú½»»¥ºÍ¿ØÖÆ×÷Óá£FPGAµÄÂ߼ģ¿é´ÓNios II´¦ÀíÆ÷½ÓÊÕ¿ØÖÆÐźźÍÊý¾Ýºó£¬ÊµÏÖÏàÓ¦µÄÓ²¼þ¹¦ÄÜ¡£ÏµÍ³½á¹¹¿òͼÈçͼlËùʾ¡£³ýÁËÈíºË´¦ÀíÆ÷Nios IIÍ⣬´æ´¢Æ÷ºÍI£¯O½Ó¿ÚÒÔ¼°FIRÊý×ÖÂ˲¨Æ÷¡¢IIRÊý×ÖÂ˲¨Æ÷ºÍDDSµÈÓ¦ÓÃÄ£¿é¾ù¿É×÷ΪÍâÉèǶÈëÔÚFPGAÖС£ÕâÑù£¬Õû¸öDSPµÄÊý×ÖÐźŴ¦Àí²¿·ÖÈ«²¿¼¯³ÉÔÚFPGAÆ÷¼þÖУ¬¸÷Ä£¿é¾ùÊÜNios II´¦ÀíÆ÷µÄ¿ØÖÆ¡£Nios II´¦ÀíÆ÷ϵͳÖÐÓÐAvalon×ÜÏߣ¬Ëü¹æ¶¨ÁË¿ØÖÆÆ÷Óë´ÓÊôÄ£¿é¼äµÄ¶Ë¿ÚÁ¬½ÓÒÔ¼°Ä£¿éãÍͨÐŵÄʱÐò¡£Êý×ÖÆµÂÊºÏ³ÉÆ÷DDSͨ¹ýAvalon×ÜÏßÓëNios II´¦ÀíÆ÷ÏàÁ¬£¬Äܷܺ½±ãµØÍê³É¿ØÖƼ°Êý¾Ý´«ËÍ¡£

¡¡¡¡±¾ÏµÍ³µÄFPGA²ÉÓÃCyclone EPICl2£¬ËüÓÐ12 060¸öÂß¼µ¥Ôª(LE)ºÍ2¸öËøÏà»·(PLLs)£¬Ìṩ6¸öÊä³öºÍ²ã´ÎʱÖӽṹÒÔ¼°¸´ÔÓÉè¼ÆµÄʱÖÓ¹ÜÀíµç·¡£Ñ¡Óó¬¸ßËÙ10λD£¯Aת»»Æ÷565lʵÏÖ D£¯Aת»»¹¦ÄÜ£¬×ª»»ËÙÂÊ×î¸ßΪ150 MHz¡£Õû¸öϵͳÔÚNios II´¦ÀíÆ÷µÄ¿ØÖÆÏ£¬¿ÉʵÏÖFIRÊý×ÖÂ˲¨¡¢IIRÊý×ÖÂ˲¨¡¢¿ìËÙ¸µÀïÒ¶±ä»»(FFT)Ëã·¨¡¢±à£¯½âÂë¡¢DDS¹¦ÄÜÄ£¿éÉè¼Æ£¬ÒÔ¼°ÓÉËü¹¹³ÉµÄÊý¿ØÆµÂʵ÷ÖÆ¡¢Õý½»Ôز¨µ÷ÖÆ½âµ÷¡¢Êý¿ØÏàλµ÷ÖÆµÈ¹¦ÄܵÄÐźŷ¢ÉúÆ÷¡£
¡¡¡¡ÏµÍ³Öи÷¹¦ÄÜÄ£¿éµÄÑ¡Ôñ£¬ÒÔ¼°Êä³öÐźŵ÷ÖÆ·½Ê½ºÍƵÂʵÄÑ¡Ôñ£¬¾ù¿Éͨ¹ýÍâ½ÓµÄ°´¼ü×ÔÓÉÑ¡Ôñ¡£ÏÂÃæ¹¹½¨Ò»¸ö¾ßÓг£¹æDSP´¦ÀíÆ÷¹¦ÄܵÄNios IIϵͳ¡£
¡¡¡¡2 Nios IIǶÈëʽϵͳÉè¼ÆÁ÷³Ì
¡¡¡¡NiosIIǶÈëʽ´¦ÀíÆ÷ÊÇAltera¹«Ë¾ÍƳöµÄÒ»ÖÖרÃÅΪµ¥Ð¾Æ¬¿É±à³Ìϵͳ(SOPC)Éè¼Æ¶øÓÅ»¯µÄCPUÈíºË£¬ÊÇÒ»ÖÖÃæÏòÓÃ
¡¡¡¡ÍêÕûµÄ»ùÓÚNios IIµÄSOPCϵͳÊÇÒ»¸öÈíÓ²¼þ¸´ºÏµÄϵͳ£¬Òò´ËÔÚÉè¼ÆÊ±¿É·ÖΪӲ¼þºÍÈí¼þÁ½²¿·Ö¡£Nios IIµÄÓ²¼þÉè¼ÆÊÇΪÁ˶¨ÖƺÏÊʵÄCPUºÍÍâÉ裬ÔÚSOPCBuiderºÍQuartus IIÖÐÍê³É¡£ÔÚÕâÀ¿ÉÒÔÁé»î¶¨ÖÆNiosII CPUµÄÐí¶àÌØÐÔÉõÖÁÖ¸Á¿ÉÒÔʹÓÃAltera¹«Ë¾ÌṩµÄ´óÁ¿IPºËÀ´¼Ó¿ì¿ª·¢Ntos IIÍâÉèµÄËÙ¶È£¬Ìá¸ßÍâÉèÐÔÄÜ£»Ò²¿ÉʹÓõÚÈý·½µÄIPºË£¬»òVHDL×Ô¼ºÀ´¶¨ÖÆÍâÉè¡£Íê³ÉNios IIµÄÓ²¼þ¿ª·¢ºó£¬SOPC Buider¿É×Ô¶¯Éú³ÉÓë×Ô¶¨ÒåµÄNios II CPUºÍÍâÉèϵͳ¡¢´æ´¢Æ÷¡¢ÍâÉèµØÖ·Ó³ÉäµÈÏà¶ÔÓ¦µÄÈí¼þ¿ª·¢°üSDK£»ÔÚÉú³ÉµÄSDK»ù´¡ÉÏ£¬½øÈëÈí¼þ¿ª·¢Á÷³Ì¡£¿ÉʹÓûã±à»òCÓïÑÔ£¬ÉõÖÁC++ÓïÑÔÀ´½øÐÐǶÈëʽ³ÌÐòÉè¼Æ£¬Ê¹ÓÃGNU¹¤¾ß»òÆäËûµÚÈý·½¹¤¾ß½øÐгÌÐòµÄ±àÒë¡¢Á´½Ó¼°µ÷ÊÔ¡£
¡¡3 ϵͳӲ¼þÉè¼Æ
¡¡¡¡ÏµÍ³µÄÓ²¼þϵͳ°üÀ¨3¸ö²¿·Ö£ºFPGA²¿·Ö¡¢´æ´¢Æ÷²¿·ÖºÍÍâΧԪÆ÷¼þ²¿·Ö¡£FPGA²¿·ÖÊǽ¨Á¢ÔÚFPGAÄڵģ¬ÔÚSOPC BuiderÖÐÐèÒªÉè¼ÆµÄ¾ÍÊǸò¿·Ö¡£ÆäÖаüº¬1¸öNiosII CPUºË£¬1¸öÄÚ²¿Ê±ÖÓ£¬1¸öAvalon×ÜÏß¿ØÖÆÆ÷£¬Á¬½ÓNios IIºËµÄÏÂÔØºÍµ÷ÊÔ³ÌÐòµÄJTAG_UARTͨÐÅÄ£¿é£¬DDS½Ó¿ÚÄ£¿é¼°DDSÄ£¿é£¬FIR¡¢IIRÊý×ÖÂ˲¨Æ÷½Ó¿ÚÄ£¿é¼°¹¦ÄÜÄ£¿é£¬±à½âÂëÄ£¿é¼°½Ó¿ÚÄ£¿é£¬ÒÔ¼°Flash´æ´¢Æ÷Ä£¿éµÈ¡£ÆäÉè¼ÆÓëÒ»°ãµÄǶÈëʽ¿ª·¢²»Í¬£¬¿ÉÔÚNios IIºËÍâ(µ«»¹ÔÚͬһ¸öFPGAоƬÄÚ)¼ÓÈëÏàÓ¦µÄÍâÉèÄ£¿éºË£¬²¢Í¨¹ýÔÚÆ¬ÉϵÄAvalon×ÜÏßÓëNios IIÏàÁ¬¡£ÎªÊ¹¾ßÓÐDSP´¦ÀíÆ÷¹¦ÄܵÄNios IIϵͳÕý³£¹¤×÷£¬ÔÚFPGAÍâΧ½ÓÓÐһЩ¿ØÖƼü£¬ÒÔµ÷¶È¸÷Ä£¿éµÄÓ¦Óá£
¡¡¡¡3£®1 ½¨Á¢Nios IIǶÈëʽ´¦ÀíÆ÷ϵͳ
¡¡¡¡Ê×ÏÈ£¬ÀûÓÃQuartus II½¨Á¢ÏîÄ¿¹¤³Ì£¬Ñ¡ÓõÄÄ¿±êÆ÷¼þΪCyclone EPIC12£»
¡¡¡¡ÔÚNios IIÓ²¼þϵͳÉè¼ÆÍê³Éºó¡£½«ÅäÖÃÎļþÏÂÔØµ½Ö¸¶¨µÄFPGAÖС£Í¨¹ýSOPC BuiderÈí¼þ´°¿Ú£¬¿É½øÈëNios II IDEÈí¼þ¿ª·¢»·¾³½øÐÐÈí¼þÉè¼Æ¡£
¡¡¡¡3.2 DSP´¦ÀíÆ÷¹¦ÄÜϵͳµÄ½¨Á¢
¡¡¡¡Ê¹ÓÃDSP BuiderÔÚFPGAÉϽøÐÐDSPÄ£¿éµÄÉè¼Æ£¬¿ÉʵÏÖ¸ßËÙDSP´¦Àí¡£µ«ÊÇ£¬ÔÚʵ¼ÊÓ¦ÓÃÖУ¬³ýÁËÒªÇóDSP¸ßËÙÍ⣬ÓÉÓÚDSP´¦ÀíµÄËã·¨ÍùÍù±È½Ï¸´ÔÓ£¬Èç¹ûµ¥´¿Ê¹ÓÃDSP BiderÀ´ÊµÏÖ´¿Ó²¼þµÄDSPÄ£¿é£¬»áºÄ·Ñ¹ý¶àµÄÓ²¼þ×ÊÔ´£¬Òò´ËÓÐʱҲÎÞ·¨Íê³ÉÐí¶àËã·¨¸´ÔÓµÄÄ£ÐÍ¡£¶øNios IIÔòÊÇÒ»¸ö½¨Á¢ÔÚFPGAÉϵÄǶÈëʽ΢´¦ÀíÆ÷ÈíºË£¬ËüÓÐÒ»¸öÖØÒªµÄÌØÐÔÊǾßÓÐ×Ô¶¨ÖÆÖ¸Áî¡£
¡¡¡¡ÔÚDSPËã·¨Öлᷴ¸´³öÏÖһЩÔËËã(È縴Êý³Ë·¨Æ÷¡¢ÕûÊý³Ë·¨Æ÷¡¢¸¡µã³Ë·¨Æ÷µÈ)£¬¶øÔÚͨÓõÄCPUÖж¼Ã»ÓÐרÃÅÓÃÓÚ¸´Êý³Ë·¨¼ÆËãºÍ¸¡µã³Ë·¨¼ÆËãµÄÏà¹ØÖ¸Áî¡£ÔÚϵͳÉè¼ÆÖУ¬ÀûÓÃMATLAB¡¢DSP Buider»òÕßVHDLÉè¼Æ²¢Éú³É¸´Êý³Ë·¨Æ÷¡¢ÕûÊý³Ë·¨Æ÷¡¢¸¡µã³Ë·¨Æ÷µÈÓ²¼þÄ£¿é¡£ÔÚQuartus II»·¾³ÖжÔÉÏÊöÎļþ×öһЩÐÞÕýºó£¬ÔÚSOPC Buider´°¿ÚÖн«ËüÃǶ¨ÖÆÎªÏàÓ¦µÄÖ¸Á²¢¿ÉÉ趨»òÐÞ¸ÄÖ´ÐиÃÖ¸ÁîµÄʱÖÓÖÜÆÚ¡£ÔÚ½øÐÐDSPËã·¨ÔËËãʱ£¬¿Éͨ¹ý»ã±à»òCÓïÑÔ£¬ÉõÖÁC++ÓïÑÔÀ´ÔËÓÃÕâЩ×Ô¶¨ÒåÖ¸Áî½øÐÐǶÈëʽ³ÌÐòÉè¼Æ¡£
¡¡¡¡¸ù¾Ý¸´ÊýÔËËãµÄËã·¨£¬¼ÙÉèÓÐ2¸ö¸´ÊýΪa+bjºÍc+dj£¬Ôò³Ë·¨±íÊöΪ£º
![]()
¡¡¡¡Í¼2ÊÇÓÃMATLAB¡¢DSP BuiderÉè¼ÆµÄ¸´Êý³Ë·¨Æ÷Ä£ÐÍ¡£ËüʵÏÖÁËÒ»¸ö16λµÄ¸´Êý³Ë·¨£¬Ð鲿ºÍʵ²¿¶¼ÊÇ16룬¿ÉÒÔÓÃÒ»¸ö32λµÄÖµ±íʾ¸Ã¸´Êý¡£ÔÚÉè¼ÆÖУ¬NiosIIΪ32λÊý¾Ý£¬ÕýºÃ¿ÉÒÔ·ÅÖÃ2¸ö¸´Êý¡£

¡¡¡¡Òª½«Õâ¸ö¸´Êý³Ë·¨Æ÷Ó²¼þÄ£¿éÉèÖóÉÏàÓ¦µÄÖ¸Á»¹Ðë½øÐÐÒÔϲÙ×÷£º
¡¡¡¡¢Ùµ¥»÷ͼ±êSignalCompiler¶ÔÆä½øÐÐת»»£¬Ñ¡ÔñÆ÷¼þ(ÓÃCyclone)ºÍQuartus II×ÛºÏÆ÷£®×ª»»ºóʹÆäÉú³ÉSOPCBuiderµÄPTFÎļþ¡£
¡¡¡¡¢ÚÍ˳öMATLABºó£¬ÔÚQuartus II»·¾³ÖжÔת»»ºóËùÉú³ÉµÄ¸´Êý³Ë·¨Æ÷µÄ¶¥²ãVHDLÎļþ½øÐÐÐ޸ġ£ÔÚSOPC Buider´°¿ÚË«»÷CPUÏ½øÈë¡°Ö¸Áî¼ÓÈ롱±à¼´°£¬½«Õâ¸öÓ²¼þÄ£¿éÉèÖóÉ×Ô¶¨ÒåµÄ¸´Êý³Ë·¨Ö¸Áî¡£
¡¡¡¡Ö¸ÁîÉú³Éºó£¬¿ÉÀûÓÃQuartus II±à¼C³ÌÐò½øÐвâÊÔ£»²âÊԳɹ¦ºó£¬ÔÚDSPËã·¨¼ÆËãÖÐÓöµ½¸´Êý³Ë·¨¾Í¿ÉÒÔÔËÓø´Êý³Ë·¨Ö¸Áî¡£ÕâÖÖ·½·¨½«³£ÓõÄÓ²¼þÄ£¿éÉú³ÉÖ¸Áͨ¹ýÈíÓ²¼þ²¢´æµÄÉè¼Æ·½·¨ÔÚFPGAÖÐʵÏֽϸ´ÔÓµÄDSPËã·¨£¬Äܹ»½«Èí¼þµÄÁé»îÐÔºÍÓ²¼þµÄ¸ßËÙÐÔ½áºÏÆðÀ´£¬½ÏºÃµØ½â¾öÁËÏÖ´úDSPÉè¼ÆÖеÄÖî¶àÎÊÌâ¡£µ«¶ÔÓÚDDSÄ£¿é£¬»¹ÊÇÒÔÓ²¼þÐÎʽ¹Ì»¯ÔÚFPGAÖС£¿ÉÒÔ¸ù¾ÝÐèÒª£¬ÀûÓÃDDSÉè¼Æ³ö·ù¶È¡¢ÏàλºÍƵÂʵ÷ÖÆÆ÷¡£
¡¡ÁíÍ⣬Nios IIµÄÍâÉèÊÇ¿ÉÈÎÒâ¶¨ÖÆµÄ£¬Nios IIϵͳµÄËùÓÐÍâÉè¶¼ÊÇͨ¹ýAvalon×ÜÏßÓëNios II CPUÏà½ÓµÄ¡£Avalon×ÜÏßÊÇÒ»ÖÖÐÒé½ÏΪ¼òµ¥µÄƬÄÚ×ÜÏߣ¬Nios IIͨ¹ýAvalon×ÜÏßÓëÍâ½ç½øÐÐÊý¾Ý½»»»¡£ÔÚ±¾ÏµÍ³ÖУ¬²ÉÓÃAvalonSlaveÍâÉ跽ʽ¼ÓÈëÁË×Ô¶¨ÖÆAvalorL×ÜÏß×é¼þA£¯Dת»»½Ó¿ÚÄ£¿é¡¢ D£¯A½Ó¿ÚÄ£¿é£¬ÓÃÓÚ¿ØÖƲÉÑùA£¯DµÄ¹¤×÷ÒÔ¼°¸ßËÙD£¯AµÄ²¨ÐÎÊý¾ÝÊä³ö£»¶ø×Ô¶¨ÒåµÄAvalon×ÜÏß×é¼þDDSÄ£¿é½Ó¿ÚºÍDSP¹¦ÄÜת»»¿ØÖƽӿڣ¬ÔòÓÃÓÚNios II CPU¶ÔDDSÄ£¿éµÄ¿ØÖÆ£¬ÒÔ¼°Í¨¹ýÍⲿ¼üÅÌÀ´¿ØÖÆDSP¹¦ÄܵÄÑ¡Ôñ¡£
¡¡¡¡½áÓï
¡¡¡¡Õû¸öϵͳ³ýÁËA£¯D¡¢D£¯Aת»»Æ÷ºÍ¿ØÖÆÑ¡Ôñ¼üÅÌÍâ½ÓÍ⣬ÆäÓà¶¼ÔÚһƬFPGAî®±à³ÌоƬÖС£ÓÉÓÚÓÐNiosII×÷CPU£¬Òò´Ë¼È¿É×Ô¶¨ÒåÖ¸ÁҲ¿Éͨ¹ýAvalon×ÜÏß×Ô¶¨Òå¸÷ÖÖ½Ó¿ÚÄ£¿é×é¼þ£¬Ê¹Õû¸öDSPϵͳµÄʹÓÃÁé»î¶àÑù£¬ÔÚÏÖ´úDSP¼¼ÊõÖÐÓÐ×ÅÔ½À´Ô½¶àµÄÓ¦Óá£
#If you have any other info about this subject , Please add it free.# |