0% found this document useful (0 votes)
88 views

DSP Lab Instruction - V1

This document provides an introduction to digital signal processors (DSPs). It discusses different types of signals including analog, discrete-time, and digital signals. Analog signals are continuous variables with infinite range, and can be processed using analog electronics. DSPs allow processing of digital signals using digital circuits. The document outlines an introductory lab course on DSPs that will familiarize students with DSP software, hardware, libraries and applications like filtering and fast Fourier transforms.

Uploaded by

Abolfazl Saeedie
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
88 views

DSP Lab Instruction - V1

This document provides an introduction to digital signal processors (DSPs). It discusses different types of signals including analog, discrete-time, and digital signals. Analog signals are continuous variables with infinite range, and can be processed using analog electronics. DSPs allow processing of digital signals using digital circuits. The document outlines an introductory lab course on DSPs that will familiarize students with DSP software, hardware, libraries and applications like filtering and fast Fourier transforms.

Uploaded by

Abolfazl Saeedie
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 125

‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬

‫ﺗﻬﯿﻪ ﮐﻨﻨﺪه‪:‬‬
‫ﺷﺮﮐﺖ ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬
‫‪1‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫‪3‬‬ ‫ﻣﻔﺪﻣﻪ ‪ :‬آﺷﻨﺎﯾﯽ ﺑﺎ ﭘﺮدازﻧﺪه ‪....................................................................................................................... DSP‬‬


‫‪27‬‬ ‫آزﻣﺎﯾﺶ ‪ :1‬آﺷﻨﺎﯾﯽ ﺑﺎ ﻧﺮم اﻓﺰار ‪.................................................... .............................................................. .CCS‬‬
‫‪41‬‬ ‫آزﻣﺎﯾﺶ ‪ :2‬آﺷﻨﺎﯾﯽ ﺑﺎ ﮐﯿﻒ آزﻣﺎﯾﺸﮕﺎه‪............................................... .............................................................. ...‬‬
‫‪55‬‬ ‫آزﻣﺎﯾﺶ ‪ :3‬آﻣﻮزش ﻧﺤﻮه اﺳﺘﻔﺎده از ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺳﯿﮕﻨﺎل ‪...............................................................................‬‬
‫‪63‬‬ ‫آزﻣﺎﯾﺶ ‪ :4‬آﺷﻨﺎﯾﯽ ﺑﺎ ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺗﺼﻮﯾﺮ ‪........................................................... .......................................‬‬
‫‪71‬‬ ‫آزﻣﺎﯾﺶ ‪ :5‬ﻓﯿﻠﺘﺮ ‪.................................... .................................................................... .................................FIR‬‬
‫‪79‬‬ ‫آزﻣﺎﯾﺶ ‪ :6‬ﺗﺒﺪﯾﻞ ﻓﻮرﯾﻪ ﺳﺮﯾﻊ ‪......................................... ............................................................. .............FFT‬‬
‫ﺿﻤﯿﻤﻪﻫﺎ‬
‫‪87‬‬ ‫ﺿﻤﯿﻤﻪ اﻟﻒ‪ :‬اﯾﺠﺎد ﭘﺮوژه در ﻧﺮماﻓﺰار ‪................................................................... ....................................CCS‬‬
‫‪93‬‬ ‫ﺿﻤﯿﻤﻪ ب‪ :‬ﻧﺼﺐ ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺳﯿﮕﻨﺎل و ﭘﺮدازش ﺗﺼﻮﯾﺮ‪...........................................................................‬‬
‫‪101‬‬ ‫ﺿﻤﯿﻤﻪ ج‪ :‬ﻃﺮاﺣﯽ ﻓﯿﻠﺘﺮ در ﻣﺘﻠﺐ ﺑﺮاي اﺳﺘﻔﺎده در ‪....................................................................................DSP‬‬
‫‪105‬‬ ‫ﺿﻤﯿﻤﻪ د‪ :‬ﻣﻌﺮﻓﯽ رﺟﯿﺴﺘﺮﻫﺎي ﮐﯿﻒ آزﻣﺎﯾﺸﮕﺎه ‪..........................................................................................DSP‬‬
‫‪2‬‬ ‫ﻓﻬﺮﺳﺖ‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬
‫ﻣﻘﺪﻣﻪ‪:‬‬
‫آﺷﻨﺎﯾﯽ ﺑﺎ ﭘﺮدازﻧﺪه ‪DSP‬‬

‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬


‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬
‫‪4‬‬ ‫ﻣﻘﺪﻣﻪ‪ :‬آﺷﻨﺎﯾﯽ ﺑﺎ ﭘﺮدازﻧﺪه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫‪ (1‬ﻣﻘﺪﻣﻪ‪:‬‬
‫ﺳﯿﮕﻨﺎلﻫﺎ ﺑﻪ ﺳﻪ دﺳﺘﻪي ﺳﯿﮕﻨﺎلﻫﺎي زﻣﺎن ﭘﯿﻮﺳﺘﻪ )آﻧﺎﻟﻮگ(‪ ،‬ﺳﯿﮕﻨﺎلﻫﺎي زﻣﺎن ﮔﺴﺴﺘﻪ و ﺳﯿﮕﻨﺎلﻫﺎي دﯾﺠﯿﺘﺎل ﺗﻘﺴﯿﻢ‬
‫ﻣﯽﺷﻮﻧﺪ‪ .‬ﺳﯿﮕﻨﺎلﻫﺎﯾﯽ ﮐﻪ روزاﻧﻪ ﺑﺎ آن ﻫﺎ روﺑﺮو ﻣﯽﺷﻮﯾﻢ‪ ،‬ﺳﯿﮕﻨﺎلﻫﺎي آﻧﺎﻟﻮگ ﻫﺴﺘﻨﺪ‪ .‬ﺳﯿﮕﻨﺎلﻫﺎي آﻧﺎﻟﻮگ ﻣﺘﻐﯿﯿﺮﻫﺎي ﭘﯿﻮﺳﺘﻪ‬
‫ﻣﯽﺑﺎﺷﻨﺪ‪ .‬اﯾﻦ ﺳﯿﮕﻨﺎلﻫﺎ داراي ﮔﺴﺘﺮهي ﺗﻐﯿﯿﺮات ﺑﯽ ﻧﻬﺎﯾﺖ در داﻣﻨﻪ ﻫﺴﺘﻨﺪ و ﺑﺮاي ﭘﺮدازش آن ﻫﺎ ﻣﯽ ﺗﻮان از اﻟﮑﺘﺮوﻧﯿﮏ‬
‫آﻧﺎﻟﻮگ ﮐﻪ ﺷﺎﻣﻞ ﻗﻄﻌﺎت ﻣﺪاري اﮐﺘﯿﻮ و ﭘﺴﯿﻮ ﻣﺎﻧﻨﺪ ﻣﻘﺎوﻣﺖ‪ ،‬ﺧﺎزن و ﺳﻠﻒ اﺳﺖ‪ ،‬اﺳﺘﻔﺎده ﻧﻤﻮد‪ .‬ﻫﺮﮐﺪام از ﺣﻮاس ﭘﻨﺠﮕﺎﻧﻪ ﻣﺎ‬
‫ﺑﻪ ﺳﯿﮕﻨﺎلﻫﺎي آﻧﺎﻟﻮگ ﻣﺨﺘﻠﻔﯽ ﺣﺴﺎس اﺳﺖ‪ .‬ﺑﺮاي ﻣﺜﺎل ﮔﻮشﻫﺎي ﻣﺎ ﺑﻪ ﺻﺪا‪ ،‬ﭼﺸﻢﻫﺎي ﻣﺎ ﺑﻪ ﻧﻮر و ‪ ...‬ﺣﺴﺎس ﻫﺴﺘﻨﺪ‪ .‬وﻗﺘﯽ‬
‫ﮐﻪ ﻣﺎ ﯾﮏ ﺳﯿﮕﻨﺎل درﯾﺎﻓﺖ ﻣﯽﮐﻨﯿﻢ‪ ،‬اﻧﺪامﻫﺎي ﺣﺴﯽ ﻣﺎ آن را ﺑﻪ ﯾﮏ ﺳﯿﮕﻨﺎل اﻟﮑﺘﺮﯾﮑﯽ ﺗﺒﺪﯾﻞ ﮐﺮده و ﺑﻪ ﮐﺎﻣﭙﯿﻮﺗﺮ آﻧﺎﻟﻮگ ﻣﺎ‪،‬‬
‫ﯾﻌﻨﯽ ﻣﻐﺰ ﻣﯽ ﻓﺮﺳﺘﻨﺪ‪ .‬ﻣﻐﺰ ﻣﺎ ﯾﮏ ﮐﺎﻣﭙﯿﻮﺗﺮ ﺑﺴﯿﺎر ﻗﺪرﺗﻤﻨﺪ اﺳﺖ ﮐﻪ ﻋﻤﻠﮑﺮد آن ﻧﺴﺒﺖ ﺑﻪ ﮐﺎﻣﭙﯿﻮﺗﺮﻫﺎي دﯾﺠﯿﺘﺎل ﺑﯽﻫﻤﺘﺎ اﺳﺖ‪.‬‬
‫ﻣﻐﺮ ﻣﺎ ﻧﻪ ﺗﻨﻬﺎ اﻃﻼﻋﺎت رﺳﯿﺪه را ﺗﺤﻠﯿﻞ ﻣﯽﮐﻨﺪ ﺑﻠﮑﻪ ﺑﺎ اﺳﺘﻔﺎده از اﯾﻦ داده ﻫﺎ ﺗﺼﻤﯿﻢﮔﯿﺮي ﻧﯿﺰ ﻣﯽﮐﻨﺪ‪.‬‬
‫ﺳﯿﮕﻨﺎلﻫﺎي زﻣﺎن ﮔﺴﺴﺘﻪ ﻓﻘﻂ در ﯾﮏ ﺳﺮي از ﻓﺎﺻﻠﻪﻫﺎي زﻣﺎﻧﯽ ﻣﺸﺨﺼﯽ ﺗﻌﺮﯾﻒ ﺷﺪه ﻫﺴﺘﻨﺪ‪ .‬ﺑﻨﺎﺑﺮاﯾﻦ آنﻫﺎ ﻣﯽﺗﻮاﻧﻨﺪ‬
‫ﺗﻮﺳﻂ ﯾﮏ رﺷﺘﻪ از اﻋﺪاد ﮐﻪ داراي ﻣﻘﺪارﻫﺎي ﭘﯿﻮﺳﺘﻪ ﻫﺴﺘﻨﺪ‪ ،‬ﺑﯿﺎن ﺷﻮﻧﺪ‪.‬‬
‫ﺳﯿﮕﻨﺎلﻫﺎي دﯾﺠﯿﺘﺎل داراي ﻣﻘﺪارﻫﺎي ﮔﺴﺴﺘﻪ ﻫﻢ در زﻣﺎن و ﻫﻢ در داﻣﻨﻪ ﻫﺴﺘﻨﺪ‪ .‬ﺑﻨﺎﺑﺮاﯾﻦ آنﻫﺎ ﻣﯽﺗﻮاﻧﻨﺪ ﺗﻮﺳﻂ‬
‫ﮐﺎﻣﭙﯿﻮﺗﺮﻫﺎ و ﻣﯿﮑﺮوﭘﺮوﺳﺴﻮرﻫﺎ ﭘﺮدازش ﺷﻮﻧﺪ‪.‬‬
‫ﻣﺰﯾﺖ ﺳﯿﺴﺘﻢ ﻫﺎي آﻧﺎﻟﻮگ ﻋﺒﺎرﺗﻨﺪ از‪:‬‬
‫ﻗﯿﻤﺖ ارزان و ﺳﺎدﮔﯽ در ﺑﻌﻀﯽ از ﮐﺎرﺑﺮدﻫﺎ ﻣﺎﻧﻨﺪ‪:‬‬ ‫·‬
‫‪ o‬ﺗﻀﻌﯿﻒ ﮐﻨﻨﺪهﻫﺎ و ﺗﻘﻮﯾﺖ ﮐﻨﻨﺪهﻫﺎ‬
‫‪ o‬ﻓﯿﻠﺘﺮﻫﺎي ﺳﺎده‬
‫ﭘﻬﻨﺎي ﺑﺎﻧﺪ وﺳﯿﻊ )‪(GHz‬‬ ‫·‬
‫ﻣﯿﺰان ﺳﯿﮕﻨﺎل ﮐﻢ‬ ‫·‬
‫ﻧﺮخ ﻧﻤﻮﻧﻪ ﺑﺮداري ﻣﻮﺛﺮ ﺑﯽ ﻧﻬﺎﯾﺖ‬ ‫·‬
‫‪ o‬دﻗﺖ ﺑﯽ ﻧﻬﺎﯾﺖ در ﻓﺮﮐﺎﻧﺲ‬
‫‪ o‬ﻋﺪم وﺟﻮد ﻣﺸﮑﻼت ﻣﺮﺑﻮط ﺑﻪ اﺧﺘﻼط ﻓﺮﮐﺎﻧﺴﯽ و ﺑﺎزﺳﺎزي آن‬
‫‪5‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫دﻗﺖ ﺑﯽ ﻧﻬﺎﯾﺖ در داﻣﻨﻪ‬ ‫·‬


‫‪ o‬ﻧﺒﻮد ﻧﻮﯾﺰ ﮐﻮاﻧﺘﯿﺰاﯾﺴﯿﻮن‬
‫ﻣﺰﯾﺖ ﭘﺮدازش ﺳﯿﮕﻨﺎل ﻫﺎي دﯾﺠﯿﺘﺎل )‪ (DSP‬ﻋﺒﺎرﺗﻨﺪ از‪:‬‬
‫ﺗﮑﺮارﭘﺬﯾﺮي‬ ‫·‬
‫‪ o‬ﺣﺴﺎﺳﯿﺖ ﮐﻢ ﺑﻪ ﺧﻄﺎي ﻣﻮﻟﻔﻪﻫﺎ‬
‫‪ o‬ﺣﺴﺎﺳﯿﺖ ﮐﻢ ﺑﻪ ﺗﻐﯿﺮات دﻣﺎ‬
‫‪ o‬ﺣﺴﺎﺳﯿﺖ ﮐﻢ ﺑﻪ ﻋﻮاﻣﻞ زﻣﺎﻧﯽ‬
‫§ ﻋﻤﻠﮑﺮد ﺗﻘﺮﯾﺒﺎً ﯾﮑﺴﺎن در ﻫﻤﻪ دﺳﺘﮕﺎهﻫﺎ‬
‫§ ﻣﺪارﻫﺎي ﺗﻄﺒﯿﻖ ﯾﺎﻓﺘﻪ ﺑﺎ ﻗﯿﻤﺖ ﮐﻤﺘﺮ‬
‫ﻣﺼﻮﻧﯿﺖ از اﺧﺘﻼل ﺑﺎﻻ‬ ‫·‬
‫در ﺑﺴﯿﺎري از ﮐﺎرﺑﺮدﻫﺎ ‪ ،DSP‬ﻋﻤﻠﮑﺮد ﺑﻬﺘﺮ و ﻗﯿﻤﺖ ارزان ﺗﺮ را ﻓﺮاﻫﻢ ﻣﯽ ﮐﻨﺪ‪ .‬ﺑﺮاي ﻣﺜﺎل‪:‬‬ ‫·‬
‫‪ o‬ﭘﺨﺶ ﮐﻨﻨﺪه ﻫﺎي ‪ CD‬در ﺑﺮاﺑﺮ ﺻﻔﺤﻪ ﻫﺎي ﮔﺮاﻣﺎﻓﻮن‬
‫اﻟﮕﻮرﯾﺘﻢ ﻫﺎي ‪ DSP‬ﻣﯽ ﺗﻮاﻧﻨﺪ ﺗﻮﺳﻂ زﺑﺎن ﻫﺎي ﺳﻄﺢ ﺑﺎﻻ از ﻗﺒﯿﻞ ‪ C/C++‬و ‪ MATLAB‬ﺑﻪ ﻃﻮر ﮐﺎﻣﻞ‪ ،‬ﺗﺤﻠﯿﻞ و‬
‫ﺷﺒﯿﻪﺳﺎزي ﺷﻮﻧﺪ‪ .‬ﻋﻤﻠﮑﺮد اﻟﮕﻮرﯾﺘﻢﻫﺎ ﻣﯽﺗﻮاﻧﻨﺪ ﺗﻮﺳﻂ ﯾﮏ ﮐﺎﻣﭙﯿﻮﺗﺮ ﺷﺨﺼﯽ ﺑﺮرﺳﯽ ﺷﻮﻧﺪ‪ .‬ﺑﻨﺎﺑﺮاﯾﻦ ﯾﮏ ﺳﯿﺴﺘﻢ ‪ DSP‬از ﻧﻈﺮ‬
‫ﻃﺮاﺣﯽ‪ ،‬ﺗﮑﺎﻣﻞ‪ ،‬ﺗﺤﻠﯿﻞ‪ ،‬ﺷﺒﯿﻪ ﺳﺎزي‪ ،‬آزﻣﺎﯾﺶ و ﻧﮕﻪ داري ﻧﺴﺒﺘﺎً آﺳﺎن اﺳﺖ‪.‬‬
‫ﻣﺤﺪودﯾﺖ ﻫﺎي ‪ DSP‬ﺑﻪ ﺻﻮرت ﺧﻼﺻﻪ ﻋﺒﺎرﺗﻨﺪ از‪:‬‬
‫ﭘﻬﻨﺎي ﺑﺎﻧﺪ ﯾﮏ ﺳﯿﺴﺘﻢ ‪ DSP‬ﺑﻪ ﺧﺎﻃﺮ ﻧﺮخ ﻧﻤﻮﻧﻪ ﺑﺮداري و وﺳﺎﯾﻞ ﺳﺨﺖ اﻓﺰاري ﺟﺎﻧﺒﯽ ﻣﺤﺪود اﺳﺖ‪.‬‬ ‫·‬
‫ﯾﮏ ﺳﯿﺴﺘﻢ ‪ DSP‬داراي ﺧﻄﺎي ﮐﻮاﻧﺘﺎزﯾﺴﯿﻮن و ﻣﺤﺎﺳﺒﺎﺗﯽ اﺳﺖ ﭼﻮن اﻟﮕﻮرﯾﺘﻢ ﻫﺎي ‪ DSP‬ﺗﻮﺳﻂ ﺗﻌﺪاد ﺛﺎﺑﺘﯽ‪ ،‬ﺑﯿﺖ‬ ‫·‬
‫ﺑﺎ دﻗﺖ و ﮔﺴﺘﺮهء ﻣﺤﺪود ﭘﯿﺎده ﺳﺎزي ﻣﯽ ﺷﻮﻧﺪ‪.‬‬
‫در اداﻣﻪ ﮔﺰﯾﻨﻪﻫﺎي ﻣﻮﺟﻮد ﺑﺮاي ﭘﺮدازش ﺳﯿﮕﻨﺎلﻫﺎي دﯾﺠﯿﺘﺎل آورده ﺷﺪه اﺳﺖ‪.‬‬
‫‪ 5‬ﭘﻼﺗﻔﺮم)‪ (platform‬ﺳﺨﺖ اﻓﺰاري ﮐﻪ ﺑﻪ ﻃﻮر ﮔﺴﺘﺮده ﺑﺮاي ﺳﯿﺴﺘﻢﻫﺎي ‪ DSP‬اﺳﺘﻔﺎده ﻣﯽﺷﻮﻧﺪ ﻋﺒﺎرﺗﻨﺪ از‪:‬‬
‫‪1‬‬
‫‪ASIC‬‬ ‫‪ (1‬ﺗﺮاﺷﻪ ﻫﺎي ﺗﮏ ﻣﻨﻈﻮره از ﻗﺒﯿﻞ‬
‫‪2‬‬
‫‪FPGA‬‬ ‫‪(2‬‬
‫‪ (3‬ﻣﯿﮑﺮوﭘﺮوﺳﺴﻮرﻫﺎ و ﻣﯿﮑﺮوﮐﻨﺘﺮوﻟﺮﻫﺎي ﻫﻤﻪ ﻣﻨﻈﻮره)‪(μP/μC‬‬
‫‪ (4‬ﭘﺮدازﺷﮕﺮﻫﺎي ﺳﯿﮕﻨﺎل ﻫﺎي دﯾﺠﯿﺘﺎل ﻫﻤﻪ ﻣﻨﻈﻮره)‪(DSP processors‬‬
‫‪3‬‬
‫‪ (5‬ﭘﺮدازﺷﮕﺮﻫﺎي ‪ DSP‬ﺑﺎ ﺷﺘﺎب دﻫﻨﺪه ﻫﺎي ﺳﺨﺖ اﻓﺰاري ﮐﺎﺑﺮد ﻣﺸﺨﺺ‬
‫در اداﻣﻪ ﺑﻪ ﺑﺮرﺳﯽ وﯾﮋﮔﯽﻫﺎي ﻫﺮ ﯾﮏ ﻣﯽﭘﺮدازﯾﻢ‪:‬‬
‫‪:ASIC‬‬ ‫·‬

‫_________________________‬
‫‪1‬‬
‫‪application-specific integrated circuits‬‬
‫‪2‬‬
‫‪field-programmable gate arrays‬‬
‫‪3‬‬
‫‪application-specific hardware (HW) accelerators‬‬
‫‪6‬‬ ‫ﻣﻘﺪﻣﻪ‪ :‬آﺷﻨﺎﯾﯽ ﺑﺎ ﭘﺮدازﻧﺪه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫دﺳﺘﮕﺎهﻫﺎي ‪ ASIC‬ﻣﻌﻤﻮﻻً ﺑﺮاي وﻇﺎﯾﻒ ﻣﺸﺨﺼﯽ از ﻗﺒﯿﻞ ﻣﻮدم ﻫﺎي ‪ DSL‬و ﯾﺎ ﻣﺤﺼﻮﻻﺗﯽ ﮐﻪ از اﻟﮕﻮرﯾﺘﻢ ﻫﺎي‬
‫ﺗﻮﺳﻌﻪ ﯾﺎﻓﺘﻪاي ﻣﺎﻧﻨﺪ ‪ FFT‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﻨﺪ‪ ،‬ﻃﺮاﺣﯽ ﺷﺪهاﻧﺪ‪ .‬اﯾﻦ وﺳﺎﯾﻞ ﺑﺎ ﺑﻬﺮه ﮔﯿﺮي از ﻣﻌﻤﺎري اﺧﺘﺼﺎﺻﯽ ﺧﻮدﺷﺎن ﻗﺎدرﻧﺪ‬
‫ﮐﻪ وﻇﺎﯾﻒ ﻣﺤﺪودﺷﺎن را ﺧﯿﻠﯽ ﺳﺮﯾﻊﺗﺮ از ﭘﺮدازﺷﮕﺮﻫﺎي ﻫﻤﻪ ﻣﻨﻈﻮره اﻧﺠﺎم دﻫﻨﺪ‪.‬‬
‫ﻣﺰﯾﺖ ﻫﺎ‪:‬‬ ‫·‬
‫‪ o‬ﺳﺮﻋﺖ ﻣﻨﺎﺳﺐ‬
‫‪ o‬ﻣﺼﺮف ﺗﻮان ﮐﻢ‬
‫‪ o‬ﻗﯿﻤﺖ ﻣﻨﺎﺳﺐ ﺑﻪ ازاي ﻋﻤﻠﮑﺮدي ﮐﻪ دارد‬
‫‪ o‬اﻧﻌﻄﺎف ﭘﺬﯾﺮي ﻃﺮح‬
‫ﻋﯿﺐ ﻫﺎ‪:‬‬ ‫·‬
‫‪ o‬ﻗﯿﻤﺖ زﯾﺎد ﺑﺮاي ﺗﻮﺳﻌﻪ دادن‬
‫‪ o‬ﻣﺪت زﻣﺎن زﯾﺎدي ﺑﺮاي ﺗﻮﺳﻌﻪ دادن آن ﻫﺎ ﻃﻮل ﻣﯽ ﮐﺸﺪ‬
‫‪ o‬ﻋﺪم اﻧﻌﻄﺎف ﭘﺬﯾﺮي ﺑﺮاي ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﻰ ﻣﺠﺪد‬
‫‪FPGA‬‬ ‫·‬
‫‪FPGA‬ﻫﺎ ﺑﺎ اﺳﺘﻔﺎده از ﻣﻌﻤﺎري ﻣﻮازي ﻋﺎﻟﯿﺸﺎن ﻗﺪرت ﻣﺤﺎﺳﺒﺎﺗﯽ ﭼﺸﻤﮕﯿﺮي را ﺑﺮاي ﮐﺎراﯾﯽ ﺧﯿﻠﯽ ﺑﺎﻻ ﻓﺮاﻫﻢ ﻣﯽﮐﻨﻨﺪ‪.‬‬
‫ﺳﺨﺖ اﻓﺰار ‪ FPGA‬ﻗﺎﺑﻞ ﭘﯿﮑﺮﺑﻨﺪي ﻣﺠﺪد ﻣﯽﺑﺎﺷﺪ‪ ،‬ﺑﻨﺎﺑﺮاﯾﻦ ﺑﻪ ﻃﺮاﺣﺎن ﺳﯿﺴﺘﻢ‪ ،‬اﯾﻦ اﺟﺎزه را ﻣﯽدﻫﺪ ﮐﻪ ﺑﺮاي ﭘﯿﺎده ﺳﺎزي‬
‫اﻟﮕﻮرﯾﺘﻢﻫﺎﯾﯽ ﮐﻪ ﻧﯿﺎزﻣﻨﺪ ﻋﻤﻠﮑﺮد ﺑﺎﻻ و ﻗﯿﻤﺖ ﺗﻮﻟﯿﺪ ﮐﻢ ﻫﺴﺘﻨﺪ‪ ،‬ﻣﻌﻤﺎري ﺳﺨﺖ اﻓﺰاري را ﺑﻬﯿﻨﻪ ﺳﺎزي ﮐﻨﻨﺪ‪.‬‬
‫ﻣﺰﯾﺖ ﻫﺎ‪:‬‬ ‫·‬
‫‪ o‬اﻧﻌﻄﺎف ﭘﺬﯾﺮي ﺑﯿﺸﺘﺮ ﻧﺴﺒﺖ ﺑﻪ ‪ASIC‬‬
‫‪ o‬ﻋﻤﻠﮑﺮد ﺑﺎﻻ در ﺑﻌﻀﯽ از ﮐﺎرﺑﺮدﻫﺎ‬
‫‪ o‬ﻗﺎﺑﻠﯿﺖ اﺳﺘﻔﺎده از ﺳﺨﺖ اﻓﺰار ﯾﮑﺴﺎن ﺑﺮاي ﮐﺎرﺑﺮدﻫﺎي ﻣﺨﺘﻠﻒ‬
‫ﻋﯿﺐ ﻫﺎ‪:‬‬ ‫·‬
‫‪ o‬ﻣﺪت زﻣﺎن زﯾﺎدي ﺑﺮاي ﺗﻮﺳﻌﻪ دادن آن ﻫﺎ ﻃﻮل ﻣﯽ ﮐﺸﺪ‬
‫‪ o‬ﻧﺴﺒﺖ ﺑﻪ ‪DSP‬ﻫﺎ ﮔﺮان ﺗﺮ ﻫﺴﺘﻨﺪ‬
‫‪ o‬ﻧﺴﺒﺖ ﺑﻪ ‪DSP‬ﻫﺎ ﺗﻮان ﺑﯿﺸﺘﺮي ﻣﺼﺮف ﻣﯽ ﮐﻨﻨﺪ‬
‫‪ o‬ﻧﺴﺒﺖ ﺑﻪ ‪DSP‬ﻫﺎ زﻣﺎن ﻋﺮﺿﻪء آن ﻫﺎ ﺑﻪ ﺑﺎزار ﮐﻨﺪﺗﺮ اﺳﺖ‬

‫ﻣﯿﮑﺮوﭘﺮوﺳﺴﻮرﻫﺎ و ﻣﯿﮑﺮوﮐﻨﺘﺮوﻟﺮﻫﺎي ﻫﻤﻪ ﻣﻨﻈﻮره)‪(General-purpose μP/μC‬‬ ‫·‬


‫ﻣﯿﮑﺮوﭘﺮوﺳﺴﻮرﻫﺎ و ﻣﯿﮑﺮوﮐﻨﺘﺮوﻟﺮﻫﺎي ﻫﻤﻪ ﻣﻨﻈﻮره روز ﺑﻪ روز ﺳﺮﯾﻊﺗﺮ ﻣﯽﺷﻮﻧﺪ و ﻣﯽﺗﻮاﻧﻨﺪ ﺑﺮاي ﺑﻌﻀﯽ از ﮐﺎرﺑﺮدﻫﺎي‬
‫ﭘﺮدازش ﺳﯿﮕﻨﺎلﻫﺎي دﯾﺠﯿﺘﺎل ﺑﻪ ﮐﺎر روﻧﺪ‪ .‬ﺗﻌﺪاد زﯾﺎدي از ﻣﺤﺼﻮﻻت اﻟﮑﺘﺮوﻧﯿﮑﯽ ﮐﻪ ﻫﻢ اﮐﻨﻮن ﺗﻮﻟﯿﺪ ﻣﯽﺷﻮﻧﺪ از اﯾﻦ‬
‫ﭘﺮدازﺷﮕﺮﻫﺎ اﺳﺘﻔﺎده ﻣﯽﮐﻨﻨﺪ‪ .‬ﺑﺮاي ﻣﺜﺎل‪ ،‬ﮐﻨﺘﺮل ﮐﻨﻨﺪهﻫﺎي ﺧﻮدﮐﺎر از ﻣﯿﮑﺮوﮐﻨﺘﺮوﻟﺮﻫﺎ ﺑﺮاي ﮐﻨﺘﺮل ﻣﻮﺗﻮر‪ ،‬ﺗﺮﻣﺰ و ﻣﺤﻮر ﺗﻌﻠﯿﻖ‬
‫‪7‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﺧﻮدرو اﺳﺘﻔﺎده ﻣﯽﮐﻨﻨﺪ‪ .‬اﺑﺰارﻫﺎﯾﯽ ﮐﻪ ﺑﺮاي ﺗﻮﺳﻌﻪي ﻧﺮم اﻓﺰاري دﺳﺘﮕﺎهﻫﺎي ‪ μP/μC‬اﺳﺘﻔﺎده ﻣﯽﺷﻮﻧﺪ ﺑﻪ ﻃﻮر ﮐﻠﯽ از آنﻫﺎﯾﯽ‬
‫ﮐﻪ ﺑﺮاي ﺳﯿﺴﺘﻢﻫﺎي ‪ DSP‬در دﺳﺘﺮس ﻫﺴﺘﻨﺪ‪ ،‬ﭘﯿﺸﺮﻓﺘﻪﺗﺮ و ﻗﺪرﺗﻤﻨﺪﺗﺮ ﻫﺴﺘﻨﺪ‪ .‬ﺑﻨﺎﺑﺮاﯾﻦ ﺑﺮاي ﺗﻌﺪادي از ﮐﺎرﺑﺮدﻫﺎ ﮐﻪ ﮐﻤﺘﺮ‬
‫ﻧﯿﺎزﻣﻨﺪ ﮐﺎراﯾﯽ و ﻣﺼﺮف ﺗﻮان ﭘﺮدازﻧﺪه ﻫﺴﺘﻨﺪ‪ ،‬ﻣﺮاﺣﻞ ﺗﻮﺳﻌﻪ را ﺳﺎدهﺗﺮ ﻣﯽﮐﻨﻨﺪ‪ .‬در ﺟﺪول ‪ 1‬ﺧﻼﺻﻪ ﻣﻘﺎﯾﺴﻪ ﮔﺰﯾﻨﻪﻫﺎي‬
‫ﻣﻮﺟﻮد ﺑﺮاي ﭘﺮدازش ﺳﯿﮕﻨﺎلﻫﺎي دﯾﺠﯿﺘﺎل ﺑﺎ ﻫﻢ ﻧﺸﺎن داده ﺷﺪه اﺳﺖ‪.‬‬

‫ﺟﺪول ‪ 1‬ﻣﻘﺎﯾﺴﻪ ﮔﺰﯾﻨﻪﻫﺎي ﻣﻮﺟﻮد ﺑﺮاي ﭘﺮدازش ﺳﯿﮕﻨﺎلﻫﺎي دﯾﺠﯿﺘﺎل‬


‫‪ DSP (2‬ﭼﯿﺴﺖ؟‬
‫واژه ‪ DSP‬ﻣﺨﻔﻒ ‪ Digital Signal Processing‬ﯾﺎ ‪ Digital Signal Processor‬ﻣﯽﺑﺎﺷﺪ‪.‬‬
‫ﭘﺮدازش ﺳﯿﮕﻨﺎل ﻫﺎي دﯾﺠﯿﺘﺎل‪ 1‬ﺷﺎﻣﻞ ﻧﻤﺎﯾﺶ دﯾﺠﯿﺘﺎﻟﯽ ﺳﯿﮕﻨﺎلﻫﺎ و اﺳﺘﻔﺎده از ﺳﯿﺴﺘﻢﻫﺎي دﯾﺠﯿﺘﺎﻟﯽ ﺑﺮاي ﺗﺤﻠﯿﻞ ﮐﺮدن‪،‬‬
‫ﺗﻐﯿﯿﺮ دادن‪ ،‬ذﺧﯿﺮه ﺳﺎزي ﯾﺎ اﺳﺘﺨﺮاج اﻃﻼﻋﺎت از ﺳﯿﮕﻨﺎلﻫﺎي دﯾﺠﯿﺘﺎﻟﯽ ﻣﯽﺑﺎﺷﺪ‪.‬‬
‫‪ (digital signal processor) DSP‬ﻣﺪار ﻣﺠﺘﻤﻌﯽ اﺳﺖ ﮐﻪ ﺑﺮاي ﭘﺮدازش دﯾﺘﺎ ﺑﺎ ﺳﺮﻋﺖ ﺑﺎﻻ ﻃﺮاﺣﯽ ﺷﺪه اﺳﺖ و‬
‫در ﺻﺪا‪ ،‬ﺗﺼﻮﯾﺮ‪ ،‬ﻣﺨﺎﺑﺮات و ‪ ...‬ﮐﺎرﺑﺮد دارد‪.‬‬
‫در ﻣﻘﺎﯾﺴﻪ ﺑﺎ ‪ ASIC‬و ‪ ،FPGA‬ﭘﺮدازﻧﺪهﻫﺎي ‪ DSP‬داراي ﺑﺮﺗﺮيﻫﺎﯾﯽ از ﻗﺒﯿﻞ ﺳﺎدﮔﯽ ﺗﻮﺳﻌﻪ ﻫﺴﺘﻨﺪ و داراي ﻗﺎﺑﻠﯿﺖ‬
‫ﺑﺮﻧﺎﻣﻪ رﯾﺰي ﻣﺠﺪد در ﻣﺪار ﺑﺮاي ﺑﺮوز رﺳﺎﻧﯽ و ﺑﺮﻃﺮف ﮐﺮدن ﻋﯿﺐ‪ ،‬ﻣﯽﺑﺎﺷﻨﺪ‪DSP .‬ﻫﺎ از ﻧﻈﺮ اﻗﺘﺼﺎدي از ‪ ASIC‬و ‪FPGA‬‬
‫ﺑﻪ ﺧﺼﻮص در ﮐﺎرﺑﺮدﻫﺎي ﮐﻢ ﺣﺠﻢ ﺑﺎ ﺻﺮﻓﻪﺗﺮ ﻫﺴﺘﻨﺪ‪ .‬در ﻣﻘﺎﯾﺴﻪ ﺑﺎ ‪ μP/μc‬ﻫﻤﻪ ﻣﻨﻈﻮره‪ ،‬ﭘﺮدازﻧﺪهﻫﺎي ‪ DSP‬ﺳﺮﯾﻊﺗﺮ‪،‬‬
‫داراي ﺑﺎزده ﺑﯿﺸﺘﺮ و ارزانﺗﺮ ﻫﺴﺘﻨﺪ‪.‬‬
‫ﮐﺎﻣﭙﯿﻮﺗﺮ ﻣﯽ ﺗﻮاﻧﺪ اﯾﻦ ﺳﯿﮕﻨﺎل دﯾﺠﯿﺘﺎﻟﯽ را ﭘﺮدازش ﮐﻨﺪ‪ .‬ﭘﺲ از اﯾﻦ ﮐﻪ ﻋﻤﻞ ﭘﺮدازش اﻃﻼﻋﺎت ﺑﻪ ﭘﺎﯾﺎن رﺳﯿﺪ‪ ،‬ﺳﯿﮕﻨﺎل‬
‫ﺧﺮوﺟﯽ ﺑﺎﯾﺪ دوﺑﺎره ﺑﻪ آﻧﺎﻟﻮگ ﺗﺒﺪﯾﻞ ﺷﻮد ﺗﺎ ﺑﺮاي ﻣﺎ ﻗﺎﺑﻞ درك ﺑﺎﺷﺪ‪ .‬ﺑﺮاي اﯾﻦ ﻣﻨﻈﻮر از ﯾﮏ ‪ 2 DAC‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪ .‬ﺑﺮاي‬
‫ﻣﺜﺎل ﺑﻠﻨﺪﮔﻮ ﻣﯽﺗﻮاﻧﺪ ﺳﯿﮕﻨﺎل آﻧﺎﻟﻮﮔﯽ را ﮐﻪ از ﯾﮏ ‪ DAC‬درﯾﺎﻓﺖ ﻣﯽﮐﻨﺪ را ﺑﻪ ﺻﺪا ﺗﺒﺪﯾﻞ ﮐﻨﺪ‪ .‬در ﺷﮑﻞ ‪ 1‬ﻧﺤﻮه ﭘﺮدازش‬
‫ﺳﯿﮕﻨﺎل آﻧﺎﻟﻮگ ﺗﻮﺳﻂ ﭘﺮدازﻧﺪه دﯾﺠﯿﺘﺎل ﻧﺸﺎن داده ﺷﺪه اﺳﺖ‪.‬‬

‫‪ (3‬ﻧﺤﻮهي ﻋﻤﻠﮑﺮد ﭘﺮدازش ﺳﯿﮕﻨﺎلﻫﺎي دﯾﺠﯿﺘﺎﻟﯽ‪:‬‬

‫ﺟﻬﺎن ﻣﺎ آﻧﺎﻟﻮگ اﺳﺖ و ﻣﺘﺄﺳﻔﺎﻧﻪ ﮐﺎﻣﭙﯿﻮﺗﺮﻫﺎي آﻧﺎﻟﻮگ اﻟﮑﺘﺮﯾﮑﯽ ﻫﻤﭽﻮن ﮐﺎﻣﭙﯿﻮﺗﺮﻫﺎي دﯾﺠﯿﺘﺎل ﻫﻤﻪ ﮐﺎره ﻧﯿﺴﺘﻨﺪ‪ .‬ﺑﻨﺎﺑﺮاﯾﻦ‬
‫ﺑﺮاي اﯾﻦ ﮐﻪ ﺑﺘﻮاﻧﯿﻢ از ﻗﺪرت زﯾﺎد ﭘﺮدازﺷﯽ ﮐﻪ ﺗﮑﻨﻮﻟﻮژي دﯾﺠﯿﺘﺎل در اﺧﺘﯿﺎر ﻣﺎ ﻣﯽﮔﺬارد‪ ،‬اﺳﺘﻔﺎده ﮐﻨﯿﻢ ﺑﺎﯾﺪ‪:‬‬

‫_________________________‬
‫‪1‬‬
‫‪Digital signal processing‬‬
‫‪2‬‬
‫‪digital-to-analog convertor‬‬
‫‪8‬‬ ‫ﻣﻘﺪﻣﻪ‪ :‬آﺷﻨﺎﯾﯽ ﺑﺎ ﭘﺮدازﻧﺪه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫از ﯾﮏ ﻣﺒﺪل ﺟﻬﺖ ﺗﺒﺪﯾﻞ ﺳﯿﮑﻨﺎل آﻧﺎﻟﻮگ ﺑﻪ ﺳﯿﮕﻨﺎل دﯾﺠﯿﺘﺎل اﺳﺘﻔﺎده ﮐﻨﯿﻢ‪ .‬ﻣﺎﻧﻨﺪ‪ :‬ﻣﯿﮑﺮوﻓﻦ‪.‬‬ ‫·‬
‫‪1‬‬
‫اﯾﻦ ﺳﯿﮕﻨﺎل را دﯾﺠﯿﺘﺎﻟﻰ ﮐﻨﯿﻢ‪ .‬ﺑﺮاي اﯾﻦ ﮐﺎر از ﯾﮏ ﻣﺒﺪل آﻧﺎﻟﻮگ ﺑﻪ دﯾﺠﯿﺘﺎل ‪ ADC‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﯿﻢ‪.‬‬ ‫·‬

‫ﺷﮑﻞ ‪ :1‬ﻧﺤﻮه ﭘﺮدازش ﺳﯿﮕﻨﺎل آﻧﺎﻟﻮگ ﺗﻮﺳﻂ ﭘﺮدازﻧﺪه دﯾﺠﯿﺘﺎل‬

‫ﺑﻨﺎﺑﺮاﯾﻦ ﺑﺮاي ﭘﺮدازش دﯾﺠﯿﺘﺎﻟﯽ ﺳﯿﮕﻨﺎل‪ ،‬ﺑﺎﯾﺪ آن را دو ﺑﺎر ﺗﺒﺪﯾﻞ ﮐﻨﯿﻢ‪ .‬ﺗﺎ زﻣﺎﻧﯽ ﮐﻪ ﻓﺮدي ﺑﺘﻮاﻧﺪ ﮐﺎﻣﭙﯿﻮﺗﺮ آﻧﺎﻟﻮﮔﯽ‪ ،‬ﮐﻪ‬
‫ﻫﻤﭽﻮن ﮐﺎﻣﭙﯿﻮﺗﺮﻫﺎي دﯾﺠﯿﺘﺎل ﻫﻤﻪ ﮐﺎره ﺑﺎﺷﺪ‪ ،‬ﻃﺮاﺣﯽ ﮐﻨﺪ اﯾﻦ ﮐﺎر ارزﺷﺶ را دارد‪.‬‬

‫‪ (4‬دﻟﯿﻞ اﺳﺘﻔﺎده از ‪: Digital Signal Processors‬‬

‫ﻣﯿﮑﺮوﭘﺮوﺳﺴﻮرﻫﺎي ﻫﻤﻪ ﮐﺎره در اﻧﺠﺎم ﻋﻤﻠﯿﺎت ﺿﺮب و ﺗﻘﺴﯿﻢ ﺧﯿﻠﯽ ﮐﻨﺪ ﻫﺴﺘﻨﺪ‪ .‬آنﻫﺎ ﺑﺮاي اﻧﺠﺎم ﯾﮏ ﻋﻤﻞ ﺿﺮب‪،‬‬
‫ﯾﮏ ﺳﺮي ﻋﻤﻠﯿﺎت ﺷﯿﻔﺖ‪ ،‬ﺟﻤﻊ و ﺗﻔﺮﯾﻖ را ﺑﻪ ﻃﻮر ﻣﺘﻮاﻟﯽ اﺟﺮا ﻣﯽﮐﻨﻨﺪ‪ .‬ﺑﻨﺎﺑﺮاﯾﻦ ﻋﻤﻞ ﺿﺮب ﺑﻪ ﺳﯿﮑﻞ ﻫﺎي زﯾﺎدي ﻧﯿﺎز دارد‪.‬‬
‫اﻣﺎ ‪ DSP‬ﺑﺎ اﻧﺠﺎم ﻫﻤﻪء ﻋﻤﻠﯿﺎت ﺷﯿﻔﺖ و ﺟﻤﻊ ﺑﻪ ﻃﻮر ﻣﻮازي‪ ،‬در ﯾﮏ ﺳﯿﮑﻞ ﻋﻤﻞ ﺿﺮب را اﻧﺠﺎم ﻣﯽ دﻫﺪ‪ .‬ﻣﺪارﺑﻨﺪي آن‬
‫ﻧﺴﺒﺘﺎً ﭘﯿﭽﯿﺪه اﺳﺖ و ﺑﻪ ﻣﻘﺪار ﻗﺎﺑﻞ ﺗﻮﺟﻬﯽ ﺗﺮاﻧﺰﯾﺴﺘﻮر ﻧﯿﺎز دارد‪ .‬اﻣﺎ ﻣﺰﯾﺖ آن ﺿﺮب ﮐﺮدن ﺧﯿﻠﯽ ﺳﺮﯾﻊ اﺳﺖ ﮐﻪ ﺑﺮاي ﭘﺮدازش‬
‫ﺳﯿﮕﻨﺎلﻫﺎي دﯾﺠﯿﺘﺎل ﺿﺮوري ﻣﯽﺑﺎﺷﺪ‪.‬‬
‫ﭘﺮدازش ﺳﯿﮕﻨﺎلﻫﺎي دﯾﺠﯿﺘﺎﻟﯽ ﺑﻪ ﻃﻮر ﻃﺒﯿﻌﯽ ﻧﯿﺎزﻣﻨﺪ ﺗﻌﺪاد زﯾﺎدي ﻣﺤﺎﺳﺒﺎت ﺑﻪ ﺻﻮرت ‪ A=B×C+D‬ﻣﯽ ﺑﺎﺷﺪ‪ .‬ﺷﺎﯾﺪ‬
‫اﯾﻦ ﻋﻤﻞ ﺳﺎده ﺑﻪ ﻧﻈﺮ ﺑﺮﺳﺪ‪ ،‬اﻣﺎ وﻗﺘﯽ ﮐﻪ ﺑﻪ ﺳﺮﻋﺖ زﯾﺎد ﻧﯿﺎزﻣﻨﺪﯾﻢ‪ ،‬اﺧﺘﺼﺎص دادن ﯾﮏ ﺳﺨﺖ اﻓﺰار ﺑﺮاي اﺟﺮاي اﯾﻦ ﻋﻤﻞ‬
‫ﺧﯿﻠﯽ ﻣﻔﯿﺪ ﺧﻮاﻫﺪ ﺑﻮد‪.‬‬
‫ﺑﯿﺸﺘﺮ ‪ DSP‬ﻫﺎ دﺳﺘﻮرﻋﻤﻞ وﯾﮋهاي دارﻧﺪ ﮐﻪ ﺑﻪ آن ﻫﺎ اﺟﺎزه ﻣﯽ دﻫﺪ ﮐﻪ ﻋﻤﻠﯿﺎت ﺿﺮب‪ ،‬ﺟﻤﻊ و ذﺧﯿﺮهﮐﺮدن ﻧﺘﯿﺠﻪ را در‬
‫ﯾﮏ ﺳﯿﮑﻞ اﻧﺠﺎم دﻫﻨﺪ‪ .‬اﯾﻦ دﺳﺘﻮرﻋﻤﻞ ﻣﻌﻤﻮﻻً ‪ (Multiply,Accumulate) MAC‬ﻧﺎﻣﯿﺪه ﻣﯽ ﺷﻮد‪.‬‬

‫_________________________‬
‫‪1‬‬
‫‪analog-to-digital covertor‬‬
‫‪9‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫‪ (5‬ﺗﺎرﯾﺨﭽﻪ ﺿﺮب ﮐﻨﻨﺪه‪:‬‬

‫در ﺳﺎل ‪ 1971‬آزﻣﺎﯾﺸﮕﺎﻫﺎي ﻟﯿﻨﮑﻠﻦ ﺑﺎ اﺳﺘﻔﺎده از ‪ 10000‬ﻣﺪار ﻣﺠﺘﻤﻊ‪ ،‬ﯾﮏ ﺿﺮب ﮐﻨﻨﺪه ﻃﺮاﺣﯽ ﮐﺮدﻧﺪ ﮐﻪ ﻓﻘﻂ در ‪600‬‬
‫ﻧﺎﻧﻮ ﺛﺎﻧﯿﻪ ﻋﻤﻞ ﺿﺮب را اﻧﺠﺎم ﻣﯽ دادﻧﺪ‪ .‬در اواﺳﻂ دﻫﻪء ‪ ،70‬ﺿﺮب ﮐﺮدن در ‪ 200‬ﻧﺎﻧﻮ ﺛﺎﻧﯿﻪ ﺑﻪ ﯾﮏ ﮐﺎر ﻣﻌﻤﻮﻟﯽ ﺗﺒﺪﯾﻞ ﺷﺪ‪ .‬ﺑﺎ‬
‫اﯾﻦ ﮐﺎر ﻃﺮاﺣﯽ ‪ digitaln signal processors‬ﻗﺎﺑﻞ ﻗﺒﻮل‪ ،‬اﻣﮑﺎن ﭘﺬﯾﺮ ﺷﺪ‪ .‬ﻃﺮح ﻫﺎي اوﻟﯿﻪ ﺧﯿﻠﯽ ﮔﺮان و ﺣﺠﯿﻢ ﺑﻮدﻧﺪ اﻣﺎ‬
‫ﺿﺮب ﮐﺮدن ﺳﺮﯾﻊ اﻣﮑﺎن ﭘﺬﯾﺮ ﺷﺪ‪ .‬در ﺷﮑﻞ ‪ 2‬ﻧﻤﻮدار ﮐﺎﻫﺶ ﻋﻤﻠﯿﺎت ﺿﺮب در ﻃﻮل ﺳﺎلﻫﺎي ﻣﺨﺘﻠﻒ ﻧﺸﺎن داده ﺷﺪه اﺳﺖ‪.‬‬

‫ﺷﮑﻞ ‪ :2‬ﻧﻤﻮدار ﮐﺎﻫﺶ ﻋﻤﻠﯿﺎت ﺿﺮب در ﻃﻮل ﺳﺎلﻫﺎي ﻣﺨﺘﻠﻒ‬

‫‪ (6‬ﺗﺎرﯾﺨﭽﻪ ‪DSP‬‬

‫در اواﯾﻞ ﺳﺎل ﻫﺎي ‪ ،1980‬ﺗﺮاﺷﻪ ﻫﺎي ‪ DSP‬ﺑﺎ ﻋﻤﻠﮑﺮد ﻣﻨﺎﺳﺐ ﺑﻪ وﺟﻮد آﻣﺪﻧﺪ‪ .‬از آن زﻣﺎن ﺑﻪ ﺑﻌﺪ‪ ،‬زﻣﺎن ﺿﺮب ﮐﺮدن ﺑﻪ‬
‫‪AT&T Bell‬‬ ‫ﻃﻮر ﭘﯿﻮﺳﺘﻪ ﮐﺎﻫﺶ ﯾﺎﻓﺖ‪ ،"DSP1" .‬اوﻟﯿﻦ ﺗﺮاﺷﻪ ‪ DSP‬ﮐﻪ از ﻧﻈﺮ ﺗﺠﺎري ﻣﻮﻓﻖ ﺑﻮد‪ ،‬در ﺳﺎل ‪ 1980‬ﺗﻮﺳﻂ‬
‫‪ Laboratories‬رواﻧﻪء ﺑﺎزار ﺷﺪ و ﺑﯿﺸﺘﺮ در ﻃﺮاﺣﯽﻫﺎي داﺧﻠﯽ اﺳﺘﻔﺎده ﺷﺪ‪ ،TI .‬اوﻟﯿﻦ ‪ DSP‬ﻣﻮﻓﻖ ﺗﺠﺎري را در ﺳﺎل ‪1982‬‬
‫‪10‬‬ ‫ﻣﻘﺪﻣﻪ‪ :‬آﺷﻨﺎﯾﯽ ﺑﺎ ﭘﺮدازﻧﺪه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﯾﮏ ‪DSP‬‬ ‫ﺗﻮﻟﯿﺪ ﮐﺮد‪ .‬ﻧﺎم اﯾﻦ ﺗﺮاﺷﻪ ‪ TMS320C10‬ﺑﻮد و در ﻓﺮﮐﺎﻧﺲ ‪ (200ns) 5MHz‬ﮐﺎر ﻣﯽ ﮐﺮد‪ .‬در اواﺧﺮ دﻫﻪ ‪ 90‬ﻣﯿﻼدي‪،‬‬
‫‪ 16‬ﺑﯿﺘﯽ ﺑﺎ ﻣﻤﯿﺰﺛﺎﺑﺖ‪ 1‬ﻣﻌﻤﻮﻟﯽ ﻣﯽﺗﻮاﻧﺴﺖ در ‪ 5‬ﻧﺎﻧﻮ ﺛﺎﻧﯿﻪ ﻋﻤﻞ ﺿﺮب را اﻧﺠﺎم دﻫﺪ‪.‬‬

‫‪ (7‬اﻧﻮاع ﭘﺮدازﻧﺪه ﻫﺎي ‪DSP‬‬

‫اﻣﺮوزه اﻧﻮاع ﻣﺨﺘﻠﻔﯽ از ﭘﺮدازﻧﺪه ﻫﺎي ‪ DSP‬ﺑﻪ ﺻﻮرت ﺗﺠﺎري در دﺳﺘﺮس ﻫﺴﺘﻨﺪ‪ .‬در ﺟﺪول زﯾﺮ ﺗﻌﺪادي از ﭘﺮدارﻧﺪه‬
‫ﻫﺎي ‪ DSP‬راﯾﺞ ﺑﻪ ﻃﻮر ﺧﻼﺻﻪ ﻧﺸﺎن داده ﺷﺪهاﻧﺪ‪.‬‬

‫ﺟﺪول ‪ :2‬اﻧﻮاع ﭘﺮدازﻧﺪهﻫﺎي ‪ DSP‬راﯾﺞ‬

‫‪Analog Devices‬‬ ‫در ﮔﺮوه ﺳﺎده و ارزان ﻗﯿﻤﺖ‪ ،‬از ﺷﺮﮐﺖ ‪ TI‬ﺧﺎﻧﻮاده )‪ ،TMS320C2000 (C24x and C28x‬از ﺷﺮﮐﺖ‬
‫ﺧﺎﻧﻮاده ‪ ADSP-218x‬و از ﺷﺮﮐﺖ ‪ Freescale‬ﺧﺎﻧﻮاده ‪ DSP568xx‬ﻗﺮار دارﻧﺪ‪ .‬اﯾﻦ ﭘﺮدازﻧﺪهﻫﺎي ‪ DSP‬ﺷﺎﻣﻞ ﺿﺮب ﮐﻨﻨﺪهﻫﺎي‬
‫ﺳﺨﺖ اﻓﺰاري و ﺷﯿﻔﺖ دادن ﻣﯽﺑﺎﺷﻨﺪ و در ﻫﺮ ﺳﯿﮑﻞ ﯾﮏ دﺳﺘﻮرﻋﻤﻞ را اﺟﺮا ﻣﯽﮐﻨﻨﺪ‪ .‬ﻫﻤﭽﻨﯿﻦ آنﻫﺎ از دﺳﺘﻮرﻋﻤﻞﻫﺎي‬
‫ﭘﯿﭽﯿﺪهاي ﮐﻪ ﭼﻨﺪﯾﻦ ﻋﻤﻠﯿﺎت را از ﻗﺒﯿﻞ ﺿﺮب‪ ،‬ﺟﻤﻊ و ﺑﻪ روز رﺳﺎﻧﯽ آدرس اﺷﺎرهﮔﺮ اﺟﺮا ﻣﯽﮐﻨﻨﺪ‪ ،‬ﭘﺸﺘﯿﺒﺎﻧﯽ ﻣﯽﮐﻨﻨﺪ‪ .‬آنﻫﺎ‬
‫ﮐﺎراﯾﯽ ﺧﻮب را ﻫﻤﺮاه ﺑﺎ ﻣﺼﺮف ﺑﺮق و ﺣﺎﻓﻈﻪ ﻣﻮرد اﺳﺘﻔﺎده ﻧﺴﺒﺘﺎً ﮐﻢ ﻓﺮاﻫﻢ ﻣﯽﮐﻨﻨﺪ‪ .‬ﺑﻨﺎﺑﺮاﯾﻦ ﺑﻪ ﻃﻮر ﮔﺴﺘﺮده در وﺳﺎﯾﻞ‬
‫ﻣﻮﺗﻮري‪ ،‬ﻣﺼﺮف ﮐﻨﻨﺪهﻫﺎي اﻟﮑﺘﺮوﻧﯿﮑﯽ‪ ،‬دراﯾﻮرﻫﺎي ﻫﺎرد دﯾﺴﮏ و ﻣﻮدم ﻫﺎ ﺑﻪ ﮐﺎر ﻣﯽ روﻧﺪ‪ .‬ﺑﺮاي ﻣﺜﺎل ﺧﺎﻧﻮاده ﻫﺎي‬
‫‪ TMS320C2000‬و ‪ DSP568xx‬ﺑﺮاي ﮐﺎرﺑﺮدﻫﺎي ﻣﻮﺗﻮري از ﻗﺒﯿﻞ ﮐﻨﺘﺮل ﻣﻮﺗﻮر و ﮐﻨﺘﺮل اﺗﻮﻣﺒﯿﻞ ﺑﺎ ﺟﻤﻊ ﮐﺮدن ﺧﯿﻠﯽ از‬
‫وﯾﮋﮔﯽﻫﺎي ﻣﯿﮑﺮوﮐﻨﺘﺮﻟﺮﻫﺎ و دﺳﺘﮕﺎه ﻫﺎي ﺟﺎﻧﺒﯽ داﺧﻞ ﯾﮏ ﺗﺮاﺷﻪ‪ ،‬ﺑﻬﯿﻨﻪ ﻫﺴﺘﻨﺪ‪.‬‬
‫ﮔﺮوه ﭘﺮدازﺷﮕﺮﻫﺎي ﺑﺎ ﻗﺪرت ﻣﺘﻮﺳﻂ ﺷﺎﻣﻞ )‪ TMS320C5000 (C54x and C55x‬ﺳﺎﺧﺖ ﺷﺮﮐﺖ ‪ ADSP219x ،TI‬و‬
‫‪ ADSP-BF5xx‬ﺳﺎﺧﺖ ﺷﺮﮐﺖ ‪ Analog Devices‬و ‪ DSP563xx‬ﺳﺎﺧﺖ ﺷﺮﮐﺖ ‪ Freescale‬ﻣﯽ ﺑﺎﺷﺪ‪ .‬اﯾﻦ ﭘﺮدازﻧﺪهﻫﺎي‬
‫ﭘﯿﺸﺮﻓﺘﻪ ﺑﺎ ﺑﻬﺮهﮔﯿﺮي از ﺗﺮﮐﯿﺐ اﻓﺰاﯾﺶ ﻧﺮخ ﮐﻼك و ﻣﻌﻤﺎريﻫﺎي ﺧﯿﻠﯽ ﭘﯿﺸﺮﻓﺘﻪﺗﺮ ﻗﺎدرﻧﺪ ﺑﻪ ﻋﻤﻠﮑﺮد ﺑﺎﻻﯾﯽ دﺳﺖ ﯾﺎﺑﻨﺪ‪ .‬اﯾﻦ‬
‫دﺳﺘﻪ از ‪DSP‬ﻫﺎ ﻣﻌﻤﻮﻻً ﺷﺎﻣﻞ ﺧﻂ ﻟﻮﻟﻪ ﻋﻤﯿﻖﺗﺮ) ‪ ، ( Pipline‬دﺳﺘﻮرﻋﻤﻞﻫﺎي ﭘﯿﭽﯿﺪه‪ ،‬ﺑﺎس داده ﭼﻨﺪﮔﺎﻧﻪ)ﺑﺮاي اﯾﻦ ﮐﻪ در ﻫﺮ‬

‫_________________________‬
‫‪1‬‬
‫‪16-bit fixed-point‬‬
‫‪11‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﺳﯿﮑﻞ ﺑﻪ ﭼﻨﺪﯾﻦ داده دﺳﺖ ﯾﺎﺑﻨﺪ(‪ ،‬ﺷﺘﺎب دﻫﻨﺪهﻫﺎي ﺳﺨﺖ اﻓﺰاري اﺿﺎﻓﯽ و واﺣﺪﻫﺎي اﺟﺮاي ﻣﻮازي‪ ،‬ﻣﯽﺑﺎﺷﻨﺪ‪ .‬ﺑﺮاي ﻣﺜﺎل‬
‫‪ TMS320C55x‬ﺷﺎﻣﻞ دو واﺣﺪ ﺿﺮب و ﺟﻤﻊ)‪ (MAC‬ﻣﯽﺑﺎﺷﺪ‪ .‬اﯾﻦ دﺳﺘﻪ از ‪DSP‬ﻫﺎ ﺑﺎ ﺑﻬﺮه ﮔﯿﺮي از ﻣﺼﺮف ﺗﻮان ﮐﻤﺘﺮ‪،‬‬
‫ﻋﻤﻠﮑﺮد ﺑﻬﺘﺮي را ﻓﺮاﻫﻢ ﻣﯽﮐﻨﻨﺪ‪ ،‬ﺑﻨﺎﺑﺮاﯾﻦ ﺑﯿﺸﺘﺮ در ﮐﺎرﺑﺮدﻫﺎي ﻗﺎﺑﻞ ﺣﻤﻞ از ﻗﺒﯿﻞ ﻣﻮﺑﺎﯾﻞ‪ ،‬دﺳﺘﮕﺎه ﻫﺎي ﺑﯽﺳﯿﻢ‪ ،‬دورﺑﯿﻦﻫﺎي‬
‫دﯾﺠﯿﺘﺎﻟﯽ‪ ،‬ﭘﺨﺶ ﮐﻨﻨﺪه‪/‬ﻫﺎي ﺻﻮﺗﯽ و ﺗﺼﻮﯾﺮي و دﺳﺘﮕﺎه ﻫﺎي ﮐﻤﮏ ﺷﻨﻮاﯾﯽ دﯾﺠﯿﺘﺎﻟﯽ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﯽﮔﯿﺮﻧﺪ‪.‬‬
‫اﯾﻦ ﭘﺮدازﻧﺪهﻫﺎي ‪ DSP‬ﭘﯿﺸﺮﻓﺘﻪ ﺑﺮاي اﻟﮕﻮرﯾﺘﻢﻫﺎي راﯾﺞ ‪ DSP‬از ﻗﺒﯿﻞ ﻓﯿﻠﺘﺮﮐﺮدن داراي وﯾﮋﮔﯽ ﻫﺎي زﯾﺮ ﻫﺴﺘﻨﺪ‪:‬‬
‫واﺣﺪﻫﺎي ﺿﺮب و ﺟﻤﻊ )‪ (MAC‬ﺳﺮﯾﻊ – ﻋﻤﻠﯿﺎت ﺿﺮب و ﺟﻤﻊ در ﺑﯿﺸﺘﺮ دﺳﺘﻮرﻋﻤﻞﻫﺎي ‪ DSP‬از ﻗﺒﯿﻞ‬ ‫·‬
‫ﻓﯿﻠﺘﺮﯾﻨﮓ‪ FFT ،‬و ﮐﺮوﻟﯿﺸﻦ ﺑﻪ ﮐﺎر ﻣﯽروﻧﺪ‪ .‬ﭘﺮدازﻧﺪهﻫﺎي ‪ ،DSP‬ﺿﺮب ﮐﻨﻨﺪه و ﺟﻤﻊ ﮐﻨﻨﺪه را در ﯾﮏ ﻣﺴﯿﺮ داده‬
‫ﺗﺮﮐﯿﺐ ﻣﯽﮐﻨﻨﺪ ﺗﺎ ﻋﻤﻠﯿﺎت ‪ MAC‬را در ﯾﮏ ﺳﯿﮑﻞ دﺳﺘﻮرﻋﻤﻞ ﮐﺎﻣﻞ ﮐﻨﻨﺪ‪.‬‬
‫ﺣﺎﻓﻈﻪي دﺳﺘﺮﺳﯽ ﭼﻨﺪﮔﺎﻧﻪ – ﺑﯿﺸﺘﺮ ﭘﺮدازﻧﺪهﻫﺎي ‪ DSP‬از ﻣﻌﻤﺎري ﻫﺎروارد اﺻﻼح ﺷﺪه‪ ،‬اﺳﺘﻔﺎده ﻣﯽﮐﻨﻨﺪ ﺗﺎ ﺑﻪ‬ ‫·‬
‫دﻟﯿﻞ ﺟﺪا ﺑﻮدن ﺣﺎﻓﻈﻪي ﺑﺮﻧﺎﻣﻪ و ﺣﺎﻓﻈﻪي داده ﺑﺘﻮاﻧﻨﺪ دﺳﺘﻮرﻋﻤﻞ و داده را ﻫﻤﺰﻣﺎن ﻓﭻ )‪ (fetch‬ﮐﻨﻨﺪ‪ .‬ﭘﺮدازﻧﺪه‬
‫ﻫﺎي ‪ DSP‬ﺑﺮاي ﭘﺸﺘﯿﺒﺎﻧﯽ از دﺳﺘﺮﺳﯽ ﻫﻢ زﻣﺎن ﺑﻪ ﭼﻨﺪﯾﻦ داده‪ ،‬از ﺑﺎسﻫﺎي داﺧﻞ ﺗﺮاﺷﻪ ﭼﻨﺪﮔﺎﻧﻪ‪ ،‬ﺑﺎﻧﮏﻫﺎي‬
‫ﺣﺎﻓﻈﻪي ﻣﺴﺘﻘﻞ و ﺣﺎﻓﻈﻪي داده ﺑﺎ ﻗﺎﺑﻠﯿﺖ دﺳﺘﺮﺳﯽ دوﮔﺎﻧﻪ اﺳﺘﻔﺎده ﻣﯽﮐﻨﻨﺪ‪.‬‬
‫ﻣﻮدﻫﺎي آدرسدﻫﯽ ﻣﺨﺼﻮص – ﭘﺮدازﻧﺪهﻫﺎي ‪ DSP‬اﻏﻠﺐ ﺑﺮاي اﯾﻦ ﮐﻪ آدرسﻫﺎي داده را ﺑﻪ ﻣﻮازات اﺟﺮاي‬ ‫·‬
‫دﺳﺘﻮرﻋﻤﻞﻫﺎ ﺗﻮﻟﯿﺪ ﮐﻨﻨﺪ‪ ،‬واﺣﺪﻫﺎي اﺧﺘﺼﺎﺻﯽ ﺗﻮﻟﯿﺪ آدرس داده را ﺑﺎ ﯾﮑﺪﯾﮕﺮ ﺗﺮﮐﯿﺐ ﻣﯽﮐﻨﻨﺪ‪ .‬اﯾﻦ واﺣﺪﻫﺎ ﻣﻌﻤﻮﻻً‬
‫از آدرس دﻫﯽ داﯾﺮهاي و آدرس دﻫﯽ ﺑﯿﺖ ﻣﻌﮑﻮس ﺑﺮاي ﺑﻌﻀﯽ از اﻟﮕﻮرﯾﺘﻢﻫﺎي ﻣﺸﺨﺺ اﺳﺘﻔﺎده ﻣﯽﮐﻨﻨﺪ‪.‬‬
‫ﮐﻨﺘﺮل وﯾﮋه ﺑﺮﻧﺎﻣﻪ– ﺑﯿﺸﺘﺮ ﭘﺮدازﻧﺪهﻫﺎي ‪ DSP‬از ﺣﻠﻘﻪ ﻫﺎي ﺑﺪون ﭘﺮدازش )‪ (zero-overhead looping‬ﮐﻪ‬ ‫·‬
‫ﺑﻪ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺲ اﯾﻦ اﺟﺎزه را ﻣﯽ دﻫﺪ ﺗﺎ ﯾﮏ ﺣﻠﻘﻪ را ﺑﺪون اﺳﺘﻔﺎده از ﺳﯿﮑﻞ ﺳﺎﻋﺖ اﺿﺎﻓﯽ ﺑﺮاي ﺟﺪﯾﺪ ﮐﺮدن و‬
‫ﺗﺴﺖ ﺷﻤﺎرﻧﺪهي ﺣﻠﻘﻪ ﯾﺎ ﭘﺮش ﺑﻪ اﺑﺘﺪاي ﺣﻠﻘﻪ ﭘﯿﺎده ﺳﺎزي ﮐﻨﺪ‪ ،‬اﺳﺘﻔﺎده ﻣﯽﮐﻨﻨﺪ‪.‬‬
‫اﯾﻦ ﭘﺮدازﻧﺪه ﻫﺎي ‪ DSP‬ﺑﺮاي اﯾﻦ ﮐﻪ ﺑﻪ ﻋﻤﻠﯿﺎت ﺑﯿﺸﺘﺮي اﺟﺎزه دﻫﻨﺪ ﮐﻪ در ﻫﺮ ﭼﺮﺧﻪ دﺳﺘﻮرﻋﻤﻞ اﺟﺮا ﺷﻮﻧﺪ‪ ،‬از ﺳﺨﺖ‬
‫اﻓﺰار ﺑﻪ ﺧﺼﻮص و دﺳﺘﻮرﻋﻤﻞ ﻫﺎي ﭘﯿﭽﯿﺪه اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﻨﺪ‪.‬‬
‫ﺗﻌﺪادي از ﭘﺮدارﻧﺪه ﻫﺎي ‪ DSP‬از ﻗﺒﯿﻞ ‪ (C62x, C64x, C67x) TMS320C6000‬ﺑﺎ ﻫﺪف رﺳﯿﺪن ﺑﻪ ﮐﺎراﯾﯽ ﺑﺎﻻ‬
‫و ﺳﺎﺧﺖ ﻣﻌﻤﺎرياي ﮐﻪ از ﮐﺎﻣﭙﺎﯾﻠﺮ ‪ C‬ﮐﺎرآﻣﺪي ﭘﺸﺘﯿﺒﺎﻧﯽ ﻣﯽﮐﻨﻨﺪ‪ ،‬از دﺳﺘﻮرﻋﻤﻞﻫﺎي ﺧﯿﻠﯽ ﺳﺎدهاي ﭘﺸﺘﯿﺒﺎﻧﯽ ﻣﯽ ﮐﻨﻨﺪ‪ .‬اﯾﻦ‬
‫ﭘﺮدازﻧﺪهﻫﺎ ﺑﺎ ﺻﺪور و اﺟﺮاي ﭼﻨﺪﯾﻦ دﺳﺘﻮرﻋﻤﻞ ﺳﺎده ﺑﻪ ﻣﻮازات ﯾﮑﺪﯾﮕﺮ در ﻧﺮخ ﮐﻼك ﺑﺎﻻﺗﺮ‪ ،‬ﺑﻪ ﺣﺪ ﺑﺎﻻﯾﯽ از دﺳﺘﻮرات‬
‫ﻣﻮازي دﺳﺖ ﻣﯽﯾﺎﺑﻨﺪ‪ .‬ﺑﺮاي ﻣﺜﺎل ‪ TMS320C6000‬از ﻣﻌﻤﺎري دﺳﺘﻮرﻋﻤﻞ ﻫﺎي ﺧﯿﻠﯽ ﻃﻮﻻﻧﯽ )‪ (VLIW‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﺪ‬
‫ﮐﻪ ﻫﺸﺖ واﺣﺪ اﺟﺮاي ﺑﺮﻧﺎﻣﻪ را ﻓﺮاﻫﻢ ﻣﯽ ﮐﻨﺪ ﺗﺎ اﺟﺮاي ﭼﻬﺎر ﺗﺎ ﻫﺸﺖ دﺳﺘﻮرﻋﻤﻞ در ﻫﺮ ﺳﯿﮑﻞ ﺳﺎﻋﺖ ﻣﯿﺴﺮ ﺷﻮد‪ .‬اﯾﻦ‬
‫دﺳﺘﻮرﻋﻤﻞﻫﺎ ﻣﺤﺪودﯾﺖﻫﺎي اﻧﺪﮐﯽ را روي اﺳﺘﻔﺎده از رﺟﯿﺴﺘﺮﻫﺎ و ﻣﻮدﻫﺎي آدرس دﻫﯽ ﻣﯽﮔﺬارﻧﺪ ﺑﻨﺎﺑﺮاﯾﻦ ﺑﻬﺮه وري ﮐﺎﻣﭙﺎﯾﻠﺮ‬
‫‪ C‬را اﻓﺰاﯾﺶ ﻣﯽ دﻫﻨﺪ‪ .‬اﻣﺎ اﺷﮑﺎل اﺳﺘﻔﺎده از دﺳﺘﻮرﻋﻤﻞ ﻫﺎي ﺳﺎده اﯾﻦ اﺳﺖ ﮐﻪ ﭘﺮدازﻧﺪه ﻫﺎي ‪ VLIW‬ﺑﻪ دﺳﺘﻮرﻋﻤﻞﻫﺎي‬
‫ﺑﯿﺸﺘﺮي ﺑﺮاي اﻧﺠﺎم ﯾﮏ وﻇﯿﻔﻪ ﻧﯿﺎز دارﻧﺪ‪ ،‬ﺑﻨﺎﺑﺮاﯾﻦ ﺑﻪ ﺣﺎﻓﻈﻪ ﺑﺮﻧﺎﻣﻪ و ﻣﺼﺮف ﺗﻮان ﻧﺴﺒﺘﺎً ﺑﯿﺸﺘﺮي ﻧﯿﺎز دارﻧﺪ‪ .‬اﯾﻦ ﭘﺮدازﻧﺪهﻫﺎي‬
‫‪ DSP‬ﺑﺎ ﻋﻤﻠﮑﺮد ﺑﺎﻻﯾﯽ ﮐﻪ دارﻧﺪ ﻣﻌﻤﻮﻻً در ﺳﯿﺴﺘﻢ ﻫﺎي راداري و ﺗﺼﻮﯾﺮي ﭘﯿﺸﺮﻓﺘﻪ‪ ،‬زﯾﺮﺳﺎﺧﺖ ﻫﺎي ﻣﺨﺎﺑﺮات‪ ،‬اﯾﺴﺘﮕﺎه ﻫﺎي‬
‫اﺻﻠﯽ ﺑﯽ ﺳﯿﻢ و ﺳﯿﺴﺘﻢ ﻫﺎي ﮐﺪﯾﻨﮓ ﺗﺼﻮﯾﺮ ﺑﻼدرﻧﮓ ﺑﺎ ﮐﯿﻔﯿﺖ زﯾﺎد ﺑﻪ ﮐﺎر ﻣﯽ روﻧﺪ‪.‬‬
‫‪12‬‬ ‫ﻣﻘﺪﻣﻪ‪ :‬آﺷﻨﺎﯾﯽ ﺑﺎ ﭘﺮدازﻧﺪه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﻧﺴﺨﻪ ﺟﺪﯾﺪ ﭘﺮدازﻧﺪه ‪ DSP‬در دﻫﻪ دوم ﻗﺮن ﺟﺪﯾﺪ‪ ،‬ﺳﺮي ‪ ) C66‬ﻣﺜﻼ ‪ (TMS320C6678‬ﻣﯽ ﺑﺎﺷﺪ‪ .‬اﯾﻦ ﭘﺮدازﻧﺪه‬
‫ﺷﺎﻣﻞ ‪ 8‬ﻫﺴﺘﻪ ﻣﻮازي ﻣﯽ ﺑﺎﺷﺪ ﮐﻪ ﻫﺮ ﻫﺴﺘﻪ داراي ﺳﺎﺧﺘﺎر ﻣﻮازي ﺑﺮاي اﺟﺮاي ﻫﻤﺰﻣﺎن ‪ 32‬دﺳﺘﻮر اﻟﻌﻤﻞ ﻣﯽ ﺑﺎﺷﺪ‪ .‬ﺑﺎ ﺳﺮﻋﺖ‬
‫ﺑﯿﺸﺘﺮ از ‪ 1/2‬ﮔﯿﮕﺎ ﻫﺮﺗﺰ ﺑﻪ ازاي ﻫﺮ ﻫﺴﺘﻪ‪ ،‬اﯾﻦ ﭘﺮدازﻧﺪه ﻗﺎﺑﻠﯿﺖ ﭘﺮدازش ﺑﯿﺸﺘﺮ از ‪ 300‬ﮔﯿﮕﺎ دﺳﺘﻮر اﻟﻌﻤﻞ در ﺛﺎﻧﯿﻪ را دارد‪.‬‬

‫‪ (8‬ﻣﺎﺷﯿﻦ ﺑﺎ ﺑﺮﻧﺎﻣﻪ ذﺧﯿﺮه ﺷﺪه )‪:(Stored Program Machines‬‬

‫ﮐﺎﻣﭙﯿﻮﺗﺮﻫﺎ ﺑﺮاي ﮐﺎر ﮐﺮدن‪ ،‬ﺑﻪ دﺳﺘﻮر ﻋﻤﻞ )‪ (instruction‬ﻧﯿﺎز دارﻧﺪ‪ .‬در ﻫﺮ ﺳﯿﮑﻞ ﺳﺎﻋﺖ ﺑﺎﯾﺪ ﺑﻪ آن ﻫﺎ ﮔﻔﺘﻪ ﺷﻮد ﮐﻪ‬
‫ﭼﻪ ﮐﺎري را اﻧﺠﺎم دﻫﻨﺪ‪ .‬اﮔﺮ دﺳﺘﻮرات ذﺧﯿﺮه ﺷﺪه ﺑﺎﺷﻨﺪ‪ ،‬ﮐﺎﻣﭙﯿﻮﺗﺮﻫﺎ ﻓﻘﻂ ﺑﺎﯾﺪ آنﻫﺎ را واﮐﺸﯽ )‪ (fetch‬و اﺟﺮا ﮐﻨﻨﺪ‪.‬‬
‫ﭼﻨﯿﻦ ﮐﺎﻣﭙﯿﻮﺗﺮﻫﺎﯾﯽ ‪ Stored Program Machines‬ﻧﺎﻣﯿﺪه ﻣﯽ ﺷﻮﻧﺪ‪ .‬ﺑﻪ ﻋﻨﻮان ﻧﻤﻮﻧﻪ ﮐﺎﻣﭙﯿﻮﺗﺮ ﻣﺎ اﺑﺘﺪا ﯾﮏ دﺳﺘﻮر ﻋﻤﻞ و‬
‫ﺳﭙﺲ داده را واﮐﺸﯽ ﻣﯽ ﮐﻨﺪ‪ ،‬روي داده ﻋﻤﻠﯿﺎت ﻣﻮرد ﻧﻈﺮ را اﻧﺠﺎم ﻣﯽدﻫﺪ و ﻧﺘﯿﺠﻪ ﻋﻤﻠﯿﺎت را ﺑﺮاي ذﺧﯿﺮه ﺷﺪن ﺑﺮ ﻣﯽ‪-‬‬
‫‪von Neuman‬‬ ‫ﮔﺮداﻧﺪ‪ Stored Program Machines .‬از دو ﻧﻮع ﻣﻌﻤﺎري ﮐﺎﻣﭙﯿﻮﺗﺮ ﺷﻨﺎﺧﺘﻪ ﺷﺪه و ﭘﺮ ﮐﺎرﺑﺮد ﺑﻪ ﻧﺎمﻫﺎي‬
‫و ‪ Harvard‬اﺳﺘﻔﺎده ﻣﯽﮐﻨﻨﺪ‪ .‬ﺗﺼﻮﯾﺮ زﯾﺮ‪ ،‬ﺳﺎﺧﺘﺎر اﯾﻦ دو ﻣﻌﻤﺎري را ﻧﺸﺎن ﻣﯽ دﻫﺪ‪.‬‬

‫ﺷﮑﻞ ‪ 3‬ﻣﻌﻤﺎري ون ﻧﯿﻮﻣﻦ و ﻫﺎروارد‬


‫‪ (1-8‬ﻣﻌﻤﺎري ‪:von Neuman‬‬
‫ﻣﺎﺷﯿﻦ ﻫﺎي ‪ von Neuman‬ﺑﺮﻧﺎﻣﻪ و داده را در ﯾﮏ ﺣﺎﻓﻈﻪ ذﺧﯿﺮه ﻣﯽ ﮐﻨﻨﺪ و ﯾﮏ دﺳﺘﻮر ﻋﻤﻞ ﺷﺎﻣﻞ ﻓﺮﻣﺎن ﻋﻤﻞ‬
‫)‪ (operation command‬و آدرس داده ﮐﻪ ﻋﻤﻠﯿﺎت روي آن اﻧﺠﺎم ﻣﯽﺷﻮد‪ ،‬ﻣﯽﺑﺎﺷﺪ‪ .‬در داﺧﻞ اﯾﻦ ﻣﺎﺷﯿﻦﻫﺎ دو واﺣﺪ‬
‫ﻋﻤﻠﯿﺎت اﺳﺎﺳﯽ ﺑﻪ ﻧﺎمﻫﺎي واﺣﺪ ﻣﺤﺎﺳﺒﻪ و ﻣﻨﻄﻖ )‪ (ALU‬و واﺣﺪ ورودي‪/‬ﺧﺮوﺟﯽ وﺟﻮد دارﻧﺪ‪ ALU .‬ﻋﻤﻠﯿﺎت اﺻﻠﯽ را از‬
‫ﻗﺒﯿﻞ ﺿﺮب‪ ،‬ﺟﻤﻊ‪ ،‬ﺗﻔﺮﯾﻖ و ‪ ...‬را اﻧﺠﺎم ﻣﯽ دﻫﺪ‪ .‬واﺣﺪ ورودي‪/‬ﺧﺮوﺟﯽ‪ ،‬وﻇﯿﻔﻪ ﮐﻨﺘﺮل ﺟﺮﯾﺎن داده ﺧﺮوﺟﯽ را ﺑﺮ ﻋﻬﺪه دارد‪.‬‬

‫‪ (2-8‬ﻣﻌﻤﺎري ‪:Harvard‬‬
‫ﺗﻔﺎوت ﻋﻤﺪه ﺑﯿﻦ ﻣﻌﻤﺎري ‪ Harvard‬و ﻣﻌﻤﺎري ‪ von Neuman‬اﯾﻦ اﺳﺖ ﮐﻪ در ﻣﻌﻤﺎري ‪ ،Harvard‬ﺣﺎﻓﻈﻪي ﺑﺮﻧﺎﻣﻪ و داده‬
‫ﻣﺴﯿﺮﻫﺎي ارﺳﺎل ﺟﺪاﮔﺎﻧﻪاي ﻫﺴﺘﻨﺪ‪ .‬اﯾﻦ ﻣﺎﺷﯿﻦ را ﻗﺎدر ﻣﯽ ﺳﺎزد ﺗﺎ دﺳﺘﻮر ﻋﻤﻞ ﻫﺎ و داده را ﺑﻪ ﻃﻮر ﻫﻤﺰﻣﺎن ارﺳﺎل ﮐﻨﺪ‪.‬‬
‫ﺑﻨﺎﺑﺮاﯾﻦ اﯾﻦ ﺳﺎﺧﺘﺎر ﮐﺎراﯾﯽ ﻣﺎﺷﯿﻦ را ﺧﯿﻠﯽ زﯾﺎد ﺑﻬﺒﻮد ﻣﯽورزد‪.‬‬
‫‪13‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫‪ (9‬ﺗﺎرﯾﺨﭽﻪ ﻣﻌﻤﺎري ‪ von Neuman‬و ‪:Harvard‬‬


‫ء‬
‫ﻣﻌﻤﺎري ‪ Harvard‬ﺗﻮﺳﻂ ‪ Howard Aiken‬در اواﺧﺮ ﺳﺎل ﻫﺎي ‪ 1930‬در داﻧﺸﮕﺎه ﻫﺎروارد ﺑﻪ وﺟﻮد آﻣﺪ و ﺑﻮﺳﯿﻠﻪ‬
‫‪Electronic Numerical‬‬ ‫‪ Harvard Mark‬در ﺳﺎل ‪ 1944‬ﻗﺎﺑﻞ اﺳﺘﻔﺎده ﺷﺪ‪ .‬داﻧﺸﮕﺎه ‪ Pennsylvania‬در ﺳﺎل ‪ 1946‬ﺑﺎ ﮔﺴﺘﺮش‬
‫)‪ Integrator and Calculator (ENIAC‬اﯾﻦ ﻣﻌﻤﺎري را دﻧﺒﺎل ﮐﺮد‪.‬‬
‫‪ John von Neuman‬ﮐﻪ ﯾﮏ رﯾﺎﺿﯽدان ﻣﺠﺎرﺳﺘﺎﻧﯽ ﺑﻮد‪ ،‬ﯾﮏ ﻣﻌﻤﺎري ﺳﺎدهﺗﺮ و ارزانﺗﺮ را ﭘﯿﺸﻨﻬﺎد داد ﮐﻪ از ﯾﮏ ﺣﺎﻓﻈﻪ‬
‫ﺑﺮاي ﺑﺮﻧﺎﻣﻪ و داده اﺳﺘﻔﺎده ﻣﯽﮐﺮد‪ .‬اﯾﻦ راه ﺣﻞ ﺳﺎده از آن زﻣﺎن ﺑﻪ ﺑﻌﺪ اﺳﺘﺎﻧﺪارد ﺷﺪ‪ .‬در ﺳﺎل ‪ 1951‬ﻣﺆﺳﺴﺴﻪ ﻣﻄﺎﻟﻌﺎت‬
‫ﭘﯿﺸﺮﻓﺘﻪ در ‪ Princeton‬اوﻟﯿﻦ ﻣﺎﺷﯿﻦ ‪ von Neuman‬را ﺳﺎﺧﺖ‪.‬‬

‫‪ (10‬ﮐﺪام ﻣﻌﻤﺎري ﺑﺮاي ‪ DSP‬ﻣﻨﺎﺳﺐ ﺗﺮ اﺳﺖ؟‬

‫ﮐﺎﻣﭙﯿﻮﺗﺮ ﻫﺎي ﺷﺨﺼﯽ راﯾﺞ ﻫﻤﻪ ﻣﻨﻈﻮره‪ ،‬از ﭘﺮدازش ﮔﺮﻫﺎﯾﯽ ﺑﺎ ﻣﻌﻤﺎري ‪ von Neuman‬اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﻨﺪ‪ ،‬در ﺣﺎﻟﯽ ﮐﻪ‬
‫ﻣﻌﻤﺎري ‪ Harvard‬ﺑﯿﺸﺘﺮ در ﻣﯿﮑﺮوﭘﺮوﺳﺴﻮرﻫﺎ ﺑﺎ ﮐﺎرﺑﺮد ﺧﺎص‪ ،‬ﺑﺮاي ﭘﺮدازش ﻫﻢ زﻣﺎن ) ‪ (real-time‬و ﮐﺎرﺑﺮد ﻫﺎي‬
‫ﺟﺎﺳﺎزي ﺷﺪه ) ‪ (embedded applications‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪.‬‬
‫‪ DSP‬ﻫﺎ ﻣﻌﻤﻮﻻً از ﻣﻌﻤﺎري ‪ Harvard‬اﺳﺘﻔﺎده ﻣﯽﮐﻨﻨﺪ‪ .‬اﺷﮑﺎل اﺳﺘﻔﺎده ار ﻣﻌﻤﺎري ‪ Harvard‬اﯾﻦ اﺳﺖ ﮐﻪ ﭼﻮن اﯾﻦ‬
‫ﻣﻌﻤﺎري از ﺣﺎﻓﻈﻪ ﺑﺮﻧﺎﻣﻪ و داده ﺟﺪاﮔﺎﻧﻪ اﺳﺘﻔﺎده ﻣﯽﮐﻨﺪ‪ ،‬ﺑﻪ دو ﺑﺮاﺑﺮ ﭘﯿﻦ آدرس و داده روي ﭼﯿﭗ و دو ﺑﺮاﺑﺮ ﺣﺎﻓﻈﻪ ﺧﺎرﺟﯽ‬
‫ﻧﯿﺎز دارد‪ .‬ﻣﺘﺎﺳﻔﺎﻧﻪ ﺑﺎ اﻓﺰاﯾﺶ ﺗﻌﺪاد ﭘﯿﻦ ﻫﺎ ﯾﺎ ﭼﯿﭗ ﻫﺎ‪ ،‬ﻗﯿﻤﺖ ﻧﯿﺰ اﻓﺰاﯾﺶ ﭘﯿﺪا ﻣﯽ ﮐﻨﺪ‪ .‬ﻃﺮاﺣﺎن اﻟﮑﺘﺮوﻧﯿﮑﯽ ﮐﻪ ﺑﺎ اﯾﻦ ﻣﺸﮑﻞ‬
‫روﺑﺮو ﺑﻮدﻧﺪ‪ ،‬ﯾﮏ راه ﺣﻞ ﻫﻮﺷﻤﻨﺪاﻧﻪ اﺑﺪاع ﮐﺮدﻧﺪ ‪ :‬از ﯾﮏ ﺑﺎس داده و آدرس ﺧﺎرﺟﯽ و از دو ﯾﺎ ﭼﻨﺪ ﺑﺎس ﺟﺪاﮔﺎﻧﻪ ﺑﺮﻧﺎﻣﻪ و‬
‫داده داﺧﻠﯽ اﺳﺘﻔﺎده ﺷﻮد‪ .‬در ﯾﮏ ﺳﯿﮑﻞ ﺳﺎﻋﺖ اﻃﻼﻋﺎت ﺑﺮﻧﺎﻣﻪ روي ﭘﯿﻦ ﻫﺎ ﺟﺎري ﻣﯽﺷﻮد و در ﺳﯿﮑﻞ ﺑﻌﺪي داده روي ﻫﻤﺎن‬
‫ﭘﯿﻦ ﻫﺎ ﺟﺮﯾﺎن ﻣﯽﯾﺎﺑﺪ‪ .‬ﺳﭙﺲ اﻃﻼﻋﺎت ﺑﺮﻧﺎﻣﻪ وداده ﺑﻪ ﺑﺎس داﺧﻠﯽ ﺟﺪا ﺑﺮﻧﺎﻣﻪ و داده رواﻧﻪ ﻣﯽﺷﻮﻧﺪ‪ .‬ﭼﻨﯿﻦ ﻣﺎﺷﯿﻦ ﻫﺎﯾﯽ‬
‫ﻣﻌﻤﺎري ﻫﺎروارد اﺻﻼح ﺷﺪه ﻧﺎﻣﯿﺪه ﻣﯽﺷﻮﻧﺪ‪ .‬ﭼﻮن ﻣﻌﻤﺎري داﺧﻠﯽ آن ﻫﺎرواد و ﻣﻌﻤﺎري ﺧﺎرﺟﯽ آن ‪ von Neuman‬اﺳﺖ‪.‬‬
‫ﻋﻤﻠﮑﺮد ﻣﻌﻤﺎري ﻫﺎروارد اﺻﻼح ﺷﺪه ﺑﻪ ﺧﻮﺑﯽ ﻋﻤﻠﮑﺮد ﻣﻌﻤﺎري ﻫﺎروارد ﻣﯽ ﺑﺎﺷﺪ‪.‬‬

‫‪ (11‬اﺟﺰاي ﯾﮏ ﺳﯿﺴﺘﻢ ‪ DSP‬راﯾﺞ‪:‬‬

‫ﺳﯿﺴﺘﻢ ﻫﺎي ‪ DSP‬راﯾﺞ ﺷﺎﻣﻞ ﺗﺮاﺷﻪ ‪ ،DSP‬ﺣﺎﻓﻈﻪ‪ ،‬اﺣﺘﻤﺎﻻً ﯾﮏ ﻣﺒﺪل آﻧﺎﻟﻮگ ﺑﻪ دﯾﺠﯿﺘﺎل )‪ ، (ADC‬ﯾﮏ ﻣﺒﺪل‬
‫دﯾﺠﯿﺘﺎل ﺑﻪ آﻧﺎﻟﻮگ )‪ (DAC‬و ﮐﺎﻧﺎل ﻫﺎي ارﺗﺒﺎﻃﯽ ﻣﯽ ﺑﺎﺷﺪ‪.‬‬

‫‪ (1-11‬ﺗﺮاﺷﻪ ‪:DSP‬‬
‫ﺗﻌﺪادي از اﺟﺰاي ﺳﺨﺖ اﻓﺰاري ﮐﻪ در ﺑﯿﺸﺘﺮ ‪ DSP‬ﻫﺎ ﻣﺸﺘﺮك ﻫﺴﺘﻨﺪ ﻋﺒﺎرﺗﻨﺪ از ‪:‬‬
‫واﺣﺪ ﻣﺤﺎﺳﺒﻪ ﻣﺮﮐﺰي ) ‪:(Central Arithmetic Unit‬‬ ‫·‬

‫اﯾﻦ ﻗﺴﻤﺖ از ‪ DSP‬وﻇﯿﻔﻪ ﻣﺤﺎﺳﺒﺎت اﺻﻠﯽ از ﻗﺒﯿﻞ ﺿﺮب و ﺟﻤﻊ را ﺑﺮ ﻋﻬﺪه دارد‪ .‬اﯾﻦ ﻫﻤﺎن ﻗﺴﻤﺘﯽ اﺳﺖ ﮐﻪ ‪DSP‬‬
‫را ﻧﺴﺒﺖ ﺑﻪ ﭘﺮدازﺷﮕﺮﻫﺎي ﺳﻨﺘﯽ ﺳﺮﯾﻊﺗﺮ ﻣﯽﺳﺎزد‪.‬‬
‫واﺣﺪ ﻣﺤﺎﺳﺒﺎت ﮐﻤﮑﯽ )‪:(Auxiliary Arithmetic Unit‬‬ ‫·‬
‫‪14‬‬ ‫ﻣﻘﺪﻣﻪ‪ :‬آﺷﻨﺎﯾﯽ ﺑﺎ ﭘﺮدازﻧﺪه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫‪ DSP‬ﻫﺎ اﻏﻠﺐ ﯾﮏ واﺣﺪ ﻣﺤﺎﺳﺒﻪ ﮐﻤﮑﯽ دارﻧﺪ ﮐﻪ ﻣﺤﺎﺳﺒﻪ اﺷﺎرهﮔﺮ‪ ،‬ﻣﺤﺎﺳﺒﺎت رﯾﺎﺿﯽ ﯾﺎ ﻋﻤﻠﯿﺎت ﻣﻨﻄﻘﯽ را ﺑﻪ‬
‫ﻣﻮازات واﺣﺪ ﻣﺤﺎﺳﺒﻪ ﻣﺮﮐﺰي اﻧﺠﺎم ﻣﯽدﻫﺪ‪.‬‬
‫درﮔﺎه ﺳﺮي)‪:(Serial Ports‬‬ ‫·‬
‫‪ DSP‬ﻫﺎ ﻣﻌﻤﻮﻻً ﺑﺮاي ارﺗﺒﺎط ﺳﺮﯾﻊ ﺑﺎ دﯾﮕﺮ ‪ DSP‬ﻫﺎ و ﻣﺒﺪل ﻫﺎي داده داراي ﭘﻮرت ﻫﺎي ﺳﺮي داﺧﻠﯽ ﻣﯽ ﺑﺎﺷﻨﺪ‪ .‬اﯾﻦ‬
‫ﭘﻮرت ﻫﺎي ﺳﺮي ﺑﺮاي اﻓﺰاﯾﺶ ﻋﻤﻠﮑﺮد‪ ،‬ﮐﺎﻫﺶ ﻣﺸﮑﻼت ﻣﺮﺑﻮط ﺑﻪ دﯾﮑﺪ ﮐﺮدن آدرس ﺧﺎرﺟﯽ و ﮐﺎﻫﺶ ﻫﺰﯾﻨﻪ ﻫﺎ‪ ،‬ﻣﺴﻘﯿﻤﺎً ﺑﻪ‬
‫ﺑﺎس ﻫﺎي داﺧﻠﯽ وﺻﻞ ﻣﯽ ﺷﻮﻧﺪ‪.‬‬
‫ﺣﺎﻓﻈﻪ‪:‬‬ ‫·‬
‫ﺣﺎﻓﻈﻪ‪ ،‬داده و دﺳﺘﻮر ﻋﻤﻞ ﻫﺎ را ﺑﺮاي ‪ DSP‬ﻫﺎ ﻧﮕﻪ ﻣﯽدارد و ﯾﮏ ﻗﺴﻤﺖ ﺿﺮوري ﺑﺮاي ﻫﺮ ﺳﯿﺴﺘﻢ ‪ DSP‬ﻣﯽﺑﺎﺷﺪ‪.‬‬
‫ﮔﺮ ﭼﻪ ‪ DSP‬ﻫﺎ ﻣﺎﺷﯿﻦﻫﺎي ﻫﻮﺷﻤﻨﺪي ﻫﺴﺘﻨﺪ‪ ،‬ﻫﻨﻮز ﻫﻢ ﺑﺎﯾﺪ ﺑﻪ آنﻫﺎ ﮔﻔﺘﻪ ﺷﻮد ﮐﻪ ﭼﻪ ﮐﺎري را اﻧﺠﺎم دﻫﻨﺪ‪ .‬ﺣﺎﻓﻈﻪ ﻫﺎ‪ ،‬ﯾﮏ‬
‫ﺳﺮي از دﺳﺘﻮر ﻋﻤﻞ ﻫﺎ را ﮐﻪ ﺑﻪ ‪ DSP‬ﻣﯽﮔﻮﯾﻨﺪ ﭼﻪ ﻋﻤﻠﯽ را روي داده اﻧﺠﺎم دﻫﺪ‪ ،‬در ﺧﻮد ﻧﮕﻪ ﻣﯽدارﻧﺪ‪.‬‬
‫ﻣﺒﺪل ﻫﺎي ‪ A/D‬و ‪: D/A‬‬ ‫·‬
‫ﻣﺒﺪلﻫﺎ ﻋﻤﻞ ﺗﺮﺟﻤﻪ را ﺑﺮاي ‪ DSP‬ﻫﺎ ﺑﺮ ﻋﻬﺪه دارﻧﺪ‪ .‬ﭼﻮن ‪ DSP‬ﻓﻘﻂ ﻣﯽ ﺗﻮاﻧﺪ روي داده دﯾﺠﯿﺘﺎﻟﯽ ﻋﻤﻞ ﮐﻨﺪ‪،‬‬
‫ﺳﯿﮕﻨﺎلﻫﺎي آﻧﺎ ﻟﻮگ ﺑﺎﯾﺪ ﺑﻪ ﺳﯿﮕﻨﺎل ﻫﺎي دﯾﺠﯿﺘﺎل ﺗﺒﺪﯾﻞ ﺷﻮﻧﺪ‪ .‬وﻗﺘﯽ ﮐﻪ ‪ DSP‬ﯾﮏ ﺧﺮوﺟﯽ را ﻓﺮاﻫﻢ ﻣﯽ ﮐﻨﺪ‪ ،‬ﻣﻤﮑﻦ اﺳﺖ‬
‫ﮐﻪ ﻻزم ﺷﻮد‪ ،‬آن ﺧﺮوﺟﯽ ﺑﺮاي درك ﺗﻮﺳﻂ ﺟﻬﺎن ﺑﯿﺮوﻧﯽ ﺑﻪ ﺳﯿﮕﻨﺎل آﻧﺎﻟﻮگ ﺗﺒﺪﯾﻞ ﺷﻮد‪.‬‬
‫درﮔﺎه ﻫﺎ ‪:‬‬ ‫·‬
‫ﭘﻮرت ﻫﺎي ارﺗﺒﺎﻃﯽ ﺑﺮاي ﯾﮏ ﺳﯿﺴﺘﻢ ‪ DSP‬ﺿﺮوري ﻫﺴﺘﻨﺪ‪ .‬اﻃﻼﻋﺎت اوﻟﯿﻪ درﯾﺎﻓﺖ و ﭘﺮدازش ﻣﯽﺷﻮﻧﺪ و ﺳﭙﺲ آن‬
‫اﻃﻼﻋﺎت ﺗﻮﺳﻂ اﯾﻦ ﭘﻮرت ﻫﺎ ﺑﻪ ﺟﻬﺎن ﺑﯿﺮوﻧﯽ ﻣﻨﺘﻘﻞ ﻣﯽﺷﻮﻧﺪ‪ .‬راﯾﺞﺗﺮﯾﻦ ﭘﻮرت ﻫﺎ‪ ،‬ﭘﻮرت ﻫﺎي ﺳﺮﯾﺎل و ﻣﻮازي ﻫﺴﺘﻨﺪ‪ .‬ﯾﮏ‬
‫ﭘﻮرت ﺳﺮﯾﺎل ﯾﮏ ﺟﺮﯾﺎن ﭘﺸﺖ ﺳﺮ ﻫﻢ از اﻃﻼﻋﺎت را درﯾﺎﻓﺖ ﻣﯽﮐﻨﺪ و آن را ﺑﻪ ﻓﺮﻣﺖ ﭘﺮوﺳﺴﻮر ﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﺪ‪ .‬ﻫﻨﮕﺎﻣﯽ ﮐﻪ‬
‫ﭘﺮوﺳﺴﻮر ﻣﯽ ﺧﻮاﻫﺪ داده ﺳﺮﯾﺎل را ﺑﻪ ﺧﺮوﺟﯽ ﺑﻔﺮﺳﺘﺪ‪ ،‬ﭘﻮرت ﺳﺮﯾﺎل دادهء ﭘﺮوﺳﺴﻮر را درﯾﺎﻓﺖ و ﺑﻪ ﯾﮏ ﺟﺮﯾﺎن ﺳﺮﯾﺎل‬
‫ﺗﺒﺪﯾﻞ ﻣﯽﮐﻨﺪ)ﻣﺎﻧﻨﺪ ارﺗﺒﺎط ﻣﻮدم در ﮐﺎﻣﭙﯿﻮﺗﺮ ﻫﺎي ﺷﺨﺼﯽ(‪ .‬ﯾﮏ ﭘﻮرت ﻣﻮازي ﻧﯿﺰ ﻫﻤﺎن ﮐﺎر را اﻧﺠﺎم ﻣﯽ دﻫﺪ‪ ،‬ﺑﺎ اﯾﻦ ﺗﻔﺎوت‬
‫ﮐﻪ ورودي و ﺧﺮوﺟﯽ ﺑﻪ ﻓﺮﻣﺖ ﻣﻮازي )ﻫﻢ زﻣﺎن( ﻫﺴﺘﻨﺪ )ﻣﺎﻧﻨﺪ ﭘﻮرت ﭘﺮﯾﻨﺘﺮ(‪.‬‬
‫‪15‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫‪DSP‬‬ ‫ﺷﮑﻞ ‪ 4‬اﺟﺰاي ﭘﺎﯾﻪ ﯾﮏ ﭘﺮدازﻧﺪه‬

‫‪ (12‬ﮐﺎرﺑﺮدﻫﺎي ﻋﻤﻠﯽ ﺳﯿﺴﺘﻢ ﻫﺎي ‪:DSP‬‬

‫از زﻣﺎن ﻣﻌﺮﻓﯽ ‪ DSP‬ﻫﺎ ﺑﻪ ﺑﺎزار‪ ،‬اﯾﻦ ﭘﺮدازﻧﺪهﻫﺎ ﮐﺎرﺑﺮدﻫﺎي ﻣﺘﻨﻮع و ﮔﺴﺘﺮدهاي ﭘﯿﺪا ﮐﺮدهاﻧﺪ‪ .‬از آن ﻫﺎ در ﺳﯿﺘﻢ ﻫﺎي‬
‫‪ HI-FI‬روزﻣﺮه و ﻫﻤﭽﻨﯿﻦ ﮐﺎرﺑﺮدﻫﺎي واﻗﻌﯿﺖ ﻣﺠﺎزي ﭘﯿﺸﺮﻓﺘﻪ)‪ (high-end virtual-reality‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮﻧﺪ‪ .‬ﺑﻪ ﻃﻮر‬
‫ﮐﻠﯽ‪ DSP ،‬ﯾﮏ ﺗﮑﻨﻮﻟﻮژي ﮔﺮان ﻧﯿﺴﺖ‪.‬‬
‫ﺗﻌﺪادي از ﺳﯿﺴﺘﻢ ﻫﺎي ‪ DSP‬ﻋﻤﻠﯽ ﻋﺒﺎرﺗﻨﺪ از‪:‬‬
‫ﺗﺠﻬﯿﺰات ‪Hi-Fi‬‬ ‫·‬
‫اﺳﺒﺎب ﺑﺎزي ﻫﺎ‬ ‫·‬
‫ﺗﻠﻔﻦ ﻫﺎي ﺗﺼﻮﯾﺮي‬ ‫·‬
‫ﻣﻮدم ﻫﺎ‬ ‫·‬
‫ﺳﯿﺴﺘﻢ ﻫﺎي ﺻﻮﺗﯽ‬ ‫·‬
‫ﺳﯿﺴﺘﻢ ﻫﺎي ﮔﺮاﻓﯿﮑﯽ ﺳﻪ ﺑﻌﺪي‬ ‫·‬
‫ﺳﯿﺴﺘﻢ ﻫﺎي ﭘﺮدازش ﺗﺼﻮﯾﺮ‬ ‫·‬
‫· ﺗﺠﻬﯿﺰات ‪) Hi-Fi‬دﺳﺘﮕﺎه ﻫﺎي ﻣﻮﺳﯿﻘﯽ(‪:‬‬
‫‪ DSP‬ﻫﺎ ﻫﻢ اﮐﻨﻮن در ﭘﺮدازﺷﮕﺮﻫﺎي ﺻﺪا‪ ،‬ﮐﻪ ﻣﯽﺗﻮاﻧﻨﺪ ﺻﺪاي ﺳﻪ ﺑﻌﺪي ﺗﻮﻟﯿﺪ ﮐﻨﻨﺪ ﯾﺎ ﺻﺪاي ﯾﮏ اﺗﺎق را ﻫﻤﭽﻮن ﯾﮏ‬
‫ﺗﺎﻻر ﺑﻬﺒﻮد ﺑﺨﺸﻨﺪ؛ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮﻧﺪ‪ .‬در ﻧﺘﯿﺠﻪ ﮐﯿﻔﯿﺖ ﺻﺪاي ﺳﯿﻨﻤﺎ‪ ،‬در ﯾﮏ ﺳﯿﺴﺘﻢ ﻣﻮﺳﯿﻘﯽ ﺧﺎﻧﮕﯽ وﺟﻮد دارد‪.‬‬
‫اﺳﺒﺎب ﺑﺎزي ﻫﺎ‪:‬‬ ‫·‬
‫اﻣﺮوزه ﺗﮑﻨﻮﻟﻮژي ‪ DSP‬در اﺳﺒﺎب ﺑﺎزي ﺑﭽﻪﻫﺎ ﮔﻨﺠﺎﻧﺪه ﺷﺪه اﺳﺖ‪ .‬اﺳﺒﺎب ﺑﺎزيﻫﺎي ﺳﺨﻨﮕﻮ وﺳﺎﯾﻠﯽ ﻣﻌﻤﻮﻟﯽ ﻫﺴﺘﻨﺪ‪.‬‬
‫ﺑﺮاي ﻣﺜﺎل‪ ،‬ﺑﺎ ﻓﺸﺮدن ﻋﮑﺲ ﯾﮏ ﺳﮓ‪ ،‬ﺑﭽﻪ ﻫﺎ ﻣﯽ ﺗﻮاﻧﻨﺪ ﺻﺪاي ﭘﺎرس آن را ﺑﺸﻨﻮﻧﺪ‪.‬‬
‫‪16‬‬ ‫ﻣﻘﺪﻣﻪ‪ :‬آﺷﻨﺎﯾﯽ ﺑﺎ ﭘﺮدازﻧﺪه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﺗﻠﻔﻦ ﺗﺼﻮﯾﺮي ‪:‬‬ ‫·‬


‫ﺗﻠﻔﻦ ﺗﺼﻮﯾﺮي روي ﻫﻤﻪ ﺟﻨﺒﻪﻫﺎي زﻧﺪﮔﯽ ﻣﺮدم ﺗﺄﺛﯿﺮ ﺧﻮاﻫﺪ ﮔﺬاﺷﺖ‪ .‬ﮐﯿﻔﯿﺖ آنﻫﺎ ﺑﻪ ﺳﺮﻋﺖ ﺑﻬﺒﻮد ﻣﯽ ﯾﺎﺑﺪ‪ .‬ﺑﺎ ﮔﺬﺷﺖ‬
‫زﻣﺎن ﻗﯿﻤﺖﻫﺎ ﮐﺎﻫﺶ ﻣﯽ ﯾﺎﺑﺪ و از آن ﻫﺎ ﺑﻪ ﻃﻮر ﮔﺴﺘﺮده اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬از ‪ DSP‬ﻫﺎ ﺑﺮاي ﻓﺸﺮده ﺳﺎزي و از ﺣﺎﻟﺖ ﻓﺸﺮده‬
‫در آوردن ﺗﺼﻮﯾﺮ در ﺗﻠﻔﻦ ﻫﺎي ﺗﺼﻮﯾﺮي اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد‪ .‬ﭼﻨﺪﯾﻦ اﺳﺘﺎﻧﺪارد ﺑﯿﻦ اﻟﻤﻠﻠﯽ ﺑﺮاي ﻓﺸﺮده ﺳﺎزي ﺗﺼﻮﯾﺮ ﻣﺘﺤﺮك‬
‫وﺟﻮد دارد‪ DSP .‬ﻫﺎي ﻗﺎﺑﻞ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ‪ ،‬راه ﺣﻞ ﮐﺎﻣﻠﯽ ﺑﺮاي ﺗﻮﺳﻌﻪ ي اﯾﻦ اﺳﺘﺎﻧﺪارد ﻫﺎ ﻫﺴﺘﻨﺪ ﭼﻮن ﻣﻤﮑﻦ اﺳﺖ ﮐﻪ ﻓﻘﻂ‬
‫ﺑﻪ‪ ،‬ﺑﺮوز رﺳﺎﻧﯽ ﻧﺮم اﻓﺰاري ﻧﯿﺎزﻣﻨﺪ ﺑﺎﺷﻨﺪ‪.‬‬
‫ﻣﻮدم ﻫﺎ‪:‬‬ ‫·‬
‫ﻫﻤﺎن ﻃﻮر ﮐﻪ اﯾﻨﺘﺮﻧﺖ ﺑﻪ رﺷﺪ ﮐﺮدن اداﻣﻪ ﻣﯽدﻫﺪ‪ ،‬اﺳﺘﻔﺎده از ﻣﻮدم ﻫﺎ ﻧﯿﺰ اﻓﺰاﯾﺶ ﻣﯽﯾﺎﺑﺪ‪ .‬ﺑﺮاي اﯾﻦ ﮐﻪ ﻣﻮدم ﻫﺎ ﺑﺘﻮاﻧﻨﺪ‬
‫ﻇﺮﻓﯿﺖ رو ﺑﻪ اﻓﺰاﯾﺶ ارﺗﺒﺎﻃﺎت را ﻣﺪﯾﺮﯾﺖ ﮐﻨﻨﺪ‪ ،‬ﺑﺎﯾﺪ ﺳﺮﯾﻊﺗﺮ و ﮐﺎراﺗﺮ ﺷﻮﻧﺪ‪ DSP .‬ﻫﺎ وﻇﺎﯾﻒ اﺳﺎﺳﯽ از ﻗﺒﯿﻞ ﻣﻮدوﻟﻪ ﮐﺮدن‬
‫رﺷﺘﻪ ﺑﯿﺖ دﯾﺠﯿﺘﺎﻟﯽ‪ ،‬ﺑﻪ ﺳﯿﮕﻨﺎﻟﯽ ﺳﺎزﮔﺎر ﺑﺎ ﺧﻂ ﺗﻠﻔﻦ‪ ،‬ﺣﺬف ﮐﺮدن اﻧﻌﮑﺎس ﺻﺪاي ﺧﻂ و ﻓﺸﺮده ﮐﺮدن و از ﺣﺎﻟﺖ ﻓﺸﺮده در‬
‫آوردن داده را در ﻣﻮدم ﻫﺎ اﻧﺠﺎم ﻣﯽ دﻫﻨﺪ‪.‬‬

‫ﺳﯿﺴﺘﻢ ﻫﺎي ﺗﻠﻔﻨﯽ‪:‬‬ ‫·‬


‫اﻣﺮوزه‪ ،‬زﻧﮓ زدن ﺑﻪ ﯾﮏ ﺷﺮﮐﺖ و ﺻﺤﺒﺖ ﮐﺮدن ﺑﺎ ﯾﮏ ﻣﺎﺷﯿﻦ ﮐﻪ اﻧﺘﺨﺎب ﻫﺎﯾﯽ از ﻗﺒﯿﻞ "ﺑﺮاي ﺧﺮﯾﺪ ﮐﺮدن ‪ 1‬ﺑﮕﻮ" ‪،‬‬
‫"ﺑﺮاي ﭘﺸﺘﯿﺒﺎﻧﯽ ﻓﻨﯽ ‪ 2‬ﺑﮕﻮ" و ‪ ...‬را در اﺧﺘﯿﺎر ﺷﻤﺎ ﻗﺮار ﻣﯽ دﻫﺪ ﮐﺎﻣﻼً ﻋﺎدي اﺳﺖ‪ .‬اﯾﻦ ﺳﯿﺴﺘﻢ ﻫﺎي ﺗﻠﻔﻨﯽ از ‪ DSP‬ﻫﺎ ﺑﺮاي‬
‫ﺗﺸﺨﯿﺺ ﺻﺪا اﺳﺘﻔﺎده ﻣﯽﮐﻨﻨﺪ‪ .‬ﻫﻤﭽﻨﯿﻦ ‪ DSP‬ﻫﺎ ﻣﻌﻤﻮﻻً در ﺻﻨﻌﺖ ﻣﺨﺎﺑﺮات ﺑﺮاي وﯾﮋﮔﯽﻫﺎي اﺿﺎﻓﯽ اي ﮐﻪ ﺷﻤﺎ ﻣﯽﺗﻮاﻧﯿﺪ از‬
‫ﻣﺨﺎﺑﺮات ﺑﮕﯿﺮﯾﺪ‪ ،‬از ﻗﺒﯿﻞ ﺷﻤﺎره ﺗﻤﺎس ﮔﯿﺮﻧﺪه‪ ،‬ﭘﯿﻐﺎم ﺻﻮﺗﯽ و ﺗﻤﺎس دوﺑﺎره اﺳﺘﻔﺎده ﻣﯽﺷﻮﻧﺪ‪.‬‬
‫ﺳﯿﺴﺘﻢ ﻫﺎي ﮔﺮاﻓﯿﮑﯽ ﺳﻪ ﺑﻌﺪي‪:‬‬ ‫·‬
‫ﺑﯿﺸﺘﺮ ﺷﺒﯿﻪ ﺳﺎزﻫﺎي ﭘﺮواز‪ ،‬ﺑﺮاي اﯾﻦ ﮐﻪ ﺑﻪ واﻗﻌﯿﺖ ﻧﺰدﯾﮏﺗﺮ ﺑﺎﺷﻨﺪ از ﺗﺼﺎوﯾﺮ ﻣﺘﺤﺮك ﺑﻼدرﻧﮓ ﺳﻪ ﺑﻌﺪي)‪3D real-‬‬
‫‪ (time graphics‬اﺳﺘﻔﺎده ﻣﯽﮐﻨﻨﺪ‪ .‬ﺑﺮاي ﻣﺤﺎﺳﺒﻪء ﺟﺰﺋﯿﺎت ﺿﺮوري در ﺳﻪ ﺑﻌﺪ و ‪ 30‬ﺑﺎر ﺗﮑﺮار آن در ﺛﺎﻧﯿﻪ‪ ،‬ﺑﻪ ﭘﺮدازﺷﮕﺮﻫﺎي‬
‫ﺑﺴﯿﺎر ﮐﺎرآﻣﺪ و ﻗﺪرﺗﻤﻨﺪ ﺗﯿﺎزﻣﻨﺪﻧﺪ‪ .‬ﻫﻢ اﮐﻨﻮن ‪DSP‬ﻫﺎ در ﮐﺎرﺑﺮد ﻫﺎي واﻗﻌﯿﺖ ﻣﺠﺎزي )‪ (virtual-reality‬ﺑﻪ ﺻﻮرت ﮔﺴﺘﺮده‬
‫اﺳﺘﻔﺎده ﻣﯽﺷﻮﻧﺪ‪.‬‬
‫ﺳﯿﺴﺘﻢ ﻫﺎي ﭘﺮدارش ﺗﺼﻮﯾﺮ‪:‬‬ ‫·‬
‫ﻫﻤﭽﻨﯿﻦ اﮐﻨﻮن اﺳﺘﻔﺎده از دورﺑﯿﻦﻫﺎي دﯾﺠﯿﺘﺎل ﮐﻮﭼﮏ اﻓﺰاﯾﺶ ﯾﺎﻓﺘﻪ اﺳﺖ‪DSP .‬ﻫﺎ ﺑﺮاي ﺗﺒﺪﯾﻞ وﻟﺘﺎژ آﻧﺎﻟﻮگ ﺗﺮاﺷﻪ‬
‫‪)(charge-coupled device)CCD‬وﯾﺪﺋﻮ( ﺑﻪ داده ﻓﺸﺮده ﮐﻪ ﻣﯽﺗﻮاﻧﺪ روي ﺣﺎﻓﻈﻪ داﺋﻤﯽ ‪ EEPROM‬ذﺧﯿﺮه ﺷﻮد‪،‬‬
‫اﺳﺘﻔﺎده ﻣﯽﺷﻮﻧﺪ‪ DSP .‬ﻫﻤﭽﻨﯿﻦ دﮔﻤﻪﻫﺎ را ﺗﺸﺨﯿﺺ ﻣﯽدﻫﺪ‪ ،‬زﻣﺎن ﻧﻮر دﻫﯽ را ﮐﻨﺘﺮل ﻣﯽ ﮐﻨﺪ‪ ،‬زﻣﺎن ﺑﻨﺪي ﮔﯿﺖ ‪ CCD‬را‬
‫ﺗﻨﻈﯿﻢ ﻣﯽ ﮐﻨﺪ و ﺗﺼﻮﯾﺮ را در ﮐﺎﻣﭙﯿﻮﺗﺮ ﺑﺎرﮔﺬاري ﻣﯽ ﮐﻨﺪ‪.‬‬
‫‪ DSP‬ﻫﺎ ﻫﻤﭽﻨﯿﻦ ﺑﻪ ﻃﻮر ﮔﺴﺘﺮده در ﭘﺮدازش ﺗﺼﻮﯾﺮ از ﻗﺒﯿﻞ ﺑﯿﻨﺎﯾﯽ روﺑﺎت‪ ،‬ﺑﯿﻨﺎﯾﯽ ﻣﺎﺷﯿﻦ‪ ،‬ﻓﺸﺮده ﺳﺎزي ﺗﺼﻮﯾﺮ و‬
‫ﺗﺸﺨﯿﺺ اﺛﺮ اﻧﮕﺸﺖ اﺳﺘﻔﺎده ﻣﯽﺷﻮﻧﺪ‪ .‬ﯾﮏ ﻣﺜﺎل ﺳﺎده از ﮐﺎرﺑﺮد ﭘﺮدازش ﺗﺼﻮﯾﺮ‪ ،‬ﻧﻈﺎرت ﺑﺮ ﺑﺮدﻫﺎي ﻣﺪار ﭼﺎﭘﯽ)‪ (PCB‬اﺳﺖ‪.‬‬
‫اﯾﻦ ﺳﯿﺴﺘﻢ ﺑﺎ ﺿﺒﻂ ﺗﺼﻮﯾﺮ ﯾﮏ ﺑﺮد ﺳﺎﻟﻢ و ﻣﻘﺎﯾﺴﻪ آن ﺑﺎ ﺑﺮدي ﮐﻪ ﺑﻪ ﺗﺎزﮔﯽ درﺳﺖ ﺷﺪه و در ﺣﺎل ﻋﺒﻮر از زﯾﺮ ﯾﮏ دورﺑﯿﻦ‬
‫‪17‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫‪ CCD‬اﺳﺖ‪ ،‬ﮐﺎر ﻣﯽ ﮐﻨﺪ‪ .‬اﯾﻦ ﺳﯿﺴﺘﻢ ﻫﺎ ﻫﻤﭽﻨﯿﻦ ﺑﺮاي ﻓﯿﻠﺘﺮ ﮐﺮدن دو ﺑﻌﺪي از ﺳﯿﮑﻞﻫﺎي ﺿﺮب و ﺟﻤﻊ ﮐﺎراﻣﺪ ‪DSP‬ﻫﺎ‪،‬‬
‫اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﻨﺪ‪.‬‬

‫‪ (13‬دﻟﯿﻞ ﺗﺒﺪﯾﻞ آﻧﺎﻟﻮگ ﺑﻪ دﯾﺠﯿﺘﺎل‪:‬‬


‫ﺑﻌﻀﯽ از ﮐﺎرﺑﺮدﻫﺎ ﺑﻪ ﻃﺮاﺣﯽ دﯾﺠﯿﺘﺎل و ﺑﻌﻀﯽ دﯾﮕﺮ ﺑﻪ ﻃﺮاﺣﯽ آﻧﺎﻟﻮگ ﻧﯿﺎز دارﻧﺪ‪ .‬ﺳﯿﮕﻨﺎلﻫﺎ ﺑﺮاي ﭘﺮدازش دﯾﺠﯿﺘﺎﻟﯽ ﺑﺎﯾﺪ‬
‫از آﻧﺎﻟﻮگ ﺑﻪ دﯾﺠﯿﺘﺎل ﺗﺒﺪﯾﻞ ﺷﻮﻧﺪ‪ .‬ﺑﻌﺪ از ﭘﺮدازش ﺳﯿﮕﻨﺎلﻫﺎ‪ ،‬ﺑﺎﯾﺪ دوﺑﺎره از ﻓﺮم آﻧﺎﻟﻮگ ﺑﻪ دﯾﺠﯿﺘﺎل ﺗﺒﺪﯾﻞ ﺷﻮﻧﺪ‪ .‬ﺑﺎ در ﻧﻈﺮ‬
‫ﮔﺮﻓﺘﻦ ﻣﻮارد ﺑﺎﻻ‪ ،‬ﭘﺮدازش دﯾﺠﯿﺘﺎﻟﯽ ﺑﺎﯾﺪ ﺑﺮﺗﺮي ﻫﺎي ﻣﺸﺨﺼﯽ داﺷﺘﻪ ﺑﺎﺷﺪ ﺷﺎﻣﻞ ﻣﻮارد زﯾﺮ ﻣﯽ ﺷﻮد‪:‬‬
‫ﻗﺎﺑﻠﯿﺖ ﺑﺮﻧﺎﻣﻪ ﭘﺬﯾﺮي‬ ‫·‬
‫ﭘﺎﯾﺪاري‬ ‫·‬
‫ﺗﮑﺮار ﭘﺬﯾﺮي‬ ‫·‬
‫ﮐﺎرﺑﺮد ﻫﺎي ﺧﺎص‬ ‫·‬
‫ﻗﺎﺑﻠﯿﺖ ﺑﺮﻧﺎﻣﻪ ﭘﺬﯾﺮي‪:‬‬ ‫·‬
‫ﯾﮏ ﺳﺨﺖ اﻓﺰار ‪ DSP‬دﯾﺠﯿﺘﺎﻟﯽ ﻣﯽﺗﻮاﻧﺪ ﮐﺎرﻫﺎي ﻣﺨﺘﻠﻔﯽ را اﻧﺠﺎم دﻫﺪ‪ .‬ﺑﺮاي ﻣﺜﺎل ﯾﮏ ﮐﺎﻣﭙﯿﻮﺗﺮ ﺷﺨﺼﯽ‪ ،‬ﺑﺎ ﻧﺼﺐ ﻧﺮم‬
‫اﻓﺰارﻫﺎي ﻣﻨﺎﺳﺐ‪ ،‬ﻣﯽ ﺗﻮاﻧﺪ ﻣﻮﺳﯿﻘﯽ ﭘﺨﺶ ﮐﻨﺪ و ﯾﺎ ﺑﻪ ﻋﻨﻮان ﯾﮏ وﯾﺮاﯾﺸﮕﺮ ﻣﺘﻦ اﺳﺘﻔﺎده ﺷﻮد‪ .‬ﺗﻮاﻧﺎﯾﯽ اﺳﺘﻔﺎده از ﺳﺨﺖ اﻓﺰار‬
‫ﯾﮑﺴﺎن ﺑﺮاي اﻧﺠﺎم ﮐﺎرﺑﺮد ﻫﺎي ﻣﺨﺘﻠﻒ‪ ،‬اﻧﻌﻄﺎف ﭘﺬﯾﺮى ﺑﺴﯿﺎري را ﻓﺮاﻫﻢ ﻣﯽ آورد‪ .‬ﺷﻤﺎ ﻣﯽ ﺗﻮاﻧﯿﺪ ﻫﺮ ﻋﻤﻞ ﺗﺎزه اي را ﮐﻪ ﺑﻪ‬
‫ﻓﮑﺮﺗﺎن ﻣﯽرﺳﺪ‪ ،‬ﺑﻪ ﺷﺮط اﯾﻦ ﮐﻪ ﺑﺘﻮاﻧﯿﺪ ﺑﺮﻧﺎﻣﻪ اي ﺑﺮاي آن ﺑﻨﻮﯾﺴﯿﺪ‪ ،‬ﭘﯿﺎده ﺳﺎزي ﮐﻨﯿﺪ‪.‬‬
‫ﻗﺎﺑﻠﯿﺖ ﺑﻪ روز رﺳﺎﻧﯽ‪:‬‬ ‫·‬
‫زﻣﺎﻧﯽ ﮐﻪ ﺷﻤﺎ ﺳﯿﺴﺘﻤﯽ را ﻃﺮاﺣﯽ و ﭘﯿﺎده ﺳﺎزي ﮔﺮدﯾﺪ ﻣﻤﮑﻦ اﺳﺖ ﮐﻪ ﺑﺨﻮاﻫﯿﺪ آن را ﺑﻬﺒﻮد ﺑﺨﺸﯿﺪ و ﯾﺎ وﻇﺎﯾﻒ‬
‫ﺟﺪﯾﺪي را ﺑﻪ آن اﺿﺎﻓﻪ ﮐﻨﯿﺪ‪ .‬ﺷﺎﯾﺪ ﺷﻤﺎ ﺑﺨﻮاﻫﯿﺪ ﺳﯿﺴﺘﻢ ﺧﻮد را ﺑﺎ ﻣﺤﯿﻂ ﺟﺪﯾﺪ ﺳﺎزﮔﺎر ﺳﺎزﯾﺪ‪ .‬ﯾﻌﻨﯽ در ﯾﮏ ﺳﯿﺴﺘﻢ دﯾﺠﯿﺘﺎﻟﯽ‪،‬‬
‫ﺷﻤﺎ ﺑﺎﯾﺪ ﮐﺪ ﻫﺎي ﺧﻮد را اﺻﻼح ﮐﻨﯿﺪ‪ .‬اﻣﺎ در ﯾﮏ ﺳﯿﺴﺘﻢ آﻧﺎﻟﻮگ ﺷﻤﺎ ﺑﺎﯾﺪ وﺳﺎﯾﻞ ﺟﺪﯾﺪي ﺧﺮﯾﺪاري و ﻟﺤﯿﻢ ﮐﺮده و ﯾﺎ ﺣﺘﯽ‬
‫آن را دوﺑﺎره ﻃﺮاﺣﯽ ﮐﻨﯿﺪ‪.‬‬
‫ﻗﺎﺑﻠﯿﺖ اﻧﻌﻄﺎف ﭘﺬﯾﺮي‪:‬‬ ‫·‬
‫ﺑﻪ ﺳﺎدﮔﯽ ﻣﯽ ﺗﻮان ﺑﺎ رﯾﺨﺘﻦ ﺑﺮﻧﺎﻣﻪ ﻫﺎي ﺟﺪﯾﺪ در داﺧﻞ ﯾﮏ ﺑﺮد ‪ ،DSP‬ﮐﺎرﻫﺎي ﻣﺨﺘﻠﻔﯽ اﻧﺠﺎم داد‪ .‬ﺑﺮاي ﻣﺜﺎل ﻣﯽ ﺗﻮان‬
‫از ﯾﮏ ﺑﺮد ‪ (DSP Starter Kit) DSK‬ﺑﻪ ﻋﻨﻮان ﻣﻮﻟﺪ ﺗﻮن ﻣﻮﺳﯿﻘﯽ و ﯾﺎ ﺑﻪ ﻋﻨﻮان ﯾﮏ ﻓﯿﻠﺘﺮ ﭘﺎﯾﯿﻦ ﮔﺬر اﺳﺘﻔﺎده ﮐﺮد‪ .‬اﯾﻦ‬
‫اﻧﻌﻄﺎف ﭘﺬﯾﺮي زﻣﺎن ﻃﺮاﺣﯽ و ﭘﯿﭽﯿﺪﮔﯽ را ﮐﺎﻫﺶ ﻣﯽ دﻫﺪ‪ .‬اﻣﺎ در ﻣﺪارﻫﺎي آﻧﺎﻟﻮگ‪ ،‬ﺑﺮاي اﻧﺠﺎم ﻫﺮ ﻋﻤﻞ ﺟﺪﯾﺪ ﺑﺎﯾﺪ ﯾﮏ ﻣﺪار‬
‫ﺟﺪﯾﺪ ﻃﺮاﺣﯽ ﺷﻮد‪.‬‬
‫· ﭘﺎﯾﺪاري‪:‬‬
‫ﭘﺎﯾﺪاري ﻣﺪارﻫﺎي آﻧﺎﻟﻮگ ﺑﻪ ﻋﻮاﻣﻞ ﻣﺨﺘﻠﻔﯽ ﺑﺴﺘﮕﯽ دارد‪ .‬دﻣﺎ و ﮔﺬﺷﺖ زﻣﺎن روي ﻣﺪارﻫﺎي آﻧﺎﻟﻮگ ﺗﺄﺛﯿﺮ ﻣﯽ ﮔﺬارﻧﺪ‪.‬‬
‫ﻫﻤﭽﻨﯿﻦ ﻣﺪارﻫﺎي آﻧﺎﻟﻮﮔﯽ ﮐﻪ داراي ﻃﺮاﺣﯽ و اﺟﺰاي ﯾﮑﺴﺎﻧﯽ ﻫﺴﺘﻨﺪ‪ ،‬ﻣﻤﮑﻦ اﺳﺖ در ﻋﻤﻠﮑﺮد ﻣﺘﻔﺎوت ﺑﺎﺷﻨﺪ‪.‬‬
‫دﻣﺎ‪:‬‬ ‫·‬
‫‪18‬‬ ‫ﻣﻘﺪﻣﻪ‪ :‬آﺷﻨﺎﯾﯽ ﺑﺎ ﭘﺮدازﻧﺪه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫دﻣﺎ‪ ،‬رﻃﻮﺑﺖ و ﮔﺬﺷﺖ زﻣﺎن روي ﻋﻨﺎﺻﺮ آﻧﺎﻟﻮگ از ﻗﺒﯿﻞ ﻣﻘﺎوﻣﺖ‪ ،‬ﺧﺎزن‪ ،‬دﯾﻮد و آپ‪-‬اﻣﭗ ﺗﺄﺛﯿﺮ ﻣﯽ ﮔﺬارﻧﺪ‪ .‬ﯾﮏ ﻣﺪار‬
‫آﻧﺎﻟﻮگ ﺣﺴﺎس ﺑﻪ دﻣﺎ ﺷﺎﯾﺪ ﻋﻤﻠﮑﺮد ﮐﺎﻣﻼً ﻣﺘﻔﺎوﺗﯽ در اﻧﮕﻠﯿﺲ ﻧﺴﺒﺖ ﺑﻪ ﻣﺼﺮ‪ ،‬ﮐﻪ دﻣﺎﯾﺸﺎن ﻣﺘﻔﺎوت ﻫﺴﺘﻨﺪ‪ ،‬داﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬اﯾﻦ‬
‫ﻣﯽ ﺗﻮاﻧﺪ ﺑﺮاي ﯾﮏ ﺷﺮﮐﺖ ﮐﻪ ﻣﺤﺼﻮﻻﺗﺶ را در ﺳﺮاﺳﺮ دﻧﯿﺎ ﺑﻪ ﻓﺮوش ﻣﯽ رﺳﺎﻧﺪ‪ ،‬ﻣﺸﮑﻞ آﻓﺮﯾﻦ ﺑﺎﺷﺪ‪.‬‬
‫ﺧﺼﻮﺻﯿﺎت ﻣﺪارﻫﺎي دﯾﺠﯿﺘﺎﻟﯽ ﺑﺎ زﻣﺎن‪ ،‬دﻣﺎ و رﻃﻮﺑﺖ ﺑﻪ ﺗﺪرﯾﺞ ﺗﻐﯿﯿﺮ ﻧﻤﯽ ﮐﻨﻨﺪ‪ .‬آن ﻫﺎ ﯾﺎ ﮐﺎر ﻣﯽ ﮐﻨﻨﺪ و ﯾﺎ ﻧﻤﯽ ﮐﻨﻨﺪ‪ .‬ﺑﻪ‬
‫ﺑﯿﺎن دﯾﮕﺮ‪ ،‬ﻣﺪارﻫﺎي دﯾﺠﯿﺘﺎﻟﯽ ﺑﻪ ﺷﺮط اﯾﻦ ﮐﻪ ﺑﺎ دﻗﺖ ﮐﺎﻓﯽ ﺑﺮاي ﮐﺎر ﮐﺮدن در ﻣﺤﺪودهء ﺷﺮاﯾﻂ ﻣﻮرد اﻧﺘﻈﺎر ﻃﺮاﺣﯽ ﺷﺪه‬
‫ﺑﺎﺷﻨﺪ‪ ،‬ﺗﮑﺮار ﭘﺬﯾﺮﻧﺪ‪.‬‬
‫ﺗﻠﺮاﻧﺲ‪:‬‬ ‫·‬
‫ﻗﻄﻌﺎﺗﯽ از ﻗﺒﯿﻞ ﻣﻘﺎوﻣﺖ و ﺧﺎزن داراي ﺗﻠﺮاﻧﺲ ﻫﺴﺘﻨﺪ‪ .‬اﮔﺮ ﺗﻠﺮاﻧﺲ ﻗﻄﻌﻪ اي ده درﺻﺪ ﺑﺎﺷﺪ‪ ،‬دو ﻣﺪار آﻧﺎﻟﻮگ ﻇﺎﻫﺮاً‬
‫ﻣﺸﺎﺑﻪ ﻣﻤﮑﻦ اﺳﺖ آن ﻗﺪر ﻣﺘﻔﺎوت ﺑﺎﺷﻨﺪ ﮐﻪ ﺑﺎﻋﺚ ﻣﺸﮑﻼت ﻋﻤﻠﯽ ﺷﻮﻧﺪ‪ .‬در ﻧﺘﯿﺠﻪ ﻃﺮاﺣﯽ‪ ،‬ﺗﻮﻟﯿﺪ و ﭘﺸﺘﯿﺒﺎﻧﯽ از ﻣﺪارﻫﺎي‬
‫آﻧﺎﻟﻮگ ﮔﺮان ﺗﻤﺎم ﻣﯽ ﺷﻮد‪.‬‬
‫ﺗﮑﺮار ﭘﺬﯾﺮي دﯾﺠﯿﺘﺎل‪:‬‬ ‫·‬
‫ء‬
‫ﯾﮏ ﻣﺪار دﯾﺠﯿﺘﺎل ﮐﻪ ﺑﻪ درﺳﺘﯽ ﻃﺮاﺣﯽ ﺷﺪه ﺑﺎﺷﺪ‪ ،‬ﻫﻤﯿﺸﻪ ﻧﺘﯿﺠﻪ ﯾﮑﺴﺎﻧﯽ ﺗﻮﻟﯿﺪ ﻣﯽ ﮐﻨﺪ و در ﺗﻤﺎم ﻧﻤﻮﻧﻪ ﻫﺎ ﯾﮑﺴﺎن‬
‫اﺳﺖ‪ .‬ﺑﺮاي ﻣﺜﺎل اﮔﺮ‪ ،‬ﻋﻤﻞ ﺿﺮﺑﯽ روي ‪ 500‬ﮐﺎﻣﭙﯿﻮﺗﺮ اﺟﺮا ﺷﻮد‪ ،‬ﻧﺘﯿﺠﻪ در ﻫﻤﻪ ي آن ﻫﺎ ﯾﮑﺴﺎن ﺧﻮاﻫﺪ ﺑﻮد‪ .‬ﺧﻄﺎي ﻗﻄﻌﺎت‪،‬‬
‫ﮔﺬﺷﺖ زﻣﺎن و دﻣﺎ روي ﻣﺪارﻫﺎي دﯾﺠﯿﺘﺎﻟﯽ ﺗﺄﺛﯿﺮ ﭼﻨﺪاﻧﯽ ﻧﻤﯽ ﮔﺬارد‪.‬‬
‫ﯾﮏ ﻣﺪار دﯾﺠﯿﺘﺎﻟﯽ ﮐﻪ ﺑﻪ درﺳﺘﯽ ﻃﺮاﺣﯽ ﺷﺪه ﺑﺎﺷﺪ‪ ،‬ﻧﺘﯿﺠﻪ ﯾﮑﺴﺎﻧﯽ را در اﻧﮕﻠﯿﺲ و ﻣﺼﺮ‪ ،‬ﺣﺘﯽ زﻣﺎﻧﯽ ﮐﻪ دﻣﺎ ﻣﺘﻔﺎوت‬
‫ﺑﺎﺷﺪ‪ ،‬ﺗﻮﻟﯿﺪ ﺧﻮاﻫﺪ ﮐﺮد‪ .‬ﺑﻪ ﺑﯿﺎن دﯾﮕﺮ‪ 500 ،‬ﻣﺪار آﻧﺎﻟﻮگ ﯾﮏ ﻣﺤﺪوده از ﻧﺘﺎﯾﺞ را ﺗﻮﻟﯿﺪ ﻣﯽ ﮐﻨﻨﺪ‪.‬‬
‫ء‬
‫ﺑﺮاي اﯾﻦ ﮐﻪ ﯾﮏ ﻣﺪار دﯾﺠﯿﺘﺎﻟﯽ ﺗﮑﺮارﭘﺬﯾﺮ ﺑﺎﺷﺪ‪ ،‬وﻟﺘﺎژ آﻧﺎﻟﻮﮔﯽ ﮐﻪ ﺑﯿﺎن ﮐﻨﻨﺪهء ﺻﻔﺮ و ﯾﮏ ﻣﻨﻄﻘﯽ اﺳﺖ ﺑﺎﯾﺪ ﺑﻪ اﻧﺪازه‬
‫ﮐﺎﻓﯽ از از وﻟﺘﺎژ آﺳﺘﺎﻧﻪ ﺑﺰرگ ﺗﺮ و ﯾﺎ ﮐﻮﭼﮏ ﺗﺮ ﺑﺎﺷﺪ ﺗﺎ ﺗﻐﯿﯿﺮات ﻣﺪاري و ﻧﻮﯾﺰ روي آن ﺗﺄﺛﯿﺮ ﻧﮕﺬارد‪ .‬ﺗﻨﻬﺎ ﭼﯿﺰي ﮐﻪ اﻫﻤﯿﺖ‬
‫دارد اﯾﻦ اﺳﺖ ﮐﻪ ﻣﺤﺪودﯾﺖ زﻣﺎﻧﺒﻨﺪي و ﺣﺪاﮐﺜﺮ ﻗﺪرت ﺗﻮان وﺳﯿﻠﻪ ﻧﺒﺎﯾﺪ ﻓﺮاﺗﺮ رود‪.‬‬
‫دﻗﺖ دﯾﺠﯿﺘﺎﻟﯽ ﺑﻪ وﺳﯿﻠﻪء ﺗﻌﺪاد ﺑﯿﺖ ﻫﺎﯾﯽ ﮐﻪ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮﻧﺪ‪ ،‬ﺗﻌﯿﯿﻦ ﻣﯽ ﮔﺮدد‪ .‬در ﻣﺪارﻫﺎي آﻧﺎﻟﻮگ ﺗﻌﺪاد ﺑﯿﺖ ﻫﺎ ﺑﻪ‬
‫ﻃﻮر ﻣﻮءﺛﺮ ﺑﯿﻨﻬﺎﯾﺖ ﻣﯽ ﺑﺎﺷﻨﺪ؛ اﻣﺎ اﺛﺮ ﻧﻮﯾﺰ‪ ،‬ﺧﻄﺎي ﻗﻄﻌﺎت و ﺧﻄﯽ ﺑﻮدن ﻣﯽ ﺗﻮاﻧﻨﺪ ﺑﻪ ﺳﺮﻋﺖ ﺑﺎﻋﺚ ﮐﺎﻫﺶ ﻋﻤﻠﮑﺮد ﺷﻮﻧﺪ‪.‬‬
‫ﯾﮏ دﺳﺘﮕﺎه ﭘﺨﺶ ‪ ،CD‬ﻣﯽ ﺗﻮاﻧﺪ ﻫﻤﺎن ﻣﻮﺳﯿﻘﯽ دﯾﺠﯿﺘﺎﻟﯽ ﺑﺎ ﮐﯿﻔﯿﺖ را ﺑﻪ ﻃﻮر ﻣﺮﺗﺐ ﭘﺨﺶ ﮐﻨﺪ و اﺻﻮﻻً ﺗﻨﻬﺎ ﺗﻮﺳﻂ‬
‫ﻗﻄﻌﺎت آﻧﺎﻟﻮﮔﯽ ﮐﻪ ﻫﻨﻮز ﻧﯿﺎزﻣﻨﺪﻧﺪ‪ ،‬ﻣﺤﺪود ﻣﯽ ﺷﻮد‪ .‬ﻗﻄﻌﺎت آﻧﺎﻟﻮگ در ﯾﮏ دﺳﺘﮕﺎه ﭘﺨﺶ ‪ CD‬ﺷﺎﻣﻞ ‪ ،DAC‬ﻟﯿﺰر‪ ،‬ﭘﯿﮑﺎب‬
‫ﻟﯿﺰر‪ ،‬ﻣﺤﺮك ﻫﺪ ﺧﻮان‪ ،‬ﻣﻮﺗﻮر و ﮔﻮﺷﯽ ﻣﯽ ﺷﻮﻧﺪ‪.‬‬
‫ﮐﺎراﯾﯽ‪:‬‬ ‫·‬
‫ﺑﻌﻀﯽ از وﻇﺎﯾﻒ ﺧﺎص ﺑﻪ ﻓﺮم دﯾﺠﯿﺘﺎل ﺑﻬﺘﺮ ﻗﺎﺑﻞ ﭘﯿﺎده ﺳﺎزي ﻫﺴﺘﻨﺪ‪ .‬ﻣﺎﻧﻨﺪ‪:‬‬
‫ﻓﺸﺮده ﺳﺎزي ﺑﺪون اﺗﻼف‬ ‫·‬
‫ﻓﯿﻠﺘﺮ ﻫﺎي ﺗﻄﺒﯿﻘﯽ‬ ‫·‬
‫‪19‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﻓﯿﻠﺘﺮ ﻫﺎ ﺑﺎ ﻓﺎز ﺧﻄﯽ‬ ‫·‬

‫ﻓﺸﺮده ﺳﺎزي‪:‬‬ ‫·‬


‫در وﺳﺎﯾﻞ ذﺧﯿﺮه ﺳﺎزي از ﻗﺒﯿﻞ ﻫﺎرد دﯾﺴﮏ و ﭘﯿﻮﻧﺪﻫﺎي ﻣﺨﺎﺑﺮه ﻣﺎﻫﻮاره اي ﺑﺮاي ﺗﻠﻔﻦ و وﯾﺪﺋﻮ‪ ،‬ﻣﻨﺎﺑﻊ از ﻧﻈﺮ اﻧﺪازه و‬
‫ﭘﻬﻨﺎي ﺑﺎﻧﺪ در دﺳﺘﺮس ﻣﺤﺪود ﻫﺴﺘﻨﺪ‪ .‬ﻧﺼﺐ ﺳﺨﺖ اﻓﺰار اﺿﺎﻓﯽ ﺑﻬﺘﺮ ﺧﻮاﻫﺪ ﺑﻮد اﻣﺎ ﮔﺮان ﺗﻤﺎم ﻣﯽ ﺷﻮد‪ .‬ﻓﺸﺮده ﺳﺎزي داده‬
‫ﯾﮏ اﺑﺰار ارزﺷﻤﻨﺪ اﺳﺖ ﮐﻪ ﺑﺎ اﺳﺘﻔﺎده از ﻣﻨﺎﺑﻊ در دﺳﺘﺮس‪ ،‬ﻋﻤﻠﮑﺮدي ﻣﻨﺎﺳﺐ ﺑﺎ ﻫﺰﯾﻨﻪ اي ﻣﻌﻘﻮل ﻓﺮاﻫﻢ ﻣﯽ ﮐﻨﺪ‪ .‬ﺑﺮاي ﻣﺜﺎل ﯾﮏ‬
‫ﭘﯿﻮﻧﺪ ﻣﺎﻫﻮاره اي و ﯾﺎ ﯾﮏ ﮐﺎﻧﺎل ﻣﺨﺎﺑﺮاﺗﯽ را در ﻧﻈﺮ ﺑﮕﯿﺮﯾﺪ‪ .‬اﮔﺮ ﯾﮏ ﻣﮕﺎﺑﺎﯾﺖ داده ﺑﻪ ﻧﯿﻢ ﻣﮕﺎ ﺑﺎﯾﺖ ﻓﺸﺮده و ﺳﭙﺲ ﻣﺨﺎﺑﺮه‬
‫ﺷﻮد‪ ،‬ﺑﺎ اﺳﺘﻔﺎده از ﯾﮏ دﯾﮑﻤﭙﺮﺳﻮر )‪ (decompressor‬در ﻃﺮف دﯾﮕﺮ ﻣﯽ ﺗﻮان داده اﺻﻠﯽ را ﺑﺎزﺳﺎزي ﮐﺮد‪ .‬در ﻧﺘﯿﺠﻪ ﺑﺎ‬
‫اﺳﺘﻔﺎده از ﻓﺸﺮده ﺳﺎزي‪ ،‬ﭘﻬﻨﺎي ﺑﺎﻧﺪ ﻣﻮﺛﺮ دو ﺑﺮاﺑﺮ ﻣﯽ ﺷﻮد‪.‬‬
‫ﯾﮏ ‪ DSP‬ﻣﯽ ﺗﻮاﻧﺪ ﺑﺎ اﺳﺘﻔﺎده از ﺑﺮﻧﺎﻣﻪ ﻫﺎي ﻧﺮم اﻓﺰاري ﻣﻨﺎﺳﺐ داده ﻫﺎ و ﺳﯿﮕﻨﺎل ﻫﺎي ﺑﺎﯾﻨﺮي را ﻓﺸﺮده ﺳﺎزي ﮐﻨﺪ‪.‬‬
‫ﺑﺮﻧﺎﻣﻪ ﻫﺎي ﻓﺸﺮده ﺳﺎزي ﺑﺪون ﺗﻠﻔﺎت ﺑﺮاي اﻧﺘﻘﺎل داده ﻫﺎي ﺑﺎﯾﻨﺮي ﺑﻪ ﻃﻮر ﺻﺤﯿﺢ ﻣﻨﺎﺳﺐ ﻫﺴﺘﻨﺪ‪ .‬ﺑﻪ ﺑﯿﺎن دﯾﮕﺮ‪ ،‬ﺑﺮﻧﺎﻣﻪ ﻫﺎﯾﯽ‬
‫ﮐﻪ ﺑﺮاي ﻓﺸﺮده ﺳﺎزي ﺻﺪا و ﺗﺼﻮﯾﺮ ﻃﺮاﺣﯽ ﺷﺪه اﻧﺪ ﻧﺴﺒﺖ ﺑﯿﺸﺘﺮي ﻓﺸﺮده ﺳﺎزي را ﻓﺮاﻫﻢ ﻣﯽ ﮐﻨﻨﺪ اﻣﺎ ﮐﯿﻔﯿﺖ ﺳﯿﮕﻨﺎل‬
‫ﻣﻘﺪاري ﮐﺎﻫﺶ ﻣﯽ ﺑﺎﺷﺪ‪ .‬ﻫﻤﭽﻨﯿﻦ ﻣﺪارﻫﺎي آﻧﺎﻟﻮگ ﻣﯽ ﺗﻮاﻧﻨﺪ ﺑﺮاي ﻓﺸﺮده ﺳﺎزي ﺑﺪون ﺗﻠﻔﺎت ﺑﻪ ﺷﮑﻞ ﻫﺎي ﺧﯿﻠﯽ ﺳﺎده‬
‫اﺳﺘﻔﺎده ﺷﻮﻧﺪ اﻣﺎ اﻧﻌﻄﺎف ﭘﺬﯾﺮي ﺧﯿﻠﯽ ﮐﻤﯽ دارﻧﺪ‪.‬‬
‫ﻓﯿﻠﺘﺮ ﻫﺎي ﺗﻄﺒﯿﻘﯽ‪:‬‬ ‫·‬
‫ﺳﯿﺴﺘﻢ ﻫﺎي ‪ DSP‬ﺗﻮﺳﻌﻪ ﯾﺎﻓﺘﻪ اﻧﺪ و ﻣﯽ ﺗﻮاﻧﻨﺪ ﻣﻘﺪاري از ﻧﻮﯾﺰﻫﺎي داﺧﻞ ﮐﺎﺑﯿﻦ اﺗﻮﻣﺒﯿﻞ ﻫﺎ‪ ،‬ﻫﻠﯿﮑﻮﭘﺘﺮ ﻫﺎ و ﻫﻮاﭘﯿﻤﺎﻫﺎ را‬
‫ﺣﺬف ﮐﻨﻨﺪ‪ .‬ﻧﻮﯾﺰﻫﺎﯾﯽ ﮐﻪ ﺗﻮﺳﻂ ﻟﺮزش ﻣﻮﺗﻮر ﺗﻮﻟﯿﺪ ﻣﯽ ﺷﻮﻧﺪ‪ ،‬ﺣﺬف ﻣﯽ ﺷﻮﻧﺪ‪ .‬ﺳﯿﺴﺘﻢ ﺣﺬف ﻧﻮﯾﺰ از ﺳﺮﻋﺖ ﻣﻮﺗﻮر ﺑﻪ ﻋﻨﻮان‬
‫ﻣﺮﺟﻊ اﺳﺘﻔﺎده ﻣﯽ ﮐﻨﺪ و ﯾﮏ ﺳﯿﮕﻨﺎل آﻧﺘﯽ ﻧﻮﯾﺰ از ﺑﻠﻨﺪﮔﻮ ﺗﻮﻟﯿﺪ ﻣﯽ ﮐﻨﺪ ﺗﺎ ﻧﻮﯾﺰ ﮐﺎﺑﯿﻦ را ﺣﺬف ﮐﻨﺪ‪ .‬ﻓﯿﺪﺑﮏ ﻧﺎﺷﯽ از ﻣﯿﮑﺮوﻓﻦ‬
‫‪20‬‬ ‫ﻣﻘﺪﻣﻪ‪ :‬آﺷﻨﺎﯾﯽ ﺑﺎ ﭘﺮدازﻧﺪه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﺑﺮاي ﺗﻄﺒﯿﻖ ﮐﺮدن ﻣﺸﺨﺼﺎت آﻧﺘﯽ ﻧﻮﯾﺰ اﺳﺘﻔﺎده ﻣﯽ ﺷﻮد ﺗﺎ ﻧﻮﯾﺰ ﺑﯿﺸﺘﺮﯾﻦ ﮐﺎﻫﺶ را داﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﺳﭙﺲ ﺳﯿﺴﺘﻢ ﺑﻪ ﻃﻮر ﻣﺘﻨﺎوب‬
‫ﻋﻤﻞ ﺗﻄﺒﯿﻖ را اﻧﺠﺎم ﻣﯽ دﻫﺪ ﺗﺎ ﺗﻐﯿﯿﺮات ﻧﻮﯾﺰ داﺧﻞ ﮐﺎﺑﯿﻦ را دﻧﺒﺎل ﮐﻨﺪ‪.‬‬
‫ﯾﮏ ﺳﯿﺴﺘﻢ ‪ DSP‬ﻣﯽ ﺗﻮاﻧﺪ ﺑﻪ آﺳﺎﻧﯽ ﺑﺎ اﻧﺪﮐﯽ ﺗﻐﯿﯿﺮات در ﻣﺘﻐﯿﯿﺮﻫﺎي ﻣﺤﯿﻄﯽ ﺗﻄﺒﯿﻖ ﺷﻮد‪ .‬ﯾﮏ اﻟﮕﻮرﯾﺘﻢ ﺗﻄﺒﯿﻘﯽ ﭘﺎراﻣﺘﺮ‬
‫ﻫﺎي ﻻزم ﺟﺪﯾﺪ را ﺑﻪ آﺳﺎﻧﯽ ﻣﺤﺎﺳﺒﻪ ﻣﯽ ﮐﻨﺪ و ﺳﭙﺲ آن ﻫﺎ را در ﺣﺎﻓﻈﻪء اﺻﻠﯽ ذﺧﯿﺮه ﻣﯽ ﮐﻨﺪ و ﺟﺎي ﻣﻘﺪارﻫﺎي ﻗﺒﻠﯽ ﻗﺮار‬
‫ﻣﯽ دﻫﺪ‪ .‬در ﻣﺪارﻫﺎي آﻧﺎﻟﻮگ ﯾﮏ اﻧﻄﺒﺎق ﺧﯿﻠﯽ ﺳﺎده اﻣﮑﺎن ﭘﺬﯾﺮ اﺳﺖ اﻣﺎ ﺗﻐﯿﯿﺮات ﮐﺎﻣﻞ ﯾﮏ دﺳﺘﻪء ﭘﯿﭽﯿﺪه از ﻣﺸﺨﺼﻪ ﻫﺎي‬
‫ﻓﯿﻠﺘﺮ از ﻣﺤﺪوده ﻋﻤﻠﯽ ﭘﺮدازش ﺳﯿﮕﻨﺎل ﻫﺎي آﻧﺎﻟﻮگ ﺧﺎرج اﺳﺖ‪.‬‬
‫ﯾﮏ ﻧﻤﻮﻧﻪ از ﻓﯿﻠﺘﺮﻫﺎﯾﯽ ﮐﻪ ﻣﻤﮑﻦ اﺳﺖ ﺑﺮاي ﭘﯿﺎده ﺳﺎزي ﺳﯿﺴﺘﻢ ﻫﺎي ﺣﺬف ﻧﻮﯾﺰ اﺳﺘﻔﺎده ﺷﻮﻧﺪ‪ ،‬ﻓﯿﻠﺘﺮ دﻧﺪاﻧﻪ اي) ‪notch‬‬
‫‪ (filter‬ﺑﺎ ﺷﯿﺐ ﺗﻨﺪ در ﻓﺮﮐﺎﻧﺲ ﻗﻄﻊ ﻣﯽ ﺑﺎﺷﺪ‪ .‬در اﯾﻦ ﻣﻮرد ‪ DSP‬ﻣﯽ ﺗﻮاﻧﺪ ﻓﺮﮐﺎﻧﺲ ﺷﮑﺎف را ﺑﺮاي ﺣﺬف ﻧﻮﯾﺰ ﻟﺮزﺷﯽ‪،‬‬
‫وﻗﺘﯽ ﮐﻪ ﺳﺮﻋﺖ ﭼﺮﺧﺶ ﻣﻮﺗﻮر ﺗﻐﯿﯿﺮ ﻣﯽ ﮐﻨﺪ‪ ،‬دوﺑﺎره ﻣﺤﺎﺳﺒﻪ ﮐﻨﺪ‪ .‬ﺗﻮﻟﯿﺪ ﺗﻌﺪاد زﯾﺎدي ﻓﯿﻠﺘﺮﻫﺎي ﻗﺎﺑﻞ ﺗﻨﻈﯿﻢ ﻓﻘﻂ ﺑﺎ اﺳﺘﻔﺎده از‬
‫ﺗﮑﻨﯿﮏ ﻫﺎي آﻧﺎﻟﻮگ‪ ،‬ﻋﻤﻼً ﻏﯿﺮ ﻣﻤﮑﻦ اﺳﺖ‪.‬‬
‫ﻓﯿﻠﺘﺮ ﻫﺎي ﺑﺎ ﻓﺎز ﺧﻄﯽ‪:‬‬ ‫·‬
‫ﺗﻌﺪادي روش ارزﺷﻤﻨﺪ ﺑﺮاي ﭘﺮدازش ﺳﯿﮕﻨﺎل وﺟﻮد دارد ﮐﻪ ﺑﺎ اﺳﺘﻔﺎده از ﺷﯿﻮه ﻫﺎي آﻧﺎﻟﻮگ دﺷﻮار و ﯾﺎ ﻏﯿﺮ ﻣﻤﮑﻦ ﻣﯽ‬
‫ﺑﺎﺷﺪ‪ .‬ﯾﮏ ﻧﻤﻮﻧﻪء ﺑﺎرز آن ﻓﯿﻠﺘﺮﻫﺎي ﺑﺎ ﻓﺎز ﺧﻄﯽ اﺳﺖ ﻃﺮاﺣﯽ آن ﻫﺎ ﺑﻪ ﺻﻮرت آﻧﺎﻟﻮگ دﺷﻮار ﻣﯽ ﺑﺎﺷﻨﺪ‪ .‬ﺑﺎ اﺳﺘﻔﺎده از ﻓﯿﻠﺘﺮﻫﺎي‬
‫دﯾﺠﯿﺘﺎﻟﯽ ﻣﯽ ﺗﻮان ﺗﻐﯿﯿﺮات ﻓﺎز ﻫﺮ ﺟﺰء ﻓﺮﮐﺎﻧﺴﯽ را ﻫﻤﺴﺎن ﺑﺎ دﯾﮕﺮ ﻓﺮﮐﺎﻧﺲ ﻫﺎ ﻧﮕﻪ داﺷﺖ‪ .‬اﯾﻦ ﮐﺎر ﺑﺎ اﺳﺘﻔﺎده از ﯾﮏ ﻓﯿﻠﺘﺮ ﺑﺎ‬
‫ﭘﺎﺳﺦ ﺿﺮﺑﻪء ﮐﺮان دار)‪ (FIR‬اﻣﮑﺎن ﭘﺬﯾﺮ ﻣﯽ ﺑﺎﺷﺪ‪.‬‬

‫‪ (14‬ﭘﺮدازﻧﺪه ﻫﺎي ﻣﻤﯿﺰ ﺛﺎﺑﺖ و ﻣﻤﯿﺰ ﺷﻨﺎور‪:‬‬

‫ﯾﮏ ﺗﻔﺎوت اﺳﺎﺳﯽ ﺑﯿﻦ ﭘﺮدازﻧﺪه ﻫﺎي ‪ DSP‬ﺳﺎﺧﺘﺎر ﻣﺤﺎﺳﺒﺎﺗﯽ آن ﻫﺎ اﺳﺖ‪ :‬ﻣﻤﯿﺰ ﺛﺎﺑﺖ ﯾﺎ ﻣﻤﯿﺰ ﺷﻨﺎور‪ .‬ﺑﺮاي ﻃﺮاﺣﺎن‬
‫ﺳﯿﺴﺘﻢ‪ ،‬اﯾﻦ ﻣﻬﻤﺘﺮﯾﻦ ﻋﺎﻣﻠﯽ اﺳﺖ ﮐﻪ ﺑﻪ ﮐﻤﮏ آن ﺗﺸﺨﯿﺺ ﻣﯽ دﻫﻨﺪ ﮐﻪ آﯾﺎ ﯾﮏ ﭘﺮدازﻧﺪهء ‪ DSP‬ﺑﺮاي ﯾﮏ ﮐﺎرﺑﺮد ﻣﺸﺨﺺ‬
‫ﻣﻨﺎﺳﺐ اﺳﺖ ﯾﺎ ﻧﻪ‪ .‬ﭘﺮدازﻧﺪه ﻫﺎي ‪ DSP‬ﻣﻤﯿﺰ ﺛﺎﺑﺖ ﻣﻤﮑﻦ اﺳﺖ ‪ 16‬ﺑﯿﺘﯽ ﯾﺎ ‪ 24‬ﺑﯿﺘﯽ ﺑﺎﺷﻨﺪ‪ ،‬در ﺣﺎﻟﯽ ﮐﻪ ﭘﺮدازﻧﺪه ﻫﺎي ﻣﻤﯿﺰ‬
‫ﺷﻨﺎور ﻣﻌﻤﻮﻻً ‪ 32‬ﺑﯿﺘﯽ ﻫﺴﺘﻨﺪ‪ .‬ﯾﮏ ﭘﺮدازﻧﺪهء ‪ 16‬ﺑﯿﺘﯽ ﻣﻤﯿﺰ ﺛﺎﺑﺖ راﯾﺞ ﻣﺎﻧﻨﺪ ‪ ،TMS320C55x‬اﻋﺪاد را ﺑﻪ ﻓﺮﻣﺖ ﺻﺤﯿﺢ ﯾﺎ‬
‫اﻋﺸﺎري ‪ 16‬ﺑﯿﺘﯽ در ﯾﮏ ﻣﺤﺪوده ء ﺛﺎﺑﺖ ذﺧﯿﺮه ﻣﯽ ﮐﻨﻨﺪ‪ .‬اﮔﺮﭼﻪ ﺿﺮاﯾﺐ و ﺳﯿﮕﻨﺎل ﻫﺎ ﺑﺎ دﻗﺖ ‪ 16‬ﺑﯿﺘﯽ ذﺧﯿﺮه ﻣﯽ ﺷﻮﻧﺪ‪،‬‬
‫ﻣﻘﺎدﯾﺮ ﻣﯿﺎﻧﯽ ﺑﺮاي ﮐﺎﻫﺶ ﺧﻄﺎﻫﺎي رﻧﺪ ﮐﺮدن ﺗﺠﻤﻌﯽ‪ ،‬ﻣﻤﮑﻦ اﺳﺖ ﺑﺎ دﻗﺖ ‪ 32‬ﺑﯿﺘﯽ در ‪ 40 ، accumulator‬ﺑﯿﺘﯽ ذﺧﯿﺮه‬
‫ﺷﻮﻧﺪ‪DSP .‬ﻫﺎي ﻣﻤﯿﺰ ﺛﺎﺑﺖ ﻣﻌﻤﻮﻻً از ‪DSP‬ﻫﺎي ﻣﻤﯿﺰ ﺷﻨﺎور ارزان ﺗﺮ و ﺳﺮﯾﻊ ﺗﺮ ﻫﺴﺘﻨﺪ ﭼﻮن آن ﻫﺎ از ﺳﯿﻠﯿﮑﻮن ﮐﻤﺘﺮي‬
‫اﺳﺘﻔﺎده ﻣﯽﮐﻨﻨﺪ‪ ،‬ﻣﺼﺮف ﺗﻮان ﮐﻤﺘﺮي دارﻧﺪ و ﺑﻪ ﭘﯿﻦ ﻫﺎي ﺧﺎرﺟﯽ ﮐﻤﺘﺮي ﻧﯿﺎز دارﻧﺪ‪ .‬ﻣﻮارد اﺳﺘﻔﺎده ﭘﺮدازﻧﺪه ﻫﺎي ﻣﻤﯿﺰ ﺛﺎﺑﺖ‬
‫ﻋﺒﺎرﺗﻨﺪ از‪ :‬ﮐﻨﺘﺮل دﺳﺘﮕﺎه ﻫﺎي ﺑﺮﻗﯽ‪ ،‬ﻣﻮﺑﺎﯾﻞ‪ ،‬دراﯾﻮ ﻫﺎرد دﯾﺴﮏ‪ ،‬ﻣﻮدم ﻫﺎ ﭘﺨﺶﮐﻨﻨﺪهﻫﺎي ﺻﻮﺗﯽ و دورﺑﯿﻦ ﻫﺎي دﯾﺠﯿﺘﺎﻟﯽ‪.‬‬
‫ﺣﺴﺎب ﻣﻤﯿﺰ ﺷﻨﺎور ﻣﺤﺪوده دﯾﻨﺎﻣﯿﮑﯽ اﻋﺪاد را ﺑﻪ ﺷﺪت اﻓﺰاﯾﺶ ﻣﯽدﻫﺪ‪ .‬ﯾﮏ ﭘﺮدازﻧﺪه ‪ DSP‬ﻣﻤﯿﺰ ﺷﻨﺎور ‪ 32‬ﺑﯿﺘﯽ راﯾﺞ‬
‫ﻣﺎﻧﻨﺪ ‪ ،TMS320C67x‬اﻋﺪاد را ﺑﻪ ﺻﻮرت ‪ 24‬ﺑﯿﺖ ﻣﺎﻧﺘﯿﺲ و ‪ 8‬ﺑﯿﺖ ﻧﻤﺎ ﻧﻤﺎﯾﺶ ﻣﯽ دﻫﺪ‪ .‬ﻣﺎﻧﺘﯿﺲ ﯾﮏ ﻋﺪد اﻋﺸﺎري را در‬
‫ﻣﺤﺪوده ‪ -1‬و ‪ +1‬ﻧﻤﺎﯾﺶ ﻣﯽ دﻫﺪ در ﺣﺎﻟﯽ ﮐﻪ ﻧﻤﺎ ﯾﮏ ﻋﺪد ﺻﺤﯿﺢ اﺳﺖ ﮐﻪ ﺗﻌﺪاد ﻣﮑﺎﻧﻬﺎﯾﯽ ﮐﻪ ﻣﻤﯿﺰ ﺑﺎﯾﻨﺮي ﺑﺎﯾﺪ ﺑﻪ ﭼﭗ ﯾﺎ‬
‫راﺳﺖ ﻣﻨﺘﻘﻞ ﺷﻮد ﺗﺎ ﯾﮏ ﻣﻘﺪار ﺣﻘﯿﻘﯽ ﺑﺪﺳﺖ آﯾﺪ‪ ،‬را ﻧﻤﺎﯾﺶ ﻣﯽ دﻫﺪ‪ .‬ﯾﮏ ﻓﺮﻣﺖ ﻣﻤﯿﺰ ﺷﻨﺎور ‪ 32‬ﺑﯿﺘﯽ‪ ،‬ﻣﺤﺪوده دﯾﻨﺎﻣﯿﮑﯽ‬
‫وﺳﯿﻌﯽ را ﻧﻤﺎﯾﺶ ﻣﯽ دﻫﺪ‪ .‬ﺑﻨﺎﺑﺮاﯾﻦ ﻣﺤﺪودﯾﺖﻫﺎﯾﯽ ﮐﻪ روي ﺣﺪود دﯾﻨﺎﻣﯿﮑﯽ داده وﺟﻮد دارﻧﺪ‪ ،‬ﻣﻤﮑﻦ اﺳﺖ در ﯾﮏ ﻃﺮاﺣﯽ ﺑﺎ‬
‫اﺳﺘﻔﺎده از ﭘﺮدازﻧﺪهﻫﺎي ‪ DSP‬ﻣﻤﯿﺰ ﺷﻨﺎور ﻧﺎدﯾﺪه ﮔﺮﻓﺘﻪ ﺷﻮﻧﺪ‪ .‬اﯾﻦ در ﻧﻘﻄﻪ ﻣﻘﺎﺑﻞ ﻃﺮاﺣﯽ ﺑﺎ اﺳﺘﻔﺎده از ﻣﻤﯿﺰ ﺛﺎﺑﺖ ﻗﺮار دارد‪.‬‬
‫‪21‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫در ﻃﺮاﺣﯽ ﺑﺎ اﺳﺘﻔﺎده از ﻣﻤﯿﺰ ﺛﺎﺑﺖ ﻃﺮاح ﺑﺎﯾﺪ ﺿﺮاﯾﺐ ﻣﻘﯿﺎس ﺑﻨﺪي و ﺗﮑﻨﯿﮏ ﻫﺎي دﯾﮕﺮي را اﻋﻤﺎل ﮐﻨﺪ ﺗﺎ از ﺳﺮرﯾﺰ ﻣﺤﺎﺳﺒﺎت‬
‫ﺟﻠﻮﮔﯿﺮي ﮐﻨﺪ‪ ،‬ﮐﻪ ﯾﮏ ﻓﺮاﯾﻨﺪ ﺧﯿﻠﯽ ﻣﺸﮑﻞ و وﻗﺖ ﮔﯿﺮ ﻣﯽ ﺑﺎﺷﺪ‪ .‬از اﯾﻦ رو‪ ،‬ﺑﻪ ﻃﻮر ﮐﻠﯽ ﭘﺮدازﻧﺪه ﻫﺎي ‪ DSP‬ﻣﻤﯿﺰ ﺷﻨﺎور از‬
‫ﻧﻈﺮ ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ و اﺳﺘﻔﺎده آﺳﺎن ﻫﺴﺘﻨﺪ‪ ،‬اﻣﺎ ﻣﻌﻤﻮﻻً ﮔﺮان ﺗﺮ ﻫﺴﺘﻨﺪ و ﺗﻮان ﺑﯿﺸﺘﺮي ﻣﺼﺮف ﻣﯽ ﮐﻨﻨﺪ‪.‬‬
‫دﻗﺖ و ﺣﺪود دﯾﻨﺎﻣﯿﮑﯽ ﭘﺮدازﻧﺪه ﻫﺎي ‪ DSP‬ﻣﻤﯿﺰ ﺛﺎﺑﺖ ‪ 16‬ﺑﯿﺘﯽ راﯾﺞ در ﺷﮑﻞ زﯾﺮ ﺧﻼﺻﻪ ﺷﺪه اﺳﺖ‪.‬‬

‫ﺷﮑﻞ ‪ :5‬دﻗﺖ و ﺣﺪود دﯾﻨﺎﻣﯿﮑﯽ ﭘﺮدازﻧﺪه ﻫﺎي ‪ DSP‬ﻣﻤﯿﺰ ﺛﺎﺑﺖ ‪ 16‬ﺑﯿﺘﯽ‬

‫اﺳﺖ‪ .‬ﭼﻮن داراي ‪ 24‬ﺑﯿﺖ ﻣﺎﻧﺘﯿﺲ ﻣﯽ ﺑﺎﺷﻨﺪ‪ .‬ﻫﻤﭽﻨﯿﻦ ﺣﺪود‬ ‫دﻗﺖ ﭘﺮدازﻧﺪه ﻫﺎي ‪ DSP‬ﻣﻤﯿﺰ ﺷﻨﺎور ‪ 32‬ﺑﯿﺘﯽ‪،‬‬
‫‪ 1.18 ×10−38 ≤ x ≤ 3.4 × 1038‬ﻣﯽﺑﺎﺷﺪ‪.‬‬ ‫دﯾﻨﺎﻣﯿﮑﯽ آن ﻫﺎ‬
‫ﻃﺮاﺣﺎن ﺳﯿﺴﺘﻢ ﺑﺎﯾﺪ ﺣﺪود دﯾﻨﺎﻣﯿﮑﯽ و دﻗﺖ ﻣﻮرد ﻧﯿﺎز را ﺑﺮاي ﮐﺎرﺑﺮدﺷﺎن ﺗﻌﯿﯿﻦ ﮐﻨﻨﺪ‪ .‬ﭘﺮدازﻧﺪهﻫﺎي ﻣﻤﯿﺰ ﺷﻨﺎور ﻣﻤﮑﻦ‬
‫اﺳﺖ در ﮐﺎرﺑﺮدﻫﺎﯾﯽ ﮐﻪ ﺿﺮاﯾﺐ ﻣﺘﻐﯿﯿﺮ ﺑﺎ زﻣﺎن ﻫﺴﺘﻨﺪ‪ ،‬ﺳﯿﮕﻨﺎل ﻫﺎ و ﺿﺮاﯾﺐ ﺑﻪ ﺣﺪود دﯾﻨﺎﻣﯿﮑﯽ وﺳﯿﻊ و دﻗﺖ ﺑﺎﻻﯾﯽ ﻧﯿﺎز دارﻧﺪ‬
‫و ﯾﺎ ﺟﺎﯾﯽ ﮐﻪ ﺳﺎﺧﺘﺎر ﺣﺎﻓﻈﻪء وﺳﯿﻌﯽ ﻻزم ﺑﺎﺷﺪ‪ ،‬ﻣﺎﻧﻨﺪ ﭘﺮدازش ﺗﺼﻮﯾﺮ‪ ،‬ﻧﯿﺎز ﺷﻮﻧﺪ‪ .‬ﻫﻤﭽﻨﯿﻦ ﭘﺮدازﻧﺪه ﻫﺎي ‪ DSP‬ﻣﻤﯿﺰ ﺷﻨﺎور‬
‫اﺳﺘﻔﺎده ﻣﻮﺛﺮي از ﮐﺎﻣﭙﺎﯾﻠﺮﻫﺎي ‪ C‬ﻣﯽﮐﻨﻨﺪ‪ ،‬ﺑﻨﺎﺑﺮاﯾﻦ ﻫﺰﯾﻨﻪ ﺗﻮﺳﻌﻪ و ﻧﮕﻪ داري را ﮐﺎﻫﺶ ﻣﯽدﻫﻨﺪ‪ .‬زﻣﺎن ﺗﻮﺳﻌﻪ ﺳﺮﯾﻊ ﺗﺮ ﭘﺮدازﻧﺪه‬
‫ﻫﺎي ﻣﻤﯿﺰ ﺷﻨﺎور ﻣﻤﮑﻦ اﺳﺖ از ﻗﯿﻤﺖ اﺿﺎﻓﯽ آن ﻫﺎ ﻣﻬﻢ ﺗﺮ ﺑﺎﺷﺪ‪.‬‬
‫در ﻣﻘﺎﺑﻞ روﺷﻬﺎﯾﯽ وﺟﻮد دارد ﮐﻪ ﺑﺘﻮان از ﭘﺮدازﻧﺪه ﻫﺎي ‪ 16‬ﺑﯿﺘﯽ ﻣﻤﯿﺰ ﺛﺎﺑﺖ‪ ،‬ﺑﺎ دﻓﺖ اﻧﺠﺎم ﻣﺤﺎﺳﺒﺎت ‪ 32‬ﺑﯿﺘﯽ اﺳﺘﻔﺎده‬
‫ﻧﻤﻮد و در ﻧﺘﯿﺠﻪ ﺑﻪ دﻗﺘﯽ در ﺣﺪود ﭘﺮدازﻧﺪه ﻫﺎي ﻣﻤﯿﺰ ﺷﻨﺎور و ﺣﺘﯽ ﺑﻬﺘﺮ دﺳﺖ ﭘﯿﺪا ﮐﺮد‪ .‬در ﻣﺠﻤﻮع ﺗﻌﺪاد ﭘﺮدازﻧﺪه ﻫﺎي ﻣﻤﯿﺰ‬
‫ﺛﺎﺑﺖ ﻃﺮاﺣﯽ ﺷﺪه ﺑﺴﯿﺎر ﺑﯿﺸﺘﺮ از اﻧﻮاع ﻣﻤﯿﺰ ﺷﻨﺎور ﻣﯽﺑﺎﺷﺪ‪.‬‬

‫‪ (15‬ﻃﺮاﺣﯽ ﯾﮏ ﺳﯿﺴﺘﻢ ‪: DSP‬‬

‫ﺑﺮﻧﺎﻣﻪ – ﺗﺮاﺷﻪ ‪ DSP‬ﯾﮏ ﻗﻄﻌﻪ ﺳﺨﺖ اﻓﺰاري اﺳﺖ ﮐﻪ ﺑﺪون ﻫﻮش ﯾﮏ ﺑﺮﻧﺎﻣﻪ ﻧﻤﯽﺗﻮاﻧﻨﺪ ﮐﺎر ﮐﻨﻨﺪ‪ .‬ﺑﺮﻧﺎﻣﻪ ﯾﮏ‬ ‫·‬
‫ﺳﺮي دﺳﺘﻮر ﻋﻤﻞ اﺳﺖ ﮐﻪ وﻇﺎﯾﻒ ﻣﺸﺨﺼﯽ را اﻧﺠﺎم ﻣﯽدﻫﺪ‪.‬‬
‫اﺳﻤﺒﻠﺮ – اﺳﻤﺒﻠﺮ از دﺳﺘﻮرات ﻣﺘﻨﯽ ﮐﺪ ﻣﺎﺷﯿﻦ را ﺗﻮﻟﯿﺪ ﻣﯽ ﮐﻨﺪ‪ .‬اﺳﻤﺒﻠﺮ ﺑﺎﻋﺚ ﻣﯽﺷﻮد ﮐﻪ دﯾﮕﺮ ﻧﯿﺎزي ﺑﻪ ﯾﺎد آوردن‬ ‫·‬
‫دﺳﺘﻮرﻋﻤﻞ ﻫﺎي ﺑﺎﯾﻨﺮي ﻧﺪاﺷﺘﻪ ﺑﺎﺷﯿﻢ‪.‬‬
‫زﺑﺎن ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺴﯽ ﺳﻄﺢ ﺑﺎﻻ – زﺑﺎنﻫﺎي ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﯽ ﺳﻄﺢ ﺑﺎﻻ ﻣﺎﻧﻨﺪ زﺑﺎنﻫﺎي اﺳﻤﺒﻠﯽ ﻫﺴﺘﻨﺪ‪ ،‬اﻣﺎ ﺧﯿﻠﯽ دوﺳﺘﺎﻧﻪ‪-‬‬ ‫·‬
‫ﺗﺮاﻧﺪ‪ .‬زﺑﺎنﻫﺎي اﺳﻤﺒﻠﯽ داراي دﺳﺘﻮرﻋﻤﻞﻫﺎي ﺧﯿﻠﯽ اﺑﺘﺪاﯾﯽ از ﻗﺒﯿﻞ ﺿﺮب‪ ،‬ﺟﻤﻊ و ﻣﻘﺎﯾﺴﻪ ﻫﺴﺘﻨﺪ‪ .‬زﺑﺎنﻫﺎي ﺑﺮﻧﺎﻣﻪ‬
‫ﻧﻮﯾﺴﯽ ﺳﻄﺢ ﺑﺎﻻ داراي دﺳﺘﻮرات ﺳﻄﺢ ﺑﺎﻻﺗﺮي از ﻗﺒﯿﻞ ﭼﺎپ و ﺗﮑﺮار ﺗﺎ زﻣﺎن رﺳﯿﺪن ﺑﻪ ﺻﻔﺮ ﻫﺴﺘﻨﺪ‪ .‬ﺑﻨﺎﺑﺮاﯾﻦ‬
‫ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪ در زﺑﺎن ﻫﺎي ﺳﻄﺢ ﺑﺎﻻ ﺳﺎده ﺗﺮ ﻣﯽ ﺑﺎﺷﺪ‪ .‬اﻣﺎ زﺑﺎن ﻫﺎي اﺳﻤﺒﻠﯽ ﻣﯽﺗﻮاﻧﻨﺪ ﺑﺮﻧﺎﻣﻪﻫﺎﯾﯽ را ﮐﻪ ﺳﺮﯾﻊ ﺗﺮ‬
‫‪22‬‬ ‫ﻣﻘﺪﻣﻪ‪ :‬آﺷﻨﺎﯾﯽ ﺑﺎ ﭘﺮدازﻧﺪه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫اﺟﺮا ﻣﯽﺷﻮﻧﺪ‪ ،‬ﺗﻮﻟﯿﺪ ﮐﻨﻨﺪ‪ .‬ﺑﻪ ﻫﻤﯿﻦ دﻟﯿﻞ از ﻫﺮ دوي آن ﻫﺎ در ‪DSP‬ﻫﺎ اﺳﺘﻔﺎده ﻣﯽﺷﻮﻧﺪ‪ .‬ﮔﺎﻫﯽ اوﻗﺎت ﻻزم اﺳﺖ ﮐﻪ‬
‫ﻗﺴﻤﺖ ﻫﺎي زﻣﺎن ﺑﺮ ﯾﮏ ﺑﺮﻧﺎﻣﻪ ﺑﻪ اﺳﻤﺒﻠﯽ ﻧﻮﺷﺘﻪ ﺷﻮﻧﺪ‪.‬‬
‫ﺷﺒﯿﻪ ﺳﺎزﻫﺎ – ﺷﺒﯿﻪ ﺳﺎزﻫﺎي ﭘﺮواز ﺑﺎﻋﺚ ﻣﯽﺷﻮﻧﺪ ﮐﻪ ﺷﻤﺎ اﺣﺴﺎس ﮐﻨﯿﺪ ﻣﺜﻞ اﯾﻦ ﮐﻪ در ﮐﺎﺑﯿﻦ ﺧﻠﺒﺎن ﯾﮏ ﻫﻮاﭘﯿﻤﺎ‬ ‫·‬
‫ﻫﺴﺘﯿﺪ ﺑﺪون اﯾﻦ ﮐﻪ ﻫﺰﯾﻨﻪ ﯾﮏ ﻫﻮاﭘﯿﻤﺎي واﻗﻌﯽ‪ ،‬ﺳﻮﺧﺖ و رﯾﺴﮏ ﺗﺼﺎدف آن را ﺑﭙﺮدازﯾﺪ‪ .‬ﯾﮏ ﺷﺒﯿﻪ ﺳﺎز ‪،DSP‬‬
‫ﯾﮏ ﭘﯿﺎده ﺳﺎزي ﻧﺮم اﻓﺰاري از ﯾﮏ ﺗﺮاﺷﻪ ‪ DSP‬ﻣﯽ ﺑﺎﺷﺪ‪ .‬ﯾﮏ ﺷﺒﯿﻪ ﺳﺎز روي ﯾﮏ ﮐﺎﻣﭙﯿﻮﺗﺮ راه اﻧﺪازي ﻣﯽ ﺷﻮد و‬
‫ﺗﻘﺮﯾﺒﺎً ﺗﻤﺎم وﻇﺎﯾﻒ اﺳﺎﺳﯽ ﯾﮏ ‪ DSP‬را ﺷﺒﯿﻪ ﺳﺎزي ﻣﯽ ﮐﻨﺪ‪ .‬آن ﻫﺎ ﺑﺮاي ﺗﺤﻠﯿﻞ اﻣﮑﺎن ﭘﺬﯾﺮ ﺑﻮدن ﻃﺮح ﻫﺎ ﻗﺒﻞ از‬
‫اﯾﻦ ﮐﻪ ﺑﻪ ﺳﺨﺖ اﻓﺰار ﺗﺒﺪﯾﻞ ﺷﻮﻧﺪ‪،‬اﺳﺘﻔﺎده ﻣﯽ ﺷﻮﻧﺪ‪ .‬آن ﻫﺎ ﻫﻤﭽﻨﯿﻦ ﺑﺮاي ﺗﺸﺨﯿﺺ اﯾﻦ ﮐﻪ ﯾﮏ ﻃﺮح ﺑﻪ ﺧﺼﻮص‬
‫ﮐﺎر ﺧﻮاﻫﺪ ﮐﺮد ﯾﺎ ﻧﻪ‪ ،‬ﻧﯿﺰ ﺧﯿﻠﯽ ﻣﻔﯿﺪ ﻫﺴﺘﻨﺪ‪.‬‬
‫‪ – Emulators‬ﯾﮏ ‪ emulator‬ﺑﻪ ﻣﺎ اﯾﻦ اﺟﺎزه را ﻣﯽ دﻫﺪ ﮐﻪ ﻣﺴﺘﻘﯿﻤﺎً ﻧﺘﯿﺠﻪ اﺟﺮاي دﺳﺘﻮرﻋﻤﻞ ﻫﺎ را روي ‪ DSP‬ﮐﻨﺘﺮل و‬
‫اﺷﮑﺎل زداﯾﯽ ﮐﻨﯿﻢ‪ .‬ﻣﺎ ﻣﯽ ﺗﻮاﻧﯿﻢ ﺑﺎ اﺳﺘﻔﺎده از ‪ emulator‬ﻫﺎ ﺗﻤﺎم ﺗﻐﯿﯿﺮات داﺧﻠﯽ در دﺳﺘﮕﺎه را در ﻫﺮ ﻣﺮﺣﻠﻪ ﺑﺒﯿﻨﯿﻢ‪ .‬ﺗﻮﺳﻌﻪ‬
‫دﻫﻨﺪﮔﺎن ﻣﯽﺗﻮاﻧﻨﺪ در ﻫﺮ زﻣﺎن ﯾﮏ دﺳﺘﻮرﻋﻤﻞ را اﺟﺮا ﮐﻨﻨﺪ‪ ،‬ﺑﺮاي اﻃﻤﯿﻨﺎن از ﻋﻤﻞ ﺻﺤﯿﺢ ﺳﻄﺢ وﻟﺘﺎژ را ﮐﻨﺘﺮل ﮐﻨﻨﺪ و ﻫﺮ‬
‫ﻧﺘﯿﺠﻪ را در زﻣﺎن ﺧﻮدش ﺑﺮرﺳﯽ ﮐﻨﻨﺪ‪.‬‬
‫ﺑﺮﻧﺎﻣﻪ اﺷﮑﺎل زدا )‪ –(Debugger‬ﯾﮏ ﺑﺮﻧﺎﻣﻪ اﺷﮑﺎل زدا ﺑﺮاي ﻧﻤﺎﯾﺶ اﻃﻼﻋﺎت اﺟﺮاي ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﻓﺮﻣﺘﯽ ﻗﺎﺑﻞ اﺳﺘﻔﺎده‬
‫ﺑﺮاي ﺑﺮﻧﺎﻣﻪ ﻧﻮﯾﺲ‪ ،‬ﺑﻪ ﮐﺎر ﻣﯽرود‪ .‬داده ﻫﺎﯾﯽ ﮐﻪ در ﺑﺮﻧﺎﻣﻪ اﺷﮑﺎل زدا ﻧﻤﺎﯾﺶ داده ﻣﯽﺷﻮﻧﺪ در واﻗﻊ ﻓﺮﻣﯽ از داده ﻫﺎي ﻣﻮﺟﻮد‬
‫در ﺣﺎﻓﻈﻪ ‪ DSP‬ﻫﺴﺘﻨﺪ‪ .‬اﯾﻦ ﺣﺎﻓﻈﻪ ﺑﻪ آﺳﺎﻧﯽ ﺑﺎ اﺳﺘﻔﺎده از ﯾﮏ ‪ emulator‬و ﯾﺎ ﯾﮏ راﺑﻂ ارﺗﺒﺎﻃﯽ ﺑﻪ وﺳﯿﻠﻪ ﻧﺮماﻓﺰار ﻣﻨﺎﺳﺐ‬
‫داﺧﻞ ﯾﮏ ‪ PC‬ﺑﺎرﮔﺬاري ﻣﯽ ﺷﻮد‪ .‬ﺑﺮاي ﻣﺜﺎل ﭘﻨﺠﺮه ﺣﺎﻓﻈﻪ در ‪ debugger‬ﻣﯽﺗﻮاﻧﺪ داده را در ﻣﺒﻨﺎي ‪ ،16‬ﺑﺎ ﻓﺮﻣﺖ ﻋﺪد ﺻﺤﯿﺢ‬
‫ﯾﺎ اﻋﺸﺎري ﻧﻤﺎﯾﺶ دﻫﺪ‪ ،‬ﺑﺎ اﯾﻦ ﺣﺎل داده در ‪ DSP‬ﺑﻪ ﻓﺮم ﺑﺎﯾﻨﺮي اﺳﺖ‪ Debugger .‬ﻫﺎ ﺷﺎﻣﻞ ﯾﮏ راﺑﻂ ﮐﺎرﺑﺮ در ﮐﺎﻣﭙﯿﻮﺗﺮ ﻣﯿﺰﺑﺎن‬
‫ﻫﺴﺘﻨﺪ‪ ،‬ﮐﻪ ﻣﯽﺗﻮاﻧﻨﺪ ﻣﺤﺘﻮﯾﺎت و ﻣﺴﯿﺮ اﺟﺮاي ﺗﺮاﺷﻪ را ﮐﻨﺘﺮل و اﺻﻼح ﮐﻨﻨﺪ‪ .‬راﺑﻂ ﮐﺎرﺑﺮ ﻣﺤﺘﻮﯾﺎت ‪ ،RAM‬ﺛﺒﺎت ﻫﺎ و اﺳﻤﺒﻠﯽ‬
‫ﺑﺮﻧﺎﻣﻪء ﺑﺎرﮔﺬاري ﺷﺪه در داﺧﻞ ‪ DSP‬را ﻧﻤﺎﯾﺶ ﻣﯽدﻫﻨﺪ‪ .‬ﻣﺰﯾﺖ ﻋﻤﺪهء ‪debugger‬ﻫﺎ ﻧﺴﺒﺖ ﺑﻪ ﺷﺒﯿﻪ ﺳﺎزﻫﺎ اﯾﻦ اﺳﺖ ﮐﻪ آنﻫﺎ‬
‫در زﻣﺎن واﻗﻌﯽ ﮐﺎر ﻣﯽﮐﻨﻨﺪ در ﻧﺘﯿﺠﻪ ﺑﻪ ﻃﺮاح اﺟﺎزه ﻣﯽدﻫﻨﺪ ﮐﻪ در ﻣﺤﯿﻂ واﻗﻌﯽ ﺑﻪ ﻋﻤﻠﮑﺮد ﺳﯿﺴﺘﻢ دﺳﺘﺮﺳﯽ ﭘﯿﺪا ﮐﻨﺪ‪.‬‬
‫ﺳﯿﮑﻞ ﺗﻮﺳﻌﻪ – ﺑﻌﺪ از آن ﮐﻪ اﻣﮑﺎن ﭘﺬﯾﺮي ﻃﺮح ﺑﺎ اﺳﺘﻔﺎده از ﺷﺒﯿﻪ ﺳﺎزي ﺗﺄﯾﯿﺪ ﺷﺪ‪ ،‬ﻃﺮاﺣﯽ ﺑﺮﻧﺎﻣﻪ ﻣﯽﺗﻮاﻧﺪ آﻏﺎز‬ ‫·‬
‫ﺷﻮد‪ .‬اﺑﺘﺪا ﻧﺮم اﻓﺰار ﻃﺮاﺣﯽ ﻣﯽ ﺷﻮد‪ .‬اﯾﻦ ﻣﺮﺣﻠﻪ رﯾﺰه ﮐﺎريﻫﺎ و ﺑﺨﺶﻫﺎي ﻣﺨﺘﻠﻒ ﮐﺪ را ﻣﺸﺨﺺ ﻣﯽ ﮐﻨﺪ‪ .‬ﻫﺮ‬
‫ﺑﺨﺶ از ﺑﺮﻧﺎﻣﻪ ﺑﻪ ﺻﻮرت ﺟﺪاﮔﺎﻧﻪ ﻧﻮﺷﺘﻪ و ﺗﺴﺖ ﻣﯽ ﺷﻮد و ﺳﭙﺲ ﺗﻤﺎم ﺳﯿﺴﺘﻢ ﺑﺴﺘﻪ و آزﻣﺎﯾﺶ ﻣﯽﺷﻮد‪ .‬اﮔﺮ ﻫﻤﻪ‬
‫ﭼﯿﺰ آن ﻃﻮر ﮐﻪ ﻣﻮرد اﻧﺘﻈﺎر اﺳﺖ ﮐﺎر ﮐﻨﺪ‪ ،‬ورژن ‪ 1,0‬ﻣﺤﺼﻮل وارد ﺑﺎزار ﻣﯽ ﺷﻮد‪ .‬اﮔﺮ ﺑﺮﺧﻼف اﻧﺘﻈﺎر ﻣﺎ ﺑﻮد‪ ،‬اﯾﻦ‬
‫ﻓﺮاﯾﻨﺪ دوﺑﺎره ﺗﮑﺮار ﻣﯽ ﺷﻮد‪.‬‬

‫‪DSP (16‬ﻫﺎي ﺷﺮﮐﺖ ‪ Texas Instruments‬ﺧﺎﻧﻮادهء ‪:TMS320‬‬

‫‪DSP‬ﻫﺎي ‪ ،TI‬ﺷﺎﻣﻞ ﺳﻪ دﺳﺘﻪء ‪ C5000 ،C2000‬و ‪ C6000‬ﻣﯽ ﺷﻮﻧﺪ‪.‬‬


‫‪C2000‬‬ ‫·‬
‫‪ o‬ﻣﺰﯾﺖ‬
‫§ ارزان ﻗﯿﻤﺖ ﻫﺴﺘﻨﺪ‪.‬‬
‫§ ﺑﺮاي ﻓﻀﺎﻫﺎي ﺑﺎ ﻧﻮﯾﺰ ﺑﺎﻻ ﻃﺮاﺣﯽ ﺷﺪهاﻧﺪ‪.‬‬
‫‪23‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫‪ o‬ﮐﺎرﺑﺮد‬
‫§ ﺳﯿﺴﺘﻢ ﻫﺎي ﮐﻨﺘﺮﻟﯽ از ﻗﺒﯿﻞ ﮐﻨﺘﺮل ﻣﻮﺗﻮر‬
‫§ ذﺧﯿﺮه ﺳﺎزي‬
‫§ ﮐﻨﺘﺮل دﯾﺠﯿﺘﺎﻟﯽ‬
‫‪C5000‬‬ ‫·‬
‫‪ o‬ﻣﺰﯾﺖ‬
‫§ ﺑﺎزدهء ﺑﺎﻻ‬
‫§ ﺑﯿﺸﺘﺮﯾﻦ ‪ (Million Instructions Per Second) MIPS‬در ﻫﺮ وات‪/‬ﻫﺰﯾﻨﻪ‪/‬اﻧﺪازه‬
‫‪ o‬ﮐﺎرﺑﺮد‬
‫§ ﺗﻠﻔﻦ ﻫﺎي ﺑﯽ ﺳﯿﻢ‬
‫§ ﭘﺨﺶ ﮐﻨﻨﺪه ﻫﺎي ﺻﻮﺗﯽ‬
‫§ دورﺑﯿﻦ ﻫﺎي دﯾﺠﯿﺘﺎل‬
‫§ ﻣﻮدم ﻫﺎ‬
‫§ ‪VoIP‬‬
‫‪C6000‬‬ ‫·‬
‫‪ o‬ﻣﺰﯾﺖ‬
‫§ ﻋﻤﻠﮑﺮد ﺑﺎﻻ‬
‫§ اﺳﺘﻔﺎدهء آﺳﺎن‬
‫‪ o‬ﮐﺎرﺑﺮد‬
‫§ زﯾﺮﺳﺎﺧﺖ ﻫﺎي ﻣﺨﺎﺑﺮاﺗﯽ‬
‫§ اﯾﺴﺘﮕﺎه ﻫﺎي ﺑﯽ ﺳﯿﻢ‬
‫§ ‪DSL‬‬
‫§ ﺗﺼﻮﯾﺮ و وﯾﺪﺋﻮ‬
‫§ ﺳﺮورﻫﺎي ﭼﻨﺪ رﺳﺎﻧﻪ اي‬

‫‪ (17‬ﯾﮏ ‪ DSP‬ﻧﻤﻮﻧﻪ ﻣﻤﯿﺰ ﺛﺎﺑﺖ ‪:TMS320VC5509A‬‬

‫ﭘﺮدازﻧﺪه ﺳﯿﮕﻨﺎل دﯾﺠﯿﺘﺎل ﻣﻤﯿﺰ ﺛﺎﺑﺖ ‪ TMS320VC5509A‬ﺑﺮ ﭘﺎﯾﻪ ﻧﺴﻞ ﭘﺮدازﻧﺪهﻫﺎي ‪ TMS320C55x‬ﻣﯽﺑﺎﺷﺪ‪ .‬ﻣﻌﻤﺎري‬
‫‪ DSP‬ﺳﺮي ‪ C55x‬ﺑﺎ اﻓﺰاﯾﺶ ﻣﻮازي ﮐﺮدن و ﮐﺎﻫﺶ ﺗﻠﻔﺎت ﺗﻮان‪ ،‬ﺑﻪ ﻋﻤﻠﮑﺮد ﺑﺎﻻ و ﻣﺼﺮف ﺗﻮان ﮐﻢ‪ ،‬دﺳﺖ ﯾﺎﻓﺘﻪ اﺳﺖ‪ .‬اﯾﻦ‬
‫‪ CPU‬از ﯾﮏ ﺳﺎﺧﺘﺎر ﺑﺎس داﺧﻠﯽ ﺗﺸﮑﯿﻞ ﺷﺪه از‪ :‬ﯾﮏ ﺑﺎس ﺑﺮﻧﺎﻣﻪ‪ ،‬ﺳﻪ ﺑﺎس ﺑﺮاي ﺧﻮاﻧﺪن داده‪ ،‬دو ﺑﺎس ﺑﺮاي ﻧﻮﺷﺘﻦ داده و‬
‫ﺑﺎسﻫﺎي اﺿﺎﻓﯽ ﮐﻪ ﺑﻪ دﺳﺘﮕﺎه ﻫﺎي اﺿﺎﻓﯽ و ﻓﻌﺎﻟﯿﺖ ‪ DMA‬اﺧﺘﺼﺎص داده ﺷﺪه اﺳﺖ‪ ،‬ﭘﺸﺘﯿﺒﺎﻧﯽ ﻣﯽﮐﻨﺪ‪ .‬اﯾﻦ ﺑﺎس ﻫﺎ ﺗﻮاﻧﺎﯾﯽ‬
‫‪24‬‬ ‫ﻣﻘﺪﻣﻪ‪ :‬آﺷﻨﺎﯾﯽ ﺑﺎ ﭘﺮدازﻧﺪه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫اﻧﺠﺎم ﺣﺪاﮐﺜﺮ ﺧﻮاﻧﺪن ﺳﻪ داده و ﻧﻮﺷﺘﻦ دو داده در ﯾﮏ ﺳﯿﮑﻞ را ﺑﺮاي ‪ CPU‬ﻓﺮاﻫﻢ ﻣﯽﮐﻨﻨﺪ‪ .‬ﮐﻨﺘﺮل ﮐﻨﻨﺪه ‪ DMA‬ﻣﯽﺗﻮاﻧﺪ ﺟﺪا‬
‫از ﻓﻌﺎﻟﯿﺖ ‪ CPU‬در ﻫﺮ ﺳﯿﮑﻞ‪ ،‬دو داده را اﻧﺘﻘﺎل دﻫﺪ‪.‬‬
‫‪ CPU‬ﺳﺮي ‪ C55x‬داراي دو واﺣﺪ ﺿﺮب و ﺟﻤﻊ)‪ (MAC‬اﺳﺖ ﮐﻪ ﻫﺮ ﮐﺪام ﻗﺎدرﻧﺪ در ﯾﮏ ﺳﯿﮑﻞ ﺿﺮب ‪17‬ﺑﯿﺘﯽ در ‪17‬‬
‫ﺑﯿﺘﯽ را اﻧﺠﺎم دﻫﻨﺪ‪ .‬ﯾﮏ واﺣﺪ ﻣﺤﺎﺳﺒﻪ و ﻣﻨﻄﻖ )‪ (ALU‬ﻣﺮﮐﺰي ‪ 40‬ﺑﯿﺘﯽ ﺗﻮﺳﻂ ﯾﮏ ‪ 16 ALU‬ﺑﯿﺘﯽ اﺿﺎﻓﯽ ﭘﺸﺘﯿﺒﺎﻧﯽ ﻣﯽﺷﻮد‪.‬‬
‫اﺳﺘﻔﺎده از ‪ALU‬ﻫﺎ زﯾﺮ ﻧﻈﺮ ﮐﻨﺘﺮل ﻣﺠﻤﻮﻋﻪ دﺳﺘﻮرﻋﻤﻞﻫﺎ اﺳﺖ و ﺗﻮاﻧﺎﯾﯽ ﺑﻬﯿﻨﻪ ﺳﺎزي ﻓﻌﺎﻟﯿﺖ ﻣﻮازي و ﻣﺼﺮف ﺗﻮان را ﻓﺮاﻫﻢ‬
‫ﻣﯽآورﻧﺪ‪ .‬اﯾﻦ ﺗﻮاﻧﺎﯾﯽﻫﺎ در واﺣﺪ آدرس)‪ (AU‬و واﺣﺪ داده)‪ CPU (DU‬ﻣﺪﯾﺮﯾﺖ ﻣﯽﺷﻮﻧﺪ‪.‬‬
‫‪ CPU‬ﺳﺮي ‪ C55x‬ﺑﺮاي ﺑﻬﺒﻮد ﭼﮕﺎﻟﯽ ﮐﺪ)‪ (code density‬از ﻣﺠﻤﻮﻋﻪ دﺳﺘﻮراﻟﻌﻤﻞﻫﺎ ﺑﺎ ﻃﻮل ﺑﺎﯾﺖ ﻣﺘﻐﯿﯿﺮ ﭘﺸﺘﯿﺒﺎﻧﯽ‬
‫ﻣﯽﮐﻨﺪ‪ .‬واﺣﺪ دﺳﺘﻮراﻟﻌﻤﻞ)‪ ،(IU‬از ﺣﺎﻓﻈﻪ داﺧﻠﯽ ﯾﺎ ﺧﺎرﺟﯽ ‪ FETCH‬ﺑﺮﻧﺎﻣﻪ ‪ 32‬ﺑﯿﺘﯽ را اﻧﺠﺎم ﻣﯽ دﻫﺪ و دﺳﺘﻮراﻟﻌﻤﻞ ﻫﺎ را‬
‫ﺑﺮاي واﺣﺪ ﺑﺮﻧﺎﻣﻪ)‪ (PU‬ﺑﻪ ﺗﺮﺗﯿﺐ ﻗﺮار ﻣﯽدﻫﺪ‪ .‬واﺣﺪ ﺑﺮﻧﺎﻣﻪ‪ ،‬دﺳﺘﻮراﻟﻌﻤﻞ ﻫﺎ را دﯾﮑﺪ ﻣﯽ ﮐﻨﺪ و وﻇﺎﯾﻒ را ﺑﻪ ﺳﻤﺖ ‪ AU‬و‬
‫‪ DU‬ﻫﺪاﯾﺖ ﻣﯽ ﮐﻨﺪ و ﺧﻂ ﻟﻮﻟﻪ را ﻣﺪﯾﺮﯾﺖ ﻣﯽ ﮐﻨﺪ‪ .‬ﺗﻮاﻧﺎﯾﯽ ﭘﯿﺶ ﺑﯿﻨﯽ دﺳﺘﻮرات ﭘﺮش‪ ،‬از ﺧﺎﻟﯽ ﺷﺪن ﺧﻄﻪ ﻟﻮﻟﻪ در ﻫﻨﮕﺎم‬
‫اﺟﺮاي دﺳﺘﻮراﻟﻌﻤﻞ ﻫﺎي ﺷﺮﻃﯽ‪ ،‬ﺟﻠﻮﮔﯿﺮي ﻣﯽ ﮐﻨﺪ‪ .‬ﻫﻤﭽﻨﯿﻦ ‪ 5509‬ﺷﺎﻣﻞ ﯾﮏ ﮐﺶ دﺳﺘﻮراﻟﻌﻤﻞ اﺳﺖ ﺗﺎ دﺳﺘﺮﺳﯽ ﺑﻪ ﺣﺎﻓﻈﻪ‬
‫ﺧﺎرﺟﯽ را ﮐﺎﻫﺶ دﻫﺪ‪ ،‬اﻧﺘﻘﺎل داده را ﺑﻬﺒﻮد ﺑﺨﺸﺪ و از ﺗﻮان ﺳﯿﺴﺘﻢ ﻣﺤﺎﻓﻈﺖ ﮐﻨﺪ‪.‬‬
‫ﻣﺠﻤﻮﻋﻪ دﺳﺘﮕﺎه ﻫﺎي ﺟﺎﻧﺒﯽ ﺷﺎﻣﻞ ﯾﮏ راﺑﻂ ﺣﺎﻓﻈﻪ ﺧﺎرﺟﯽ)‪ (EMIF‬ﮐﻪ دﺳﺘﺮﺳﯽ ﺑﻪ ﺣﺎﻓﻈﻪ اﺳﻨﮑﺮون ﻣﺎﻧﻨﺪ ‪ EPROM‬و‬
‫‪multichannel buffered‬‬ ‫‪ SRAM‬ﺑﻪ ﻋﻼوه ﺣﺎﻓﻈﻪ ﭘﺮﺳﺮﻋﺖ ﺳﻨﮑﺮون ‪ DRAM‬و ‪ SRAM‬را ﻓﺮاﻫﻢ ﻣﯽ آورد‪ .‬ﺳﻪ ‪) McBSP‬‬
‫‪ (serial port‬ارﺗﺒﺎط دوﻃﺮﻓﻪ ﺑﺎ وﺳﺎﯾﻞ ﺳﺮﯾﺎل اﺳﺘﺎﻧﺪارد ﻣﺘﻨﻮﻋﯽ و ارﺗﺒﺎط ﭼﻨﺪ ﮐﺎﻧﺎﻟﻪ)ﺗﺎ ‪ 128‬ﮐﺎﻧﺎل( را ﻓﺮاﻫﻢ ﻣﯽ آورد‪ .‬راﺑﻂ‬
‫ﭘﻮرت ﻣﯿﺰﺑﺎن ﭘﯿﺸﺮﻓﺘﻪ )‪ ،(HPI‬ﯾﮏ راﺑﻂ ﻣﻮازي ‪ 16‬ﺑﯿﺘﯽ اﺳﺖ ﮐﻪ ﺑﻪ ﭘﺮدازﻧﺪه ﻣﯿﺰﺑﺎن اﯾﻦ اﺟﺎزه را ﻣﯽدﻫﺪ ﮐﻪ ﺑﻪ ﺣﺎﻓﻈﻪ داﺧﻠﯽ‬
‫‪ 5509‬دﺳﺘﺮﺳﯽ داﺷﺘﻪ ﺑﺎﺷﺪ‪ .‬ﮐﻨﺘﺮل ﮐﻨﻨﺪه ‪ ،DMA‬ﺟﺎﺑﺠﺎﯾﯽ داده ﺑﺮاي ‪ 6‬ﮐﺎﻧﺎل ﻣﺴﺘﻘﻞ را ﺑﺪون دﺧﺎﻟﺖ ‪ CPU‬ﻓﺮاﻫﻢ ﻣﯽ ﮐﻨﺪ‪.‬‬
‫ﻫﻤﭽﻨﯿﻦ ﺷﺎﻣﻞ ﺗﺎﯾﻤﺮ ﻫﻤﻪ ﻣﻨﻈﻮره‪ ،‬ﻫﺸﺖ ﭘﯿﻦ ‪ I/O‬ﻫﻤﻪ ﻣﻨﻈﻮره)‪ (GPIO‬و ﺗﻮﻟﯿﺪ ﮐﻼك ‪(digital phase-locked loop ) DPLL‬‬
‫ﻣﯽ ﺷﻮد‪.‬‬

‫ﻣﻨﺎﺑﻊ‬
‫‪[1] S. M. Kuo, B. H. Lee, and W. Tian, Real-time digital signal processing: implementations‬‬
‫‪and applications: Wiley, 2006.‬‬
‫‪[2] http://students.washington.edu/hyrum/class/ect52/‬‬
‫‪25‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬
‫‪26‬‬ ‫ﻣﻘﺪﻣﻪ‪ :‬آﺷﻨﺎﯾﯽ ﺑﺎ ﭘﺮدازﻧﺪه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬
‫آزﻣﺎﯾﺶ ‪:1‬‬
‫آﺷﻨﺎﯾﯽ ﺑﺎ ﻧﺮم اﻓﺰار ‪CCS‬‬

‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬

‫ﻫﺪف‪:‬آﺷﻨﺎﯾﯽ ﺑﺎ ﻧﺮم اﻓﺰار ‪ CCS‬و ﻧﺤﻮه اﺟﺮاي ﮐﺪ ﺑﺮ روي ﮐﯿﻒ آزﻣﺎﯾﺸﮕﺎه‬


‫‪28‬‬ ‫آزﻣﺎﯾﺶ ‪ :1‬آﺷﻨﺎﯾﯽ ﺑﺎ ﻧﺮم اﻓﺰار ‪CCS‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫‪ (1‬ﻣﻘﺪﻣﻪ‬
‫ﻫﺪف از اﯾﻦ آزﻣﺎﯾﺶ‪ ،‬آﻣﻮزش ﻧﺮماﻓﺰار ‪ Code Composer Studio‬و اﻣﮑﺎﻧﺎت دﯾﺒﺎگ ﻧﺮماﻓﺰار ﻣﯽﺑﺎﺷﺪ‪ .‬در اﯾﻦ آزﻣﺎﯾﺶ ﺑـﺎ‬
‫اﻣﮑﺎﻧﺎت ﻣﺨﺘﻠﻒ اﯾﻦ ﻧﺮم اﻓﺰار آﺷﻨﺎ ﻣﯽﺷﻮﯾﺪ و ﻃﺮﯾﻘﻪ رﯾﺨﺘﻦ ﺑﺮﻧﺎﻣﻪ و اﺟﺮاي آن روي ‪ DSP‬را ﯾﺎد ﻣﯽﮔﯿﺮﯾﺪ‪.‬‬
‫ﺑﺮاي راهاﻧﺪازي ﺑﺮد ﺑﻪ ﺻﻮرت زﯾﺮ ﻋﻤﻞ ﮐﻨﯿﺪ‪:‬‬
‫ﺗﻐﺬﯾﻪ ﺑﺮد را وﺻﻞ ﮐﻨﯿﺪ‪.‬‬ ‫·‬

‫ﮐﺎﺑﻞ ‪ USB‬را ﺑﻪ ﺑﺮد و ﺑﻪ ﮐﺎﻣﭙﯿﻮﺗﺮ ﻣﺘﺼﻞ ﮐﻨﯿﺪ‪.‬‬ ‫·‬

‫در ‪ desktop‬اﺟﺮا ﮐﻨﯿﺪ‪.‬‬ ‫ﺑﺮﻧﺎﻣﻪ ﮐﺪ ﮐﺎﻣﭙﻮزر ﻧﺴﺨﻪ ‪ 5‬را ﺑﺎ دو ﺑﺎر ﮐﻠﯿﮏ روي آﯾﮑﻮن‬ ‫·‬

‫اﺑﺘﺪا ﭘﻨﺠﺮهي ‪ Workspace Launcher‬ﮐﻪ ﺑﻪ ﺻﻮرت زﯾﺮ ﻣﯽﺑﺎﺷﺪ‪ ،‬ﺑﺎز ﻣﯽﺷﻮد‪ .‬در ﻗﺴـﻤﺖ ‪ Workspace‬آدرﺳـﯿﺮا ﮐـﻪ‬ ‫·‬

‫ﻣﯽ ﺧﻮاﻫﯿﺪ در اداﻣﻪ ﭘﺮوژهﻫﺎي ﺧﻮد را در آن ﺷﺎﺧﻪ اﯾﺠﺎد ﻧﻤﺎﺋﯿﺪ را وارد ﮐﻨﯿﺪ‪.‬‬
‫در ﻧﺮم اﻓﺰار ‪ ، CCS‬از ﻧﺴﺨﻪ ‪ 4‬ﺑﺎ ﺑﺎﻻ ﺷﮑﻞ ﮐﻠﯽ ﻧﺮم اﻓﺰار ﻋﻮض ﺷﺪه‬
‫و ﺑﻪ ﺟﺎي اﯾﻨﮑﻪ ﺑﺮاي ﻫﺮ ﭘﺮوژه ﯾﮏ ﺷﺎﺧﻪ ﺟﺪا ﺗﻌﺮﯾﻒ ﺷﻮد‪ ،‬ﺑﺮاي ﮐﻠﯿﻪ‬ ‫ﻧﮑﺘﻪ‬
‫ﭘﺮوژهﻫﺎ ﯾﮏ ﺷﺎﺧﻪ ﺑﻪ ﻧﺎم ‪ workspace‬ﺗﻌﺮﯾﻒ ﻣﯽﺷﻮد‪.‬ﺗﻤﺎم ﭘﺮوژهﻫﺎي ﮐﻪ‬
‫در اﯾﻦ ﭘﻮﺷﻪ ﻗﺮار دارﻧﺪ ﺑﻪ ﺷﮑﻞ ﻫﻤﺰﻣﺎن در ﻧﺮماﻓﺰار ‪ CCS‬ﻧﺸﺎن داده‬
‫ﻣﯽﺷﻮﻧﺪ‪ .‬ﻫﻤﭽﻨﯿﻦ اﮔﺮ ﯾﮏ ﭘﺮوژه ﺟﺪﯾﺪدر ﻧﺮم اﻓﺰار اﯾﺠﺎد ﺷﻮد‪ ،‬آدرس ﻣﺤﻞ‬
‫‪29‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫اﯾﺠﺎد آن درﻧﺮم اﻓﺰار در ‪ workspace‬ﻣﯽﺑﺎﺷﺪ‪ .‬ﻫﺮ ﭘﺮوژه در ﯾﮏ ﺷﺎﺧﻪ‬


‫ﺟﺪﯾﺪ در درون ‪ workspace‬ﻗﺮار ﻣﯽ ﮔﯿﺮد ﺗﺎ از دﯾﮕﺮ ﭘﺮوژه ﻫﺎ ﺟﺪا ﺑﺎﺷﺪ‪.‬‬

‫ﺑﻌﺪ از وارد ﮐﺮدن آدرس‪ ،‬روي ﮔﺰﯾﻨﻪي ‪ OK‬ﮐﻠﯿﮏ ﮐﻨﯿﺪ‪.‬‬

‫‪ workspace‬ﻧﺮماﻓﺰار ‪CCS5.3‬‬ ‫ﺷﮑﻞ‪:1‬‬

‫اﮐﻨﻮن ﭘﻨﺠﺮه اﺻﻠﯽ ﻧﺮم اﻓﺰار ﺑﺎز ﻣﯽ ﺷﻮد‪.‬‬

‫ﻧﺤﻮه ارﺗﺒﺎط ﮐﯿﻒ آزﻣﺎﯾﺸﮕﺎه ‪ DSP‬ﺑﺎ ‪ :PC‬ﮐﯿﻒ آزﻣﺎﯾﺸﮕﺎه ‪ DSP‬از ﻃﺮﯾﻖ ﯾﮏ ﮐﺎﺑﻞ ‪ USB‬ﮐﻪ در ﭘﺸﺖ ﮐﯿﻒ ﻗﺮار دارد‬
‫ﺑﻪ ﮐﺎﻣﭙﯿﻮﺗﺮ ﻣﺘﺼﻞ ﻣﯽ ﮔﺮدد‪ .‬دﻗﺖ ﮐﻨﯿﺪ ﮐﻪ در روي ﺑﺮد ﻧﯿﺰ ﻣﺤﻞ زدن ﮐﺎﺑﻞ ‪ USB‬وﺟﻮد دارد وﻟﯽ ﺑﺮاي اﺗﺼﺎل ﺑﻪ ﮐﺎﻣﭙﯿﻮﺗﺮ از‬
‫ﻃﺮﯾﻖ ‪ ) JTAG‬ﮐﻪ در درون ﮐﯿﻒ ﻗﺮار دارد( ﺣﺘﻤﺎ ﺑﺎﯾﺪ ﮐﺎﺑﻞ ‪ USB‬را ﺑﻪ ﭘﺸﺖ دﺳﺘﮕﺎه ﻣﺘﺼﻞ ﻧﻤﻮد‪.‬‬
‫اﮐﻨﻮن ﮐﯿﻒ آزﻣﺎﯾﺸﮕﺎه را ﺑﺎ زدن ﮐﻠﯿﺪ روﺷﻦ‪/‬ﺧﺎﻣﻮش ﮐﻪ در ﭘﺸﺖ ﺑﺮدﻗﺮار دارد روﺷﻦ ﮐﻨﯿﺪ‪.‬‬ ‫·‬

‫‪ (2‬اﯾﺠﺎد ﯾﮏ ﭘﺮوژه ﺟﺪﯾﺪ‬


‫ﺑﺮاي اﯾﺠﺎد ﭘﺮوژهي ﺟﺪﯾﺪ‪ ،‬ﺑﻪ ﻣﻨﻮي ﻓﺎﯾﻞ رﻓﺘﻪ‪ ،‬و ﺑﺎ زدن ﮔﺰﯾﻨﻪ ‪ ، New‬روي ‪ CCS Project‬ﮐﻠﯿﮏ ﮐﻨﯿﺪ‪.‬‬
‫‪30‬‬ ‫آزﻣﺎﯾﺶ ‪ :1‬آﺷﻨﺎﯾﯽ ﺑﺎ ﻧﺮم اﻓﺰار ‪CCS‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﺷﮑﻞ ‪ :2‬اﯾﺠﺎد ﭘﺮوژه ﺟﺪﯾﺪ‬

‫ﭘﻨﺠﺮهي ﺑﺎز ﺷﺪه را ﻣﻄﺎﺑﻖ ﺷﮑﻞ ﺗﻨﻈﯿﻢ ﮐﻨﯿﺪ‪:‬‬

‫ﺷﮑﻞ ‪ :3‬ﺗﻨﻈﯿﻤﺎت ﭘﺮوژه‬


‫در اﯾﻦ ﭘﻨﺠﺮه آدرس ﻣﺤﻞ ذﺧﯿﺮه ﺳﺎزي ﭘﺮوژه ‪ ،‬را ﻣﯽ ﺗﻮان ﺑﻪ دﻟﺨﻮاه اﻧﺘﺨﺎب ﻧﻤﻮد وﻟﯽ ﺑﻬﺘﺮ اﺳﺖ ﺗﯿﮏ ﻣﺮﺑﻮط ﺑﻪ ‪Use‬‬
‫‪ Default Location‬را زده ﺗﺎ ﭘﺮوژه در درون ‪ workspace‬اﯾﺠﺎد ﮔﺮدد‪ .‬در ﮐﯿﻒ آزﻣﺎﯾﺸﮕﺎه ‪ DSP‬از ﯾﮏ ﭘﺮدازﻧﺪه ﺑﺎ ﻧﺎم‬
‫‪ TMS320C5509A‬از ﺳﺮي ‪ 55xx‬ﺷﺮﮐﺖ ﺗﮕﺰاس اﯾﻨﺴﺘﺮوﻣﻨﺖ ) ‪ ( www.ti.com‬اﺳﺘﻔﺎده ﺷﺪه اﺳﺖ‪ .‬ﻫﻤﭽﻨﯿﻦ ﺑﺮاي‬
‫اﺗﺼﺎل ﮐﺎﻣﭙﯿﻮﺗﺮ و ﻧﺮم اﻓﺰار ‪ CCS‬ﺑﻪ ﺑﺮد ‪ ،‬در ﮐﯿﻒ آزﻣﺎﯾﺸﮕﺎه ‪ DSP‬از ﯾﮏ ‪ JTAG‬ﻣﺮﺑﻮط ﺑﻪ ﺳﺮي ‪XDS100ver2‬‬
‫اﺳﺘﻔﺎده ﺷﺪه اﺳﺖ ﮐﻪ ﺑﺎﯾﺪ در اﯾﻦ ﺻﻔﺤﻪ ﺑﻪ درﺳﺘﯽ وارد ﺷﻮد‪.‬‬
‫در اﯾﻦ ﻣﺮﺣﻠﻪ ﯾﮏ ﭘﺮوژهي ﺟﺪﯾﺪ اﯾﺠﺎد ﻣﯽ ﮔﺮدد‪.‬‬
‫‪31‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫در ﮐﯿﻒ آزﻣﺎﯾﺸﮕﺎه ‪ DSP‬ﯾﮏ ‪ JTAG‬از ﻧﻮع ‪ XDS100ver2‬ﻗﺮار داده ﺷﺪه اﺳﺖ ﮐﻪ ﺑﺎﯾﺪ ﻫﻨﮕﺎم ﺳـﺎﺧﺘﻦ‬
‫ﺗﻮﺟﻪ‬
‫ﻫﺮ ﭘﺮوژه ﺟﺪﯾﺪ ﻧﺎم ان رادر ﻗﺴﻤﺖ ‪ CONNECTION‬در ﭘﻨﺠﺮه ‪ NEW CCS PROJECT‬وارد ﮐﻨﯿﻢ‪.‬‬

‫‪ (3‬اﺿﺎﻓﻪ ﮐﺮدن ‪ gel‬ﻓﺎﯾﻞ ﺑﺮد‪:‬‬


‫‪1‬‬
‫در اﯾﻦ ﻣﺮﺣﻠﻪ ﺑﺎﯾﺪ ‪ gel‬ﻓﺎﯾﻞ ﻣﻨﺎﺳﺐ ﺑﻪ ﺑﺮد اﺿﺎﻓﻪ ﺷﻮد‪ .‬اﮔﺮ از ﺷﺒﯿﻪ ﺳﺎز ‪ CCS‬اﺳﺘﻔﺎده ﻣﯽﮐﻨﯿﺪ‪ ،‬ﻧﯿﺎز ﺑﻪ اﯾﻦ ﮐﺎر ﻧﻤﯽﺑﺎﺷـﺪ‬
‫و ﭘﯿﺶ ﻓﺮض ﻧﺮماﻓﺰار ﻣﻨﺎﺳﺐ اﺳﺖ‪ .‬اﺿﺎﻓﻪ ﮐﺮدن ‪ gel‬ﻓﺎﯾﻞ ﺑﺮاي ﺗﻨﻈﯿﻢ ﺳﺮﻋﺖ ﺑﺎس و اﻓﺰاﯾﺶ ﺳﺮﻋﺖ ﭘﺮدازﻧﺪه ﺻـﻮرت ﻣـﯽ‪-‬‬
‫ﮔﯿﺮد‪ .‬در ﻫﻨﮕﺎم اﺳﺘﻔﺎده از ﺑﺮدﻫﺎي ‪ DSP‬در اﮐﺜﺮ ﻣﻮارد ﻧﯿﺎز ﺑﻪ اﺿﺎﻓﻪ ﮐﺮدن ﯾﮏ ‪ gel‬ﻓﺎﯾـﻞ ﻣـﯽ ﺑﺎﺷـﺪ‪ .‬در ﻧـﺮم اﻓـﺰار ﺑـﺮاي ﻫـﺮ‬
‫‪gel‬‬ ‫ﭘﺮدازﻧﺪه ﯾﮏ ‪ gel‬ﻓﺎﯾﻞ ﭘﯿﺶ ﻓﺮض وﺟﻮد دارد اﻣﺎ ﻫﻨﮕﺎم اﺳﺘﻔﺎده از ﺑﺮدﻫﺎي آﻣﺎده‪ ،‬ﺑﻌﻀﺎ ﻧﯿﺎز اﺳﺖ ﮐﻪ ‪ gel‬ﻓﺎﯾﻞ اﺳﺘﺎﻧﺪارد ﺑﺎ‬
‫ﻓﺎﯾﻞ اراﺋﻪ ﺷﺪه ﺗﻮﺳﻂ ﺷﺮﮐﺖ ﺳﺎزﻧﺪه ﺑﺮد ﺗﻌﻮﯾﺾ ﮔﺮدد‪ .‬در اﮐﺜﺮ ﺑﺮدﻫﺎي آﻣﺎده ﺧـﺎرﺟﯽ ) ﻧﻈﯿـﺮ اﻧـﻮاع ‪ DSK‬ﯾـﺎ ‪ ( EVM‬ﺑﺎﯾـﺪ‬
‫اﯾﻨﮑﺎر اﻧﺠﺎم ﭘﺬﯾﺮد‪.‬‬
‫در ‪ CCS‬ﻧﺴﺨﻪ ‪ 4‬ﺑﻪ ﺑﺎﻻ ﯾﮏ ﻓﺎﯾﻞ ﺑﺎ ﭘﺴﻮﻧﺪ ‪ ccxml‬ﻫﻤﺮاه ﻫﺮ ﭘﺮوژه اﯾﺠﺎد ﻣﯽ ﺷﻮد ﮐﻪ ﺣﺎوي اﻃﻼﻋـﺎت ﻣـﻮرد ﻧﯿـﺎز ﻧـﺮم‬
‫‪gel‬‬ ‫اﻓﺰار ﺑﺮاي ارﺗﺒﺎط ﺑﯿﻦ ﺑﺮد و ﮐﺎﻣﭙﯿﻮﺗﺮ اﺳﺖ‪ .‬اﯾﻦ ﻓﺎﯾﻞ ﺣﺎوي ﻧﺎم وﻣﺪل ‪ JTAG‬و ﻧﺎم ﭘﺮدازﻧﺪه ﻧﯿﺰ ﻣـﯽﺑﺎﺷـﺪ‪ .‬ﻣﺤـﻞ اﻧﺘﺨـﺎب‬
‫ﻓﺎﯾﻞ ﻧﯿﺰ در اﯾﻦ ﻓﺎﯾﻞ ﻣﯽ ﺑﺎﺷﺪ‪ .‬ﺑﺮاي اﯾﻦ ﻣﻨﻈﻮر در ‪ Project Explorer‬روي ‪ targetConfigs‬دوﺑﺎر ﮐﻠﯿﮏ ﮐﻨﯿﺪ ﺗﺎ ﮔﺴﺘﺮش ﯾﺎﺑـﺪ‪.‬‬
‫روي ﻓﺎﯾﻞ‪ TMS320C5509A.ccxml‬دو ﺑﺎر ﮐﻠﯿﮏ ﮐﻨﯿﺪ ﺗﺎ ﺑﺎز ﺷﻮد‪.‬‬

‫ﺗﻨﻈﯿﻤﺎت ‪JTAG‬‬ ‫ﺷﮑﻞ ‪:4‬‬

‫____________________________________________________________________‬
‫‪ - 1‬در ﻧﺮم اﻓﺰار ‪ CCS‬ﺗﻌﺪادي ‪ Simulator‬ﻗﺮار دارد ﮐﻪ ﺑﺎ ﮐﻤﮏ آﻧﻬﺎ ﻣﯽ ﺗﻮان ﺑﻌﻀﯽ از ﻋﻤﻠﮑﺮدﻫﺎي ‪ DSP‬ﻫﺎ را ﺑﺪون ﻧﯿﺎز ﺑﻪ ﺑﺮد واﻗﻌﯽ ﺗﺴﺖ ﻧﻤﻮد‪.‬‬
‫‪Simulator‬ﻫﺎ ﺑﺴﯿﺎر ﻗﻮي ﻃﺮاﺣﯽ ﺷﺪه اﻧﺪ ﺑﻪ ﻃﻮرﯾﮑﻪ اﮔﺮ ﯾﮏ ﺑﺮﻧﺎﻣﻪ در ‪ Simulator‬ﺑﻪ درﺳﺘﯽ ﮐﺎر ﻧﻤﺎﯾﺪ ﺑﻪ اﺣﺘﻤﺎل ﺑﺴﯿﺎر ﺑﺎﻻ ﺑﺮ روي ﺑﺮد واﻗﻌﯽ ﻧﯿﺰ ﺑﻪ‬
‫ﻫﻤﺎن ﺷﮑﻞ ﻋﻤﻞ ﺧﻮاﻫﺪ ﻧﻤﻮد‪ .‬در ﻋﻤﻞ ﺗﻔﺎوت ﺑﯿﻦ ‪ Simulator‬و ﯾﮏ ﺑﺮد واﻗﻌﯽ ) ‪ + CCS + JTAG‬ﺑﺮد (‪ ،‬در ﺑﺨﺶ ﻣﺮﺑﻮط ﺑﻪ ‪ Peripheral‬ﻫﺎ ﻧﻈﯿﺮ‬
‫ﭘﻮرﺗﻬﺎي ﻣﺨﺘﻠﻒ ﭘﺮدازﻧﺪه ﻧﻈﯿﺮ ‪ Serial ، USB‬و ‪ ...‬ﻣﯽ ﺑﺎﺷﺪ ﮐﻪ در اﮐﺜﺮ ‪Simulator‬ﻫﺎ اﯾﻦ ﺑﺨﺸﻬﺎ ﭘﯿﺎده ﺳﺎزي ﻧﺸﺪهاﻧﺪ‪.‬‬
‫‪32‬‬ ‫آزﻣﺎﯾﺶ ‪ :1‬آﺷﻨﺎﯾﯽ ﺑﺎ ﻧﺮم اﻓﺰار ‪CCS‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﭘﻨﺠﺮه زﯾﺮ ﺑﺎز ﻣﯽﺷﻮد‪:‬‬

‫ﺷﮑﻞ ‪ :5‬ﺗﻨﻈﯿﻤﺎت ﭘﺮدازﻧﺪه‬

‫در اﯾﻦ ﭘﻨﺠﺮه ﺗﻨﻈﯿﻤﺎت ﻣﺮﺑﻮط ﺑﻪ ﻧﻮع‪ ) JTAG‬ﻣﺜﻼ ‪ ( XDS100v2‬و ﻧﺎم ﭘﺮدازﻧﺪه ﮐﻪ ﻗﺒﻼ در ﻫﻨﮕـﺎم اﯾﺠـﺎد ﭘـﺮوژه ﺟﺪﯾـﺪ وارد‬
‫ﻧﻤﻮده اﯾﺪ ﻗﺎﺑﻞ ﻣﺸﺎﻫﺪه و ﺗﻐﯿﯿﺮ اﺳﺖ‪ .‬روي زﺑﺎﻧﻪ ‪Advanced‬در ﭘﺎﯾﯿﻦ ﭘﻨﺠﺮه ﮐﻠﯿﮏ ﮐﻨﯿﺪ‪ .‬روي ‪ C55xx‬ﮐﻠﯿﮏ ﮐﺮده و درﻧﻬﺎﯾـﺖ‬
‫…‪Browse‬را ﺑﺰﻧﯿﺪ‪.‬‬

‫ﺷﮑﻞ ‪ :6‬اﻧﺘﺨﺎب ‪ gel‬ﻓﺎﯾﻞ ﻣﻨﺎﺳﺐ‬

‫از ﭘﻮﺷﻪ ‪ c:\DSPLab\gel Files‬ﻓﺎﯾﻞ ‪ DSPro5509DSK.gel‬را اﻧﺘﺨﺎب ﮐﻨﯿﺪ و روي ‪ open‬ﮐﻠﯿﮏ ﮐﻨﯿﺪ ‪.‬‬

‫ﺷﮑﻞ ‪ :7‬اﻧﺘﺨﺎب ژل ﻓﺎﯾﻞ ﻣﻨﺎﺳﺐ‬

‫اﮐﻨﻮن در ﻓﺎﯾﻞ ﺑﺎ ﭘﺴﻮﻧﺪ ‪ ،ccxml‬روي ‪ save‬ﮐﻠﯿﮏ ﮐﻨﯿﺪ‪.‬‬


‫‪33‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﺷﮑﻞ ‪ :8‬ﺗﻨﻈﯿﻤﺎت ‪ gel‬ﻓﺎﯾﻞ ﻣﻨﺎﺳﺐ‬

‫‪ (3‬ﻧﻮﺷﺘﻦ اوﻟﯿﻦ ﺑﺮﻧﺎﻣﻪ ‪ C‬در ‪:CCS‬‬


‫اﮐﻨﻮن در ‪ Project Explorer‬روي ﻓﺎﯾﻞ ‪ main.c‬دو ﺑﺎر ﮐﻠﯿﮏ ﮐﻨﯿﺪ ﺗﺎ ﺑﺎز ﺷﻮد‪.‬‬

‫‪C‬‬ ‫ﺷﮑﻞ ‪ : 9‬ﺑﺎز ﮐﺮدن ﻓﺎﯾﻞ ‪ main.c‬ﺑﺮاي ﻧﻮﺷﺘﻦ اوﻟﯿﻦ ﺑﺮﻧﺎﻣﻪ‬

‫ﻓﺎﯾﻞ ‪ main.c‬را ﺑﻪ ﺻﻮرت زﯾﺮ ﺗﻐﯿﺮ دﻫﯿﺪ‪:‬‬

‫ﺷﮑﻞ ‪ :10‬ﺑﺮﻧﺎﻣﻪ ﺟﺪﯾﺪ ﺑﺮاي ﭼﺎپ ﯾﮏ ﻣﺘﻦ‬


‫‪34‬‬ ‫آزﻣﺎﯾﺶ ‪ :1‬آﺷﻨﺎﯾﯽ ﺑﺎ ﻧﺮم اﻓﺰار ‪CCS‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﺗﻮﺿﯿﺢ ﻣﺨﺘﺼﺮ در ﻣﻮرد ﻧﻘﺶ ﻓﺎﯾﻞ ‪ : .cmd‬ﻓﺎﯾﻞ ‪ .cmd‬ﺟﻬﺖ ﻣﺪﯾﺮﯾﺖ ﺣﺎﻓﻈﻪ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﯽ ﮔﯿﺮد‪.‬‬
‫ﺑﺎ ﮐﻤﮏ اﯾﻦ ﻓﺎﯾﻞ ﮐﺎرﺑﺮ ﻣﯽ ﺗﻮاﻧﺪ ﺑﺨﺸﻬﺎي ﻗﺎﺑﻞ اﺳﺘﻔﺎده ﺣﺎﻓﻈﻪ ﭘﺮدازﻧﺪه را ﺑﺮاي ﻧﺮم اﻓﺰار ‪ ccs‬ﻣﻌﺮﻓﯽ ﮐﻨﺪ‪.‬‬

‫‪ (5‬اﺿﺎﻓﻪ ﮐﺮدن ﻓﺎﯾﻞ ‪COMMAND‬‬

‫ﻓﺎﯾﻞ ‪ DSP_PRO_5509A.cmd‬را ﮐﻪ در ﻣﺴﯿﺮ ‪ c:\DSPlab\AZ1‬ﻗﺮار دارد را داﺧﻞ ﭘﻮﺷﻪي ﭘﺮوژه ﮐﭙﯽ ﮐﻨﯿﺪ‪.‬‬
‫ﻣﺤﺘﻮﯾﺎت اﯾﻦ ﻓﺎﯾﻞ ﺑﻪ ﺷﮑﻞ زﯾﺮ اﺳﺖ‪:‬‬

‫‪MEMORY‬‬
‫{‬
‫‪PAGE‬‬ ‫‪0:‬‬

‫‪DRAM1‬‬ ‫‪: origin =00100h , length=10000h‬‬


‫}‬
‫‪SECTIONS‬‬
‫{‬
‫}{ ‪.text:‬‬ ‫>‬ ‫‪DRAM1‬‬ ‫‪PAGE‬‬ ‫‪0‬‬
‫}‬
‫ﺑﻪ ﺟﺎي ﮐﭙﯽ ﻣﯽ ﺗﻮاﻧﯿﺪ اﯾﻦ ﻓﺎﯾﻞ را در درون ‪ CCS‬در ﯾﮏ ﻓﺎﯾﻞ ﺑﺎ ﭘﺴﻮﻧﺪ ‪ *.cmd‬ﺗﺎﯾﭗ ﮐﻨﯿﺪ‪.‬دﻗﺖ ﺷﻮد ﮐﻪ ﺗﻤﺎم ﻓﺎﺻﻠﻪ ﻫﺎ و‬
‫ﺣﺮوف ﮐﻮﭼﮏ و ﺑﺰرگ رﻋﺎﯾﺖ ﺷﻮﻧﺪ‪.‬‬
‫ﺑﺮاي اﯾﺠﺎد ﯾﮏ ﻓﺎﯾﻞ ﺟﺪﯾﺪ از ﻣﻨﻮي ‪ file‬ﮔﺰﯾﻨﻪ ‪ new‬ﺳﭙﺲ ﮔﺰﯾﻨﻪ ‪ source‬اﻧﺘﺨﺎب ﺷﻮد‪.‬در ﭘﻨﺠﺮﻫﺎي ﮐﻪ ﺑﺎز ﻣﯽ ﺷﻮد ﭘﺲ‬
‫از وارد ﮐﺮدن ﻧﺎم ﻓﺎﯾﻞ ﻧﻮع ‪template‬را ‪ none‬اﻧﺘﺨﺎب ﮐﻨﯿﺪ‪.‬ﺳﭙﺲ ﻓﺎﯾﻞ ﻗﺒﻞ را )‪(*.cmd‬ﺗﺎﯾﭗ ﻧﻤﺎﯾﯿﺪ‪.‬‬
‫اﮔﺮ ﻣﯽ ﺧﻮاﻫﯿﺪ در ﻣﻮرد اﯾﻦ ﻓﺎﯾﻞ و ﻧﺤﻮه ﻋﻤﻠﮑﺮد آن ﺑﯿﺸﺘﺮ ﺑﺪاﻧﯿﺪ ﻣﯽ ﺗﻮاﻧﯿﺪ ﺑﻪ ﻓﺼﻮل ﻣﺮﺗﺒﻂ ﺑﺎ ﻓﺎﯾﻞ‪ command‬در ﮐﺘﺎب‬
‫"ﻣﺮﺟﻊ ﮐﺎﻣﻞ ﭘﺮدازﻧﺪه ﻫﺎي‪ DSP‬ﻣﺮاﺟﻌﻪ ﮐﻨﯿﺪ‪.‬‬

‫‪ Build (6‬و ‪:Run‬‬


‫را اﻧﺘﺨﺎب ﮐﻨﯿﺪ‪ .‬ﻣﻄﻤﺌﻦ ﺷﻮﯾﺪ ﮐﻪ ﻫﯿﭻ ﺧﻄﺎﯾﯽ ﺗﻮﻟﯿﺪ ﻧﺸﺪه ﺑﺎﺷﺪ‪ .‬اﮔـﺮ ﺧﻄـﺎﯾﯽ در‬ ‫ﺑﺮاي ‪1Build‬ﺷﺪن ﭘﺮوژه آﯾﮑﻮن‬
‫ﺑﺮﻧﺎﻣﻪ وﺟﻮد داﺷﺖ آن را ﺑﺮ ﻃﺮف ﮐﻨﯿﺪ‪ .‬ﺧﻄﺎ ﻫﺎ در ﻧﺮم اﻓﺰار ‪ CCS‬در ﭘﻨﺠﺮه ﭘﺎﯾﯿﻦ‪ ،‬ﺳﻤﺖ راﺳﺖ ﻧـﺮم اﻓـﺰار ﻧﺸـﺎن داده ﻣـﯽ‬
‫ﺷﻮﻧﺪ‪.‬‬

‫____________________________________________________________________‬
‫‪ Build - 1‬ﺑﻪ ﻣﻌﻨﯽ ﮐﺎﻣﭙﺎﯾﻞ و ﺳﭙﺲ ﻟﯿﻨﮏ ﺑﺮﻧﺎﻣﻪ ‪ C‬ﻣﯽ ﺑﺎﺷﺪ‪.‬‬
‫‪35‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﺷﮑﻞ ‪ :11‬ﭘﻨﺠﺮه ﺧﻄﺎﻫﺎ‬

‫ﯾﮏ راه آﺳـﺎن ﺑـﺮاي‬ ‫وارد ﻣﺤﯿﻂ ‪ debug‬ﺷﻮﯾﺪ‪ .‬آﯾﮑﻮن‬ ‫اﮔﺮ ﺑﺮﻧﺎﻣﻪ ﺧﻄﺎﺋﯽ ﻧﺪاﺷﺖ ﻣﯽ ﺗﻮاﻧﯿﺪ ﺑﺎ زدن آﯾﮑﻮن‬
‫اﻧﺠﺎم ﮐﻠﯿﻪ ﻣﺮاﺣﻞ ﮐﺎﻣﭙﺎﯾﻞ‪ ،‬ﻟﯿﻨﮏ و اﺟﺮاي ﺑﺮﻧﺎﻣﻪ ﻣﯽ ﺑﺎﺷﺪ‪ .‬در ‪ CCS‬ﻧﺴﺨﻪ ‪ 5‬ﻓﻀﺎي ﻣﺮﺑﻮط ﺑـﻪ ﺗﺎﯾـﭗ ﺑﺮﻧﺎﻣـﻪ ) ‪ ( Edit‬و رﻓـﻊ‬
‫اﺷﮑﺎل ﺑﺮﻧﺎﻣﻪ ) ‪ ( debug‬از ﻫﻢ ﺟﺪا ﺷﺪه اﺳﺖ‪ .‬در ﺑﺎﻻي ﻧﺮم اﻓﺰار ﮔﻮﺷﻪ ﺳﻤﺖ راﺳﺖ دو ﮐﻠﯿﺪ ﺑﻪ ﺷﮑﻞ زﯾﺮ وﺟﻮد دارد ﮐﻪ ﺑـﺎ‬
‫ﮐﻤﮏ اﻧﻬﺎ ﻣﯽ ﺗﻮان از ﻓﻀﺎي ‪ Edit‬ﺑﻪ ﻓﻀﺎي ‪ Debug‬رﻓﺖ‪ .‬دﻗﺖ ﺷﻮد ﮐﻪ ﻣﻨﻮﻫﺎي ﻧﺮم اﻓﺰار در ﻫﺮ ﯾﮏ از اﯾﻦ دو ﻣﺤﯿﻂ ﺑـﺎ ﻫـﻢ‬
‫ﻣﺘﻔﺎوت ﺑﻮده و ﺣﺘﯽ ﻇﺎﻫﺮ ﻧﺮم اﻓﺰار ﻧﯿﺰ ﻋﻮض ﻣﯽ ﺷﻮد‪.‬‬

‫ﺷﮑﻞ ‪ :12‬ﺗﻐﯿﯿﺮ وﺿﻌﯿﺖ ﻧﺮم اﻓﺰار از ﻣﺤﯿﻂ ‪ debug‬ﺑﻪ ‪ Edit‬و ﺑﺮﻋﮑﺲ‬

‫در ﺻﻮرﺗﯿﮑﻪ ﺑﺎ زدن آﯾﮑﻮن ﺳﻮﺳﮏ ﻫﻤﻪ ﭼﯿﺰ ﺑﺎ ﻣﻮﻓﻘﯿﺖ اﻧﺠﺎم ﭘﺬﯾﺮد ﻣﺤﯿﻂ ﻧﺮم اﻓﺰار از ﻓﻀﺎي ‪ Edit‬ﺑﻪ ‪ Debug‬ﺗﻐﯿﯿـﺮ ﯾﺎﻓﺘـﻪ و‬
‫ﺑﺮﻧﺎﻣـﻪ اﺟـﺮا ﻣـﯽﺷـﻮد و ﻧﺘﯿﺠـﻪ در‬ ‫آﯾﮑﻮﻧﻬﺎي ﺷﮑﻞ ﺑﻌﺪ ﺑﻪ ﺻﻮرت ﻓﻌﺎل در ﺑﺎﻻي ﻧﺮم اﻓﺰار ﻇﺎﻫﺮ ﻣﯽ ﮔﺮدﻧﺪ‪ .‬ﺑﺎ اﻧﺘﺨـﺎب‬
‫ﭘﻨﺠﺮهي ‪ Console‬ﮐﻪ در ﭘﺎﯾﯿﻦ ﺻﻔﺤﻪ اﺳﺖ‪ ،‬ﻧﻤﺎﯾﺶ داده ﻣﯽﺷﻮد‪.‬‬

‫ﺷﮑﻞ ‪ :13‬اﺟﺮاي ﺑﺮﻧﺎﻣﻪ‬

‫‪ (7‬ﺑﻌﻀﯽ از اﻣﮑﺎﻧﺎت ﻧﺮم اﻓﺰاري ﺑﺮاي دﯾﺒﺎگ‬


‫‪Break Point (1 -7‬‬
‫ﺑﺮﻧﺎﻣﻪ را ﺑﻪ ﺷﮑﻞ زﯾﺮ ﻋﻮض ﮐﻨﯿﺪ‪.‬‬
‫>‪#include <stdio.h‬‬
‫;‪inti= 10‬‬
‫;]‪int Array[100‬‬
‫)(‪main‬‬
‫{‬
‫;) " ‪printf("Hello ....‬‬
‫) ‪for( i = 0 ; i< 100 ; i++‬‬
‫‪36‬‬ ‫آزﻣﺎﯾﺶ ‪ :1‬آﺷﻨﺎﯾﯽ ﺑﺎ ﻧﺮم اﻓﺰار ‪CCS‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫{‬
‫;‪Array[i] = i‬‬
‫}‬
‫}‬
‫ﭘﺮوژه را دوﺑﺎره ‪ Build‬ﮐﺮده و اﮔﺮ ﺧﻄﺎﯾﯽ ﻧﺪاﺷﺖ آﻧﺮا ﺑﺮ روي ﺑﺮد ‪ Load‬ﮐﻨﯿﺪ‪.‬‬
‫ﺑﺮاي ‪ Build‬و ‪ Load‬ﺑﺮﻧﺎﻣﻪ ﻣﯽ ﺗﻮاﻧﯿﺪ ﺑﺮ روي آﯾﮑﻮن ﺳﻮﺳﮏ ﮐﻠﯿﮏ ﮐﻨﯿﺪ‪ .‬اﯾﻦ راه ﺣﻞ ﺳﺎدهاي اﺳﺖ ﻓﻘﻂ ﮐﻤﯽ ﻃﻮﻻﻧﯽ‬
‫اﺳﺖ ‪.‬ﺑﻬﺘﺮ اﺳﺖ ﺑﻪ ﺟﺎي آن‪ ،‬از ﻣﻨﻮي‪ Project‬ﮔﺰﯾﻨﻪ ‪ Build All‬را ﺑﺰﻧﯿﺪ) ‪ ( CTRL+B‬و ﺳﭙﺲ وﻗﺘﯽ ﺑﺮﻧﺎﻣﻪ ‪ Build‬ﺷﺪ در‬
‫ﺟﻮاب ﺳﺌﻮال ﻧﺮم اﻓﺰار ﮐﻪ ﻣﯽﭘﺮﺳﺪ آﯾﺎ ﻣﯽﺧﻮاﻫﯿﺪ ﻓﺎﯾﻞ ‪ *.out‬را ﻣﺠﺪد ‪ Load‬ﮐﻨﺪ ﺑﺨﻮاﻫﯿﺪ ﮐﻪ ﻫﻤﯿﺸﻪ اﯾﻦ ﮐﺎر را اﻧﺠﺎم دﻫﺪ‪.‬‬
‫ﺑﺮاي اﻧﺠﺎم ﮐﻠﯿﻪ اﯾﻦ ﮐﺎرﻫﺎ ﺑﺎﯾﺪ در ﻣﺤﯿﻂ ‪ Debug‬ﺑﺎﺷﯿﺪ‪.‬‬
‫در درون ﻓﺎﯾﻞ ‪ main.c‬ﺑﺮ روي ﺧﻂ ; ‪ Array[i] = i‬رﻓﺘﻪ و از ﻣﻨﻮي ‪ Run‬ﮔﺰﯾﻨﻪ ‪ Toggle Break Point،‬را ﺑﺰﻧﯿﺪ )‬
‫‪.( CTRL+SHIFT+B‬در ﺻﻮرﺗﯿﮑﻪ ﻣﻨﻮي ‪ RUN‬در ﻧﺮم اﻓﺰاروﺟﻮد ﻧﺪاﺷﺖ ﻣﺤﯿﻂ ﻧﺮم اﻓﺰار را از ﺣﺎﻟﺖ ‪ EDIT‬ﺑﻪ ‪debug‬‬
‫ﺗﻐﯿﯿﺮ دﻫﯿﺪ‪ .‬اﯾﻦ ﮐﺎر ﺑﺎﻋﺚ اﯾﺠﺎد ﯾﮏ ‪ Break Point‬در اﯾﻦ ﺧﻂ از ﺑﺮﻧﺎﻣﻪ ﻣﯽﮔﺮدد‪ Break Point .‬ﯾﮑﯽ از اﻣﮑﺎﻧﺎت‪،‬‬
‫ﻧﺮماﻓﺰارﻫﺎي ﺑﺮﻧﺎﻣﻪﻧﻮﯾﺴﯽ ﺑﺮاي رﻓﻊ ﻋﯿﺐ ﺑﺮﻧﺎﻣﻪﻫﺎ ﻣﯽﺑﺎﺷﺪ‪ Break Point .‬ﺑﺎﻋﺚ ﺗﻮﻗﻒ اﺟﺮا در ﺧﻂ ﻣﺮﺑﻮﻃﻪ ﻣﯽﮔﺮدد‪Break .‬‬

‫( ﮐﻪ در ﺧﻂ ﻣﺮﺑﻮﻃﻪ ﻇﺎﻫﺮ ﻣﯽﺷﻮﻧﺪ ﻣﺸﺨﺺ ﻣﯽﮔﺮدﻧﺪ‪.‬‬ ‫‪Point‬ﻫﺎ در ﻧﺮماﻓﺰار ‪CCS‬ﻧﺴﺨﻪ ‪ 5‬ﺑﺎ داﯾﺮه آﺑﯽ)‬

‫ﺷﮑﻞ ‪ :14‬اﯾﺠﺎد ‪ Break Point‬در ﻧﺮماﻓﺰار‬

‫ﻗﺒﻞ از ﻓﺸﺮدن ﮐﻠﯿﺪ ‪ F8‬ﺣﺘﻤﺎ ﻧﺮم اﻓﺰار در ﻣﺤﯿﻂ دﯾﺒﺎگ ﺑﺎﺷﺪ)ﮐﻠﯿﺪ ﺳﻮﺳﮏ ﻗﺒﻞ ﻓﺸﺮده ﺷﺪه ﺑﺎﺷﺪ(‪.‬اﮐﻨﻮن ﺑﺎ زدن ﮐﻠﯿﺪ ‪F8‬‬
‫ﺑﺮﻧﺎﻣﻪ را اﺟﺮا ﮐﻨﯿﺪ‪ .‬ﺧﻮاﻫﯿﺪ دﯾﺪ ﮐﻪ اﺟﺮاي ﺑﺮﻧﺎﻣﻪ در ﻣﺤﻞ ‪ Break Point‬ﻣﺘﻮﻗﻒ ﻣﯽﮔﺮدد‪.‬‬

‫اﮔﺮ اﯾﻦﺑﺎر ﭘﻨﺠﺮه ‪ stdout‬را در ﭘﺎﯾﯿﻦ ﺻﻔﺤﻪ را ﺑﺒﯿﻨﯿﺪ ‪ ،‬ﻫﯿﭻ ﻣﺘﻨﯽ‬


‫ﻧﮑﺘﻪ‬
‫در آن ﻇﺎﻫﺮ ﻧﺸﺪه اﺳﺖ‪ .‬اﮔﺮﭼﻪ ﮐﻪ ﺗﺎﺑﻊ )(‪ printf‬ﻗﺒﻼ اﺟﺮا ﺷﺪه اﺳﺖ‬
‫وﻟﯽ ﻫﻨﻮز ﻧﺘﯿﺠﻪ اﺟﺮاي )(‪ printf‬در ﺧﺮوﺟﯽ ﻇﺎﻫﺮ ﻧﺸﺪه اﺳﺖ‪ .‬اﯾﻦ از‬
‫ﻣﺤﺪودﯾﺘﻬﺎي ﻧﺮماﻓﺰار ‪ CCS‬اﺳﺖ‪ .‬دﻟﯿﻞ اﯾﻦ ﻣﺴﺌﻠﻪ اﯾﻦ اﺳﺖ ﮐﻪ ﻫﻤﯿﺸﻪ‬
‫‪37‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫آﺧﺮﯾﻦ )(‪ printf‬در درون ﺳﺨﺖ اﻓﺰار ﯾﺎ ﺷﺒﯿﻪﺳﺎز ﻣﺎﻧﺪه و ﺑﺮاي ﻧﻤﺎﯾﺶ‪،‬‬
‫ﺑﻪ ﻧﺮماﻓﺰار ‪ CCS‬ﻣﻨﺘﻘﻞ ﻧﻤﯽﮔﺮدد‪ .‬ﺑﺮاي ﺣﻞ اﯾﻦ ﻣﺸﮑﻞ ﯾﺎ ﺑﺎﯾﺪ ﺑﺮﻧﺎﻣﻪ را‬
‫ﺗﺎ ﺑﻪ آﺧﺮ اﺟﺮا ﮐﻨﯿﺪ ﺗﺎ ﺑﺮﻧﺎﻣﻪ ﺗﻤﺎم ﺷﻮد و ﯾﺎ در ﻣﺘﻦ درون ﻫﺮ ‪ ،printf‬از‬
‫‪ \n‬اﺳﺘﻔﺎده ﻧﻤﻮد‪ \n .‬در ﮐﺪ ﻧﻮﯾﺴﯽ اﺳﺘﺎﻧﺪارد ﺑﻪ ﻣﻌﻨﯽ ﺧﻂ ﺑﻌﺪ ﻣﯽﺑﺎﺷﺪ‬
‫و ﺑﺎﻋﺚ ﻣﯽﺷﻮد ﻣﺘﻦ ﭘﺲ از آن در ﺧﻂ ﺑﻌﺪ ﻧﻤﺎﯾﺶ داده ﺷﻮد‪ .‬اﻣﺎ در‬
‫‪ CCS‬ﻋﻼوه ﺑﺮ ﺧﻂ ﺑﻌﺪ‪ ،‬ﺑﺎﻋﺚ ﻣﯽﺷﻮد ﻣﺘﻦ ﻗﺒﻞ از ‪ ،\n‬ﺑﻼﻓﺎﺻﻠﻪ ﺟﻬﺖ‬
‫ﻧﻤﺎﯾﺶ ﺑﻪ ﻧﺮم اﻓﺰار ﻓﺮﺳﺘﺎده ﺷﻮد‪.‬‬

‫ﺗﻤﺮﯾﻦ ‪ :1‬ﯾﮏ ﺗﺎﺑﻊ ﺑﻨﻮﯾﺴﯿﺪ ﮐﻪ ﻋﺪد ﻣﻮﺟﻮد در ﻣﺘﻐﯿﯿﺮ ‪ x‬را ﺑﺎ ‪ 2‬ﺟﻤﻊ ﻣﯽ ﻧﻤﺎﯾﺪ و ﻧﺘﯿﺠﻪ را ﺑﺮ ﮔﺮداﻧﺪ‪.‬‬
‫ﺗﻤﺮﯾﻦ ‪ :2‬ﺗﺎﺛﯿﺮ ‪ \n‬در ﻧﺤﻮه اﺟﺮاي دﺳﺘﻮر ‪ printf‬در ‪ CCS‬ﺑﺮرﺳﯽ ﮐﻨﯿﺪ‪.‬‬
‫ﺗﻤﺮﯾﻦ‪ :3‬ﻋﻤﻠﮑﺮد ﻫﺮ ﯾﮏ از ‪ 5‬ﻓﻠﺸﯽ ﮐﻪ در ﺷﮑﻞ ﺑﻌﺪ ﻧﺸﺎن داده ﺷﺪه اﺳﺖ را ﺑﺮرﺳﯽ و ﺑﯿﺎن ﻧﻤﺎﺋﯿﺪ‪ .‬اﯾﻦ ﻓﻠﺸﻬﺎ ﺑﺮاي‬
‫اﺟﺮاي ﺑﺮﻧﺎﻣﻪ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﯽ ﮔﯿﺮﻧﺪ‪.‬‬

‫ﺗﻤﺮﯾﻦ ‪: 2‬ﯾﮏ ﺑﺮﻧﺎﻣﻪ ‪ C‬ﺑﻨﻮﯾﺴﯿﺪ ﮐﻪ ﻣﺘﻦ زﯾﺮ را ﭼﺎپ ﮐﻨﺪ‪:‬‬

‫‪Salam‬‬
‫…‪Inja Az DSP ast‬‬

‫اﯾﻦ ﺑﺮﻧﺎﻣﻪ در ﺣﺎﻟﯿﮑﻪ ﺧﻂ ﺑﻪ ﺧﻂ اﺟﺮا ﻣﯽﺷﻮد ﺑﺎﯾﺪ ﺑﺘﻮاﻧﺪ ﻣﺘﻦ را ﺑﻼﻓﺎﺻﻠﻪ در ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ دﻫﺪ‪.‬‬

‫‪ (2-7‬ﭘﻨﺠﺮهي ‪Watch‬‬
‫در ‪ ccs‬اﯾﻦ اﻣﮑﺎن وﺟﻮد دارد ﮐﻪ ﺑﺘﻮان ﻣﻘﺪار ﻣﺘﻐﯿﯿﺮﻫﺎ و ﺣﺎﻓﻈﻪ ﻫﺎي ﻣﺨﺘﻠﻒ را ﻣﺸﺎﻫﺪه ﻧﻤﻮد‪ .‬ﻣﺜﻼ ﺑﺮاي ﻣﺸﺎﻫﺪه آرﯾﻪ ‪، Array‬‬
‫ﺑﻪ ﻣﻨﻮي ‪ View‬رﻓﺘﻪ و ﮔﺰﯾﻨﻪ ‪ Expressions‬را اﻧﺘﺨﺎب ﮐﻨﯿﺪ‪ .‬ﺑﺎ اﯾﻨﮑﺎر ﭘﻨﺠﺮه ‪ Watch‬در ﻧﺮم اﻓﺰار ﻇﺎﻫﺮ ﻣﯽ ﺷﻮد‪.‬‬
‫ﻣﻄﻤﺌﻦ ﺷﻮﯾﺪ ﮐﻪ ‪ Break Point‬ﻣﻄﺎﺑﻖ ﺷﮑﻞ در ﺧﻂ ;‪ Array[i]=i‬ﻗﺮار دارد‪.‬‬
‫‪38‬‬ ‫آزﻣﺎﯾﺶ ‪ :1‬آﺷﻨﺎﯾﯽ ﺑﺎ ﻧﺮم اﻓﺰار ‪CCS‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﺷﮑﻞ ‪:15‬ﮔﺬاﺷﺘﻦ‪ Break Point‬در ﻧﺮماﻓﺰار‬

‫‪watch‬‬ ‫ﺷﮑﻞ ‪ :16‬اﺿﺎﻓﻪ ﮐﺮدن ﭘﻨﺠﺮه‬

‫روي ‪ Add new expression‬ﮐﻠﯿﮏ ﮐﻨﯿﺪ و ‪ Array‬را وارد ﮐﻨﯿﺪ‪ Array.‬اﺳﻢ ﯾﮑﯽ از ﻣﺘﻐﯿﯿﺮﻫﺎي ﺑﺮﻧﺎﻣﻪ ‪ C‬ﻣﯽﺑﺎﺷﺪ ﮐﻪ ﺑﺎﯾـﺪ دﻗﯿﻘـﺎ‬
‫ﻣﻌﺎدل ﻫﻤﺎن ﻣﺘﻐﯿﯿﺮي ﮐﻪ در ‪ C‬ﺗﻌﺮﯾﻒ ﺷﺪه اﺳﺖ ﺗﺎﯾﭗ ﮔﺮدد‪.‬‬
‫‪39‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫‪watch‬‬ ‫ﺷﮑﻞ ‪ :17‬ﭘﻨﺠﺮه‬

‫‪ Array‬را ﮔﺴﺘﺮش دﻫﯿﺪ ﺗﺎ ﺑﺘﻮاﻧﯿﺪ ﻣﻄﺎﺑﻖ ﺷﮑﻞ ﻣﻘﺎدﯾﺮ را ﻣﺸﺎﻫﺪه ﮐﻨﯿﺪ‪.‬‬

‫‪watch‬‬ ‫ﺷﮑﻞ ‪ :18‬ﭘﻨﺠﺮه‬


‫‪ (3-7‬ﻣﺸﺎﻫﺪهي ﺣﺎﻓﻈﻪ‬
‫ﺑﺮاي ﻣﺸﺎﻫﺪهي ﺣﺎﻓﻈﻪي ‪ ،DSP‬از ﻣﻨﻮي ‪ ،View‬ﮔﺰﯾﻨﻪي ‪ Memory Browser‬را اﻧﺘﺨﺎب ﮐﻨﯿﺪ‪:‬‬
‫‪40‬‬ ‫آزﻣﺎﯾﺶ ‪ :1‬آﺷﻨﺎﯾﯽ ﺑﺎ ﻧﺮم اﻓﺰار ‪CCS‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﺷﮑﻞ ‪ :19‬اﺿﺎﻓﻪ ﮐﺮدن ﭘﻨﺠﺮه ﻣﺸﺎﻫﺪه ﺣﺎﻓﻈﻪ‬

‫ﭘﻨﺠﺮهاي ﮐﻪ ﺑﺎز ﻣﯽﮔﺮدد ﺑﺮاي ﻣﺸﺎﻫﺪه ﻣﺤﺘﻮﯾﺎت ﺣﺎﻓﻈﻪ اﺳﺘﻔﺎده ﻣﯽﺷﻮد‪ .‬در ﻗﺴﻤﺖ ﺑﺎﻻ در ﻣﺤﻞ آدرس ‪ ،‬آدرس ﻣﺘﻐﯿﯿﺮ ‪Array‬‬
‫در ﺣﺎﻓﻈﻪ را ﺗﺎﯾﭗ ﮐﺮده و ﮐﻠﯿﺪ ‪ Enter‬را ﺑﺰﻧﯿﺪ) ﺗﺎﯾﭗ ﮐﻨﯿﺪ‪ .( &Array‬اﮔﺮ ﺑﻪ ﭘﻨﺠﺮه ‪ Watch‬ﮐﻪ در ﻗﺴﻤﺖ ﻗﺒﻞ ﺑﺎز ﻧﻤﻮدﯾﺪ‬
‫ﻧﮕﺎه ﮐﻨﯿﺪ آدرس ﻣﺘﻐﯿﯿﺮ ‪ Array‬در ﻣﻘﺎﺑﻞ آن ﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ‪ .‬ﻣﯽﺗﻮاﻧﯿﺪ ﺑﻪ ﺟﺎي ‪ &Array‬آدرس آﻧﺮا ﮐﻪ ‪ 0x2714‬اﺳﺖ را‬
‫ﻧﯿﺰ در اﯾﻦ ﻣﺤﻞ ﺗﺎﯾﭗ ﮐﻨﯿﺪ‪ .‬آﯾﺎ ﻧﺘﯿﺠﻪ ﯾﮑﺴﺎن اﺳﺖ؟‬
‫‪41‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫‪DSP‬‬ ‫ﺷﮑﻞ ‪ :20‬ﻣﺸﺎده ﺣﺎﻓﻈﻪ‬

‫ﺗﻤﺮﯾﻦ‪ :‬ﺑﺮﻧﺎﻣﻪاي ﺑﻪ زﺑﺎن ‪ c‬ﺑﻨﻮﯾﺴﯿﺪ ﮐﻪ ﻣﺎﺗﺮﯾﺲ ‪ A‬را در ﻣﺎﺗﺮﯾﺲ ‪ B‬ﺿﺮب ﮐﻨﺪ‪ .‬ﺑﺎ اﺳﺘﻔﺎده از اﻣﮑﺎﻧﺎت دﯾﺒﺎگ ﮐﻪ در اﯾـﻦ ﺑﺨـﺶ‬
‫ﯾﺎد ﮔﺮﻓﺘﻪاﯾﺪ ﻣﻄﻤﺌﻦ ﺷﻮﯾﺪ ﮐﻪ ﻧﺘﯿﺠﻪ درﺳﺖ ﻣﯽﺑﺎﺷﺪ‪.‬‬

‫‪é1‬‬ ‫‪20 3 ù‬‬


‫‪A = êê 40‬‬ ‫‪5 60 úú‬‬
‫‪êë 7‬‬ ‫‪80 9 úû‬‬
‫‪é1‬‬ ‫‪1 1ù‬‬
‫‪B = êê 2‬‬ ‫‪2 2ú‬‬
‫‪ú‬‬
‫‪êë 3‬‬ ‫‪3 3 úû‬‬
‫آزﻣﺎﻳﺶ ‪:2‬‬
‫آﺷﻨﺎﻳﻲ ﺑﺎ ﻛﻴﻒ آزﻣﺎﻳﺸﮕﺎه‬

‫دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪DSP‬‬


‫ﻫﺪف‪:‬آﺷﻨﺎﻳﻲ و راهاﻧﺪازي ﻗﺴﻤﺖﻫﺎي ﻣﺨﺘﻠﻒ ﻛﻴﻒ آزﻣﺎﻳﺸﮕﺎه‬

‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬


‫‪43‬‬ ‫آزﻣﺎﻳﺶ ‪ :2‬دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫‪ (1‬ﻣﻘﺪﻣﻪ‬
‫در اﻳﻦ آزﻣﺎﻳﺶ ﺑﺎ ﻗﺴﻤﺖﻫﺎي ﻣﺨﺘﻠﻒ ﻛﻴﻒ آزﻣﺎﻳﺸﮕﺎه آﺷﻨﺎ ﻣﻲﺷﻮﻳﻢ‪ .‬ﻳﺎد ﻣﻲﮔﻴﺮﻳﻢ ﻛﻪ ﭼﮕﻮﻧﻪ ﺑﺎ ﻛﻠﻴﺪﻫﺎ و ‪LED‬ﻫـﺎ ﻛـﺎر‬
‫ﻛﻨﻴﻢ‪ .‬از ﻣﺒﺪل آﻧﺎﻟﻮگ ﺑﻪ دﻳﺠﻴﺘﺎل ﺑﺨﻮاﻧﻴﻢ و در ﻳﻚ ﻣﺘﻐﻴﻴﺮ ذﺧﻴـﺮه ﻛﻨـﻴﻢ و در‪ LCD‬ﻛـﻪ روي ﻛﻴـﻒ ﻗـﺮار دارد ﻣﺸـﺎﻫﺪه ﻛﻨـﻴﻢ‪.‬‬
‫ﻫﻤﭽﻨﻴﻦ ﻳﻚ ﺷﻜﻞ ﻣﻮج ﺗﻮﻟﻴﺪ ﻣﻲﻛﻨﻴﻢ و ﺗﻮﺳﻂ ﻣﺒﺪل دﻳﺠﻴﺘﺎل ﺑﻪ آﻧﺎﻟﻮگ آن را ﺑﻪ ﺧﺮوﺟﻲ ﺑﺮد ﻣﻲﻓﺮﺳﺘﻴﻢ ﺗﺎ روي اﺳﻴﻠﻮﺳﻜﻮپ‬
‫ﻣﺸﺎﻫﺪه ﻧﻤﺎﻳﻴﻢ‪.‬‬

‫‪ (2‬ﻛﺎر ﺑﺎ ‪ LED‬و ﻛﻠﻴﺪﻫﺎ‬


‫ﻳﻚ ﭘﺮوژهي ﺟﺪﻳﺪ اﻳﺠﺎد ﻛﻨﻴﺪ‪) .‬ﺑﺮاي ﻳﺎدآوري ﺑﻪ ﺿﻤﻴﻤﻪي ‪ 1‬ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ(‬
‫ﺑﺮﻧﺎﻣﻪي زﻳﺮ را در ﻓﺎﻳﻞ ‪ main.c‬ﺗﺎﻳﭗ ﻛﻨﻴﺪ‪:‬‬
‫ﺣﺘﻤﺎ ‪ gel file‬ﺧﻮد ﺑﺮد اﺿﺎﻓﻪ ﺷﻮد‪.‬‬

‫>‪#include<stdio.h‬‬
‫;‪int *LED‬‬
‫;‪int *KEY‬‬
‫)(‪main‬‬
‫{‬
‫;‪LED=(int *)0x600000‬‬
‫;‪KEY= (int *)0x600800‬‬
‫{);;(‪for‬‬
‫;‪*LED= *KEY‬‬
‫}‬
‫}‬
‫ﺑﺮﺧﻼف ﻣﻴﻜﺮوﻛﻨﺘﺮﻟﺮﻫﺎي ﻣﻌﻤﻮﻟﻲ ﻣﺎﻧﻨﺪ ‪ AVR‬ﻛﻪ داراي ﭘﻮرت ﻣﻲﺑﺎﺷﻨﺪ ﻛﻪ ﻣﻲﺗﻮاﻧﻨـﺪ ﺑـﻪ ﺻـﻮرت ورودي و ﺧﺮوﺟـﻲ‬
‫ﺗﻌﺮﻳﻖ ﺷﻮﻧﺪ‪ ،‬در ﭘﺮدازﻧﺪهﻫﺎي ‪ DSP‬ﺗﻌﺪادي ﺧﻄﻮط آدرس و داده وﺟﻮد دارد‪ .‬ﺑﻪ ﻫﺮ ﻗﻄﻌﻪاي ﻛﻪ ﺑﻪ ‪ DSP‬ﻣﺘﺼﻞ ﻣﻲﻛﻨﻴﻢ ﻣﺎﻧﻨﺪ‪،‬‬
‫ﻛﻠﻴﺪ‪ ،LED ،‬ﻣﺒﺪل آﻧﺎﻟﻮگ ﺑﻪ دﻳﺠﻴﺘﺎل )‪ ،(ADC‬ﻣﺒﺪل دﻳﺠﻴﺘﺎل ﺑﻪ آﻧﺎﻟﻮگ )‪ ،(DAC‬ﺣﺎﻓﻈـﻪ و ‪ ...‬ﻳـﻚ ﻓﻀـﺎي آدرس اﺧﺘﺼـﺎص‬
‫ﻣﻲدﻫﻴﻢ ﻛﻪ ﺑﺎ ﺧﻮاﻧﺪن ﻳﺎ ﻧﻮﺷﺘﻦ در اﻳﻦ ﻓﻀﺎي آدرس ﻗﻄﻌﻪ ﻣﻮرد ﻧﻈﺮ اﻧﺘﺨﺎب ﻣﻲﺷﻮد و ﻋﻤﻠﻴﺎت ﺧﻮاﻧـﺪن ﻳـﺎ ﻧﻮﺷـﺘﻦ روي آن‬
‫اﻋﻤﺎل ﻣﻲﺷﻮد‪.‬‬
‫‪LED‬ﻫﺎ و ‪:‬ﻛﻠﻴﺪﻫﺎي روي ﺑﺮد داراي آدرس ﻣﺸﺨﺼﻲ ﻣﻲﺑﺎﺷﻨﺪ‪ .‬در اﻳﻦ ﺑﺮﻧﺎﻣﻪ آدرس ‪LED‬ﻫﺎ در اﺷﺎرهﮔﺮ ‪ LED‬و آدرس‬
‫ﻛﻠﻴﺪﻫﺎ در اﺷﺎرهﮔﺮ ‪ KEY‬رﻳﺨﺘﻪ ﻣﻲﺷﻮد‪:‬‬
‫‪ (1‬آدرس ‪ LED‬ﻫﺎ را در ﻣﺘﻐﻴﻴﺮ ‪ LED‬رﻳﺨﺘﻪ ﺷﻮد‬
‫;‪LED=(int*)0x600000‬‬
‫‪44‬‬ ‫آزﻣﺎﻳﺶ ‪ :2‬آﺷﻨﺎﻳﻲ ﻛﻴﻒ آزﻣﺎﻳﺸﮕﺎه‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮوﺧﺎورﻣﻴﺎﻧﻪ‬

‫‪ (2‬آدرس ﻛﻠﻴﺪﻫﺎ را در ﻣﺘﻐﻴﻴﺮ ‪ KEY‬رﻳﺨﺘﻪ ﺷﻮد‬


‫;‪KEY=(int*)0x600800‬‬
‫‪ (3‬ﻫﺮ ﺳﻴﮕﻨﺎﻟﻲ از ﻛﻠﻴﺪﻫﺎ ﺧﻮاﻧﺪه ﺷﻮد در ‪ LED‬ﻣﺘﻨﺎﻇﺮ رﻳﺨﺘﻪ ﺷﻮد‪.‬‬
‫ﺑﺮﻧﺎﻣﻪ را ‪ Build‬و ‪ Run‬ﻛﻨﻴﺪ‪.‬‬
‫ﺑﺎ ﻓﺸﺎر دادن ﻫﺮ ﻛﻠﻴﺪ ﺑﺎﻳﺪ ‪LED‬ﻫﺎي ﻣﺘﻨﺎﻇﺮ در ﻗﺴﻤﺖ ‪ Digital Output‬روﺷﻦ ﺷﻮﻧﺪ‪.‬‬
‫ﺗﻤﺮﻳﻦ ‪ :1‬ﺑﺮﻧﺎﻣﻪ ﺑﺎﻻ را ﻃﻮري ﺗﻐﻴﻴﺮ دﻫﻴﺪ ﺗﺎ ‪LED‬ﻫﺎ را ﺑﻪ ﺻﻮرت ﻳﻚ در ﻣﻴﺎن روﺷﻦ ﻛﻨﺪ‪.‬‬
‫ﺗﻤﺮﻳﻦ ‪ :2‬ﭼﻬﺎر ﻛﻠﻴﺪ ﺳﻤﺖ ﭼﭗ ﺑﺮد را ﺑﻪ ﻋﻨﻮان ﻋﺪد ‪ A‬و ﭼﻬﺎر ﻛﻠﻴﺪ ﺳﻤﺖ ﭼﭗ ﺑﺮد را ﺑﻪ ﻋﻨﻮان ﻋﺪد ‪ B‬در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ‪.‬‬
‫ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻋﺪد ‪ A‬و ‪ B‬را ﺑﻪ ﺻﻮرت ﺑﺎﻳﻨﺮي از ﻛﻠﻴﺪ درﻳﺎﻓﺖ ﻛﻨﺪ و در ﻫﻢ ﺿﺮب ﻛﻨﺪ‪ .‬ﻧﺘﻴﺠﻪي ﻧﻬﺎﻳﻲ را ﺑـﻪ ﺻـﻮرت‬
‫ﺑﺎﻳﻨﺮي در ‪ LED‬ﻧﺸﺎن دﻫﺪ‪.‬‬
‫ﺑﺮاي ﻣﺜﺎل اﮔﺮ ﻋﺪد ‪ (2) 0010‬را در ‪ (3) 0011‬ﺿﺮب ﻛﻨﻴﻢ‪ ،‬ﺣﺎﺻﻞ ‪ (6) 0110‬ﻣﻲﺷﻮد و ‪LED‬ﻫﺎ ﺑﺎﻳـﺪ ﺑـﻪ ﺻـﻮرت زﻳـﺮ‬
‫ﺑﺎﺷﻨﺪ‪:‬‬
‫"ﺧﺎﻣﻮش" "روﺷﻦ" "روﺷﻦ" "ﺧﺎﻣﻮش" "ﺧﺎﻣﻮش" "ﺧﺎﻣﻮش""ﺧﺎﻣﻮش" "ﺧﺎﻣﻮش"‬

‫‪ (3‬راهاﻧﺪازي ‪ADC‬‬

‫ﻳﻚ ﭘﺮوژهي ﺟﺪﻳﺪ اﻳﺠﺎد ﻛﻨﻴﺪ )ﺑﺮاي ﻳﺎدآوري ﺑﻪ ﺿﻤﻴﻤﻪي ‪ 1‬ﻣﺮاﺟﻌﻪ ﻛﻨﻴﺪ( و ﺑﺮﻧﺎﻣﻪي زﻳﺮ را در ﻓﺎﻳﻞ ‪ main.c‬وارد ﻛﻨﻴﺪ‪:‬‬

‫>‪#include<stdio.h‬‬
‫;‪int *Ad‬‬
‫;‪int *FIFO_ad‬‬
‫;]‪inti,x[256‬‬
‫;‪intfifo_status‬‬
‫)(‪main‬‬
‫{‬
‫;‪Ad= (int* )0x400001‬‬
‫;‪FIFO_ad= (int* )0x400036‬‬
‫{);;(‪for‬‬
‫;‪fifo_status=*FIFO_ad‬‬
‫)‪if((fifo_status&(0x80)) != 0‬‬
‫)‪for(i=0;i<255;i++‬‬
‫;‪x[i]= *Ad‬‬
‫}‬
‫}‬
‫ﭘﺮوژه را ‪ Build‬و ‪ Run‬ﻛﻨﻴﺪ ﺗﺎ وارد ﺻﻔﺤﻪ دﻳﺒﺎگ ﺷﻮﻳﺪ )روي آﻳﻜﻮن ﺳﻮﺳﻚ ﻛﻠﻴﻚ ﻛﻨﻴﺪ(‪ .‬ﺳﭙﺲ ﺑﺮﻧﺎﻣﻪ را اﺟﺮا ﻛﻨﻴﺪ‪.‬‬
‫ﺑﺎ اﺳﺘﻔﺎده از ﺳﻴﮕﻨﺎل ژﻧﺮاﺗﻮر ﻳﻚ ﺳﻴﮕﻨﺎل ﺳﻴﻨﻮﺳﻲ ﺑﺎ ﻓﺮﻛﺎﻧﺲ ‪ 1 KHz‬ﺗﻮﻟﻴﺪ ﻛﻨﻴﺪ زﻣﻴﻦ ﺳﻴﮕﻨﺎل ژﻧﺮاﺗﻮر ﺑﻪ زﻣﻴﻦ ﻛﻴﻒ‬
‫ازﻣﺎﻳﺸﮕﺎه ﻛﻪ در ﻗﺴﻤﺖ ‪ A/D‬ﻗﺮار دارد ﻣﺘﺼﻞ ﻛﻨﻴﺪ ﺳﻴﻢ ﺳﻴﮕﻨﺎل ژﻧﺮاﺗﻮر را ﺑﻪ ‪ IN‬ﻛﻴﻒ آزﻣﺎﻳﺸﮕﺎه ﻛﻪ در ﻗﺴﻤﺖ ‪ A/D‬ﻗﺮار‬
‫دارد وﺻﻞ ﻛﻨﻴﺪ‪.‬‬
‫ﺻﻔﺤﻪي ﻧﻤﺎﻳﺶ ﺑﺮد را ﺑﻪ ﺻﻮرت زﻳﺮ ﺗﻨﻈﻴﻢ ﻛﻨﻴﺪ‪:‬‬
‫‪45‬‬ ‫آزﻣﺎﻳﺶ ‪ :2‬دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫ﺑﺎ دﻛﻤﻪﻫﺎي ‪ 1‬و ‪ ،2‬ﺑﺮد را در ﺣﺎﻟﺖ ‪ A/D‬ﻗﺮار دﻫﻴﺪ‪ .‬ﺑﺎ دﮔﻤﻪﻫﺎي ‪ 3‬و ‪ 4‬ﮔﺰﻳﻨﻪي ﻓﺮﻛﺎﻧﺲ را اﻧﺘﺨﺎب ﻛﻨﻴﺪ‪ .‬ﺑﺎ دﮔﻤﻪﻫﺎي ‪5‬‬
‫و ‪ 6‬ﻓﺮﻛﺎﻧﺲ ‪ 1 KHz‬را اﻧﺘﺨﺎب ﻛﻨﻴﺪ‪ .‬ﺑﻪ ﻗﺴﻤﺖ ﻓﻴﻔﻮ ﺑﺮوﻳﺪ و ﻓﻴﻔﻮ ‪ 256‬ﺗﺎﻳﻲ را اﻧﺘﺨﺎب ﻛﻨﻴﺪ‪ .‬ﺑﻪ ﻗﺴﻤﺖ ﻓﺮﻣﺖ ﺑﺮوﻳﺪ و ﻓﺮﻣﺖ‬
‫را ﻋﻼﻣﺘﺪار اﻧﺘﺨﺎب ﻛﻨﻴﺪ‪ .‬دوﺑﺎره ﺑﻪ ﺣﺎﻟﺖ اﺳﻴﻠﻮﺳﻜﻮپ ﺑﺮﮔﺮدﻳﺪ‪ .‬ﺳﻴﮕﻨﺎل ﺳﻴﻨﻮﺳـﻲ ورودي ﺑﺎﻳـﺪ در اﺳﻴﻠﻮﺳـﻜﻮپ ﻧﺸـﺎن داده‬
‫ﺷﻮد‪.‬‬

‫‪ (1-3‬رﺳﻢ ﻧﻤﻮدار در ﻧﺮم اﻓﺰار ‪CCS‬‬


‫ﺑﺮاي ﻣﺸﺎﻫﺪهي ﻣﻮج ﺳﻴﻨﻮﺳﻲ ورودي در ﻧﺮم اﻓﺰار‪ ،‬در ﺻﻔﺤﻪ ‪ ،CCD Debug‬ﺑﻪ ﻣﻨﻮي ‪ Tools‬ﺑﺮوﻳﺪ‪ ،‬ﮔﺰﻳﻨـﻪي ‪ Graph‬را‬
‫اﻧﺘﺨﺎب ﻛﻨﻴﺪ‪ .‬ﺳﭙﺲ روي ﮔﺰﻳﻨﻪ ‪ Single Time‬ﻛﻠﻴﻚ ﻛﻨﻴﺪ‪).‬ﺗﻮﺟﻪ ﺷﻮد ﻛﻪ ﺑﺮﻧﺎﻣﻪ ﻧﺒﺎﻳﺪ در ﺣﺎﻟﺖ ‪ RUN‬ﺑﺎﺷﺪ(‬

‫ﺷﻜﻞ ‪:1‬رﺳﻢ ﻧﻤﻮدار در ﺣﻮزه زﻣﺎن‬

‫‪ Graph Properties‬را ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺷﻜﻞ ﺗﻨﻈﻴﻢ ﻛﻨﻴﺪ‪:‬‬


‫‪46‬‬ ‫آزﻣﺎﻳﺶ ‪ :2‬آﺷﻨﺎﻳﻲ ﻛﻴﻒ آزﻣﺎﻳﺸﮕﺎه‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮوﺧﺎورﻣﻴﺎﻧﻪ‬

‫ﺷﻜﻞ ‪ :2‬ﺗﻨﻈﻴﻤﺎت رﺳﻢ ﻧﻤﻮدار‬

‫ﺑﺮاي رﺳﻢ ﻧﻤﻮدار ﻛﻨﺎر ﺧﻂ ;‪ x[i]= *Ad‬ﻳﻚ ‪ Break Point‬ﻗﺮار دﻫﻴﺪ ﺑﺮﻧﺎﻣﻪ را ‪ RUN‬ﻛﻨﻴﺪ‪.‬‬
‫ﺑﺮﻧﺎﻣﻪ ﺗﺎ ﺧﻂ ‪ x[i]=*Ad‬اﺟﺮا ﻣﻲ ﺷﻮد و ﺳﭙﺲ ﻣﺘﻮﻗﻒ ﻣﻲ ﺷﻮد‪.‬‬
‫ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﻓﻘﻂ ﻫﻨﮕﺎﻣﻲ ﻛﻪ ﺑﺮﻧﺎﻣﻪ ﺗﻮﻗﻒ ﻛﻨﺪ )ﺑﻪ ‪ Break point‬ﺑﺮﺳﺪ( ﻧﻤﻮدار ﺑﺮوز رﺳﺎﻧﻲ ﻣﻲ ﺷﻮد در ﺻﻮرت اﺟﺮاي‬
‫ﺑﺮﻧﺎﻣﻪ ﻧﻤﻮدار ﺑﺮوز رﺳﺎﻧﻲ ﻧﻤﻲﺷﻮد‪.‬‬
‫ﺗﻤﺮﻳﻦ‪ :‬ﺑﺮﻧﺎﻣﻪ را ﻃﻮري ﺗﻐﻴﻴﺮ دﻫﻴﺪ ﺗﺎ ﺑﺎ ﻓﺸﺎر دادن ﻛﻠﻴﺪ روي ﺑﺮد داﻣﻨﻪي ﻣﻮج ﺳﻴﻨﻮﺳﻲ ورودي را در ‪ 2‬ﺿﺮب ﺷﻮد‪.‬‬

‫‪ (4‬راهاﻧﺪازي ‪D/A‬‬
‫ﺻﻔﺤﻪي ﻧﻤﺎﻳﺶ ﺑﺮد را ﺑﻪ ﺻﻮرت زﻳﺮ ﺗﻨﻈﻴﻢ ﻛﻨﻴﺪ‪:‬‬
‫ﻣﺪ‪D/A :‬‬
‫ﻓﺮﻛﺎﻧﺲ‪ 8.474:‬ﻛﻴﻠﻮﻫﺮﺗﺰ‬
‫ﻓﻴﻔﻮ‪ :‬ﻓﻴﻔﻮ ‪ 256‬ﺗﺎﻳﻲ‬
‫ﻓﺮﻣﺖ‪ :‬ﻋﻼﻣﺖدار‬
‫دوﺑﺎره ﺑﻪ ﺣﺎﻟﺖ اﺳﻴﻠﺴﻜﻮپ ﺑﺮﮔﺮدﻳﺪ و ورودي را در ﺣﺎﻟﺖ ‪ D/A‬ﻗﺮار دﻫﻴﺪ‪.‬‬
‫ﻳﻚ ﭘﺮوژه ﺟﺪﻳﺪ اﻳﺠﺎد ﻛﻨﻴﺪ و ﻓﺎﻳﻞ زﻳﺮ را در ﺑﺮﻧﺎﻣﻪ ‪ main.c‬وارد ﻧﻤﺎﻳﻴﺪ‪:‬‬
‫;‪int *D2A‬‬
‫;‪int *FIFO_d2a‬‬
‫;‪int fifo_status‬‬
‫;]‪int i, x[256‬‬
‫)(‪main‬‬
‫{‬
‫;‪D2A= (int* )0x400002‬‬
‫;‪FIFO_d2a= (int*) 0x400026‬‬
‫‪47‬‬ ‫آزﻣﺎﻳﺶ ‪ :2‬دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫{);;(‪for‬‬
‫;‪fifo_status=*FIFO_d2a‬‬
‫)‪if((fifo_status&(0x20)) != 0‬‬
‫)‪for(i=0;i<256;i++‬‬
‫;‪*D2A=i*4‬‬
‫}‬
‫}‬
‫ﺗﻮﺿﻴﺢ ﺳﻪ ﺧﻂ آﺧﺮ ﺑﺮﻧﺎﻣﻪ ‪ :‬وﻗﺘﻲ ﺣﺎﻓﻈﻪ ي ‪ FIFO‬ﻣﺮﺑﻮط ﺑﻪ ‪ D2A‬ﺧﺎﻟﻲ ﺷﺪ ‪ ،‬داﺧﻞ آن ‪ 256‬ﻣﻘﺪار ﻧﻮﺷﺘﻪ ﻣﻲ ﺷﻮد‪.‬‬
‫ﭘﺮوژه را ‪ Build‬و ‪ Run‬ﻛﻨﻴﺪ ﺗﺎ وارد ﺻﻔﺤﻪ دﻳﺒﺎگ ﺷﻮﻳﺪ )روي آﻳﻜﻮن ﺳﻮﺳﻚ ﻛﻠﻴﻚ ﻛﻨﻴﺪ(‪ .‬ﺑﺮﻧﺎﻣـﻪ را اﺟـﺮا ﻛﻨﻴـﺪ‪ .‬ﺑﺎﻳـﺪ‬
‫ﺷﻜﻞ ﻣﻮج زﻳﺮ در ﺻﻔﺤﻪي ﻧﻤﺎﻳﺶ ﻧﺸﺎن داده ﻣﻲﺷﻮد‪.‬‬

‫ﺗﻤﺮﻳﻦ‪ :‬در ﺑﺮد ﺑﺎ اﺳﺘﻔﺎده از ﻳﻚ ﺳﻴﻢ ﭘﻮرت ورودي ‪ A/D‬را ﺑﻪ ﭘـﻮرت ﺧﺮوﺟـﻲ ‪ D/A‬وﺻـﻞ ﻛﻨﻴـﺪ‪ .‬اﺳﻴﻠﺴـﻜﻮپ را در‬
‫ﺣﺎﻟﺖ ورودي ‪ A/D‬ﻗﺮار دﻫﻴﺪ‪ .‬ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻳﻚ ﻣﻮج ﻣﺮﺑﻌﻲ ﺗﻮﻟﻴﺪ ﻛﻨﺪ و ﺑﻪ ﺧﺮوﺟﻲ ‪ D/A‬ﻓﺮﺳﺘﺎده ﺷﻮد‪ .‬اﻳﻦ ﻣـﻮج را در‬
‫اﺳﻴﻠﻮﺳﻜﻮپ ﻣﺸﺎﻫﺪه ﻛﻨﻴﺪ‪.‬‬
‫ﻧﻜﺘﻪ‪ :‬ﻣﺒﺪل آﻧﺎﻟﻮگ و دﻳﺠﻴﺘﺎﻟﻲ ﻛﻪ روي ﺑﺮد ﻗﺮار دارد ‪ 12‬ﺑﻴﺘﻲ ﻣﻲﺑﺎﺷﺪ‪ .‬ﺑﺎﻳﺪ ﺗﻮﺟﻪ ﻛﺮد ﻣﻘﺎدﻳﺮي ﻛﻪ در ‪ A/D‬رﻳﺨﺘﻪ ﻣـﻲ‪-‬‬
‫ﺷﻮد از ﺣﺪ ﻣﺠﺎز ﺑﻴﺶﺗﺮ ﻧﺸﻮد‪ .‬در ﻏﻴﺮ اﻳﻦ ﺻﻮرت ﺷﻜﻞ ﻣﻮج ﻧﺸﺎن داده ﺷﺪه ﺑﻪ اﺷﺒﺎع ﻣﻲرود و ﺑﻪ درﺳﺘﻲ در ﺻﻔﺤﻪ ﻧﻤـﺎﻳﺶ‬
‫ﻧﺸﺎن داده ﻧﻤﻲﺷﻮد‪.‬‬

‫‪ (5‬ﺗﻮﻟﻴﺪ ﻣﻮج ﺳﻴﻨﻮﺳﻲ‬


‫روشﻫﺎي ﻣﺨﺘﻠﻔﻲ ﺑﺮاي ﺗﻮﻟﻴﺪ ﻣﻮج ﺳﻴﻨﻮﺳﻲ در ﻳﻚ ﭘﺮدازﻧﺪهي ‪ DSP‬وﺟﻮد دارد ﻛﻪ ﺑﺮﺧﻲ از اﻳـﻦ روشﻫـﺎ ﻋﺒﺎرﺗﻨـﺪ از‪:‬‬
‫اﺳﺘﻔﺎده از ﻳﻚ ‪ ،lookup table‬درونﻳﺎﺑﻲ‪ ،‬ﭼﻨﺪ ﺟﻤﻠﻪايﻫﺎ و اﺳﺘﻔﺎده از ﻣﺪوﻻﺳﻴﻮن ﭘﻬﻨﺎي ﭘﺎﻟﺲ‪ .‬زﻣـﺎﻧﻲ ﻛـﻪ ﻧﻴـﺎز ﺑـﻪ ﭘـﺮدازش‬
‫اﻧﺪﻛﻲ ﺑﺮاي ﺗﻮﻟﻴﺪ ﻣﻮج ﺳﻴﻨﻮﺳﻲ دارﻳﻢ‪ ،‬ﺑﻪ روش دﻳﮕﺮي ﻛﻪ اﺳﺘﻔﺎده از ﻳﻚ ﻓﻴﻠﺘﺮ ‪ IIR‬اﺳﺖ‪ ،‬روي ﻣﻲآورﻳﻢ‪.‬‬
‫‪48‬‬ ‫آزﻣﺎﻳﺶ ‪ :2‬آﺷﻨﺎﻳﻲ ﻛﻴﻒ آزﻣﺎﻳﺸﮕﺎه‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮوﺧﺎورﻣﻴﺎﻧﻪ‬

‫در اﻳﻦ روش ﻫﻤﺎن ﻃﻮر ﻛﻪ در ﺷﻜﻞ ﻧﺸﺎن داده ﺷﺪه اﺳﺖ‪ ،‬ﻳﻚ ﻓﻴﻠﺘﺮ ‪ IIR‬ﻣﺮﺗﺒﻪي دوم ﻃﻮري ﻃﺮاﺣـﻲ ﻣـﻲﺷـﻮد ﻛـﻪ ﺑـﻪ‬
‫ﺻﻮرت ﻣﺮزي ﭘﺎﻳﺪار ﺑﺎﺷﺪ‪ .‬اﻳﻦ ﻛﺎر ﺑﺮاي ﻓﻴﻠﺘﺮ ﻛﺮدن ﻳﻚ ﺳﻴﮕﻨﺎل ﻧﺎﻣﻨﺎﺳﺐ ﻣﻲﺑﺎﺷﺪ‪ .‬ﺑﺮاي اﻳﻦ ﻛﻪ اﻳﻦ ﻓﻴﻠﺘﺮ ﺑـﻪ ﺻـﻮرت ﻣـﺮزي‬
‫ﭘﺎﻳﺪار ﺑﺎﺷﺪ‪ ،‬ﻗﻄﺐﻫﺎي ﻓﻴﻠﺘﺮ روي داﻳﺮهي واﺣﺪ ﻗﺮار داده ﻣﻲﺷﻮﻧﺪ‪ .‬ﺑﻌﺪ از اﻳﻦ ﻛﻪ ﺿﺮاﻳﺐ ﻓﻴﻠﺘﺮ ﺑﺮاي ﭘﺎﻳﺪاري ﻣـﺮزي اﻧﺘﺨـﺎب‬
‫ﺷﺪﻧﺪ‪ ،‬ﻳﻚ ﺿﺮﺑﻪي واﺣﺪ ﺑﻪ ﻓﻴﻠﺘﺮ ﺑﻪ ﻋﻨﻮان ورودي در زﻣﺎن ‪t=0‬اﻋﻤﺎل ﻣﻲﺷﻮد‪ .‬ﺳﭙﺲ ورودي ﻗﻄﻊ ﻣﻲﺷـﻮد‪ .‬ﻓﻴﻠﺘـﺮ ﺷـﺮوع ﺑـﻪ‬
‫ﻧﻮﺳﺎن ﺑﺎ ﻳﻚ ﻓﺮﻛﺎﻧﺲ ﺛﺎﺑﺖ ﻣﻲﻛﻨﺪ‪.‬‬

‫ﺷﻜﻞ ‪ :3‬ﻳﻚ ﻓﻴﻠﺘﺮ ‪ IIR‬ﻣﺮﺗﺒﻪ دوم‬


‫‪ (1-5‬ﻓﻴﻠﺘﺮ ‪ IIR‬ﻣﺮﺗﺒﻪي دوم‬
‫ﻣﻌﺎدﻟﻪي ﺗﻔﺎﺿﻠﻲ ﻓﻴﻠﺘﺮ ﻣﺮﺗﺒﻪي دوم در ﺷﻜﻞ ﺑﺎﻻ ﺑﻪ ﺻﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ‪:‬‬

‫در ﻣﻌﺎدﻟﻪي ﺑﺎﻻ‪ f s ،‬ﻓﺮﻛﺎﻧﺲ ﻧﻤﻮﻧﻪ ﺑﺮداري‪ f 0 ،‬ﻓﺮﻛﺎﻧﺲ ﻧﻮﺳﺎن ﻣﻄﻠﻮب و ‪ A‬داﻣﻨـﻪي ﻣﻄﻠـﻮب ﻣـﻮج ﺳﻴﺴﻨﻮﺳـﻲ ﻣـﺎ‬
‫ﻣﻲﺑﺎﺷﺪ‪.‬‬
49 DSP ‫ دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه‬:2 ‫آزﻣﺎﻳﺶ‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫ ﺑﺮاي اﻳﻦ ﻣﻨﻈﻮر ﺑـﺎ ﺗﻮﺟـﻪ‬.‫ ﺗﻮﻟﻴﺪ ﻛﻨﻴﻢ‬f s = 10000Hz ‫ و‬f 0 = 1000Hz ‫ﻣﻲﺧﻮاﻫﻴﻢ ﻳﻚ ﻣﻮج ﺳﻴﻨﻮﺳﻲ ﺑﺎ ﻓﺮﻛﺎﻧﺲ‬
:‫ﺑﻪ ﻣﻌﺎدﻻت ﺑﺎﻻ دارﻳﻢ‬
2 × 180
w0 = = 36
10
a1 = −2 cos(36o ) = −1.618

A =1
b 0 = sin(36o ) = 0.588
source ‫ را اﻧﺘﺨﺎب ﻛﻨﻴﺪ در ﻗﺴﻤﺖ‬source file ‫ ﺑﺮوﻳﺪ‬new ‫ در ﻗﺴﻤﺖ‬file ‫ ﺑﻪ ﻣﻨﻮي‬.‫ﻳﻚ ﭘﺮوژهي ﺟﺪﻳﺪ اﻳﺠﺎد ﻛﻨﻴﺪ‬
.‫( ﺑﺮﻧﺎﻣﻪ زﻳﺮ را وارد ﻛﻨﻴﺪ‬sinGen.c) ‫ را وارد ﻛﻨﻴﺪ ﺣﺎل در ﻓﺎﻳﻞ اﻳﺠﺎد ﺷﺪه‬sinGen ‫ و‬file

/*********************************************
* The coefficient A and the three initial values
* generate a 1KHz tone (sine wave) when running
* at a sample rate of 10KHz.
*
* Even though the calculations are done in floating
* point, this function returns a short value since
* this is what's needed by a 12-bit codec (DAC).
***********************************************/
float y[3] = {0,0.588,0};
float A = 1.618;

shortsineGen(void) {
y[0] = y[1] * A - y[2];
y[2] = y[1];
‫‪50‬‬ ‫آزﻣﺎﻳﺶ ‪ :2‬آﺷﻨﺎﻳﻲ ﻛﻴﻒ آزﻣﺎﻳﺸﮕﺎه‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮوﺧﺎورﻣﻴﺎﻧﻪ‬

‫;]‪y[1] = y[0‬‬

‫;))]‪return((short)(600*y[0‬‬
‫}‬
‫ﭘﺲ از ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪ ﺑﺮﻧﺎﻣﻪ را ‪ save‬ﻛﻨﻴﺪ ﺳﭙﺲ ﺑﺮﻧﺎﻣﻪ زﻳﺮ را در ﻓﺎﻳﻞ ‪ main.c‬وارد ﻛﻨﻴﺪ‪:‬‬
‫;‪int *D2A‬‬
‫;‪int *FIFO_d2a‬‬
‫;‪intfifo_status‬‬
‫;]‪int x[256‬‬
‫;‪unsignedinti‬‬
‫;‪unsignedint j=0‬‬
‫;)‪shortsineGen(void‬‬
‫)‪voidmain(void‬‬
‫{‬
‫;‪D2A= (int* )0x400002‬‬
‫;‪FIFO_d2a= (int*) 0x400026‬‬
‫);;(‪for‬‬
‫{‬
‫;‪fifo_status=*FIFO_d2a‬‬
‫)‪if((fifo_status&(0x20)) != 0‬‬
‫)‪for (i=0;i<256;i++‬‬
‫{‬
‫;)(‪x[i]=sineGen‬‬
‫;]‪*D2A=x[i‬‬
‫}‬
‫}‬
‫}‬
‫‪ LCD‬ﺑﺮد را در ﻣﺪ ‪ D/A‬ﻗﺮار دﻫﻴﺪ و ﺑﻪ ﺻﻮرت زﻳﺮ ﺗﻨﻈﻴﻢ ﻛﻨﻴﺪ‪:‬‬
‫ﻓﺮﻛﺎﻧﺲ‪ 8/474 :‬ﻛﻴﻠﻮﻫﺮﺗﺰ‬
‫ﻓﻴﻔﻮ‪ :‬ﻓﻴﻔﻮ ‪ 256‬ﺗﺎﻳﻲ‬
‫ﻓﺮﻣﺖ‪ :‬ﻋﻼﻣﺖدار‬
‫‪ LCD‬ﺑﺮد را در ﻣﺪ اﺳﻴﻠﺴﻜﻮپ ﻗﺮار دﻫﻴﺪ و ﺑﻪ ﺻﻮرت زﻳﺮ ﺗﻨﻈﻴﻢ ﻛﻨﻴﺪ‪:‬‬
‫زﻣﺎن‪500 usec :‬‬
‫داﻣﻨﻪ‪1 v :‬‬
‫ورودي‪D/A :‬‬

‫ﺗﺮﻳﮕﺮ‪0 v :‬‬
‫ﭘﺮوژه را ‪ Build‬و ‪ Run‬ﻛﻨﻴﺪ ﺗﺎ وارد ﺻﻔﺤﻪ دﻳﺒﺎگ ﺷﻮﻳﺪ )روي آﻳﻜﻮن ﺳﻮﺳﻚ ﻛﻠﻴﻚ ﻛﻨﻴﺪ(‪ .‬ﺑﺮﻧﺎﻣـﻪ را اﺟـﺮا ﻛﻨﻴـﺪ‪ .‬ﺑﺎﻳـﺪ‬
‫ﺷﻜﻞ ﻣﻮج ﺳﻴﻨﻮﺳﻲ در ﺻﻔﺤﻪي ﻧﻤﺎﻳﺶ ﻧﺸﺎن داده ﻣﻲﺷﻮد‪.‬‬
‫ﺗﻮﺟﻪ‪ :‬ﺑﺮاي اﻳﻨﻜﻪ ﺷﻜﻞ ﻣﻮج در ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﺑﺮد آزﻣﺎﻳﺸﮕﺎه ﻧﺸﺎن داده ﺷﻮد در ﺑﺮﻧﺎﻣﻪ ﻧﺒﺎﻳﺪ ‪ break point‬وﺟﻮد داﺷﺘﻪ‬
‫ﺑﺎﺷﺪ‪.‬‬
‫‪51‬‬ ‫آزﻣﺎﻳﺶ ‪ :2‬دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫ﺗﻤﺮﻳﻦ‪ :‬ﻓﺮﻛﺎﻧﺲ ﻧﻤﻮﻧﻪ ﺑﺮداري را ﺑﻪ ﺻﻮرت زﻳﺮ ﺗﻐﻴﻴﺮ دﻫﻴﺪ و ﻫﺮ ﺑﺎر ﺿـﺮاﻳﺐ ‪ a1‬و ‪ b 0‬را ﻣﺤﺎﺳـﺒﻪ ﻛﻨﻴـﺪ و در ﺑﺮﻧﺎﻣـﻪ‬
‫‪ sinGen.c‬ﺑﻪ روز رﺳﺎﻧﻲ ﻛﻨﻴﺪ‪.‬‬
‫‪f s : 500,1000, 2000, 20000, 40000‬‬

‫ﺷﻜﻞ ﻣﻮج ﺳﻴﻨﻮﺳﻲ را ﻫﻢ در ﺑﺮﻧﺎﻣﻪ ﻛﺪ ﻛﺎﻣﭙﻮزر و ﻫﻢ در ‪ LCD‬ﻣﺸﺎﻫﺪه ﻛﻨﻴﺪ‪ .‬ﻛﺪام ﻓﺮﻛﺎﻧﺲ ﻧﻤﻮﻧﻪ ﺑﺮداري ﺑﺮاي ﻣﺸﺎﻫﺪه‬
‫در ﻧﺮماﻓﺰار ﻣﻨﺎﺳﺐﺗﺮ ﻣﻲﺑﺎﺷﺪ؟ ﻛﺪام ﻓﺮﻛﺎﻧﺲ ﻧﻤﻮﻧﻪ ﺑﺮداري ﺑﺮاي ﻣﺸﺎﻫﺪه در ‪ LCD‬ﺑﺮد ﻣﻨﺎﺳﺐﺗﺮ ﻣﻲﺑﺎﺷﺪ؟‬

‫‪ (6‬ﻣﺸﺎﻫﺪهي ﺗﺼﻮﻳﺮ‬

‫ﺑﺎ ﻛﻠﻴﺪﻫﺎي ‪ 1‬و ‪ 2‬ﺻﻔﺤﻪي ﻧﻤﺎﻳﺶ را در ﺣﺎﻟﺖ ﮔﺮاﻓﻴﻚ ﻗﺮار دﻫﻴﺪ‪.‬ﻳﻚ ﭘﺮوژهي ﺟﺪﻳﺪ اﻳﺠﺎد ﻛﻨﻴﺪ‪ ،‬ﺑﺮﻧﺎﻣﻪي زﻳﺮ را‬
‫ﺑﻨﻮﻳﺴﻴﺪ‪ Build ،‬و ‪ Run‬ﻛﻨﻴﺪ‪:‬‬

‫>‪#include<stdio.h‬‬
‫;‪Int i=10‬‬
‫;‪int * RGB_RAM‬‬
‫;]‪int Image[96][96‬‬
‫{ )‪voidmain(void‬‬
‫;‪inti,j,k=0‬‬
‫;‪RGB_RAM = (int* )0x40D000‬‬
‫)‪for(i=0;i<96;i++‬‬
‫)‪for(j=0;j<96;j++‬‬
‫{‬
‫;‪Image[i][j]=i+j‬‬
‫;‪*(RGB_RAM+k)=i+j‬‬
‫;‪k=k+1‬‬
‫}‬
‫}‬
‫ﭘﺲ از اﺟﺮاي ﺑﺮﻧﺎﻣﻪ ﺗﺼﻮﻳﺮ روي ﺑﺮد ﺗﻐﻴﻴﺮ ﻣﻲﻛﻨﺪ‪.‬‬

‫‪ (1-6‬ﻣﺸﺎﻫﺪه ﺗﺼﻮﻳﺮ در ﻧﺮماﻓﺰار‪:‬‬


‫از ﻣﻨﻮي ‪ Tools‬ﮔﺰﻳﻨﻪ‪ Image Analyzer‬را اﻧﺘﺨﺎب ﻛﻨﻴﺪ‪.‬‬
‫‪52‬‬ ‫آزﻣﺎﻳﺶ ‪ :2‬آﺷﻨﺎﻳﻲ ﻛﻴﻒ آزﻣﺎﻳﺸﮕﺎه‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮوﺧﺎورﻣﻴﺎﻧﻪ‬

‫ﺷﻜﻞ ‪ :4‬اﺿﺎﻓﻪ ﻛﺮدن ﻣﺸﺎﻫﺪه ﮔﺮ ﺗﺼﻮﻳﺮ ﺑﻪ ﻧﻤﻮدار‬

‫در ﭘﻨﺠﺮه ﺑﺎز ﺷﺪه ﻛﻠﻴﻚ راﺳﺖ ﻛﻨﻴﺪ و ‪ Properties‬را اﻧﺘﺨﺎب ﻛﻨﻴﺪ‪:‬‬

‫ﺷﻜﻞ ‪ :5‬ﺗﻨﻈﻴﻤﺎت ﻣﺸﺎﻫﺪه ﮔﺮ ﺗﺼﻮﻳﺮ‬

‫ﭘﻨﺠﺮه ‪ Properties‬را ﺑﻪ ﺻﻮرت زﻳﺮ ﺗﻨﻈﻴﻢ ﻛﻨﻴﺪ‪:‬‬


‫‪53‬‬ ‫آزﻣﺎﻳﺶ ‪ :2‬دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫ﺷﻜﻞ ‪ :6‬ﺗﻨﻈﻴﻤﺎﺗﻤﺸﺎﻫﺪﻫﮕﺮﺗﺼﻮﻳﺮ‬

‫ﺗﺼﻮﻳﺮ زﻳﺮ در ﻧﺮم اﻓﺰار ﻧﻤﺎﻳﺶ داده ﻣﻲﺷﻮد‪:‬‬

‫ﺷﻜﻞ ‪ :7‬ﺗﺼﻮﻳﺮ ﻣﺸﺎﻫﺪه ﺷﺪه در ﻧﺮماﻓﺰار‬

‫ﺗﻤﺮﻳﻦ‪ :‬ﺑﺮﻧﺎﻣﻪ ﻗﺒﻞ را ﻃﻮري ﺗﻐﻴﻴﺮ دﻫﻴﺪ ﻛﻪ ﻳﻚ ﺗﺼﻮﻳﺮ ﻃﻮري ﻧﻤﺎﻳﺶ داده ﺷﻮد ﻛﻪ از ﺳﻴﺎه )ﺳﻤﺖ ﭼﭗ ﺗﺼﻮﻳﺮ( ﺑﻪ ﺳﻔﻴﺪ‬
‫)ﺳﻤﺖ راﺳﺖ ﺗﺼﻮﻳﺮ( ﺑﻪ آراﻣﻲ ﺗﻐﻴﻴﺮ ﻛﻨﺪ‪.‬‬
‫ﺗﻤﺮﻳﻦ‪ :‬ﺑﺮﻧﺎﻣﻪ را ﻃﻮري ﺗﻐﻴﻴﺮ دﻫﻴﺪ ﺗﺎ ﻳﻚ داﻳﺮه ﺳﻴﺎه در ﻣﺮﻛﺰ ﺑﺮد ﺑﻪ ﺷﻌﺎع ‪ 30‬ﭘﻴﻜﺴﻞ ﻧﻤﺎﻳﺶ داده ﺷﻮد‪ .‬ﻣﻌﺎدﻟﻪ داﻳﺮه ﺑﻪ‬
‫ﺻﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ‪:‬‬
‫‪54‬‬ ‫آزﻣﺎﻳﺶ ‪ :2‬آﺷﻨﺎﻳﻲ ﻛﻴﻒ آزﻣﺎﻳﺸﮕﺎه‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮوﺧﺎورﻣﻴﺎﻧﻪ‬

‫‪r = (i-48) 2 +(j-48)2 < 30‬‬


‫آزﻣﺎﯾﺶ ‪:3‬‬
‫آﻣﻮزش ﻧﺤﻮه اﺳﺘﻔﺎده از ﮐﺘﺎﺑﺨﺎﻧﻪ‬
‫ﭘﺮدازش ﺳﯿﮕﻨﺎل‬

‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬


‫ﻫﺪف‪:‬آﺷﻨﺎﯾﯽ ﺑﺎ ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺳﯿﮕﻨﺎل‬

‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬


‫‪56‬‬ ‫آزﻣﺎﯾﺶ ‪ :3‬آﻣﻮزش ﻧﺤﻮه اﺳﺘﻔﺎده از ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫‪ (1‬ﻣﻘﺪﻣﻪ‪ :‬اﺳﺘﻔﺎده از ﺗﻮاﺑﻊ اﺳﻤﺒﻠﯽ ﺑﻬﯿﻨﻪ ﺷﺪه ﺑﺮاي ﮐﺎرﻫﺎي رﯾﺎﺿﯽ‪:‬‬

‫ﯾﮑﯽ از ﮐﺎرﺑﺮدﻫﺎي ﻣﻬﻢ ﭘﺮدازﻧﺪهﻫﺎي ‪ ،DSP‬ﭘﯿﺎده ﺳﺎزي اﻟﮕﻮرﯾﺘﻤﻬﺎي رﯾﺎﺿﯽ ﺑﺎ آﻧﻬﺎ ﻣﯽﺑﺎﺷﺪ‪ DSP .‬ﻫﺎ در ﺑﺪو ورود ﺑﻪ‬
‫ﺑﺎزار ﺑﻪ دﻟﯿﻞ ﻗﺎﺑﻠﯿﺖﻫﺎي ﻣﺤﺎﺳﺒﺎﺗﯽ ﮐﻪ داﺷﺘﻨﺪ ﻣﺸﻬﻮر ﺷﺪﻧﺪ‪ .‬اﻣﺮوزه ﻧﺮماﻓﺰارﻫﺎي ﻣﺤﺎﺳﺒﺎﺗﯽ زﯾﺎدي در ﺑﺎزار وﺟﻮد دارﻧﺪ ﮐﻪ‬
‫ﻣﺸﻬﻮر ﺗﺮﯾﻦ آﻧﻬﺎ ‪ MATLAB‬ﻣﯽﺑﺎﺷﺪ‪ MATLAB .‬ﺑﻪ دﻟﯿﻞ ﺳﻬﻮﻟﺖ اﺳﺘﻔﺎده و ﻗﺎﺑﻠﯿﺘﻬﺎي ﺑﺎﻻي آن در داﻧﺸﮕﺎﻫﻬﺎ ﺑﻪ ﻋﻨﻮان ﯾﮏ‬
‫اﺑﺰار ﮐﻤﮑﯽ ﺑﺮاي ﭘﯿﺎده ﺳﺎزي اﻟﮕﻮرﯾﺘﻤﻬﺎي رﯾﺎﺿﯽ اﺳﺘﻔﺎده ﻣﯽﮔﺮدد‪ .‬اﻣﺮوزه ﺗﻌﺪادي ﺑﺮدﻫﺎي ‪ DSP‬آﻣﺎده وﺟﻮد دارد ﮐﻪ‬
‫ﻣﯽﺗﻮان ﺑﺎ ﮐﻤﮏ ‪ MATLAB‬ﺑﺮاي آﻧﻬﺎ ﺑﺮﻧﺎﻣﻪﻫﺎي ‪ C‬درﺳﺖ ﮐﺮد‪ .‬روش ﮐﺎر ﺑﻪ اﯾﻦ ﺻﻮرت اﺳﺖ ﮐﻪ در اﺑﺘﺪا ﺑﺎ ﮐﻤﮏ‬
‫‪ ، MATLAB‬اﻟﮕﻮرﯾﺘﻢ رﯾﺎﺿﯽ ﻣﻮرد ﻧﻈﺮ در ﻣﺤﯿﻂ ‪ ، SIMULINK‬ﭘﯿﺎده ﺳﺎزي ﺷﺪه و ﺳﭙﺲ ﺑﺎ ﭼﻨﺪ ﮐﻠﯿﮏ ﺳﺎده در درون ﻧﺮم‬
‫اﻓﺰار‪ ، MATLAB‬ﺑﻪ ﺷﮑﻞ اﺗﻮﻣﺎﺗﯿﮏ ﮐﺪ ‪ C‬ﻣﻌﺎدل ﺑﺮاي اﻟﮕﻮرﯾﺘﻢ ﺗﻮﺳﻂ ‪ MATLAB‬ﺗﻮﻟﯿﺪﮔﺮدﯾﺪه و ﭘﺲ از آن ﺑﻪ ﺷﮑﻞ‬
‫ﺧﻮدﮐﺎر ﯾﮏ ﭘﺮوژه ﺑﺮاي ‪ CCS‬ﺑﻪ وﺟﻮد آﻣﺪه و ﺗﻤﺎم ﻓﺎﯾﻠﻬﺎي ‪ C‬ﺗﻮﻟﯿﺪ ﺷﺪه ﺗﻮﺳﻂ ‪ MATLAB‬ﺑﻪ ﭘﺮوژه اﺿﺎﻓﻪ ﻣﯽﮔﺮدد‪ .‬اﯾﻦ‬
‫روش اﺳﺘﻔﺎده از ‪ MATLAB‬ﻣﺤﺎﺳﻦ و ﻣﻌﺎﯾﺒﯽ دارد‪ .‬ﻣﻬﻤﺘﺮﯾﻦ ﺣﺴﻦ اﯾﻦ روش ﺳﺎدﮔﯽ و زﻣﺎن ﮐﻮﺗﺎه اﻧﺘﻘﺎل اﻟﮕﻮرﯾﺘﻤﻬﺎ از‬
‫ﻣﺤﯿﻂ ‪ MATLAB‬ﺑﻪ ﻣﺤﯿﻂ ‪ CCS‬اﺳﺖ‪ .‬اﻣﺎ اﯾﻦ روش ﺗﻨﻬﺎ در داﻧﺸﮕﺎه و ﺑﺮاي ﺷﺒﯿﻪ ﺳﺎزي ﮐﺎرﺑﺮد دارد‪ .‬در ﻋﻤﻞ ﭼﻮن‬
‫‪ MATLAB‬ﺑﺮاي ﻫﺮ ﺑﻠﻮك از ﯾﮏ ﮐﺪ ‪ C‬آﻣﺎده ) ﮐﻪ ﻣﻌﻤﻮﻻ ﺑﺮاي ‪ DSP‬ﻫﺎ ﺑﻬﯿﻨﻪ ﻧﻤﯽﺑﺎﺷﺪ( اﺳﺘﻔﺎده ﻣﯽﮐﻨﺪ ﮐﺪ ﺗﻮﻟﯿﺪ ﺷﺪه در‬
‫ﻋﻤﻞ ﮐﺎرﺑﺮدي ﻧﻤﯽﺑﺎﺷﺪ‪ .‬ﻣﻌﻤﻮﻻ ﮐﺪ ﺗﻮﻟﯿﺪ ﺷﺪه ﺗﻮﺳﻂ ‪ MATLAB‬ﺑﺮاي ﯾﮏ ﭘﺮدازﻧﺪه ‪ 200‬ﻣﮕﺎ ﻫﺮﺗﺰي ﺑﺎ ﻗﺎﺑﻠﯿﺖ ‪ 400‬ﻣﯿﻠﯿﻮن‬
‫ﻣﺤﺎﺳﺒﻪ رﯾﺎﺿﯽ در ﺛﺎﻧﯿﻪ ‪ ،‬ﺗﻨﻬﺎ ﺑﺮاي ﮐﺎرﺑﺮدﻫﺎي ﭘﺮدازش ﺻﺤﺒﺖ ﻣﻨﺎﺳﺐ اﺳﺖ ) ﻣﺜﻼ ‪ 2‬ﻣﯿﻠﯿﻮن ﻣﺤﺎﺳﺒﻪ رﯾﺎﺿﯽ در ﺛﺎﻧﯿﻪ(‪ .‬از‬
‫ﻃﺮﻓﯽ ﺑﻪ دﻟﯿﻞ ﭘﯿﭽﯿﺪﮔﯽﻫﺎي زﯾﺎد ﮐﺪ ‪ C‬ﺗﻮﻟﯿﺪ ﺷﺪه ﺗﻮﺳﻂ ‪ MATLAB‬دﺳﺘﮑﺎري و ﺑﻬﯿﻨﻪ ﺳﺎزي اﯾﻦ ﮐﺪ ﻣﺸﮑﻞ اﺳﺖ‪ .‬اﯾﻦ ﺑﺎﻋﺚ‬
‫ﺷﺪه ﮐﻪ ﻃﺮاﺣﺎن ﺣﺮﻓﻪاي از ﯾﮏ روش دﯾﮕﺮ اﺳﺘﻔﺎده ﮐﻨﻨﺪ‪.‬‬
‫ﺷﺮﮐﺖ ‪ TI‬ﺑﺮاي ﻫﺮ ﺳﺮي از ﭘﺮدازﻧﺪهﻫﺎي ﺳﺎﺧﺖ ﺧﻮد ﺗﻌﺪادي ﺗﺎﺑﻊ اﺳﻤﺒﻠﯽ ﻧﻮﺷﺘﻪ اﺳﺖ‪ .‬اﯾﻦ ﺗﻮاﺑﻊ‪ ،‬ﺗﻮاﺑﻌﯽ ﺑﺴﯿﺎر ﺳﺮﯾﻊ‬
‫ﻫﺴﺘﻨﺪ ﮐﻪ از ﻗﺎﺑﻠﯿﺘﻬﺎي ﺧﺎص ﻫﺮ ﭘﺮدازﻧﺪه در ﻧﻮﺷﺘﻦ آﻧﻬﺎ اﺳﺘﻔﺎده ﺷﺪه اﺳﺖ‪.‬ﭼﻮن اﯾﻦ ﺗﻮاﺑﻊ ﺑﺴﯿﺎر ﺳﺮﯾﻊ ﻫﺴﺘﻨﺪ در ﻋﻤﻞ ﺑﻬﺘﺮ‬
‫اﺳﺖ از آﻧﻬﺎ ﺑﻪ ﺟﺎي ﺗﻮاﺑﻊ ﻣﺸﺎﺑﻪ اﺳﺘﻔﺎده ﮐﺮد ‪.1‬‬
‫ﺑﻪ ﻋﻨﻮان ﻧﻤﻮﻧﻪ ﺗﻮاﺑﻌﯽ ﮐﻪ در ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺳﯿﮕﻨﺎل وﺟﻮد دارﻧﺪ ﻋﺒﺎرﺗﻨﺪ از‪ :‬ﻣﺤﺎﺳﺒﻪ ‪ ،FFT‬ﻓﯿﻠﺘﺮﯾﻨﮓ‪ ،‬ﻓﯿﻠﺘﺮﻫﺎي‬
‫ﺗﻄﺒﯿﻘﯽ‪ ،‬ﻫﻤﺒﺴﺘﮕﯽ‪ ،‬ﻣﺎﺗﺮﯾﺲﻫﺎ و ﺗﻮاﺑﻊ رﯾﺎﺿﯽ ﻣﺨﺘﻠﻒ ﻣﺎﻧﻨﺪ ﺿﺮب دو ﺑﺮدار‪،‬ﻣﺤﺎﺳﺒﻪ ﺗﻮان ﺳﯿﮕﻨﺎل و ‪. ...‬‬

‫‪ :‬ﻗﺒﻞ از اﻧﺠﺎم اﯾﻦ ازﻣﺎﯾﺶ ﺑﺎﯾﺪ ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺳﯿﮕﻨﺎل )‪ (dsblib‬را ﻧﺼﺐ ﻧﻤﺎﯾﯿﺪ ﺑﺮاي اﯾﻦ ﻣﻨﻈﻮر ﺑﻪ ﺿﻤﯿﻤﻪ‬ ‫ﻧﮑﺘﻪ‬
‫اﻟﻒ ﻣﺮاﺟﻌﻪ ﮐﻨﯿﺪ‪ .‬ﺑﻌﺪ از ﻧﺼﺐ ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺳﯿﮕﻨﺎل در ﻣﺴﯿﺮ زﯾﺮ ﭘﻮﺷﻪ ‪ dsplib‬اﯾﺠﺎد ﻣﯽﺷﻮد ‪:‬‬
‫‪C:\ti\dsblib_2.40.00‬‬
‫اﮔﺮ ﻫﻨﮕﺎم ﮐﺎﻣﭙﺎﯾﻞ ﺑﺮﻧﺎﻣﻪ ﺧﻄﺎي ﭘﯿﺪا ﻧﮑﺮدن ‪ File‬رخ داد دﻟﯿﻞ آن ﻧﺼﺐ ﻧﺒﻮدن ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺳﯿﮕﻨﺎل اﺳﺖ‪.‬‬
‫____________________________________________________________________‬
‫‪ 1‬اﯾﻦ ﻣﻘﺪﻣﻪ از ﻓﺼﻞ ‪ 10‬ﮐﺘﺎب ﻣﺮﺟﻊ ﮐﺎﻣﻞ ﭘﺮدازﻧﺪهﻫﺎي ‪ DSP‬ﮔﺮﻓﺘﻪ ﺷﺪه اﺳﺖ‪.‬‬
‫‪57‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫در اﯾﻦ آزﻣﺎﯾﺶ ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ ﺑﻬﯿﻨﻪ ﺟﻤﻊ دو ﺑﺮدار‪ ،‬ﻧﺤﻮه اﺳﺘﻔﺎده از ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺳﯿﮕﻨﺎل آﻣﻮزش داده ﻣﯽﺷﻮد‪.‬‬
‫ﺑﺮاي اﯾﻦ ﻣﻨﻈﻮر اﺑﺘﺪا ﯾﮏ ﭘﺮوژهي ﺟﺪﯾﺪ اﯾﺠﺎد ﮐﻨﯿﺪ )ﺑﺮاي ﯾﺎدآوري ﺑﻪ ﺿﻤﯿﻤﻪي ‪ 1‬ﻣﺮاﺟﻌﻪ ﮐﻨﯿﺪ(‪ .‬ﻣﺮاﺣﻞ زﯾﺮ را دﻧﺒﺎل ﮐﻨﯿﺪ‪:‬‬
‫ﻣﺮﺣﻠﻪي اول‪ :‬اﺿﺎﻓﻪ ﮐﺮدن ﻓﺎﯾﻞ ﮐﺘﺎﺑﺨﺎﻧﻪاي )‪ (*.lib‬ﺑﻪ ﭘﺮوژه‬
‫در ﻣﺤﻞ ﻧﺼﺐ ﻧﺮماﻓﺰار‪ ،CCS‬ﻓﺎﯾﻞﻫﺎي ﻣﺨﺼﻮص ﻫﺮ ﺧﺎﻧﻮاده در ﺷﺎﺧﻪﻫﺎﯾﯽ ﻫﻢ ﻧﺎم ﻫﻤﺎن ﺧﺎﻧﻮاده ﻗﺮار دارﻧﺪ‪ .‬ﺑﺮاي‬
‫اﺳﺘﻔﺎده از ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺳﯿﮕﻨﺎل ﺑﺎﯾﺪ ﻓﺎﯾﻞ ﻣﺮﺑﻮﻃﻪ را ﺑﻪ ﭘﺮوژه اﺿﺎﻓﻪ ﮐﻨﯿﺪ‪ .‬ﺑﺮاي اﯾﻦ ﻣﻨﻈﻮر روي ﻓﺎﯾﻞ ﭘﺮوژه ﮐﻠﯿﮏ راﺳﺖ‬
‫ﮐﺮده و ‪ properties‬را اﻧﺘﺨﺎب ﮐﻨﯿﺪ‪:‬‬

‫ﺷﮑﻞ ‪ :1‬ﺑﺎز ﮐﺮدن ﻗﺴﻤﺖ ﺗﻨﻈﯿﻤﺎت ﭘﺮوژه‬

‫در ﭘﻨﺠﺮه ﺑﺎز ﺷﺪه ‪ Build‬را اﻧﺘﺨﺎب ﮐﻨﯿﺪ‪ ،‬روي ‪ C5500 Linker‬ﮐﻠﯿﮏ ﮐﻨﯿﺪ و ‪ File Search Path‬را اﻧﺘﺨﺎب ﮐﻨﯿﺪ‪.‬‬
‫‪58‬‬ ‫آزﻣﺎﯾﺶ ‪ :3‬آﻣﻮزش ﻧﺤﻮه اﺳﺘﻔﺎده از ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﺷﮑﻞ ‪ :2‬اﺿﺎﻓﻪ ﮐﺮدن ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺳﯿﮕﻨﺎل ﺑﻪ ﭘﺮوژه‬

‫ﮐﻠﯿﮏ ﮐﻨﯿﺪ‪ .‬و ﻣﻄﺎﺑﻖ ﺷﮑﻞ ﻣﺴﯿﺮ زﯾﺮ را‬ ‫‪ADD‬‬ ‫در ﻗﺴﻤﺖ ‪ ،Include library file or command file as input‬روي‬
‫وارد ﮐﻨﯿﺪ‪:‬‬
‫‪C:\ti\dsplib_2.40.00\55xdspx.lib‬‬

‫ﺷﮑﻞ ‪ :3‬اﺿﺎﻓﻪ ﮐﺮدن ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺳﯿﮕﻨﺎل ﺑﻪ ﭘﺮوژه‬

‫روي ‪ OK‬ﮐﻠﯿﮏ ﮐﻨﯿﺪ‪ .‬ﻫﻤﺎن ﻃﻮر ﮐﻪ ﻣﺸﺎﻫﺪه ﻣﯽﺷﻮد‪ ،‬ﮐﺘﺎﺑﺨﺎﻧﻪ ‪ 55xdspx.lib‬ﺑﻪ ﻣﺴﯿﺮ ﺟﺴﺖ و ﺟﻮي ﻓﺎﯾﻞ اﺿﺎﻓﻪ ﻣﯽ‪-‬‬
‫ﺷﻮد‪.‬‬
‫‪59‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﺷﮑﻞ ‪ :4‬اﺿﺎﻓﻪ ﮐﺮدن ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺳﯿﮕﻨﺎل ﺑﻪ ﭘﺮوژه‬

‫ﻣﺮﺣﻠﻪي دوم‪ Include :‬ﮐﺮدن ﻓﺎﯾﻞﻫﺎي ﻣﻨﺎﺳﺐ‬


‫‪ Build‬را اﻧﺘﺨﺎب ﮐﻨﯿﺪ‪ ،‬روي ‪ C5500 Compiler‬ﮐﻠﯿﮏ ﮐﻨﯿﺪ و ‪ Include Options‬را اﻧﺘﺨﺎب ﮐﻨﯿﺪ‪.‬‬

‫ﺷﮑﻞ ‪ Include :5‬ﮐﺮدن ﻓﺎﯾﻞﻫﺎي ﻣﻨﺎﺳﺐ ﺑﻪ ﭘﺮوژه‬

‫ﮐﻠﯿﮏ ﮐﻨﯿﺪ و ﻣﺴﯿﺮ زﯾﺮ را وارد ﮐﻨﯿﺪ‪:‬‬ ‫‪ADD‬‬ ‫در ﻗﺴﻤﺖ ‪ ، ،Add dir to #include search path‬روي‬
‫‪C:\ti\dsplib_2.40.00\include‬‬
60 ‫ آﻣﻮزش ﻧﺤﻮه اﺳﺘﻔﺎده از ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش‬:3 ‫آزﻣﺎﯾﺶ‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

.‫ ﮐﻠﯿﮏ ﮐﻨﯿﺪ‬OK ‫روي‬

‫ ﮐﺮدن ﻓﺎﯾﻞﻫﺎي ﻣﻨﺎﺳﺐ ﺑﻪ ﭘﺮوژه‬Include :6 ‫ﺷﮑﻞ‬

:‫ را ﺑﺎ ﻫﻢ ﺟﻤﻊ ﻣﯽﮐﻨﺪ‬y ‫ و‬x ‫ اﯾﻦ ﺑﺮﻧﺎﻣﻪ دو ﺑﺮدار‬.‫ ﺗﺎﯾﭗ ﮐﻨﯿﺪ‬main.c ‫ﺑﺮﻧﺎﻣﻪ زﯾﺮ را در ﻓﺎﯾﻞ‬
#include <math.h>
#include <tms320.h>
#include <dsplib.h>

#define NX 16
#define ADD_SCALE 0

DATA x[NX] ={1,2,3,4,5};


DATA y[NX] ={6,7,8,9,10};
DATA r[NX];

// generic variables
short i;
ushort scale;

void main()
{
scale = ADD_SCALE;
// clear
for (i=0;i<NX;i++) r[i] =0; // clear output buffer
(optional)
‫‪61‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫‪// compute‬‬
‫;)‪add(x,y,r,NX, scale‬‬

‫}‬
‫ﺑﺮﻧﺎﻣﻪ را ‪ Build‬و ‪ Run‬ﮐﻨﯿﺪ‪ .‬ﺳﭙﺲ ﺑﺮﻧﺎﻣﻪ را اﺟﺮا ﮐﻨﯿﺪ‪.‬‬

‫‪r‬‬ ‫در اﯾﻦ ﺑﺮﻧﺎﻣﻪ ﺗﺎﺑﻊ ‪ add‬دو ﺑﺮدار را ﺑﺎ ﻫﻢ ﺟﻤﻊ ﻣﯽﮐﻨﺪ‪ .‬وروديﻫﺎ در ﻣﺘﻐﯿﯿﺮﻫﺎي ‪ x‬و ‪ y‬ﻗﺮار دارﻧﺪ و ﺧﺮوﺟﯽ در ﻣﺘﻐﯿﯿﺮ‬
‫رﯾﺨﺘﻪ ﻣﯽﺷﻮد‪ .‬در ﭘﻨﺠﺮه ‪ Memory Browser‬ﻣﻄﺎﺑﻖ ﺷﮑﻞ ‪ &r‬را ﺗﺎﯾﭗ ﮐﻨﯿﺪ‪ .‬ﺧﺮوﺟﯽ را ﻣﺸﺎﻫﺪه ﮐﻨﯿﺪ‪.‬‬

‫ﺷﮑﻞ ‪ :7‬ﻣﺸﺎﻫﺪه ﻣﺘﻐﯿﯿﺮ ‪ r‬در ﭘﻨﺠﺮه ﻣﺸﺎﻫﺪه ﮔﺮ ﺣﺎﻓﻈﻪ‬

‫ﺗﻤﺮﯾﻦ ‪ :1‬ﺗﻌﺪاد ﮐﻼكﻫﺎﯾﯽ را ﮐﻪ ﻃﻮل ﻣﯽﮐﺸﺪ ﺗﺎ ﺗﺎﺑﻊ ‪ add‬اﺟﺮا ﺷﻮد را ﺣﺴﺎب ﮐﻨﯿﺪ‪ .‬ﺗﺎﺑﻌﯽ ﺑﻪ زﺑﺎن ‪ C‬ﺑﻨﻮﯾﺴﯿﺪ ﺗﺎ ﻫﻤﯿﻦ‬
‫ﮐﺎر را اﻧﺠﺎم دﻫﺪ‪ .‬ﺗﻌﺪاد ﮐﻼكﻫﺎي ﺑﺮﻧﺎﻣﻪ ﻧﻮﺷﺘﻪ ﺷﺪه را ﻣﺤﺎﺳﺒﻪ ﮐﻨﯿﺪ‪ .‬ﻧﺘﯿﺠﻪ را ﺑﺎ ﻗﺴﻤﺖ ﻗﺒﻞ ﻣﻘﺎﯾﺴﻪ ﮐﻨﯿﺪ‪.‬‬

‫ﺗﻤﺮﯾﻦ ‪ :2‬ﭘﺎراﻣﺘﺮ ‪ ADD_SCALE‬را در ﺑﺮﻧﺎﻣﻪ از ‪ 0‬ﺑﻪ ‪ 1‬ﺗﻐﯿﯿﺮ دﻫﯿﺪ‪ .‬ﺧﺮوﺟﯽ را ﻣﺸﺎﻫﺪه ﮐﻨﯿﺪ‪ .‬ﭼﻪ ﺗﻔﺎوﺗﯽ ﺑﺎ ﻣﺮﺣﻠﻪي‬
‫ﻗﺒﻞ دارد‪ .‬دﻟﯿﻞ اﯾﻦ ﮐﺎر ﭼﯿﺴﺖ؟‬

‫ﺗﻤﺮﯾﻦ ‪ :3‬ﺑﺎ اﺳﺘﻔﺎده از ﺗﺎﺑﻊ ‪ mul32‬ﮐﻪ از ﺗﻮاﺑﻊ ﭘﺮدازش ﺳﯿﮕﻨﺎل ﻣﯽﺑﺎﺷﺪ دو ﺑﺮدار زﯾﺮ را در ﻫﻢ ﺿﺮب ﮐﻨﯿﺪ‪:‬‬
‫]‪A=[100000,-200000,300000,400000‬‬
‫]‪B=[50000,-60000,-70000,-80000‬‬

‫ﺑﺮاي داﻧﻠﻮد ﻓﺎﯾﻞ آﻣﻮزﺷﯽ ﻣﺮﺑﻮط ﺑﻪ ﭘﺮدازش ﺳﯿﮕﻨﺎل ‪ spru422i.pdf‬ﺑﻪ ﭘﯿﻮﺳﺖ اﻟﻒ ﻣﺮاﺟﻌﻪ ﮐﻨﯿﺪ‪.‬‬

‫ﺗﻮﺿﯿﺤﺎت ﻣﺮﺑﻮط ﺑﻪ ﺗﻤﺮﯾﻦ ‪: 1‬‬


‫ﺑﺮاي ﻣﺠﺎﺳﺒﻪ ﺗﻌﺪاد ﮐﻼكﻫﺎﯾﯽ ﮐﻪ ﻃﻮل ﻣﯿﮑﺸﺪ ﯾﮏ ﺑﺮﻧﺎﻣﻪ ﯾﺎ ﺗﺎﺑﻊ اﺟﺮا ﺷﻮد‪ ،‬ﺑﺎﯾﺪ ‪ clock‬ﺑﺮﻧﺎﻣﻪ را ﻓﻌﺎل ﺳﺎزي ﻧﻤﻮد‪.‬‬
‫ﺑﺮاي ﻓﻌﺎل ﺳﺎزي ‪ clock‬ﻣﻄﺎﺑﻖ ﺷﮑﻞ زﯾﺮ‪ ،‬در ﻣﺤﯿﻂ ‪ Debug‬از ﻣﻨﻮي ‪ Run‬ﮔﺰﯾﻨﻪي ‪ clock‬را اﻧﺘﺨﺎب ﮐﺮده‪ ،‬ﺳﭙﺲ ﮔﺰﯾﻨﻪ‪-‬‬
‫ﻫﺎي ‪ Enable‬و ‪ Show‬را ﻓﻌﺎل ﮐﻨﯿﺪ‪.‬‬
‫‪62‬‬ ‫آزﻣﺎﯾﺶ ‪ :3‬آﻣﻮزش ﻧﺤﻮه اﺳﺘﻔﺎده از ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﺑﻌﺪ از ﻓﻌﺎل ﺳﺎزي ‪ clock‬ﺑﺮﻧﺎﻣﻪ را ﺧﻂ ﺑﻪ ﺧﻂ ‪ Run‬ﮐﺮده‪ ،‬ﺗﻌﺪاد ‪ clock‬ﻫﺎي ﮐﻪ ﻃﻮل ﻣﯽ ﮐﺸﺪ ﺗﺎ ﺑﺮﻧﺎﻣﻪ اﺟﺮا ﺷﻮد‬
‫در ﭘﺎﯾﯿﻦ ﭘﻨﺠﺮه ﮐﻨﺎر ﺷﮑﻞ ﺳﺎﻋﺖ ﻧﻤﺎﯾﺶ داده ﻣﯽﺷﻮد‪.‬‬
‫آزﻣﺎﯾﺶ ‪:4‬‬
‫آﺷﻨﺎﯾﯽ ﺑﺎ ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺗﺼﻮﯾﺮ‬

‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬


‫ﻫﺪف‪:‬آﺷﻨﺎﯾﯽ ﺑﺎ ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺗﺼﻮﯾﺮ‬

‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬


‫‪64‬‬ ‫آزﻣﺎﯾﺶ ‪ :4‬آﺷﻨﺎﯾﯽ ﺑﺎ ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺗﺼﻮﯾﺮ‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫‪ (1‬ﻣﻘﺪﻣﻪ‬
‫ﯾﮑﯽ از ﻣﻬﻤﺘﺮﯾﻦ ﮐﺎرﺑﺮدﻫﺎي ﭘﺮدازﻧﺪهﻫﺎي ‪ DSP‬در ﺣﻮزه ﭘﺮدازش ﺳﯿﮕﻨﺎل و ﺗﺼﻮﯾﺮ ﻣﯽﺑﺎﺷﺪ‪ .‬ﺑﺎ ﭘﯿﺸﺮﻓﺖ ﺗﮑﻨﻮﻟﻮژي‬
‫اﻟﮕﻮرﯾﺘﻤﻬﺎي ﭘﺮدازش ﺗﺼﻮﯾﺮ ﺗﻨﻮع ﺑﺴﯿﺎر زﯾﺎدي ﭘﯿﺪا ﮐﺮدهاﻧﺪ اﻣﺎ ﺗﻌﺪاد ﻣﺤﺪودي از ﺗﻮاﺑﻊ در ﺑﯿﻦ ﺑﺴﯿﺎري از آﻧﻬﺎ ﻣﺸﺘﺮك اﺳﺖ‪.‬‬
‫ﺷﺮﮐﺖ ‪ TI‬ﺗﻌﺪادي از ﭘﺮﮐﺎرﺑﺮدﺗﺮﯾﻦ ﺗﻮاﺑﻊ را ﺗﺤﺖ ﻋﻨﻮان ‪ imagelib.h‬در ﻧﺮماﻓﺰار ‪ CCS‬ﻗﺮار داده اﺳﺖ‪ .‬اﯾﻦ ﺗﻮاﺑﻊ اﮐﺜﺮا ﺑﺎ‬
‫زﺑﺎن اﺳﻤﺒﻠﯽ ﺑﺮاي ﻫﺮ ﺧﺎﻧﻮاده از ﭘﺮدازﻧﺪهﻫﺎ ﺑﻪ ﺻﻮرت ﺟﺪاﮔﺎﻧﻪ ﻧﻮﺷﺘﻪ ﺷﺪهاﻧﺪ‪ .‬ﻧﻮﺷﺘﻦ اﺳﻤﺒﻠﯽ اﯾﻦ ﺗﻮاﺑﻊ ﺑﺎﻋﺚ ﺷﺪه ﮐﻪ آﻧﻬﺎ‬
‫ﮐﺎﻣﻼ ﺑﻬﯿﻨﻪ ﺑﻮده و ﺑﺎ اﺳﺘﻔﺎده از ﺣﺪاﮐﺜﺮ ﻗﺎﺑﻠﯿﺘﻬﺎي ﺳﺨﺖاﻓﺰاري ﻫﺮ ﭘﺮدازﻧﺪه ‪ DSP‬در ﺣﺪاﻗﻞ زﻣﺎن ﻣﻤﮑﻦ‪ ،‬ﭘﺮدازش ﻣﻮرد ﻧﻈﺮ را‬
‫ﺑﻪ اﻧﺠﺎم رﺳﺎﻧﻨﺪ‪ .‬ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ اﯾﻨﮑﻪ اﯾﻦ اﻟﮕﻮرﯾﺘﻢﻫﺎ ﺗﻮﺳﻂ ﻃﺮاﺣﺎن ﺣﺮﻓﻪاي ﭘﯿﺎدهﺳﺎزي ﺷﺪهاﻧﺪ‪ ،‬اﺳﺘﻔﺎده از آﻧﻬﺎ در ﮐﺎرﺑﺮدﻫﺎي‬
‫ﻣﺨﺘﻠﻒ ﺑﺴﯿﺎر ﻋﺎﻗﻼﻧﻪ اﺳﺖ‪ .‬در اداﻣﻪ اﯾﻦ ﻓﺼﻞ ﺑﻪ ﻧﮑﺎﺗﯽ ﮐﻪ ﺑﺮاي ﺷﺮوع ﮐﺎر ﭘﺮدازش ﺗﺼﻮﯾﺮ ﺑﺎ ‪ CCS‬ﻧﯿﺎز اﺳﺖ ﭘﺮداﺧﺘﻪ‬
‫ﺧﻮاﻫﺪ ﺷﺪ ‪.1‬‬

‫‪ (2‬اﺿﺎﻓﻪ ﮐﺮدن ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺗﺼﻮﯾﺮ ﺑﻪ ﭘﺮوژه‬

‫اﺑﺘﺪا ﯾﮏ ﭘﺮوژه ﺟﺪﯾﺪ اﯾﺠﺎد ﮐﻨﯿﺪ‪ .‬ﺑﺮاي اﯾﻦ ﮐﻪ ﺑﺘﻮاﻧﯿﺪ از اﯾﻦ ﮐﺘﺎﺑﺨﺎﻧﻪ اﺳﺘﻔﺎده ﮐﻨﯿﺪ‪ ،‬ﺑﺎﯾﺪ ﮐﺘﺎﺑﺨﺎﻧﻪ ﻣﺮﺑﻮﻃﻪ را ﺑﻪ ﭘﺮوژه‬
‫ﺧﻮد اﺿﺎﻓﻪ ﮐﻨﯿﺪ و ﻓﺎﯾﻞﻫﺎي ﻣﻨﺎﺳﺐ را ‪ include‬ﮐﻨﯿﺪ‪ .‬ﺑﺮاي اﯾﻦ ﻣﻨﻈﻮر ﻣﺎﻧﻨﺪ آزﻣﺎﯾﺶ ﻗﺒﻞ ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺗﺼﻮﯾﺮ را ﮐﻪ در‬
‫آدرس‬
‫‪C:\ti\c5500\imglib\55ximagex.lib‬‬
‫ﻣﻮﺟﻮد ﻣﯽﺑﺎﺷﺪ را در ‪ Properties‬ﭘﺮوژه در ﻗﺴﻤﺖ‬
‫‪Build > C5500 Linker > File Search Path‬‬
‫وارد ﮐﻨﯿﺪ‪.‬‬

‫____________________________________________________________________‬
‫‪1‬اﯾﻦ ﻣﻘﺪﻣﻪ از ﻓﺼﻞ ‪ 11‬ﮐﺘﺎب ﻣﺮﺟﻊ ﮐﺎﻣﻞ ﭘﺮدازﻧﺪهﻫﺎي ‪ DSP‬ﮔﺮﻓﺘﻪ ﺷﺪه اﺳﺖ‪.‬‬
‫‪65‬‬ ‫آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬ ‫دﺳﺘﻮرﮐﺎر‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﺷﮑﻞ ‪ :1‬اﺿﺎﻓﻪ ﮐﺮدن ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺗﺼﻮﯾﺮ ﺑﻪ ﭘﺮوژه‬


‫ﻫﻤﭽﻨﯿﻦ آدرس‬
‫‪C:\ti\c5500\imglib\include‬‬
‫را در ﻣﺴﯿﺮ‬
‫‪Build > C5500 Compiler > Include Options‬‬
‫وارد ﻧﻤﺎﯾﯿﺪ‪.‬‬

‫ﺷﮑﻞ ‪ :2‬اﺿﺎﻓﻪ ﮐﺮدن ﻓﺎﯾﻞﻫﺎي ‪ include‬ﻣﻨﺎﺳﺐ ﺑﻪ ﭘﺮوژه‬


‫‪ (3‬اﻧﺠﺎم آزﻣﺎﯾﺶ‬
‫ﺑﺮﻧﺎﻣﻪ زﯾﺮ را در ﻓﺎﯾﻞ ‪ main.c‬ﺗﺎﯾﭗ ﮐﻨﯿﺪ‪:‬‬
‫>‪#include <stdio.h‬‬
‫>‪#include <imagelib.h‬‬
66 ‫ آﺷﻨﺎﯾﯽ ﺑﺎ ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺗﺼﻮﯾﺮ‬:4 ‫آزﻣﺎﯾﺶ‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

#define WIDTH 96
#define HEIGHT 96
short img[96][96];

int * RGB_RAM;

void main( )
{
int i,j,k=0;
RGB_RAM = (int * ) 0x40D000;
short rows, cols;
short threshold_value;
for(i=0;i<96;i++)
for(j=0;j<96;j++)
{
img[i][j]=i*2;
}
threshold_value = 96;
cols = WIDTH;
rows = HEIGHT;
k=0;
for(i=0;i<96;i++)
for(j=0;j<96;j++)
{
RGB_RAM[k]= img[i][j]>>3;
k=k+1;
}
IMG_threshold(&img[0][0],&img[0][0],cols,rows,threshold_value
);
k=0;
for(i=0;i<96;i++)
for(j=0;j<96;j++)
{
RGB_RAM[k]= img[i][j]>>3;
k=k+1;
}
}
‫ ﻧﺤﻮه ﮐﺎر‬.‫ ﮐﻪ ﻣﺮﺑﻮط ﺑﻪ ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺗﺼﻮﯾﺮ ﻣﯽﺑﺎﺷﺪ اﺳﺘﻔﺎده ﺷﺪه اﺳﺖ‬IMG_threshold ‫در اﯾﻦ ﺑﺮﻧﺎﻣﻪ از ﺗﺎﺑﻊ‬
(threshold_value = 96) ‫ﺗﺎﺑﻊ ﺑﻪ اﯾﻦ ﺻﻮرت ﻣﯽﺑﺎﺷﺪ ﮐﻪ اﮔﺮ ﭘﯿﮑﺴﻞﻫﺎي ﺗﺼﻮﯾﺮ ﮐﻮﭼﮏﺗﺮ از ﯾﮏ ﻣﻘﺪار از ﭘﯿﺶ ﺗﻌﯿﯿﻦ ﺷﺪه‬
.‫ﺑﺎﺷﻨﺪ را ﺻﻔﺮ ﻣﯽﮐﻨﺪ‬
.‫ ﮐﻨﯿﺪ‬Run ‫ و‬Build ‫ﺑﺮﻧﺎﻣﻪ را‬
‫‪67‬‬ ‫آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬ ‫دﺳﺘﻮرﮐﺎر‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﺑﺎ اﺳﺘﻔﺎده از ﮐﻠﯿﮏﻫﺎي ‪ 1‬ﯾﺎ ‪ 2‬ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ ﺑﺮد را در ﺣﺎﻟﺖ ﮔﺮاﻓﯿﮏ ﻗﺮار دﻫﯿﺪ‪ .‬در ﺧﻂ ‪ 33‬ﺑﺮﻧﺎﻣﻪ ﮐﻨﺎر دﺳﺘﻮر‬
‫‪ Break Point ،IMG_threshold‬ﻗﺮار دﻫﯿﺪ‪:‬‬

‫ﺷﮑﻞ ‪ :3‬ﮔﺬاﺷﺘﻦ ‪ Break Point‬در ﺑﺮﻧﺎﻣﻪ‬

‫ﺑﺮﻧﺎﻣﻪ را ﺗﺎ ﺧﻂ ‪ 33‬اﺟﺮا ﮐﻨﯿﺪ‪ .‬ﺗﺼﻮﯾﺮ را در ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ ﺑﺮد ﻣﺸﺎﻫﺪه ﮐﻨﯿﺪ‪ .‬دوﺑﺎره ﺑﺮﻧﺎﻣﻪ را اﺟﺮا ﮐﻨﯿﺪ‪ .‬ﺑﻪ ﺻﻔﺤﻪ ﺑﺮد‬
‫ﻧﮕﺎه ﮐﻨﯿﺪ‪.‬‬
‫ﻫﻤﺎن ﻃﻮر ﮐﻪ ﻣﺸﺎﻫﺪه ﻣﯽﮐﻨﯿﺪ‪ ،‬ﺗﺎﺑﻊ ‪ ،IMG_threshold‬ﭘﯿﮑﺴﻞﻫﺎي ﺗﺼﻮﯾﺮ را اﮔﺮ از ﯾﮏ ﻣﻘﺪار ﻣﺸﺨﺼﯽ ﮐﻢﺗﺮ ﺑﺎﺷﻨﺪ را‬
‫ﺻﻔﺮ ﻣﯽﮐﻨﺪ‪.‬‬
‫ﺗﻤﺮﯾﻦ‪ :‬ﺑﺮﻧﺎﻣﻪ ﻓﯿﻠﺘﺮ ﺗﺼﻮﯾﺮ‬
‫ﯾﮏ ﭘﺮوژه ﺟﺪﯾﺪ ﺑﻪ ﻧﺎم ‪ imgfilter.c‬اﯾﺠﺎد ﻧﻤﺎﯾﯿﺪ‪ .‬ﻫﺪف از اﯾﻦ ﭘﺮوژه ﭘﯿﺎده ﺳﺎزي ﮐﻪ ﻓﯿﻠﺘﺮ ﻣﯿﺎﻧﮕﯿﻦﮔﯿﺮ در ‪ DSP‬ﻣﯽﺑﺎﺷﺪ‪.‬‬
‫ﯾﮏ ﻓﺎﯾﻞ ﺟﺪﯾﺪ ﺑﻪ ﻧﺎم ‪ imfilter.c‬اﯾﺠﺎد ﮐﻨﯿﺪ و ﺑﺮﻧﺎﻣﻪ زﯾﺮ را در آن وارد ﻧﻤﺎﯾﯿﺪ‪:‬‬
‫‪void imfilter(int x[96][96],int‬‬ ‫‪y[96][96],int‬‬ ‫‪mask[3][3],int‬‬
‫)‪WIDTH,int HEIGHT‬‬
‫{‬
‫;‪int i,j,n,m‬‬
‫)‪for(i=0;i<WIDTH;i++‬‬
‫)‪for(j=0;j<HEIGHT;j++‬‬
‫;‪y[i][j]=0‬‬

‫)‪for(i=1;i<HEIGHT-1;i++‬‬
‫)‪for(j=1;j<WIDTH-1;j++‬‬
‫)‪for(m=-1;m<=+1;m++‬‬
‫)‪for(n=-1;n<=+1;n++‬‬
‫;]‪y[i-1][j-1] += x[i+m][j+n]*mask[1+m][1+n‬‬

‫}‬
‫اﯾﻦ ﺑﺮﻧﺎﻣﻪ ﯾﮏ ﻣﺎﺳﮏ ‪ 3×3‬را ﺑﻪ ﺗﺼﻮﯾﺮ اﻋﻤﺎل ﻣﯽﮐﻨﺪ‪ .‬در واﻗﻊ ﺑﻪ ﺻﻮرت ﯾﮏ ﻓﯿﻠﺘﺮ ﭘﺎﯾﯿﻦ ﮔﺬر ﻋﻤﻞ ﻣﯽﮐﻨﺪ و ﺗﺼﻮﯾﺮ ﻧﻬﺎﯾﯽ را‬
‫ﻧﺴﺒﺖ ﺑﻪ ﺗﺼﻮﯾﺮ اوﻟﯿﻪ ﺗﺎر ﻣﯽﮐﻨﺪ‪ .‬در ﻓﺎﯾﻞ ‪ main.c‬ﺑﺮﻧﺎﻣﻪ زﯾﺮ را ﺗﺎﯾﭗ ﮐﻨﯿﺪ‪:‬‬
‫‪extern‬‬ ‫‪void‬‬ ‫‪imfilter(int‬‬ ‫‪[96][96],int‬‬ ‫‪[96][96],int‬‬
‫;)‪[3][3],int,int‬‬
68 ‫ آﺷﻨﺎﯾﯽ ﺑﺎ ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺗﺼﻮﯾﺮ‬:4 ‫آزﻣﺎﯾﺶ‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

int mask[3][3]={1,1,1,1,1,1,1,1,1}; //3x3 mask

#include "imagesample.h"
int WIDTH = 96;
int HEIGHT = 96;
#pragma DATA_SECTION( x, ".imgin")
int x[96][96];
#pragma DATA_SECTION( y, ".imgout")
int y[96][96];
int * RGB_RAM;
void main(void) {
unsigned int i,j,k;
RGB_RAM = (int * ) 0x40D000;
//for(i=0;i<96;i++)
// for(j=0;j<96;j++)
// x[i][j]=10;
for(i=0;i<96;i++)
for(j=0;j<96;j++)
x[i][j]=(unsigned char)goldhill[i][j]/9;
k=0;
for(i=0;i<96;i++)
for(j=0;j<96;j++)
{
//output[i][j]=output[i][j]>>8;
RGB_RAM[k]= x[i][j];
k=k+1;
}
while(1)
{
imfilter(x,y,mask,96,96);
k=0;
for(i=0;i<96;i++)
for(j=0;j<96;j++)
{
//output[i][j]=output[i][j]>>8;
RGB_RAM[k]= y[i][j]>>3;
k=k+1;
}

for(i=0;i<96;i++)
for(j=0;j<96;j++)
{
x[i][j]=y[i][j]/9;
}
}
}
69 DSP ‫آزﻣﺎﯾﺸﮕﺎه‬ ‫دﺳﺘﻮرﮐﺎر‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

:‫ اﯾﺠﺎد ﮐﻨﯿﺪ و ﺑﺮﻧﺎﻣﻪ زﯾﺮ را در آن ﺗﺎﯾﭗ ﻧﻤﺎﯾﯿﺪ‬DSP_PRO_5509A.cmd ‫ﯾﮏ ﻓﺎﯾﻞ ﺟﺪﯾﺪ ﺑﻪ ﻧﺎم‬
MEMORY
{
PAGE 0:

DRAM1 : origin = 00100h ,length=0FF00h


SRAM1 : origin = 10000h ,length=10000h
SRAM2 : origin = 20000h ,length=10000h
SRAM3 : origin = 30000h ,length=10000h
}

SECTIONS
{
.text :{}> DRAM1 PAGE 0
.imgin :{} > SRAM2 PAGE 0
.imgout :{} > SRAM3 PAGE 0
lily : {} > SRAM1 PAGE 0
}
‫ ﺑﺮﻧﺎﻣﻪ را‬.‫ﭘﺮوژه ﮐﭙﯽ ﮐﻨﯿﺪ‬ ‫ ﻗﺮار دارد را در ﭘﻮﺷﻪ‬C:\ti\c5500\imglib\include ‫ را ﮐﻪ در ﭘﻮﺷﻪ‬imagesample.h ‫ﻓﺎﯾﻞ‬
Break Point ‫ ﯾﮏ‬imfilter ‫ ﺑﺮﻧﺎﻣﻪ ﮐﻨﺎر ﺗﺎﺑﻊ‬32 ‫ در ﺧﻂ‬.‫ ﺑﺮد را در ﺣﺎﻟﺖ ﮔﺮاﻓﯿﮏ ﻗﺮار دﻫﯿﺪ‬LCD .‫ ﮐﻨﯿﺪ‬Run ‫ و‬Build
.‫ﻗﺮار دﻫﯿﺪ‬

‫ در ﺑﺮﻧﺎﻣﻪ‬Break Point ‫ ﮔﺬاﺷﺘﻦ‬:4 ‫ﺷﮑﻞ‬


‫‪70‬‬ ‫آزﻣﺎﯾﺶ ‪ :4‬آﺷﻨﺎﯾﯽ ﺑﺎ ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺗﺼﻮﯾﺮ‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﺑﺮﻧﺎﻣﻪ را اﺟﺮا ﮐﻨﯿﺪ ﺗﺼﻮﯾﺮ اﺻﻠﯽ را در ﺑﺮد ﻣﺸﺎﻫﺪه ﮐﻨﯿﺪ‪ .‬دوﺑﺎره ﺑﺮﻧﺎﻣﻪ را اﺟﺮا ﮐﻨﯿﺪ‪ .‬ﻫﺮ ﺑﺎر ﮐﻪ ﺑﺮﻧﺎﻣﻪ را اﺟﺮا ﻣﯽﮐﻨﯿﺪ ﺗﺼﻮﯾﺮ‬
‫روي ﺑﺮد ﺗﺎرﺗﺮ ﻣﯽﺷﻮد‪.‬‬
‫ﺗﻤﺮﯾﻦ‪ :‬ﻣﺎﺳﮏ را ﺑﻪ ﺻﻮرت زﯾﺮ ﺗﻐﯿﯿﺮ دﻫﯿﺪ‬
‫‪int mask[3][3]={1,-1,1,-1,1,-1,1,-1,1}; //3x3 mask‬‬
‫ﺑﺮﻧﺎﻣﻪ را ‪ Build‬و ‪ Run‬ﮐﻨﯿﺪ‪ .‬ﻣﺎﻧﻨﺪ ﻗﺴﻤﺖ ﻗﺒﻞ ﻋﻤﻞ ﮐﻨﯿﺪ‪ .‬ﺗﺼﻮﯾﺮ ﭼﻪ ﺗﻔﺎوﺗﯽ ﻣﯽﮐﻨﺪ‪.‬‬
‫آزﻣﺎﯾﺶ ‪:5‬‬
‫ﻓﯿﻠﺘﺮ ‪FIR‬‬

‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬


‫ﻫﺪف‪ :‬ﭘﯿﺎدهﺳﺎزي ﻓﯿﻠﺘﺮ ‪ FIR‬روي ﭘﺮدازﻧﺪه ‪DSP‬‬

‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬


‫‪72‬‬ ‫آزﻣﺎﯾﺶ ‪ :5‬ﻓﯿﻠﺘﺮ ‪FIR‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫‪ (1‬ﻣﻘﺪﻣﻪ‬
‫ﻫﺪف از اﻧﺠﺎم اﯾﻦ آزﻣﺎﯾﺶ آﺷﻨﺎﯾﯽ ﺑﺎ ﻧﺤﻮه ﭘﯿﺎده ﺳﺎزي ﯾﮏ ﻓﯿﻠﺘﺮ ﭘﺎﯾﯿﻦ ﮔﺬر روي ﭘﺮدازﻧﺪه ‪ DSP‬ﻣﯽﺑﺎﺷﺪ‪ .‬در اﯾﻦ‬
‫آزﻣﺎﯾﺶ ﺳﯿﮕﻨﺎل ورودي ﮐﻪ ﺷﺎﻣﻞ ﻣﺠﻤﻮع ﺳﻪ ﺷﮑﻞ ﻣﻮج ﺳﯿﻨﻮﺳﯽ ﺑﺎ ﻓﺮﮐﺎﻧﺲﻫﺎي ﻣﺨﺘﻠﻒ ﻣﯽﺑﺎﺷﺪ از ﻓﺎﯾﻞ ورودي ﺧﻮاﻧﺪه‬
‫ﻣﯽﺷﻮد و ﺳﭙﺲ ﯾﮏ ﻓﯿﻠﺘﺮ ﭘﺎﯾﯿﻦ ﮔﺬر روي آن اﻋﻤﺎل ﻣﯽﺷﻮد‪ .‬و در ﻧﻬﺎﯾﺖ ﯾﮑﯽ از ﺷﮑﻞ ﻣﻮجﻫﺎي ﺳﯿﻨﻮﺳﯽ ﺑﻪ ﺧﺮوﺟﯽ‬
‫ﻓﺮﺳﺘﺎده ﻣﯽﺷﻮد‪.‬‬

‫‪ (2‬اﻧﺠﺎم آزﻣﺎﯾﺶ‬

‫ﯾﮏ ﭘﺮوژهي ﺟﺪﯾﺪ اﯾﺠﺎد ﮐﻨﯿﺪ و ﮐﺘﺎﺑﺨﺎﻧﻪي ﭘﺮدازش ﺳﯿﮕﻨﺎل را ﺑﻪ ﭘﺮوژه اﺿﺎﻓﻪ ﮐﻨﯿﺪ و ﻓﺎﯾﻞﻫﺎي ﻣﻨﺎﺳﺐ را ‪ include‬ﮐﻨﯿﺪ‬
‫)ﺑﻪ آزﻣﺎﯾﺶ آﺷﻨﺎﯾﯽ ﺑﻪ ﮐﺘﺎﺑﺨﺎﻧﻪي ﭘﺮدازش ﺳﯿﮕﻨﺎل ﻣﺮاﺟﻌﻪ ﮐﻨﯿﺪ(‪.‬‬
‫ﺑﺮﻧﺎﻣﻪي زﯾﺮ را در ‪ main.c‬ﺑﻨﻮﯾﺴﯿﺪ‪:‬‬
‫>‪#include <math.h‬‬
‫>‪#include <tms320.h‬‬
‫>‪#include <dsplib.h‬‬

‫‪#define NX 128‬‬ ‫‪/* Input sample size */‬‬


‫‪#define NH 48‬‬ ‫‪/* Number of FIR filter coefficients */‬‬

‫‪/* Input data */‬‬


‫"‪#include "input.dat‬‬

‫‪/* Low-pass FIR filter coefficients */‬‬


‫{=]‪DATA LP_h[NH‬‬
‫‪-6,28,46,27,-35,-100,-93,26,191,240,52,-291,-497,-278,‬‬
‫‪337,888,773,-210,-1486,-1895,-442,2870,6793,9445,‬‬
‫‪9445,6793,2870,-442,-1895,-1486,-210,773,888,337,‬‬
73 ‫ راﻫﻨﻤﺎي اﺳﺘﺎد‬:DSP ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

-278,-497,-291,52,240,191,26,-93,-100,-35,27,46,28,-6};

DATA x[NX];
DATA r[NX];
DATA db[NH+2];
DATA *dbptr = &db[0];

int *D2A;
int *FIFO_d2a;
int fifo_status;
void main()
{
unsigned int i,j;
D2A= (int * ) 0x400002;
FIFO_d2a= (int*) 0x40000A;
// clear
for (i=0; i<NX; i++) r[i] = 0; // clear output buffer (optional)
for (i=0; i<NH+2; i++) db[i] = 0; // clear delay buffer (a must)
for (;;)
{
fifo_status=*FIFO_d2a;
if((fifo_status &(0x20)) != 0)
{
for (i=0; i<NX; i++)
{
x[i]=input[j++]; /* Get a buffer of samples */
*D2A=x[i];
if (j == 160)
j=0;
}
}
// compute
fir(x, LP_h, r, dbptr, NX, NH);

fifo_status=*FIFO_d2a;
if((fifo_status &(0x20)) != 0)
for (i=0; i<NX; i++)
*D2A=r[i];

}
}
74 FIR ‫ ﻓﯿﻠﺘﺮ‬:5 ‫آزﻣﺎﯾﺶ‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ ﮐﻪ در اداﻣﻪ آورده‬signal.gen.c ‫ ﮔﺮﻓﺘﻪ ﻣﯿﺸﻮد اﯾﻦ ﻓﺎﯾﻞ ﺗﻮﺳﻂ ﺑﺮﻧﺎﻣﻪ‬input.dat ‫ ازﻓﺎﯾﻞ‬input ‫در اﯾﻦ ﺑﺮﻧﺎﻣﻪ ورودي‬
‫ ﺳﺎﺧﺘﻪ‬3300 Hz ‫ و‬1800 Hz ،800 Hz ‫ ﺟﻤﻊ ﺳﻪ ﻣﻮج ﺳﯿﻨﻮﺳﯽ ﺑﺎ ﻓﺮﮐﺎﻧﺲﻫﺎي‬input ‫ورودي‬. ‫ﺷﺪه اﺳﺖ ﺗﻮﻟﯿﺪ ﻣﯿﺸﻮد‬
‫ ﮐﻪ در ﭘﻮﺷﻪ ﻣﻮﺟﻮد ﻣﯽ ﺑﺎﺷﺪ را در ﭘﺮوژه‬input ‫ﻓﺎﯾﻞ‬.‫ در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪه اﺳﺖ‬8000 Hz ‫ ﻓﺮﮐﺎﻧﺲ ﻧﻤﻮﻧﻪ ﺑﺮداري‬.‫ﺷﺪه اﺳﺖ‬
:‫ﮐﭙﯽ ﮐﻨﯿﺪ ﺗﺎ ﺑﻪ ﭘﺮوژه اﺿﺎﻓﻪ ﺷﻮد‬
/*
signal_gen.c - Generate sine waves as test data

prototype: void signal_gen(int *, int)


arg0: - data buffer pointer for output
arg1: - number of samples
*/
#include <math.h>

#define T 0.000125 /* 8000 Hz sampling frequency */


#define f1 800 /* 800 Hz frequency */
#define f2 1800 /* 1800 Hz frequency */
#define f3 3300 /* 3300 Hz frequency */
#define PI 3.1415926
#define two_pi_f1_T (2*PI*f1*T) /* 2*pi*f1/Fs */
#define two_pi_f2_T (2*PI*f2*T) /* 2*pi*f2/Fs */
#define two_pi_f3_T (2*PI*f3*T) /* 2*pi*f3/Fs */
#define a1 0.333 /* Magnitude for wave 1 */
#define a2 0.333 /* Magnitude for wave 2 */
#define a3 0.333 /* Magnitude for wave 3 */

static unsigned int n=0;

void signal_gen(int *x, int N)


{
float temp;
int i;

for (i=0; i<N; i++)


{
temp = a1*cos((double)two_pi_f1_T*n);
temp += a2*cos((double)two_pi_f2_T*n);
temp += a3*cos((double)two_pi_f3_T*n);
n++;
x[i] = (int)((0x7fff*temp)+0.5);
}
}
‫‪75‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪ :DSP‬راﻫﻨﻤﺎي اﺳﺘﺎد‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﺿﺮاﯾﺐ ﻓﯿﻠﺘﺮ ﮐﻪ در ﻣﺘﻐﯿﯿﺮ ]‪ LP_h[NH‬ﻗﺮار دارﻧﺪ ﻣﺮﺑﻮط ﺑﻪ ﯾﮏ ﻓﯿﻠﺘﺮ ﭘﺎﯾﯿﻦ ﮔﺬر ﻣﯽﺑﺎﺷﻨﺪ‪.‬‬
‫ﭘﺮوژه را ‪ Build‬ﮐﻨﯿﺪ ﺗﺎ وارد ﺻﻔﺤﻪ ‪ ccs debug‬ﺷﻮﯾﺪ‪.‬‬

‫‪ (3‬ﻣﺸﺎﻫﺪه ﺳﯿﮕﻨﺎل ورودي و ﺧﺮوﺟﯽ‬


‫ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ آزﻣﺎﯾﺶ‪ 2‬ﯾﮏ ﻧﻤﻮدار ‪ Single Time‬ﺟﺪﯾﺪ اﯾﺠﺎد ﮐﻨﯿﺪ و ﺑﻪ ﺻﻮرت زﯾﺮ ﺗﻨﻈﯿﻢ ﮐﻨﯿﺪ‪:‬‬

‫ﺷﮑﻞ ‪ :1‬ﺗﻨﻈﯿﻤﺎت ﻣﺮﺑﻮط ﺑﻪ رﺳﻢ ﻧﻤﻮدار در ﺣﻮزه زﻣﺎن‬

‫ﺑﺎ اﯾﻦ ﺗﻨﻈﯿﻤﺎت ﺷﮑﻞ ﻣﻮج ورودي ﻧﺸﺎن داده ﻣﯽﺷﻮد‪ .‬ﺑﺮاي دﯾﺪن ﺷﮑﻞ ﻣﻮج ﺧﺮوﺟﯽ‪ ،‬ﻫﻤﯿﻦ ﮐﺎر را ﯾﮏ ﺑﺎر دﯾﮕﺮ اﻧﺠﺎم‬
‫دﻫﯿﺪ‪ .‬اﯾﻦ ﺑﺎر ﺑﻪ ﺟﺎي ‪ &r ،&x‬را وارد ﮐﻨﯿﺪ‪.‬‬

‫‪ (4‬ﻣﺸﺎﻫﺪه ﺗﺒﺪﯾﻞ ﻓﻮرﯾﻪ ﺳﯿﮕﻨﺎل ورودي و ﺧﺮوﺟﯽ‬


‫اﮐﻨﻮن ﺑﺮاي اﯾﻦ ﮐﻪ ﻓﺮﮐﺎﻧﺲ ﻣﻮج ورودي را ﺑﺒﯿﻨﯿﺪ‪ ،‬از ﻣﻨﻮي ‪ Tools‬روي ‪ Graph‬ﮐﻠﯿﮏ ﮐﻨﯿﺪ و ‪ FFT Magnitude‬را‬
‫اﻧﺘﺨﺎب ﮐﻨﯿﺪ‪.‬‬
‫‪76‬‬ ‫آزﻣﺎﯾﺶ ‪ :5‬ﻓﯿﻠﺘﺮ ‪FIR‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﺷﮑﻞ ‪ :2‬رﺳﻢ ﺳﯿﮕﻨﺎل در ﺣﻮزه ﻓﺮﮐﺎﻧﺲ‬

‫ﭘﻨﺠﺮهي ‪ Graph properties‬را ﺑﻪ ﺻﻮرت زﯾﺮ ﺗﻨﻈﯿﻢ ﮐﻨﯿﺪ‪:‬‬

‫ﺷﮑﻞ ‪ :3‬ﺗﻨﻈﯿﻤﺎت ﻣﺮﺑﻮط ﺑﻪ رﺳﻢ ﻧﻤﻮدار در ﺣﻮزه ﻓﺮﮐﺎﻧﺲ‬

‫اﮐﻨﻮن ﺑﺮاي اﯾﻦ ﮐﻪ ﻓﺮﮐﺎﻧﺲ ﻣﻮج ﺧﺮوﺟﯽ را ﺑﺒﯿﻨﯿﺪ اﯾﻦ ﺑﺎر ﺑﻪ ﺟﺎي ‪ &r ،&x‬را وارد ﮐﻨﯿﺪ‪ .‬در ﺧﻂ ‪ 51‬ﺑﺮﻧﺎﻣﻪ ﭘﺎﯾﯿﻦ دﺳﺘﻮر‬
‫;)‪ fir(x, LP_h, r, dbptr, NX, NH‬ﯾﮏ ‪ Break Point‬وارد ﮐﻨﯿﺪ‪.‬‬
‫‪77‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪ :DSP‬راﻫﻨﻤﺎي اﺳﺘﺎد‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﺷﮑﻞ ‪ :4‬ﮔﺬاﺷﺘﻦ ‪ Break Point‬در ﺑﺮﻧﺎﻣﻪ‬

‫ﺑﺮﻧﺎﻣﻪ را آن ﻗﺪر اﺟﺮا ﮐﻨﯿﺪ ﮐﻪ ﺑﻪ ﺷﮑﻞ ﻣﻮجﻫﺎي زﯾﺮ ﺑﺮﺳﯿﺪ‪.‬‬

‫ﺗﻮﺿﯿﺢ ‪:‬‬
‫‪ : X‬ﺳﯿﮕﻨﺎل ورودي و ﺷﺎﻣﻞ ‪ 3‬ﻓﺮﮐﺎﻧﺲ ﻣﯽ ﺑﺎﺷﺪ‪.‬‬
‫‪ : r‬ﺳﯿﮕﻨﺎل ﺧﺮوﺟﯽ و ﺷﺎﻣﻞ ﯾﮏ ﻓﺮﮐﺎﻧﺲ ﻣﯽ ﺑﺎﺷﺪ‪.‬‬
‫‪78‬‬ ‫آزﻣﺎﯾﺶ ‪ :5‬ﻓﯿﻠﺘﺮ ‪FIR‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﺗﺎﺑﻊ ﻓﯿﻠﺘﺮ ‪ FIR‬ﯾﮏ ﻓﯿﻠﺘﺮ ﭘﯿﯿﻦ ﮔﺬر ﻣﯽ ﺑﺎﺷﺪ و ﻓﻘﻂ ﻓﺮﮐﺎﻧﺲ ‪ 800 HZ‬ﺳﯿﮕﻨﺎل ورودي را ﻧﮕﻪ ﻣﯽ دارد و ﺑﻘﯿﻪ ﻓﺮﮐﺎﻧﺲ‬
‫ﻫﺎ را ﺣﺬف ﻣﯽ ﮐﻨﺪ‪ ،‬ﺳﯿﮕﻨﺎل ﺧﺮوﺟﯽ ﻓﻘﻂ ﺷﺎﻣﻞ ﯾﮏ ﻓﺮﮐﺎﻧﺲ ﻣﯽ ﺑﺎﺷﺪ ﺑﺮاي ﻫﻤﯿﻦ ﯾﮏ ﻣﻮج ﺳﯿﻨﻮﺳﯽ در ﺻﻔﺤﻪ ﻧﻤﺎﯾﺶ داده‬
‫ﻣﯽﺷﻮد‪.‬‬

‫ﺗﻤﺮﯾﻦ‪ :‬ﯾﮏ ﻣﻮج ﻣﺮﺑﻌﯽ ﺑﺎ ﻓﺮﮐﺎﻧﺲ ‪ 1 KHz‬ﺑﻪ ورودي ‪ A/D‬وﺻﻞ ﮐﻨﯿﺪ‪ .‬ﯾﮏ ﻓﯿﻠﺘﺮ ‪ FIR‬ﺑﺎ ﻣﺘﻠﺐ ﻃﻮري ﻃﺮاﺣﯽ ﮐﻨﯿﺪ ﮐﻪ‬
‫ﻓﺮﮐﺎﻧﺲﻫﺎي ﺑﯿﺶﺗﺮ از ‪ 500‬ﻫﺮﺗﺰ را ﺣﺬف ﮐﻨﺪ‪.‬‬

‫ﺗﻤﺮﯾﻦ‪ :‬ﯾﮏ ﻣﻮج ﻣﺮﺑﻌﯽ ﺑﺎ ﻓﺮﮐﺎﻧﺲ ‪ 1 KHz‬ﺑﻪ ورودي ‪ A/D‬وﺻﻞ ﮐﻨﯿﺪ‪ .‬ﯾﮏ ﻓﯿﻠﺘﺮ ‪ FIR‬ﺑﺎ ﻣﺘﻠﺐ ﻃﻮري ﻃﺮاﺣﯽ ﮐﻨﯿﺪ ﮐﻪ‬
‫ﻓﺮﮐﺎﻧﺲﻫﺎي ﮐﻢﺗﺮ از ‪ 500‬ﻫﺮﺗﺰ را ﺣﺬف ﮐﻨﺪ‪.‬‬
‫آزﻣﺎﯾﺶ ‪:6‬‬
‫ﺗﺒﺪﯾﻞ ﻓﻮرﯾﻪ ﺳﺮﯾﻊ ‪FFT‬‬

‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪DSP‬‬


‫ﻫﺪف‪ :‬ﭘﯿﺎدهﺳﺎزي ﺗﺒﺪﯾﻞ ﻓﻮرﯾﻪ ﺳﺮﯾﻊ روي ﭘﺮدازﻧﺪه ‪DSP‬‬

‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬


‫‪80‬‬ ‫آزﻣﺎﯾﺶ ‪ :6‬ﺗﺒﺪﯾﻞ ﻓﻮرﯾﻪ ﺳﺮﯾﻊ ‪FFT‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫‪ (1‬ﻣﻘﺪﻣﻪ‬
‫‪1‬‬
‫ﻫﺪف از اﯾﻦ آزﻣﺎﯾﺶ ﭘﯿﺎده ﺳﺎزي ﺗﺒﺪﯾﻞ ﻓﻮرﯾﻪ ﺳﺮﯾﻊ ‪ FFT‬روي ﭘﺮدازﻧﺪه ‪ DSP‬ﺑﺎ اﺳﺘﻔﺎده از ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺳﯿﮕﻨﺎل‬
‫ﻣﯽﺑﺎﺷﺪ‪.‬‬
‫ﺑﺮاي ﻧﺤﻮه اﺳﺘﻔﺎده از ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺳﯿﮕﻨﺎل و اﺿﺎﻓﻪ ﮐﺮدن ﻓﺎﯾﻞ ﻫﺎي ﻣﺮﺑﻮﻃﻪ ﺑﻪ آزﻣﺎﯾﺶ ‪ 3‬ﻣﺮاﺟﻌﻪ ﮐﻨﯿﺪ‪.‬‬

‫‪ (2‬آﺷﻨﺎﯾﯽ ﺑﺎ ﺗﺒﺪﯾﻞ ﻓﻮرﯾﻪ ﺳﺮﯾﻊ‬


‫ﺗﺒﺪﯾﻞ ﻓﻮرﯾﻪ ﮔﺴﺴﺘﻪ ‪ DFT‬روﺷﯽ ﻣﻮﺛﺮ ﺑﺮاي ﺑﻪ دﺳﺖ آوردن ﻃﯿﻒ ﻓﺮﮐﺎﻧﺴﯽ ﺳﯿﮕﻨﺎل ﺣﻮزه زﻣﺎن ﻣﯽ ﺑﺎﺷﺪ‪ .‬راﺑﻄﻪاي ﮐﻪ‬
‫ﺑﺮاي ﻣﺤﺎﺳﺒﻪ ‪ DFT‬ﯾﮏ ﺳﯿﮕﻨﺎل اﺳﺘﻔﺎده ﻣﯽﺷﻮد ﺑﻪ ﺻﻮرت زﯾﺮ ﻣﯽﺑﺎﺷﺪ‪.‬‬
‫)‪( 1‬‬

‫ﺿﺮب ﻣﺨﺘﻠﻂ‬ ‫ﻣﺸﮑﻞ ﻣﻮﺟﻮد در اﯾﻦ روش اﯾﻨﺴﺖ ﮐﻪ ﺑﺮاي ﻣﺤﺎﺳﺒﻪ ﮐﺮدن ‪ n‬ﻧﻤﻮﻧﻪ از )‪ x(k‬ﮐﻪ ‪ k=0,1,…,n-1‬ﺗﻘﺮﯾﺒﺂ‬
‫ﺟﻤﻊ ﻣﺨﺘﻠﻂ ﻧﯿﺎز ﻫﺴﺘﻨﺪ‪.‬‬ ‫‪-n‬‬

‫ﻣﺤﺎﺳﺒﻪ ﯾﮏ ﺿﺮب ﻣﺨﺘﻠﻂ در ﺳﺨﺖ اﻓﺰارﻫﺎي دﯾﺠﯿﺘﺎﻟﯽ ﻣﺴﺘﻠﺰم ‪ 4‬ﺿﺮب ﺣﻘﯿﻘﯽ و ‪ 2‬ﺟﻤﻊ ﺣﻘﯿﻘﯽ اﺳﺖ ﺑﻨﺎﺑﺮاﯾﻦ ﺗﻌﺪاد‬
‫ﻋﻤﻠﯿﺎت ﻣﻮرد ﻧﯿﺎز ﺑﺮاي ﻣﺤﺎﺳﺒﻪ ﮐﺮدن ﯾﮏ ‪ DFT‬ﺑﺮاﺑﺮ ﺑﺎ ×‪ 4‬ﻣﯽ ﺑﺎﺷﺪ ﮐﻪ اﯾﻦ ﺑﺮاي ﯾﮏ ‪ N‬ﺧﯿﻠﯽ ﺑﺰرگ ﺧﯿﻠﯽ زﯾﺎد ﻣﯽﺷﻮد‪.‬‬
‫ﻫﺎ ﻣﺴﺘﻠﺰم ﻋﻤﻠﯿﺎت ﺳﻨﮕﯿﻨﯽ اﺳﺖ ‪.‬‬ ‫ﺑﺮاي ﻣﻘﺎدﯾﺮ ﺑﺰرﮔﯽ از ‪ N‬ﻣﺤﺎﺳﺒﻪ و ذﺧﯿﺮه ﮐﺮدن‬
‫ﭼﻨﺪﯾﻦ دﻓﻌﻪ ﻣﺤﺎﺳﺒﻪ ﻣﯽ ﺷﻮﻧﺪ‪ .‬ﺑﺮاي‬ ‫ﯾﮏ ﺗﺎﺑﻊ ﻣﺘﻨﺎوب اﺳﺖ در ﻫﻨﮕﺎم ﻣﺤﺎﺳﺒﻪ ‪ DFT‬ﻣﻘﺎدﯾﺮ ﯾﮑﺴﺎﻧﯽ از‬ ‫ﭼﻮن‬
‫ﻣﻘﺎدﯾﺮ ﯾﮑﺴﺎﻧﯽ دارﻧﺪ‬ ‫ﻣﺜﺎل ﭼﻨﺎﻧﮑﻪ در ﺷﮑﻞ‪ 1‬ﺑﺮاي ‪ N=8‬ﻧﺸﺎن داده ﺷﺪه اﺳﺖ ﺗﻮانﻫﺎي ﻣﺨﺘﻠﻔﯽ از‬

‫____________________________________________________________________‬
‫‪1‬‬
‫‪Fast Fourier Transform‬‬
‫‪81‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪ :DSP‬راﻫﻨﻤﺎي اﺳﺘﺎد‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﻫﺎ ﺑﺮاي ‪N=8 , DFT‬‬ ‫ﺷﮑﻞ ‪: 1‬‬

‫ﻋﻼوه ﺑﺮ اﯾﻦ ﺑﻌﻀﯽ ‪ w i‬ﻫﺎ ﺑﺨﺸﻬﺎي ﺣﻘﯿﻘﯽ و ﻣﻮﻫﻮﻣﯽ دارﻧﺪ ﮐﻪ ﻣﺴﺎوي ﺑﺎ ‪ 1‬ﯾﺎ ‪ 0‬ﻫﺴﺘﻨﺪ ‪ .‬ﺑﺮاي ﮐﺎﻫﺶ اﯾﻦ ﺗﮑﺮارﻫﺎي‬
‫اﺿﺎﻓﯽ ﯾﮏ اﻟﮕﻮرﯾﺘﻢ ﻣﻮﺛﺮ ﺑﻪ ﻧﺎم ‪ FFT‬وﺟﻮد دارد‪.‬‬
‫ﻋﻤﻠﯿﺎت ﻣﺤﺎﺳﺒﻪ ﮐﻨﺪ‪.‬‬ ‫‪ n‬ﻋﻤﻠﯿﺎت ﺑﺠﺎي‬ ‫اﮔﺮ ‪ N‬ﺗﻮاﻧﯽ از ‪ 2‬ﺑﺎﺷﺪ ‪ FFT‬ﻣﯽﺗﻮاﻧﺪ ﯾﮏ ‪ DFT‬را ﺑﺎ‬
‫ﻋﻤﻠﯿﺎت ﻣﯽﺑﺎﺷﺪ در ﺣﺎﻟﯽ ﮐﻪ اﮔﺮ از ‪ DFT‬اﺳﺘﻔﺎده ﮐﻨﯿﻢ‬ ‫ﺑﺮاي ﻣﺜﺎل اﮔﺮ ‪ n=1024‬ﺑﺎﺷﺪ ‪ FFT‬ﻧﯿﺎزﻣﻨﺪ ﺣﺪود‬
‫ﻋﻤﻠﯿﺎت ﺑﺎﯾﺪ روي ﺳﯿﮕﻨﺎل اﻧﺠﺎم ﺷﻮد ‪.‬‬
‫ﺗﻌﺪاد زﯾﺎدي اﻟﮕﻮرﯾﺘﻢ ﺑﺮاي ﻣﺤﺎﺳﺒﻪ ‪ FFT‬ﯾﮏ ﺳﯿﮕﻨﺎل وﺟﻮد دارد ﮐﻪ ﻫﺮ ﮐﺪام ﻣﺰﯾﺖ ﻫﺎ و ﻣﻌﺎﯾﺐ ﺧﻮد را دارﻧﺪ ‪ .‬اﺧﺘﻼﻓﯽ‬
‫ﮐﻪ در ﺑﯿﻦ اﯾﻦ اﻟﮕﻮرﯾﺘﻢ ﻫﺎ وﺟﻮد دارد در ﭘﯿﭽﯿﺪﮔﯽ ﮐﺪﻫﺎ و اﺳﺘﻔﺎده از ﺣﺎﻓﻈﻪ و ﻣﺤﺎﺳﺒﺎت رﯾﺎﺿﯽ ﻣﯽ ﺑﺎﺷﻨﺪ ‪.‬‬
‫‪ N LOG‬ﺿﺮب ﻧﯿﺎز دارد ﮐﻪ ‪N‬‬ ‫اﻟﮕﻮرﯾﺘﻢﻫﺎي‪ FFT‬ﮐﻪ اوﻟﯿﻦ ﺑﺎر ﺗﻮﺳﻂ ‪ COOLY‬و ‪ TUKY‬ﻣﻌﺮﻓﯽ ﺷﺪه ﮐﻪ ﺗﻘﺮﯾﺒﺂ ﺑﻪ‬
‫ﺗﻮاﻧﯽ از ‪ 2‬اﺳﺖ ﻫﻤﭽﻨﯿﻦ ‪ FFT‬در ﻣﻮاردي ﮐﻪ ‪ N‬ﺗﻮاﻧﯽ از ﯾﮏ ﻋﺪد ﺻﺤﯿﺢ ﺑﻐﯿﺮ از ‪ 2‬اﺳﺖ ﻧﯿﺰ ﮐﺎر ﺑﺮد دارد ‪.‬‬
‫دو ﻧﻮع ﻣﺨﺘﻠﻒ از اﻟﮕﻮرﯾﺘﻢ ‪ FFT‬وﺟﻮد دارد ‪ :‬در ﺣﻮزه زﻣﺎن و در ﺣﻮزه ﻓﺮﮐﺎﻧﺲ‪ .‬در اداﻣﻪ ﺑﻪ ﺗﻮﺿﯿﺢ اﻟﮕﻮرﯾﺘﻢ ‪ FFT‬در ﺣﻮزهي زﻣﺎن‬
‫ﻣﯽﭘﺮدازﯾﻢ‪.‬‬

‫‪ (1-2‬اﻟﮕﻮرﯾﺘﻢ در ﺣﻮزه زﻣﺎن ‪:‬‬

‫در اﯾﻦ اﻟﮑﻮرﯾﺘﻢ ﺳﯿﮕﻨﺎل ورودي در ﺣﻮزه زﻣﺎن ﺑﻪ ﭼﻨﺪ ﺑﺨﺶ ﺗﻘﺴﯿﻢ ﻣﯽ ﺷﻮد ‪ .‬ﺳﭙﺲ ‪ DFT‬در ﻫﺮ ﺑﺨﺶ ﺑﻄﻮر ﺟﺪاﮔﺎﻧﻪ ﻣﺤﺎﺳﺒﻪ‬
‫ﻣﯽ ﺷﻮد ﺑﺎ ﺗﺮﮐﯿﺐ اﯾﻦ ‪ DFT‬ﻫﺎ ‪ DFT‬ﺳﯿﮕﻨﺎل اﺻﻠﯽ ﺑﺎ ﻋﻤﻠﯿﺎت رﯾﺎﺿﯽ ﮐﻤﺘﺮ ﺑﺪﺳﺖ ﻣﯽ آﯾﺪ ﭼﻮن در اﯾﻦ اﻟﮕﻮرﯾﺘﻢ ﺑﺎ ﺷﮑﺴﺘﻦ ﺳﯿﮕﻨﺎل‬
‫در ﺣﻮزه زﻣﺎن ﺑﻪ ﻣﺤﺎﺳﺒﻪ ‪ DFT‬ﻣﯽ ﭘﺮدازﯾﻢ ﺑﻪ اﯾﻦ ﺣﺎﻟﺖ ‪ DFT‬در ﺣﻮزه زﻣﺎن ﮔﻔﺘﻪ ﻣﯽ ﺷﻮد ‪ .‬ﺑﻄﻮر ﻣﺸﺎﺑﻪ در اﻟﮕﻮرﯾﺘﻢ ‪ FFT‬در ﺣﻮزه‬
‫ﻓﺮﮐﺎﻧﺲ ﻣﻘﺎدﯾﺮ ﺳﯿﮕﻨﺎل در ﺣﻮزه ي ﻓﺮﮐﺎﻧﺲ ﺑﻪ ﺑﺎزه ﻫﺎي ﮐﻮﭼﮑﺘﺮ ﺗﻘﺴﯿﻢ ﻣﯽ ﺷﻮد ‪.‬‬
‫در اﻟﮕﻮرﯾﺘﻢ ﻫﺎي ﺣﻮزه زﻣﺎﻧﯽ ‪ N‬ﻧﻤﻮﻧﻪ از ﺳﯿﮕﻨﺎل ورودي }‪ {X(n),n=0,1,……,N-1‬ﺑﻪ ‪ 2‬رﺷﺘﻪ ﺑﺎ ﻃﻮل ‪ N/2‬ﺗﻘﺴﯿﻢ ﻣﯽ‬
‫ﺷﻮﻧﺪ ‪:‬‬
‫رﺷﺘﻪ اﻋﺪاد زوج ‪:‬‬

‫)‪(2‬‬
‫‪82‬‬ ‫آزﻣﺎﯾﺶ ‪ :6‬ﺗﺒﺪﯾﻞ ﻓﻮرﯾﻪ ﺳﺮﯾﻊ ‪FFT‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫رﺷﺘﻪ اﻋﺪاد ﻓﺮد‪:‬‬

‫)‪(3‬‬

‫ﻫﻤﺎنﻃﻮر ﮐﻪ ﻣﯽ داﻧﯿﻢ ﻣﻌﺎدﻟﻪ ‪ DFT‬ﺑﺪﯾﻦ ﺻﻮرت اﺳﺖ ‪:‬‬

‫)‪(4‬‬

‫اﯾﻦ راﺑﻄﻪ را ﻣﯽ ﺗﻮان ﺑﻪ دو ‪ DFT‬دﯾﮕﺮ ﺑﺎ ﻃﻮل ‪ N/2‬ﺑﻪ ﺻﻮرت زﯾﺮ ﺗﻘﺴﯿﻢ ﮐﺮد‪.‬‬

‫)‪(5‬‬
‫ﭼﻮن دارﯾﻢ ‪:‬‬

‫)‪(6‬‬

‫ﺑﺎ ﺟﺎﯾﮕﺬاري اﯾﻦ راﺑﻄﻪ در ﻣﻌﺎدﻟﻪ ﺑﻪ ﻣﻌﺎدﻟﻪ زﯾﺮ ﻣﯽ رﺳﯿﻢ ‪:‬‬

‫)‪(7‬‬
‫ﮐﻪ ﻫﺮ ﻣﺠﻤﻮﻋﻪ ﺑﻪ ‪ N/2‬ﻧﻘﻄﻪ اي ‪ DFT‬ﮐﺎﻫﺶ ﭘﯿﺪا ﻣﯽﮐﻨﺪ ﻋﻼوه ﺑﺮ اﯾﻦ ﻣﻌﺎدﻟﻪ ﻣﯽ ﺗﻮاﻧﺪ ﺑﺼﻮرت زﯾﺮ ﻧﻮﺷﺘﻪ ﺷﻮد ‪:‬‬

‫)‪(8‬‬

‫[‪ (k)=DFT‬ﻣﯽﺑﺎﺷﻨﺪ ﮐﻪ از ‪ N/2 DFT‬ﻧﻘﻄﻪاي اﺳﺘﻔﺎده ﺷﺪه اﺳﺖ‪.‬‬ ‫[‪ (k)=DFT‬و ])‪(m‬‬ ‫ﮐﻪ ])‪(m‬‬
‫ﺑﺮاي ‪ N=8‬اﯾﻦ ﭘﺮوﺳﻪ در ﺷﮑﻞ زﯾﺮ ﻧﺸﺎن داده ﺷﺪه اﺳﺖ ‪:‬‬
‫‪83‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪ :DSP‬راﻫﻨﻤﺎي اﺳﺘﺎد‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﺷﮑﻞ ‪ :2‬ﺗﺠﺰﯾﻪ ﯾﮏ ‪ N ،DFT‬ﻧﻘﻄﻪاي ﺑﻪ ‪ N/2 ،DFT 2‬ﻧﻘﻄﻪاي‬

‫ﮐﻪ ﻫﺮ ﮐﺪام از ‪DFT‬ﻫﺎي ‪ N/2‬ﻧﻘﻄﻪاي را ﻣﯽﺗﻮاﻧﯿﻢ ﻣﺎﻧﻨﺪ ﺷﮑﻞ زﯾﺮ ﺑﻪ ‪ DFT‬ﻫﺎي ‪ N/4‬ﻧﻘﻄﻪ ﺑﺸﮑﻨﯿﻢ‪.‬‬

‫ﺷﮑﻞ‪ : 3‬ﺗﺠﺰﯾﻪ ﯾﮏ ‪ N/2 , DFT‬ﻧﻘﻄﻪ اي ﺑﻪ ‪ N/4 , DFT 2‬ﻧﻘﻄﻪ اي‬

‫ﺑﺎ ﺗﮑﺮار اﯾﻦ روﻧﺪ در ﻧﻬﺎﯾﺖ ﭼﻮن ‪ N‬ﺗﻮاﻧﯽ از ‪ 2‬اﺳﺖ ﺑﻪ ‪ 2 DFT‬ﻧﻘﻄﻪ اي ﻣﯽ رﺳﯿﻢ ‪ .‬ﺑﺮاي ﻣﺜﺎل در ﺷﮑﻞ ﻗﺒﻞ ‪ N/4 ،DFT‬ﻧﻘﻄﻪ‬
‫ﻣﯽ ﺑﺎﺷﻨﺪ‪ DFT،‬دو ﻧﻘﻄﻪاي ﻓﻘﻂ‬ ‫ﻫﺎي ﻃﺒﻘﻪ اول ‪=1‬‬ ‫اي ﺑﻪ دو ‪ 2 ،DFT‬ﻧﻘﻄﻪ اي ﺗﺒﺪﯾﻞ ﻣﯽ ﺷﻮد ﭼﻮن در ‪ DFT‬در ﻧﻘﻄﻪ اي‬
‫ﺑﻪ ‪ 1‬ﺟﻤﻊ و ‪ 1‬ﺗﻘﺴﯿﻢ ﻧﯿﺎز دارد‪ .‬در ﺷﮑﻞ زﯾﺮ ﯾﮏ ‪ DFT‬دو ﻧﻘﻄﻪاي ﻧﺸﺎن داده ﺷﺪه اﺳﺖ ‪:‬‬

‫ﺷﮑﻞ ‪ 2 DFT :4‬ﻧﻘﻄﻪ اي‬


‫‪84‬‬ ‫آزﻣﺎﯾﺶ ‪ :6‬ﺗﺒﺪﯾﻞ ﻓﻮرﯾﻪ ﺳﺮﯾﻊ ‪FFT‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﻫﻤﺎن ﻃﻮر ﮐﻪ ﻣﺸﺎﻫﺪه ﻣﯽﮐﻨﯿﺪ ﺑﺪون ﻧﯿﺎز ﺑﻪ ﺿﺮب و ﺟﻤﻊ ﻣﺨﺘﻠﻂ ﻣﯽﺗﻮاﻧﯿﻢ ‪ DFT‬ﯾﮏ ﺳﯿﮕﻨﺎل را ﻣﺤﺎﺳﺒﻪ ﮐﻨﯿﻢ‪.‬‬

‫‪ (3‬اﻧﺠﺎم آزﻣﺎﯾﺶ‬

‫ﯾﮏ ﭘﺮوژه ﺟﺪﯾﺪ اﯾﺠﺎد ﮐﻨﯿﺪ و ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ آزﻣﺎﯾﺶ آﺷﻨﺎﯾﯽ ﺑﺎ ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺳﯿﮕﻨﺎل ﮐﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺳﯿﮕﻨﺎل و ﻓﺎﯾﻞ‬
‫‪ include‬ﻣﻨﺎﺳﺐ را ﺑﻪ ﭘﺮوژه اﺿﺎﻓﻪ ﮐﻨﯿﺪ‪.‬‬
‫ﺑﺮﻧﺎﻣﻪ زﯾﺮ را در ﻓﺎﯾﻞ ‪ main.c‬وارد ﻧﻤﺎﯾﯿﺪ‪:‬‬
‫>‪#include <math.h‬‬
‫>‪#include <tms320.h‬‬
‫>‪#include <dsplib.h‬‬
‫>‪#include <math.h‬‬
‫‪#define pi 3.1415926535897f‬‬
‫‪#define NX 256‬‬
‫;]‪DATA x[NX‬‬
‫;‪int *D2A‬‬
‫;‪int *FIFO_d2a‬‬
‫;‪int fifo_status‬‬
‫;]‪int MAGx[NX/2‬‬
‫)(‪void main‬‬
‫{‬
‫;‪int i‬‬

‫;‪D2A= (int * ) 0x400002‬‬


‫;‪FIFO_d2a= (int*) 0x40000A‬‬

‫)‪for (i=0;i<NX;i++‬‬
‫{‬
‫;‪x[i]=sin(2*pi*2000.0f/8000*i)*256‬‬

‫)‪// if(j==1664‬‬
‫‪//‬‬ ‫;‪j=0‬‬
‫}‬

‫;)‪rfft(x,NX,SCALE‬‬

‫)‪for (i=0;i<NX/2-1;i++‬‬
‫;)]‪MAGx[i]= sqrt(x[2*i]*x[2*i]+x[2*i+1]*x[2*i+1‬‬
‫)‪while(1‬‬
‫{‬
‫;‪fifo_status=*FIFO_d2a‬‬
‫)‪if((fifo_status &(0x20))!=0‬‬
‫)‪for(i=0;i<256;i++‬‬
‫;]‪*D2A=x[i‬‬
‫}‬
‫}‬
‫‪85‬‬ ‫دﺳﺘﻮر ﮐﺎر آزﻣﺎﯾﺸﮕﺎه ‪ :DSP‬راﻫﻨﻤﺎي اﺳﺘﺎد‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﺗﻮﺟﻪ‪ :‬ﺣﺮف ‪ f‬ﮐﻪ ﺟﻠﻮي دﺳﺘﻮر ‪ #define pi 3.1415926535897f‬ﻗﺮار داده ﺷﺪه اﺳﺖ اول ﺣﺮف ‪ float‬اﺳﺖ و ﺑﻪ‬
‫ﮐﺎﻣﭙﺎﯾﻠﺮ ‪ c‬ﻣﯽﮔﻮﯾﺪ ﮐﻪ ‪ pi‬را ﺑﻪ ﺻﻮرت اﻋﺸﺎري در ﻧﻈﺮ ﺑﮕﯿﺮد ﺗﺎ ﺑﻪ ﺻﻮرت اﻋﺸﺎري در اﻋﺪاد دﯾﮕﺮ ﺿﺮب ﺷﻮد‪ ،‬اﮔﺮ ‪ f‬ﮔﺬاﺷﺘﻪ‬
‫ﻧﺸﻮد ﻋﺪد ‪ int ،pi‬ﯾﻌﻨﯽ ‪ 3‬در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻣﯽﺷﻮد‪.‬‬
‫ﯾﮏ ﻓﺎﯾﻞ ﺟﺪﯾﺪ ﺑﻪ ﻧﺎم ‪ DSP_PRO_5509A.cmd‬اﯾﺠﺎد ﮐﻨﯿﺪ و ﺑﺮﻧﺎﻣﻪ زﯾﺮ را در آن ﺗﺎﯾﭗ ﻧﻤﺎﯾﯿﺪ‪:‬‬
‫‪MEMORY‬‬
‫{‬
‫‪PAGE 0:‬‬
‫‪DARAM0:origin = 0000100h,length=0003F00h‬‬
‫‪DARAM1:origin = 0004000h,length=0004000h‬‬
‫‪DARAM2:origin = 0008000h,length=0004000h‬‬
‫‪DARAM3:origin = 000c000h,length=0004000h‬‬
‫‪SARAM0 : origin=0010000h,length= 0004000h‬‬
‫‪SARAM1 : origin=0014000h,length= 0004000h‬‬
‫‪SARAM2 : origin=0018000h,length= 0004000h‬‬
‫‪SARAM3 : origin=001c000h,length= 0004000h‬‬
‫}‬

‫‪SECTIONS‬‬

‫{‬
‫‪.text‬‬ ‫‪: {} > SARAM1 PAGE 0‬‬
‫)‪.twiddle: {} > SARAM3 PAGE 0, align(2048‬‬
‫)‪.input : {} > DARAM3 PAGE 0, align(4‬‬
‫‪/* this is due to long-word data memory access */‬‬
‫}‬
‫ﭘﺮوژه را ‪ Build‬و ‪ Run‬ﮐﻨﯿﺪ ﺗﺎ وارد ﺻﻔﺤﻪ دﯾﺒﺎگ ﺷﻮﯾﺪ )روي آﯾﮑﻮن ﺳﻮﺳﮏ ﮐﻠﯿﮏ ﮐﻨﯿﺪ(‪ LCD .‬ﺑﺮد را در ﺣﺎﻟﺖ ‪D/A‬‬

‫ﻗﺮار دﻫﯿﺪ و ﺑﻪ ﺻﻮرت زﯾﺮ ﺗﻨﻈﯿﻢ ﮐﻨﯿﺪ‪:‬‬


‫ﻣﺪ‪D/A :‬‬

‫ﻓﺮﮐﺎﻧﺲ‪ 8/474 :‬ﮐﯿﻠﻮﻫﺮﺗﺰ‬


‫ﻓﯿﻔﻮ‪ :‬ﻓﯿﻔﻮ ‪ 256‬ﺗﺎﯾﯽ‬
‫ﻓﺮﻣﺖ‪ :‬ﻋﻼﻣﺖدار‬
‫‪ LCD‬ﺑﺮد را در ﻣﺪ اﺳﯿﻠﻮﺳﮑﻮپ ﻗﺮار دﻫﯿﺪ و ﺑﻪ ﺻﻮرت زﯾﺮ ﺗﻨﻈﯿﻢ ﮐﻨﯿﺪ‪:‬‬
‫زﻣﺎن‪10 msec :‬‬
‫داﻣﻨﻪ‪0/2 v :‬‬
‫ورودي‪D/A :‬‬
‫ﺗﺮﯾﮕﺮ‪0 v :‬‬
‫ﺑﺮﻧﺎﻣﻪ را اﺟﺮا ﮐﻨﯿﺪ‪ .‬داﻣﻨﻪي ﺳﯿﮕﻨﺎل در ﺣﻮزه زﻣﺎن روي ‪ LCD‬ﻣﺸﺎﻫﺪه ﻣﯽﮐﻨﯿﺪ‪.‬‬
‫‪86‬‬ ‫آزﻣﺎﯾﺶ ‪ :6‬ﺗﺒﺪﯾﻞ ﻓﻮرﯾﻪ ﺳﺮﯾﻊ ‪FFT‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﯿﺸﺮو ﺧﺎورﻣﯿﺎﻧﻪ‬

‫ﺗﻤﺮﯾﻦ‪ :‬ﺑﻪ ورودي ‪ A/D‬ﺑﺮد ﯾﮏ ﻣﻮج ﺳﯿﻨﻮﺳﯽ ﺑﺎ ﻓﺮﮐﺎﻧﺲ ‪ 1 KHz‬وﺻﻞ ﮐﻨﯿﺪ‪ .‬ﺑﺮﻧﺎﻣﻪ ﻗﺒﻞ را ﻃﻮري ﺗﻐﯿﯿﺮ دﻫﯿﺪ ﺗﺎ ورودي‬
‫را از ‪ A/D‬ﺑﺮد ﺑﺨﻮاﻧﺪ و ‪ FFT‬آن را روي ﺑﺮد ﻧﺸﺎن دﻫﯿﺪ‪.‬‬
‫ﺿﻤﻴﻤﻪ اﻟﻒ‪ :‬اﻳﺠﺎد ﭘﺮوژه‬
‫در ﻧﺮماﻓﺰار ‪CCS‬‬

‫دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪ :DSP‬ﮔﺰارش ﻛﺎر آزﻣﺎﻳﺸﮕﺎه‬


‫ﻫﺪف‪ :‬آﺷﻨﺎﻳﻲ ﺑﺎ ﻧﺮماﻓﺰار ‪CCS‬‬

‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬


‫‪88‬‬ ‫‪CC‬‬
‫ﺿﻤﻴﻤﻪ اﻟﻒ‪ :‬اﻳﺠﺎد ﭘﺮوژژه در ﻧﺮماﻓﺰار ‪CS‬‬ ‫ﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬
‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸ‬

‫‪ (1‬ﺑﺎز ﻛﺮﺮدن ﻧﺮماﻓﺰاار‬

‫ﺪا ﭘﻨﺠـﺮهي ‪Workspaace‬‬


‫در ‪ desktop‬اﺟﺮا ﻛﻨﻴﺪ‪ .‬ﺑﺘﺪ‬ ‫ﺴﺨﻪ ‪ 5‬را ﺑﺎ دو ﺑﺑﺎر ﻛﻠﻴﻚ روي آآﻳﻜﻮن‬
‫ﺑﺮﻧﺎﻣﻪ ﻛﺪ ﻛﺎﻣﭙﻮزر ﻧﺴﺨ‬
‫آدرﺳﻲ را ﻛﻪ ﻣﻲ ﺧﻮﻮاﻫﻴﺪ در اداﻣﻪ ﭘﭘﺮوژهﻫﺎي‬
‫ﻲ‬ ‫ﺪ‪ ،‬ﺑﺎز ﻣﻲﺷﻮد‪ .‬در ﻗﺴﻤﺖ ‪Worksp ace‬‬
‫‪ Launncher‬ﻛﻪ ﺑﻪ ﺻﻮررت زﻳﺮ ﻣﻲﺑﺎﺷﺪ‬
‫ﺧﻮد ررا در آن ﺷﺎﺧﻪ ااﻳﺠﺎد ﻧﻤﺎﺋﻴﺪ را وارد ﻛﻨﻴﺪ‪.‬‬

‫‪ worksp‬ﻧﺮماﻓﺰا ر ‪CCS5.3‬‬
‫ﺷﻜﻞ‪pace :1‬‬

‫ﺑﻌﺪ از وارد ﻛﺮدن آدرس‪ ،‬رروي ﮔﺰﻳﻨﻪي ‪ OK‬ﻛﻠﻴﻚ ﻛﻨﻴﺪ‪ .‬اﻛﻨﻮن ﭘﻨﺠﺮه اﺻ‬
‫ﺻﻠﻲ ﻧﺮم اﻓﺰار ﺑﺎﺎز ﻣﻲ ﺷﻮد‪.‬‬

‫‪ (2‬اﻳﺠﺎد ﻳﻚ ﭘﺮوژه ﺟﺪﻳﺪ‬


‫ﻛﻠﻴﻚ ﻛﻨﻴﺪ‪.‬‬
‫ﺑﺮاي ااﻳﺠﺎد ﭘﺮوژهي ﺟﺟﺪﻳﺪ‪ ،‬ﺑﻪ ﻣﻨﻮي ﻓﺎﻳﻞ رﻓﺘﻪ‪ ،‬و ﺑﺎ زدن ﮔﺰﻳﻨﻪ ‪ ، Neew‬روي ‪ CCS Prooject‬ﻚ‬

‫ﺷﻜﻞ ‪ :2‬اﻳﺠﺎد ﭘﺮوژه ﺟﺟﺪﻳﺪ‬

‫ﺑﺎز ﺷﺪه را ﻣﻄﺎﺑﻖ ﺷﻜﻞ ﺗﻨﻈﻴﻢ ﻛﻨﻴﻴﺪ‪:‬‬


‫ﭘﻨﺠﺮهي ز‬
‫‪89‬‬ ‫‪DSP‬‬
‫دﺳﺘﻮﻮرﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪P‬‬ ‫ﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬
‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸ‬

‫ﺷﻜﻞ ‪ :3‬ﺗﻨﻈﻴﻤﺎت ﭘﺮﺮوژه‬

‫ط ﺑﻪ ‪Use‬‬
‫اﺳﺖ ﺗﻴﻚ ﻣﺮﺑﻮط‬
‫ﻣﻲ ﺗﻮان ﺑﻪ دﻟﺨﻮﻮاه اﻧﺘﺨﺎب ﻧﻤﻮد وﻟﻲ ﺑﻬﺘﺮ ﺖ‬
‫ﻞ ذﺧﻴﺮه ﺳﺎزي ﭘﺮوژه ‪ ،‬را ﻲ‬
‫ﺠﺮه آدرس ﻣﺤﻞ‬
‫در اﻳﻦ ﭘﻨﺠ‬
‫‪ DSP‬از ﻳﻚ ﭘﺮداززﻧﺪه ﺑﺎ ﻧﺎم‬
‫‪ work‬اﻳﺠﺎد ﮔﺮﺮدد‪ .‬در ﻛﻴﻒ آزﻣﺎﻳﺸﮕﺎه ‪D‬‬
‫‪ Defaultt Location‬را زدهه ﺗﺎ ﭘﺮوژه در ددرون ‪kspace‬‬
‫ﺖ‪ .‬ﻫﻤﭽﻨﻴﻦ ﺑﺮﺮاي اﺗﺼﺎل‬ ‫ﺷﺮﻛﺖ ﺗﮕﺰاس اﻳﻨﺴﺘﺮﺮوﻣﻨﺖ ) ‪ ( www.ti.ccom‬اﺳ‬
‫ﺳﺘﻔﺎده ﺷﺪه اﺳﺖ‬ ‫ي ‪ 55xx‬ﺖ‬
‫‪ TMS3220C5509A‬از ﺳﺮي‬
‫‪ JTA‬ﻣﺮﺑﻮط ﺑﻪ ﺳﺮي ‪ XDS1100ver2‬اﺳﺘﻔﺎده ﺷﺷﺪه اﺳﺖ‬
‫‪ DSP‬از ﻳﻚ ‪AG‬‬
‫ﻛﻴﻒ آزﻣﺎﻳﺸﮕﺎه ‪P‬‬
‫ﻛﺎﻣﭙﻴﻮﺗﺮ و ﻧﺮم اﻓﺰار ‪ CCS‬ﺑﻪ ﺑﺮد ‪ ،‬در ﻒ‬
‫ﻣﻲ ﮔﺮدد‪.‬‬
‫ﻣﺮﺣﻠﻪ ﻳﻚ ﭘﺮوژهي ﺟﺪﻳﺪ اﻳﺠﺎد ﻲ‬
‫ﻪ‬ ‫ﻛﻪ ﺑﺎﻳﺪ در ااﻳﻦ ﺻﻔﺤﻪ ﺑﻪ ددرﺳﺘﻲ وارد ﺷﻮد‪ .‬در اﻳﻦ‬
‫‪ (3‬اﺿﺎﻓﻪ ﻛﺮدن ‪ ggel‬ﻓﺎﻳﻞ ﺑﺮد‪:‬‬
‫ﺷﻮد‪ .‬اﮔﺮ از ﺷﺒﻴﻪﻪ ﺳﺎز ‪ CCS1‬اﺳ‬
‫ﺳﺘﻔﺎده ﻣﻲﻛﻨﻴﺪ‪ ،‬ﻧﻴﺎز ﺑﻪ اﻳﻦ ﻛﺎر ﻧﻤﻲﺑﺎﺷـﺪ‬ ‫اﻳﻦ ﻣﺮﺣﻠﻪ ﺑﺎﻳﺪ ‪ geel‬ﻓﺎﻳﻞ ﻣﻨﺎﺳﺐ ﺑﻪ ﺑﺮد اﺿﺎﻓﻪ ﺷ‬
‫در ﻦ‬
‫ﺳﺮﻋﺖ ﭘﺮدازﻧﺪه ﺻـﻮرت ﻣـﻲ‪-‬‬
‫ﺖ‬ ‫ﻓﺮض ﻧﺮماﻓﺰار ﻣﻨﺎﺳﺳﺐ اﺳﺖ‪ .‬اﺿﺎﻓﻓﻪ ﻛﺮدن ‪ gel‬ﻓﺎﻳﻳﻞ ﺑﺮاي ﺗﻨﻈﻴﻢ ﺳﺳﺮﻋﺖ ﺑﺎس و اﻓﺰاﻳﺶ‬
‫و ﭘﻴﺶ ض‬
‫ﻓﺎﻳﻞ ﻣـﻲ ﺑﺎﺷـﺪ‪ .‬ددر ﻧـﺮم اﻓـﺰار ﺑﺑـﺮاي ﻫـﺮ‬
‫ﮔﻴﺮد‪ .‬در ﻫﻨﻨﮕﺎم اﺳﺘﻔﺎده از ﺑﺮدﻫﺎي ‪ DSP‬ددر اﻛﺜﺮ ﻣﻮارد ﻧﻴﻴﺎز ﺑﻪ اﺿﺎﻓﻪ ﻛﺮددن ﻳﻚ ‪ gel‬ﻞ‬
‫ﻫﺎي آﻣﺎده‪ ،‬ﺑﻌﻀﺎ ﻧﻴﺎز اﺳﺖ ﻛﻪ ‪ geel‬ﻓﺎﻳﻞ اﺳﺘﺎﻧﺪارد ﺑﺎ ‪gel‬‬
‫ﺶ ﻓﺮض وﺟﻮد دارد اﻣﺎ ﻫﻨﮕﺎم اﺳﺘﻔﺎده از ﺑﺮدﻫﺎ‬
‫ﻳﻚ ‪ gel‬ﻓﺎﻳﻞ ﭘﻴﺶ‬
‫ﭘﺮدازﻧﺪه ﻚ‬
‫‪ ( EV‬ﺑﺎﻳـﺪ‬
‫ﺧﺎرﺟﻲ ) ﻧﻈﻴـﺮ اﻧـﻮاع ‪ DSK‬ﻳـﺎ ‪VM‬‬
‫ﻲ‬ ‫ﺷﺪه ﺗﻮﺳﻂ ﺷﺮﻛﻛﺖ ﺳﺎزﻧﺪه ﺑﺮد ﺗﻌﻮﻳﺾ ﮔﺮدد‪ .‬در اﻛﺜﺮ ﺑﺮدﻫﺎي‬
‫ي آﻣﺎده‬ ‫ﻓﺎﻳﻞ اراﺋﻪ ﺷ‬
‫اﻧﺠﺎم ﭘﺬﻳﺮد‪.‬‬
‫اﻳﻨﻜﺎر م‬

‫_______________________________‬
‫________________________‬
‫___________‬
‫________‬
‫ﻋﻤﻠﻜﺮدﻫﺎي ‪ DSP‬ﻫﺎ را ن‬
‫ﺑﺪون ﻧﻴﺎز ﺑﻪ ﺑﺮد واﻗﻌﻲ ﺗﺴﺖ ﻧﻤﻮد‪.‬‬ ‫ي‬ ‫ﻀﻲ از‬
‫ﻛﻤﻚ آﻧﻬﺎ ﻣﻲ ﺗﻮان ﺑﻌﻀ‬ ‫‪ - 1‬در ﻧﺮم اﻓﺰﺰار ‪ CCS‬ﺗﻌﺪادي ‪ Simulator‬ر‬
‫ﻗﺮار دارد ﻛﻪ ﺑﺎ ﻚ‬
‫ﺑﺴﻴﺎر ﺑﺎﻻ ﺑﺮ روي ﺑﺮد واﻗﻌﻲ ﻧﻴﺰ ﺑﻪ‬ ‫‪ S‬ﺑﻪ درﺳﺘﻲ ﻛﺎر ﻧﻤﺎ‬
‫ﻤﺎﻳﺪ ﺑﻪ اﺣﺘﻤﺎل ر‬ ‫‪Simulator‬ﻫﻫﺎ ﺑﺴﻴﺎر ﻗﻮي ﻃﺮاﺣﺣﻲ ﺷﺪه اﻧﺪ ﺑﻪ ﻃﻮررﻳﻜﻪ اﮔﺮ ﻳﻚ ﺑﺮﻧﺎﻣﻣﻪ در ‪Simulator‬‬
‫‪ + CCS + JTAG‬ﺑﺮد (‪ ،‬در ﺑﺨﺶ ﻣﺮﺮﺑﻮط ﺑﻪ ‪ Perripheral‬ﻫﺎ ﻧﻈﻴﺮ‬
‫ﻳﻚ ﺑﺮد واﻗﻌﻲ ) ‪G‬‬
‫ﻫﻤﺎن ﺷﻜﻞ ﻋﻤﻤﻞ ﺧﻮاﻫﺪ ﻧﻤﻮد‪ .‬ددر ﻋﻤﻞ ﺗﻔﺎوت ﺑﻴﻦ ‪ Simulator‬و ﻚ‬
‫‪ Serial ، USB‬و ‪ ...‬ﻣﻲ ﺑﺎﺷﺪ ﻛﻪ در ااﻛﺜﺮ ‪Simulator‬ﻫﻫﺎ اﻳﻦ ﺑﺨﺸﻬﺎ ﭘﻴﺎده ﺳﺎزي ﻧﺸﺪهاﻧﺪ‪.‬‬
‫ﻣﺨﺘﻠﻒ ﭘﺮدازﻧﺪه ﻧﻈﻴﺮ ‪B‬‬
‫ﭘﻮرﺗﻬﺎي ﻒ‬
‫‪90‬‬ ‫‪CC‬‬
‫ﺿﻤﻴﻤﻪ اﻟﻒ‪ :‬اﻳﺠﺎد ﭘﺮوژژه در ﻧﺮماﻓﺰار ‪CS‬‬ ‫ﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬
‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸ‬

‫ﻼﻋـﺎت ﻣـﻮرد ﻧﻴـﺎز ﻧـﺮم‬


‫‪ ccxml‬ﻫﻤﺮاه ﻫﺮ ﭘﺮوژژه اﻳﺠﺎد ﻣﻲ ﺷﻮﻮد ﻛﻪ ﺣﺎوي اﻃﻼ‬
‫‪c‬‬ ‫‪ CC‬ﻧﺴﺨﻪ ‪ 4‬ﺑﻪ ﺑﺎﻻ ﻳﻚ ﻓﺎﻳﻞ ﺎﺑﺎ ﭘﺴﻮﻧﺪ‬
‫در ‪CS‬‬

‫ﺨـﺎب ‪gel‬‬ ‫ﺖ‪ .‬اﻳﻦ ﻓﺎﻳﻞ ﺣﺎووي ﻧﺎم وﻣﺪل ‪G‬‬


‫‪ JTAG‬و ﻧﺎم ﭘﺮدازﻧﺪه ﻧﻴﺰ ﻣـﻲﺑﺎﺷﺷـﺪ‪ .‬ﻣﺤـﻞ اﻧﺘﺨ‬ ‫اﻓﺰار ﺑﺮاي ارﺗﺒﺎط ﺑﻴﻦ ﺑﺮد و ﻛﺎﻣﭙﻴﻮﺗﺮ اﺳﺖ‬
‫ﻓﺎﻳﻞ ﻧﻴﺰ در اﻳﻦ ﻓﺎﻳﻞ ﻣﻲ ﺑﺎﺎﺷﺪ‪ .‬ﺑﺮاي اﻳﻦ ﻣﻣﻨﻈﻮر در ‪ Project Explorer‬روي ‪ targetConfigs‬دوﺑﺎر ﻛﻠﻴﻴﻚ ﻛﻨﻴﺪ ﺗﺎ ﮔﺴﺘﺘﺮش ﻳﺎﺑﺪ‪.‬‬
‫‪ TMS320CC5509A.ccxm‬دو ﺑﺎر ﻛﻠﻴﻚ ﻛﻨﻴﺪ ﺗﺎ ﺑﺎز ﺷﻮد‪.‬‬
‫روي ﻓﺎﻳﻞ‪ml‬‬

‫ﺷﻜﻞ ‪ :4‬ﺗﻨﻈﻴﻤﺎت ‪AG‬‬


‫‪JTA‬‬
‫ﭘﻨﺠﺮه زﻳﺮ ﺑﺑﺎز ﻣﻲﺷﻮد‪:‬‬

‫ﺷﻜﻞ ‪ :5‬ﺗﻨﻈﻴﻤﺎت ﭘﺮددازﻧﺪه‬

‫ﺠـﺎد ﭘـﺮوژه ﺟﺪﺪﻳـﺪ وارد‬


‫‪ ) JTA‬ﻣﺜﻼ ‪ ( XDS1000v2‬و ﻧﺎمم ﭘﺮدازﻧﺪه ﻛﻪ ﻗﺒﺒﻼ در ﻫﻨﮕﺎم اﻳﺠ‬
‫ﺮه ﺗﻨﻈﻴﻤﺎت ﻣﺮﺑﺑﻮط ﺑﻪ ﻧﻮع‪AG‬‬
‫در اﻳﻦ ﭘﻨﺠﺮ‬
‫‪ C55xx‬ﻛﻠﻴﻚ ﻛﺮده و درﻧﻬﺎﻳـﺖ‬
‫‪C‬‬ ‫ﺪ‪ .‬روي‬
‫ﺠﺮه ﻛﻠﻴﻚ ﻛﻨﻴﺪ‬
‫روي زﺑﺎﻧﻪ ‪ Advanced‬در ﭘﺎﻳﻴﻦ ﭘﻨﺠ‬
‫ﻧﻤﻮدهاﻳﺪ ﻗﺎﺑﺑﻞ ﻣﺸﺎﻫﺪه و ﺗﻐﻐﻴﻴﺮ اﺳﺖ‪ .‬ي‬
‫…‪ Browse‬را ﺑﺰﻧﻴﺪ‪.‬‬
‫‪B‬‬

‫ﺷﻜﻞ ‪ :6‬اﻧﻧﺘﺨﺎب ‪ gel‬ﻓﺎﻳﻞ‬


‫ﻞ ﻣﻨﺎﺳﺐ‬
‫‪91‬‬ ‫‪DSP‬‬
‫دﺳﺘﻮﻮرﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪P‬‬ ‫ﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬
‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸ‬

‫از ﭘﻮﺷﻪ ‪ c:\DSSPLab\gel Filles‬ﻓﺎﻳﻞ ‪ DSPPro5509DSK.gel‬را اﻧﺘﺨﺎب ﻛﻨﻴﺪ و روي ‪ opeen‬ﻛﻠﻴﻚ ﻛﻨﻴﺪ ‪.‬‬

‫ﺷﻜﻞ ‪ :7‬اﻧﺘﺨﺎب ژل ﻓﺎﻳ ﻞ ﻣﻨﺎﺳﺐ‬

‫‪ ،ccxm‬روي ‪ saave‬ﻛﻠﻴﻚ ﻛﻨﻴﺪ‪.‬‬


‫اﻛﻨﻮن در ﻓﺎﻳﻞ ﺑﺎ ﭘﺴﻮﻧﺪ ‪ml‬‬

‫ﻈﻴﻤﺎت ‪ gel‬ﻓﺎﻳ ﻞ ﻣﻨﺎﺳﺐ‬


‫ﺷﻜﻞ ‪ :8‬ﺗﻨﻈ‬

‫‪:CC‬‬
‫ﻧﻮﺷﺘﻦ اوﻟﻴﻦ ﺑﺮﻧﺎﻣﻣﻪ ‪ C‬در ‪CS‬‬
‫ﻦ‬ ‫‪(3‬‬
‫اﻛﻨﻮن در ‪ Prroject Exploreer‬روي ﻓﺎﻳﻞ ‪ main.c‬دو ﺑﺎر ﻛﻠﻠﻴﻚ ﻛﻨﻴﺪ ﺗﺎ ﺑﺎزز ﺷﻮد‪.‬‬

‫ﻓﺎﻳﻞ ‪ main.c‬ﺑﺮاي ﻧﻮﺷﺘﻦ اوﻟﻴﻦ ﺑﺮﺮﻧﺎﻣﻪ ‪C‬‬


‫ﺷﻜﻞ ‪ : 9‬ﺑﺎز ﻛﺮدن ﻞ‬
‫‪92‬‬ ‫‪CC‬‬
‫ﺿﻤﻴﻤﻪ اﻟﻒ‪ :‬اﻳﺠﺎد ﭘﺮوژژه در ﻧﺮماﻓﺰار ‪CS‬‬ ‫ﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬
‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸ‬

‫ﻓﺎﻳﻞ ‪ maain.c‬را ﺑﻪ ﺻﻮرت‬


‫ت زﻳﺮ ﺗﻐﻴﺮ دﻫﻴﻴﺪ‪:‬‬

‫ﺷﻜﻞ ‪ :10‬ﺑﺮﻧﺎﻣﻣﻪ ﺟﺪﻳﺪ ﺑﺮاي ﭼﭼﺎپ ﻳﻚ ﻣﺘﻦ‬

‫‪COM‬‬ ‫ﻞ ‪MMAND‬‬ ‫‪ (5‬اﺿﺎﻓﻪ ﻛﺮدن ﻓﺎﻳﻞ‬


‫‪ c:\DS‬ﻗﺮار داررد را داﺧﻞ ﭘﻮﻮﺷﻪي ﭘﺮوژه ﻛﻛﭙﻲ ﻛﻨﻴﺪ‪.‬‬
‫‪ DSP_PR‬را ﻛﻪ در ﻣﺴﻴﺮ ‪SPlab\AZ1‬‬
‫ﻓﺎﻳﻞ ‪RO_5509A.ccmd‬‬
‫ﻞ زﻳﺮ اﺳﺖ‪:‬‬
‫ﻣﺤﺘﻮﻳﺎت اﻳﻳﻦ ﻓﺎﻳﻞ ﺑﻪ ﺷﻜﻞ‬

‫‪MEM‬‬
‫‪MORY‬‬
‫{‬
‫‪PAG‬‬
‫‪GE‬‬ ‫‪0‬‬
‫‪0:‬‬

‫‪DRAM1‬‬
‫‪1‬‬ ‫‪: or‬‬ ‫=‪00100h , length‬‬
‫‪rigin =0‬‬ ‫‪=10000h‬‬
‫}‬
‫‪SEC‬‬
‫‪CTIONS‬‬
‫{‬
‫‪.text‬‬
‫}{ ‪t:‬‬ ‫>‬ ‫‪DRAM1‬‬ ‫‪PAG‬‬
‫‪GE‬‬ ‫‪0‬‬
‫}‬
‫در درون ‪ CCS‬ددر ﻳﻚ ﻓﺎﻳﻞ ﺑﺎ ﭘﭘﺴﻮﻧﺪ ‪ *.cmd‬ﺗﺎﻳﭗ ﻛﻨﻴﺪ‪ .‬ﺖ‬
‫دﻗﺖ ﺷﻮد ﻛﻪ ﺗﻤﺎم ﻓﺎﺻﻠﻪﻫﺎ و‬ ‫ﺟﺎي ﻛﭙﻲ ﻣﻲ ﺗﻮاﻧﻴﺪﺪ اﻳﻦ ﻓﺎﻳﻞ را ر‬
‫ﺑﻪ ي‬
‫ﺣﺮوف ﻛﻮﭼﻚ و ﺑﺰررگ رﻋﺎﻳﺖ ﺷﻮﻮﻧﺪ‪.‬‬
‫ف‬

‫‪ Build‬و ‪:Run‬‬
‫‪B‬‬ ‫‪(6‬‬
‫ﺧﻄـﺎﻳﻲ در‬
‫را اﻧﺘﺨﺎب ﻛﻛﻨﻴﺪ‪ .‬ﻣﻄﻤﺌﻦ ﺷﻮﻮﻳﺪ ﻛﻪ ﻫﻴﭻ ﺧﻄﻄﺎﻳﻲ ﺗﻮﻟﻴﺪ ﻧﺸﺪﺪه ﺑﺎﺷﺪ‪ .‬اﮔـﺮ ﺧ‬ ‫ﺑﺮاي ‪1Buildd‬ﺷﺪن ﭘﺮووژه آﻳﻜﻮن‬
‫ﺳﻤﺖ راﺳﺖ ﻧﺮم اﻓﻓﺰار ﻧﺸﺎن داده ﻣﻲﺷﻮﻧﺪ‪.‬‬
‫ﻨﺠﺮه ﭘﺎﻳﻴﻦ‪ ،‬ﺖ‬
‫ﺧﻄﺎﻫﺎ در ﻧﺮم اﻓﻓﺰار ‪ CCS‬در ﭘﻨﺠ‬
‫وﺟﻮد داﺷﺖ آن را ﺑﺑﺮ ﻃﺮف ﻛﻨﻴﺪ‪ .‬ﺧ‬
‫د‬ ‫ﺑﺮﻧﺎﻣﻪ‬

‫_______________________________‬
‫________________________‬
‫___________‬
‫________‬
‫‪ Build - 1‬ﺑﻪ ﻣﻌﻨﻲ ﻛﺎﻣﭙﺎﻳﻞ و ﺳﭙ‬
‫ﺳﭙﺲ ﻟﻴﻨﻚ ﺑﺮﻧﺎﻣﻪ ‪ C‬ﻣﻲ ﺑﺎﺷﺪ‪.‬‬
‫‪93‬‬ ‫‪DSP‬‬
‫دﺳﺘﻮﻮرﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪P‬‬ ‫ﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬
‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸ‬

‫ﺷﻜﻞ ‪ :11‬ﭘﻨﺠﺮه ﻧﻤﺎﻳﺶ ﺧﻄﺎ‬

‫ﻳﻚ راه آﺳﺳﺎن ﺑـﺮاي‬ ‫ﺷﻮﻳﺪ‪ .‬آﻳﻜﻮن‬


‫ﻣﺤﻴﻂ ‪ debug‬ﺷ‬
‫وارد ﻣﺤ‬ ‫ﺗﻮاﻧﻴﺪ ﺑﺎ زدن آﻳﻜﻮن‬
‫اﮔﺮ ﺑﺮﺮﻧﺎﻣﻪ ﺧﻄﺎﺋﻲ ﻧﺪااﺷﺖ ﻣﻲ ﺪ‬
‫ﺨﻪ ‪ 5‬ﻓﻀﺎي ﻣﺮﺮﺑﻮط ﺑـﻪ ﺗﺎﻳـﭗ ﺑﺮﻧﺎﻣـﻪ ) ‪ ( EEdit‬و رﻓـﻊ‬
‫اﺟﺮاي ﺑﺮﻧﺎﻣﻪ ﻣﻲ ﺑﺎﺷﺪﺪ‪ .‬در ‪ CCS‬ﻧﺴﺨ‬
‫اﻧﺠﺎم ﻛﻠﻴﻪ ﻣﻣﺮاﺣﻞ ﻛﺎﻣﭙﺎﻳﻞ‪ ،‬ﻟﻴﻨﻚ و ي‬
‫ﺷﻪ ﺳﻤﺖ راﺳﺖ دو ﻛﻠﻴﺪ ﺑﻪ ﺷﻜﻜﻞ زﻳﺮ وﺟﻮد ددارد ﻛﻪ ﺑـﺎ‬
‫اﺷﻜﺎل ﺑﺮﻧﺎﻣﻣﻪ ) ‪ ( debug‬ازز ﻫﻢ ﺟﺪا ﺷﺪه اﺳﺖ‪ .‬در ﺑﺎﻻي ﻧﺮم اﻓﺰار ﮔﻮﺷﻪ‬
‫ﻂ ﺑـﺎ ﻫـﻢ‬
‫ﺖ‪ .‬دﻗﺖ ﺷﻮد ﻛﻪﻪ ﻣﻨﻮﻫﺎي ﻧﺮم اﻓﻓﺰار در ﻫﺮ ﻳﻚ از اﻳﻦ دو ﻣﺤﻴﻂ‬
‫ي ‪ Edit‬ﺑﻪ ﻓﻀﺎي ‪ Debug‬رﻓﺖ‬
‫ﻛﻤﻚ اﻧﻬﺎ ﻣﻣﻲ ﺗﻮان از ﻓﻀﺎي‬
‫ﻣﺘﻔﺎوت ﺑﻮدده و ﺣﺘﻲ ﻇﺎﻫﺮ ﻧﺮم اﻓﺰار ﻧﻴﺰ ﻋﻮﻮض ﻣﻲ ﺷﻮد‪.‬‬

‫ﻧﺮم اﻓﺰار از ﻣﺤﻴﻂ ‪ debug‬ﺑﻪ ‪E‬‬


‫‪ Edit‬و ﺑﺮﻋﻜﺲ‬ ‫ﺷﻜﻞ ‪ :12‬ﺗﻐﻴﻴﺮ وﺿﻌﻴﺖ م‬

‫ـﺮ ﻳﺎﻓﺘـﻪ و‬
‫از ﻓﻀﺎي ‪ Edit‬ﺑﻪ ‪ Debug‬ﺗﻐﻴﻴـﺮ‬
‫ﺤﻴﻂ ﻧﺮم اﻓﺰار ز‬
‫ﻜﻪ ﺑﺎ زدن آﻳﻜﻮنن ﺳﻮﺳﻚ ﻫﻤﻪ ﭼﻴﺰ ﺑﺎ ﻣﻮﻓﻘﻴﺖ اﻧﺠﺎم ﭘﺬﻳﺮد ﻣﺤ‬
‫در ﺻﻮرﺗﻴﻜ‬
‫ﻣﻲﺷﻮد و ﻧﺘﻴﺠﻪ ددر ﭘﻨﺠﺮه‪-‬‬
‫ﺑﺮﻧﺎﻣﻪ اﺟﺮا ﻲ‬ ‫ﺷﻜﻞ ﺑﻌﺪ ﺑﻪ ﺻﻮﻮرت ﻓﻌﺎل در ﺑﺎﺎﻻي ﻧﺮم اﻓﺰار ﻇﻇﺎﻫﺮ ﻣﻲﮔﺮدﻧﺪ‪ .‬ﺑﺎ اﻧﺘﺨﺎب‬
‫آﻳﻜﻮﻧﻬﺎي ﺷ‬
‫ﺻﻔﺤﻪ اﺳﺖ‪ ،‬ﻧﻤﻤﺎﻳﺶ داده ﻣﻲﺷﻮﻮد‪.‬‬
‫‪ Console‬ﻛﻪ در ﭘﺎﻳﻴﻦ ﺻ‬
‫‪C‬‬ ‫ي‬

‫ﺷﻜﻞ ‪ :13‬اﺟﺮاي ﺑﺮﻧﻧﺎﻣﻪ‬


‫ﻞ‬
‫ﺿﻤﻴﻤﻪ ب ‪:‬‬
‫ﻧﺼﺐ ﻛﺘﺎﺑﺨﺎﻧﻪي ﭘﺮدازش ﺳﻴﮕﻨﺎل و‬
‫ﭘﺮدازش ﺗﺼﻮﻳﺮ‬

‫دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪DSP‬‬

‫ﺍﺭﺗﺒﺎﻃﺎﺕ ﭘﻴﺸﺮﻭ ﺧﺎﻭﺭﻣﻴﺎﻧﻪ‬


‫‪95‬‬ ‫دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫‪ (1‬ﻣﻘﺪﻣﻪ‬
‫در اﻳﻦ ﻗﺴﻤﺖ ﻃﺮﻳﻘﻪ ﺑﺎر ﮔﺬاري و ﻧﺼﺐ ﻛﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺳﻴﮕﻨﺎل و ﭘـﺮدازش ﺗﺼـﻮﻳﺮ آﻣـﻮزش داده ﺷـﺪه اﺳـﺖ‪ .‬اﻳـﻦ‬
‫ﻛﺘﺎﺑﺨﺎﻧﻪﻫﺎ ﻛﺎرﺑﺮدﻫﺎي زﻳﺎدي در ﻛﺎرﺑﺮدﻫﺎي ﭘﺮدازش ﺳﻴﮕﻨﺎل و ﭘﺮدازش ﺗﺼﻮﻳﺮ دارﻧﺪ‪.‬‬

‫‪ (2‬ﺑﺎرﮔﺬاري ﻛﺘﺎﺑﺨﺎﻧﻪﻫﻠﻲ ﭘﺮدازش ﺳﻴﮕﻨﺎل و ﺗﺼﻮﻳﺮ‬

‫اﺑﺘﺪا ﺑﻪ ﺳﺎﻳﺖ ‪ ti.com‬ﺑﺮوﻳﺪ‪ .‬در ﻗﺴﻤﺖ ﺟﺴﺖ و ﺟﻮ ﻋﺒﺎرت ‪ TMS320VC5509A‬را ﺗﺎﻳﭗ ﻛﻨﻴﺪ و ‪ Enter‬را ﻓﺸﺎر دﻫﻴﺪ‪.‬‬

‫ﺷﻜﻞ ‪ :1‬ﺳﺎﻳﺖ ﺗﮕﺰاس اﻳﻨﺴﺘﺮوﻣﻨﺖ‬

‫ﺻﻔﺤﻪ زﻳﺮ ﺑﺎز ﻣﻲﺷﻮد‪ .‬روي ‪ TMS320VC5509A‬ﻛﻠﻴﻚ ﻛﻨﻴﺪ‪.‬‬


‫‪96‬‬ ‫ﺿﻤﻴﻤﻪ ب‪ :‬ﻧﺼﺐ ﻛﺘﺎﺑﺨﺎﻧﻪي ﭘﺮدازش ﺳﻴﮕﻨﺎل و ﭘﺮدازش ﺗﺼﻮﻳﺮ‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫ﺷﻜﻞ ‪ :2‬ﺳﺎﻳﺖ ﺗﮕﺰاس اﻳﻨﺴﺘﺮوﻣﻨﺖ‬

‫وارد ﺻﻔﺤﻪي ﭘﺮدازﻧﺪهي ‪ 5509A‬ﻣﻲﺷﻮﻳﺪ‪ .‬ﺑﻪ ﭘﺎﻳﻴﻦ ﺻﻔﺤﻪ ﺑﺮوﻳﺪ و ‪ Software‬را ﭘﻴﺪا ﻛﻨﻴﺪ‪:‬‬

‫ﺷﻜﻞ ‪ :3‬ﺻﻔﺤﻪ ﭘﺮدازﻧﺪه ‪TMSvc5509A‬‬

‫ﺑﺮاي ﻧﺼﺐ ﻛﺘﺎﺑﺨﺎﻧﻪي ﭘﺮدازش ﺳﻴﮕﻨﺎل در ﺷﻜﻞ ﻗﺒﻞ روي ‪ TMS320C55x DSP Library‬ﻛﻠﻴﻚ ﻛﻨﻴﺪ‪ .‬در ﺻﻔﺤﻪي ﺑـﺎز‬
‫ﺷﺪه روي ‪ Download‬ﻛﻠﻴﻚ ﻛﻨﻴﺪ‪ .‬ﻓﺎﻳﻞ ‪ sprc100.zip‬را در ﻣﺤﻞ ﻣﻨﺎﺳﺐ ذﺧﻴﺮه ﻛﻨﻴﺪ‪.‬‬

‫ﺷﻜﻞ ‪ :4‬داﻧﻠﻮد ﻛﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺳﻴﮕﻨﺎل‬


‫‪97‬‬ ‫دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫ﺑﺮاي داﻧﻠﻮد ﻓﺎﻳﻞ آﻣﻮزﺷﻲ ﻛﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺳﻴﮕﻨﺎل ﺑﻪ ﭘـﺎﻳﻴﻦ ﺻـﻔﺤﻪ ﺑﺮوﻳـﺪ و روي ﻛﻴﻨـﻚ ‪TMS320C55x DSP‬‬
‫)‪ Library Programmer's Reference (Rev. J‬ﻛﻠﻴﻚ ﻛﻨﻴﺪ‪.‬‬

‫ﺷﻜﻞ ‪ :5‬داﻧﻠﻮد ﻓﺎﻳﻞ آﻣﻮزﺷﻲ ﻣﺮﺑﻮط ﺑﻪ ﻛﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺳﻴﮕﻨﺎل‬

‫ﺑﺮاي ﻧﺼﺐ ﻛﺘﺎﺑﺨﺎﻧﻪ‪ ،‬ﻓﺎﻳﻞ ﻓﺸﺮده را از ﺣﺎﻟﺖ ﻓﺸﺮده ﺧﺎرج ﻛﻨﻴﺪ‪.‬‬

‫ﻓﺎﻳﻞ ‪ dsplib_2.40.00‬را در ﻣﺤﻞ ﻧﺼﺐ ﻧﺮم اﻓﺰار ‪ CCS‬ﻛﻪ ﺑﻪ ﻃﻮر ﭘﻴﺶﻓﺮض ‪ C:\ti‬ﻣﻲﺑﺎﺷﺪ‪ ،‬ﻛﭙﻲ ﻛﻨﻴﺪ‪.‬‬
‫ﺑﺮاي داﻧﻠﻮد ﻛﺘﺎﺑﺨﺎﻧﻪي ﭘﺮدازش ﺗﺼﻮﻳﺮ در ﺷـﻜﻞ )*( روي ﻟﻴﻨـﻚ ‪ TMS320C55x Image Library‬ﻛﻠﻴـﻚ ﻛﻨﻴـﺪ‪.‬‬
‫ﺑﻘﻴﻪي ﻣﺮاﺣﻞ ﻣﺎﻧﻨﺪ ﻗﺒﻞ ﻣﻲﺑﺎﺷﺪ‪ .‬ﻓﺎﻳﻞ آﻣﻮزﺷﻲ ﻣﺮﺑـﻮط ﺑـﻪ ﻛﺘﺎﺑﺨﺎﻧـﻪي ﭘـﺮدازش ﺗﺼـﻮﻳﺮ‪ ،‬را در ﭘـﺎﻳﻴﻦ ﻫﻤـﻴﻦ ﺻـﻔﺤﻪ ﺑـﻪ ﻧـﺎم‬

‫‪ spru037c.pdf‬داﻧﻠﻮد ﻛﻨﻴﺪ‪.‬‬
‫ﺑﺮاي ﻧﺼﺐ ﻛﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺗﺼﻮﻳﺮ ﻓﺎﻳﻞ ‪ sprc101.zip‬را ﻛﻪ داﻧﻠﻮد ﻛﺮدهاﻳﺪ از ﺣﺎﻟﺖ ﻓﺸﺮده ﺧﺎرج ﻛﻨﻴـﺪ‪ .‬روي آﻳﻜـﻮن‬

‫دوﺑﺎر ﻛﻠﻴﻚ ﻛﻨﻴﺪ‪ .‬در ﺻﻔﺤﻪي ﺧﻮشآﻣﺪﮔﻮﻳﻲ روي ‪ Next‬ﻛﻠﻴﻚ ﻛﻨﻴﺪ‪.‬‬


‫‪98‬‬ ‫ﺿﻤﻴﻤﻪ ب‪ :‬ﻧﺼﺐ ﻛﺘﺎﺑﺨﺎﻧﻪي ﭘﺮدازش ﺳﻴﮕﻨﺎل و ﭘﺮدازش ﺗﺼﻮﻳﺮ‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫ﺷﻜﻞ ‪ :6‬ﻧﺼﺐ ﻛﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺗﺼﻮﻳﺮ‬

‫در ﺻﻔﺤﻪ ‪ License Agreement‬روي … ‪ I accept‬و ﺳﭙﺲ ‪ Next‬را ﻓﺸﺎر دﻫﻴﺪ‪.‬‬

‫ﺷﻜﻞ ‪ :7‬ﻧﺼﺐ ﻛﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺗﺼﻮﻳﺮ‬

‫در ﺻﻔﺤﻪي ‪ Location to Save Files‬و در ﻗﺴﻤﺖ ‪ Save files in folder‬ﻣﺤﻞ ﻧﺼﺐ ﻧـﺮم اﻓـﺰار ‪ CCS‬را ﻛـﻪ ﺑـﻪ ﻃـﻮر‬
‫ﭘﻴﺶﻓﺮض ‪ C:\ti‬اﺳﺖ را وارد ﻛﻨﻴﺪ‪.‬‬
‫‪99‬‬ ‫دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫ﺷﻜﻞ ‪ :8‬ﻧﺼﺐ ﻛﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺗﺼﻮﻳﺮ‬

‫ﺷﻜﻞ ‪ :9‬ﻧﺼﺐ ﻛﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺗﺼﻮﻳﺮ‬

‫ﺑﻌﺪ از اﻳﻦ ﻛﻪ ﻧﺼﺐ ﻛﺘﺎﺑﺨﺎﻧﻪ ﺑﻪ ﭘﺎﻳﺎن رﺳﻴﺪ روي ‪ Finish‬ﻛﻠﻴﻚ ﻛﻨﻴﺪ‪.‬‬


‫‪100‬‬ ‫ﺿﻤﻴﻤﻪ ب‪ :‬ﻧﺼﺐ ﻛﺘﺎﺑﺨﺎﻧﻪي ﭘﺮدازش ﺳﻴﮕﻨﺎل و ﭘﺮدازش ﺗﺼﻮﻳﺮ‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫ﺷﻜﻞ ‪ :10‬ﻧﺼﺐ ﻛﺘﺎﺑﺨﺎﻧﻪ ﭘﺮدازش ﺗﺼﻮﻳﺮ‬


‫دﺳـــــــــــــــــــــــــــــــــﺘﻮر ﻛـــــــــــــــــــــــــــــــــﺎر آزﻣﺎﻳﺸـــــــــــــــــــــــــــــــــﮕﺎه ‪DSP‬‬
‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬
‫‪101‬‬
‫ﺿﻤﻴﻤﻪ ج‪:‬‬
‫ﻃﺮاﺣﻲ ﻓﻴﻠﺘﺮ در ﻣﺘﻠﺐ‬
‫ﺑﺮاي اﺳﺘﻔﺎده در ‪DSP‬‬

‫دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪DSP‬‬

‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬


‫‪103‬‬ ‫دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪ :DSP‬راﻫﻨﻤﺎي اﺳﺘﺎد‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫‪ (1‬ﻣﻘﺪﻣﻪ‬
‫در اﻳﻦ ﻗﺴﻤﺖ ﻧﺤﻮه ﻃﺮاﺣﻲ ﻳﻚ ﻓﻴﻠﺘﺮ دﻳﺠﻴﺘﺎل ﺑﺎ اﺳﺘﻔﺎده از ﻧﺮماﻓﺰار ﻣﺘﻠﺐ و اﺳﺘﻔﺎده از آن در ﭘﺮدازﻧﺪه ‪ DSP‬آﻣﻮزش‬
‫داده ﺷﺪه اﺳﺖ‪.‬‬
‫ﺑﺮﻧﺎﻣﻪي ﻣﺘﻠﺐ را ﺑﺎز ﻛﻨﻴﺪ‪ .‬در ﭘﻨﺠﺮهي دﺳﺘﻮرات )‪ fdatool ،(command window‬را ﺗﺎﻳﭗ ﻛﻨﻴﺪ و ‪ Enter‬را ﻓﺸﺎر‬
‫دﻫﻴﺪ‪:‬‬

‫ﺷﻜﻞ ‪ :1‬ﭘﻨﺠﺮه ﻓﺮﻣﺎن ﻧﺮماﻓﺰار ﻣﺘﻠﺐ‬

‫ﭘﻨﺠﺮهي ﺟﺪﻳﺪي ﻛﻪ ﺑﻪ ﺷﻜﻞ زﻳﺮ ﻣﻲﺑﺎﺷﺪ‪ ،‬ﺑﺎز ﻣﻲﺷﻮد‪:‬‬

‫ﺷﻜﻞ ‪ :2‬ﭘﻨﺠﺮه ﻃﺮاﺣﻲ ﻓﻴﻠﺘﺮ در ﻧﺮماﻓﺰار ﻣﺘﻠﺐ‬


‫ﭘﺎراﻣﺘﺮﻫﺎي ﻓﻴﻠﺘﺮ را ﺑﻪ ﺻﻮرت زﻳﺮ ﺗﻐﻴﻴﺮ دﻫﻴﺪ‪:‬‬
‫‪104‬‬ ‫ﺿﻤﻴﻤﻪ ج‪ :‬ﻃﺮاﺣﻲ ﻓﻴﻠﺘﺮ در ﻣﺘﻠﺐ‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫ﺷﻜﻞ ‪ :3‬ﭘﺎﺳﺦ ﻓﺮﻛﺎﻧﺴﻲ ﻓﻴﻠﺘﺮ ﻃﺮاﺣﻲ ﺷﺪه در ﻧﺮماﻓﺰار ﻣﺘﻠﺐ‬

‫ﺳﭙﺲ روي ‪ Design Filter‬ﻛﻪ در ﭘﺎﻳﻴﻦ ﺻﻔﺤﻪ ﻗﺮار دارد ﻛﻠﻴﻚ ﻛﻨﻴﺪ‪ .‬ﺑﺮاي اﺳﺘﻔﺎده از ﺿـﺮاﻳﺐ ﻓﻴﻠﺘـﺮ در ﺑﺮﻧﺎﻣـﻪي ‪ C‬ﺑـﻪ‬
‫ﺻﻮرت زﻳﺮ ﻋﻤﻞ ﻛﻨﻴﺪ‪:‬‬
‫از ﻣﻨﻮي ‪ ،Target‬ﮔﺰﻳﻨﻪي … ‪ Generate C header‬را اﻧﺘﺨﺎب ﻛﻨﻴﺪ‬

‫ﺷﻜﻞ ‪ :4‬اﻳﺠﺎد ﺿﺮاﻳﺐ ﺑﺮاي اﺳﺘﻔﺎده در ﺑﺮﻧﺎﻣﻪ ‪DSP‬‬

‫ﭘﻨﺠﺮهي ‪ Generate C Header‬ﺑﺎز ﻣﻲﺷﻮد‪ .‬ﭘﺎراﻣﺘﺮﻫﺎي ﭘﻨﺠﺮهي ﺑﺎز ﺷﺪه را ﺑﻪ ﺻﻮرت زﻳﺮ ﺗﻐﻴﻴﺮ دﻫﻴﺪ‪:‬‬

‫ﺷﻜﻞ ‪ :5‬ذﺧﻴﺮه ﺿﺮاﻳﺐ ﻓﻴﻠﺘﺮ ﺑﻪ ﺻﻮرت ﻣﻨﺎﺳﺐ‬


‫‪105‬‬ ‫دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪ :DSP‬راﻫﻨﻤﺎي اﺳﺘﺎد‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫ﻧﺮماﻓﺰار ﻣﺘﻠﺐ ﺿﺮاﻳﺐ را ﺑﻪ ﻓﺮﻣﺖ ﻋﺪد ﺻﺤﻴﺢ ‪ 16‬ﺑﻴﺘﻲ ﻛﻪ ﺑﺮاي ﭘﻴﺎدهﺳﺎزي در ﻧﺮماﻓﺰار ﻣﺘﻠﺐ ﻣﻨﺎﺳﺐ ﻣﻲﺑﺎﺷـﺪ در ﻣـﻲ‪-‬‬
‫آورد‪ .‬اﻛﻨﻮن ﺑﺮاي ﺗﻮﻟﻴﺪ و ذﺧﻴﺮه ﺳﺎزي اﻳﻦ ﺿﺮاﻳﺐ ﮔﺰﻳﻨﻪي ‪ Generate‬را اﻧﺘﺨﺎب ﻛﻨﻴﺪ‪ .‬ﺳﭙﺲ ﻓﺎﻳﻞ را در ﭘﻮﺷﻪي ﭘﺮوژه ذﺧﻴﺮه‬
‫ﻧﻤﺎﻳﻴﺪ‪:‬‬

‫ﺷﻜﻞ ‪ :6‬ذﺧﻴﺮه ﺿﺮاﻳﺐ ﻓﻴﻠﺘﺮ‬


‫روي ﮔﺰﻳﻨﻪي ‪ Save‬ﻛﻠﻴﻚ ﻛﻨﻴﺪ‪.‬‬
‫ﺑﻪ ﭘﻮﺷﻪي ﭘﺮوژه رﻓﺘﻪ و ﻓﺎﻳﻠﻲ ﻛﻪ ﻫﻢ اﻛﻨﻮن اﻳﺠﺎد ﻛﺮدﻳﺪ )‪ (low_pass_coef.h‬را ﺑﺎ ‪ Notepad‬ﺑﺎز ﻛﻨﻴﺪ‪ .‬در اﻧﺘﻬـﺎي ﻓﺎﻳـﻞ‪،‬‬
‫ﺿﺮاﻳﺐ ﻓﻴﻠﺘﺮ ﺑﻪ ﺻﻮرت زﻳﺮ ﻣﻮﺟﻮد ﻣﻲﺑﺎﺷﻨﺪ‪:‬‬
‫{ = ]‪const int16_T LP_h[41‬‬
‫‪4, 16, 31, 21, -61,‬‬ ‫‪-243‬‬ ‫‪-490 -668, -598,‬‬
‫‪-189,421, 858, 711, -137,‬‬ ‫‪-1266‬‬ ‫‪-1815,-943, 1574,‬‬
‫‪5034,8042,9232,8042,5034,‬‬ ‫‪1574,‬‬ ‫‪-943, -1815,-1266,‬‬
‫‪-137,711, 858, 421, -189,‬‬ ‫‪-598,‬‬ ‫‪-668, -490, -243,‬‬
‫‪-61, 21, 31, 16, 4‬‬
‫;}‬
‫اﺳﻢ اﻳﻦ ﺿﺮاﻳﺐ را ﺑﻪ ﺻﻮرت زﻳﺮ ﺗﻐﻴﻴﺮ دﻫﻴﺪ‪:‬‬
‫{ = ]‪const LP_h [41‬‬
‫‪4,‬‬ ‫‪16, 31, 21, -61, -243, -490, -668, -598,‬‬
‫‪-189,421, 858, 711, -137,-1266,-1815,-943, 1574,‬‬
‫‪5034,8042,9232,8042,5034,1574, -943, -1815,-1266,‬‬
‫‪-137,711, 858, 421, -189,-598, -668, -490, -243,‬‬
‫‪-61, 21, 31, 16, 4‬‬
‫;}‬
‫اﻛﻨﻮن ﻣﻲﺗﻮاﻧﻴﺪ اﻳﻦ ﻗﺴﻤﺖ را در ﻓﺎﻳﻞ ‪ main.c‬ﻛﭙﻲ ﻛﻨﻴﺪ و در ﭘﺮوژهي ﺧﻮد از آن اﺳﺘﻔﺎده ﻛﻨﻴﺪ‪.‬‬
‫ﺿﻤﻴﻤﻪ د‪:‬‬
‫ﻣﻌﺮﻓﻲ رﺟﻴﺴﺘﺮﻫﺎي ﻛﻴﻒ‬
‫آزﻣﺎﻳﺸﮕﺎه ‪DSP‬‬

‫دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪DSP‬‬

‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬


‫‪107‬‬ ‫دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫‪ (1‬ﻣﻘﺪﻣﻪ‬
‫در اﻳﻦ ﻗﺴﻤﺖ رﺟﻴﺴﺘﺮﻫﺎي ‪ ADC‬و ‪ DAC‬ﺗﻮﺿﻴﺢ داده ﺷﺪه اﺳﺖ‪ .‬ﺑﺎ اﺳﺘﻔﺎده از اﻳﻦ رﺟﻴﺴﺘﺮﻫﺎ ﻣﻲﺗﻮاﻧﻴﻢ وﺿﻌﻴﺖ ﻣﺒﺪل‪-‬‬
‫ﻫﺎي ﺳﻴﮕﻨﺎل را ﻛﻨﺘﺮل ﻧﻤﺎﻳﻴﻢ )ﺧﺎﻟﻲ ﻳﺎ ﭘﺮ ﺑﻮدن(‪ ،‬ﻓﺮﻛﺎﻧﺲ ﻧﻤﻮﻧﻪ ﺑﺮداري را ﺗﻐﻴﻴﺮ دﻫﻴﻢ و ﺗﻐﻴﻴﺮات ﻣﺠﺎز را روي اﻳﻦ ﻣﺒﺪلﻫﺎ‬
‫اﻋﻤﺎل ﻛﻨﻴﻢ‪ .‬ﺗﻌﺪادي از اﻳﻦ رﺟﻴﺴﺘﺮﻫﺎ از ﻃﺮﻳﻖ ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﺑﺮد ﻗﺎﺑﻞ ﺗﻨﻈﻴﻢ ﻣﻲﺑﺎﺷﻨﺪ و ﺗﻌﺪادي ﻧﻴﺰ در ﺑﺮﻧﺎﻣﻪ ﻗﺎﺑﻞ ﻛﻨﺘﺮل‬
‫ﻣﻲﺑﺎﺷﻨﺪ‪.‬‬

‫‪ (2‬رﺟﻴﺴﺘﺮﻫﺎي ﻣﺮﺑﻮط ﺑﻪ ارﺗﺒﺎط ﺑﺎ ‪ADC‬‬


‫در ﺷﻜﻞ ﺑﻌﺪ ﺑﻠﻮك دﻳﺎﮔﺮام ﻛﻠﻲ اﺗﺼﺎل ‪ ADC‬ﺑﻪ ﺑﺮد ‪ DSPro‬آﻣﺪه اﺳﺖ‪ .‬ﺑﺮاي ﺧﻮاﻧﺪن از ‪ ADC‬ﻳﺎ وﺿﻌﻴﺖ ﺑﺨﺸﻬﺎي‬
‫ﻣﺨﺘﻠﻒ )رﺟﻴﺴﺘﺮ ‪ (STATUS‬ﻛﺎﻓﻲ اﺳﺖ از ﻳﻚ ﺳﺮي آدرﺳﻬﺎي ﻣﺸﺨﺺ در ﻓﻀﺎي آدرس ‪ ،DSP‬ﺧﻮاﻧﺪه ﺷﻮد‪ .‬ﻫﻤﭽﻨﻴﻦ ﺑﺮاي‬
‫اﻋﻤﺎل ﺗﻨﻈﻴﻤﺎت ﻣﺨﺘﻠﻒ ﺑﻪ ‪ ADC‬ﺑﺎز ﻫﻢ ﺑﺎ روش آدرس دﻫﻲ‪ ،‬ﺑﺎﻳﺪ ﺗﻨﻈﻴﻤﺎت ﻣﻮرد ﻧﻈﺮ را در ﺟﻴﺴﺘﺮ ‪ CONTROL‬ﻳﺎ‬
‫‪ ALMOST FULL‬ﻳﺎ ‪ (ADC_Sampling_Frequency) N‬ﻧﻮﺷﺖ‪ .‬آدرس ﻫﺮ رﺟﻴﺴﺘﺮ در ﺷﻜﻞ ﺑﺎﻻ ﻣﺸﺨﺺ ﺷﺪه اﺳﺖ‪.‬‬
‫در اﻳﻦ ﺑﺮﻧﺎﻣﻪ ﺧﺮوﺟﻲ ‪ ، ADC‬ﻫﻢ ﻣﻲ ﺗﻮاﻧﺪ در ‪ FIFO‬ذﺧﻴﺮه ﺷﻮد و ﻫﻢ ﻣﺴﺘﻘﻴﻤﺎ ﺑﻪ ‪ DSP‬داده ﺷﻮد )از ﻃﺮﻳﻖ رﺟﻴﺴﺘﺮ‬
‫‪ .(A2D_data‬در ﺻﻮرت ﻋﺒﻮر از ‪ ، FIFO‬ﻳﻚ ‪ FIFO‬ﺑﺎ ﻗﺎﺑﻠﻴﺖ ذﺧﻴﺮه ﺳﺎزي ‪ 256‬ﺑﺎﻳﺖ در ﻣﺴﻴﺮ ﻗﺮار ﻣﻲ ﮔﻴﺮد‪ .‬اﻳﻦ ‪FIFO‬‬

‫ﻛﻤﻚ ﻣﻲ ﻛﻨﺪ ﻛﻪ ‪ DSP‬ﻣﺠﺒﻮر ﻧﺒﺎﺷﺪ ﻛﻪ ﺑﻪ ازاي ﻫﺮ ‪ SAMPLE‬ﺧﺮوﺟﻲ ‪ ، ADC‬ﻳﻜﺒﺎر از ‪ ADC‬ﺑﺨﻮاﻧﺪ‪.‬‬


‫ﻫﻤﭽﻨﻴﻦ ﺑﺮاي راﺣﺘﻲ‪ ،‬ﺣﺎﻟﺘﻬﺎي ﻣﺨﺘﻠﻒ ﺗﻮﻟﻴﺪ اﻳﻨﺘﺮاﭘﺖ در ﺑﺮﻧﺎﻣﻪ در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪه اﺳﺖ ﻛﻪ از ﻃﺮﻳﻖ رﺟﻴﺴﺘﺮ‬
‫‪ ADC_Control_reg0‬ﻗﺎﺑﻞ ﺗﻨﻈﻴﻢ اﺳﺖ‪ .‬اﻳﻦ ﺣﺎﻟﺘﻬﺎ ﻋﺒﺎرﺗﻨﺪ از ‪ ،FIFO Almost Full ،FIFO Full :‬آﻣﺪن ﻫﺮ ﻧﻤﻮﻧﻪ‪ ،‬و ﻋﺪم‬
‫ﺗﻮﻟﻴﺪ اﻳﻨﺘﺮاﭘﺖ‪ .‬ﺑﻠﻮك ‪ ADC‬از اﻳﻨﺘﺮاﭘﺖ ﺷﻤﺎره ‪ INT2‬ﭘﺮدازﻧﺪه اﺳﺘﻔﺎده ﻛﺮده اﺳﺖ‪.‬‬
‫‪108‬‬ ‫ﺿﻤﻴﻤﻪ د‪ :‬ﻣﻌﺮﻓﻲ رﺟﻴﺴﺘﺮﻫﺎي ﻛﻴﻒ آزﻣﺎﻳﺸﮕﺎه‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫ﺑﺮاي اﻧﺘﺨﺎب ﻓﺮﻛﺎﻧﺴﻬﺎي ﻣﺨﺘﻠﻒ ﻧﻤﻮﻧﻪ ﺑﺮداري‪ ،‬ﻳﻚ رﺟﻴﺴﺘﺮ ﺑﻪ ﻧﺎم ‪) ADC_Sampling_Frequency‬رﺟﻴﺴﺘﺮ ‪ N‬در‬
‫ﺷﻜﻞ ﻗﺒﻞ( ﻃﺮاﺣﻲ ﮔﺮدﻳﺪه اﺳﺖ ﻛﻪ ﺑﺎ ﻛﻤﻚ آن ﻣﻲ ﺗﻮان ﻓﺮﻛﺎﻧﺲ ﻧﻤﻮﻧﻪ ﺑﺮداري را ﺑﻪ دﻟﺨﻮاه ﻋﻮض ﻧﻤﻮد‪ .‬ﭼﻮن ﺑﺮاي ﺗﻮﻟﻴﺪ‬
‫ﻓﺮﻛﺎﻧﺲ ﻧﻤﻮﻧﻪ ﺑﺮداري از ﻳﻚ ﺗﻘﺴﻴﻢ ﻛﻨﻨﺪه اﺳﺘﻔﺎده ﺷﺪه اﺳﺖ‪ ،‬ﺗﻨﻬﺎ اﻋﺪاد ﻣﺸﺨﺼﻲ از ﻃﺮﻳﻖ اﻳﻦ ﺑﺮﻧﺎﻣﻪ ﻗﺎﺑﻞ اﺳﺘﻔﺎده اﺳﺖ‪.‬‬

‫ﺷﻜﻞ ‪ : 1‬ﺑﻠﻮك دﻳﺎﮔﺮام ﻛﻠﻲ ﻧﺤﻮه اﺗﺼﺎل ‪ ADC‬ﺑﻪ ‪DSP‬‬

‫در ﺟﺪول ﺑﻌﺪ ﻟﻴﺴﺖ رﺟﻴﺴﺘﺮﻫﺎي ﻣﺮﺑﻮط ﺑﻪ ‪ ADC‬و آدرس ﻫﺮ ﻳﻚ آﻣﺪه اﺳﺖ‪.‬‬
‫‪109‬‬ ‫دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫ﺟﺪول ‪ : 1‬رﺟﻴﺴﺘﺮ ﻫﺎي ﻣﺮﺑﻮط ﺑﻪ ارﺗﺒﺎط ﺑﺎ ‪ADC‬‬

‫آدرس)‪( Byte‬‬ ‫آدرس)‪( Word‬‬ ‫اﺳﻢ رﺟﻴﺴﺘﺮ‬ ‫ردﻳﻒ‬


‫ﺑﺮاي اﺳﺘﻔﺎده در ﻓﺎﻳﻞ‬
‫‪Command‬‬
‫‪0x800002‬‬ ‫‪0x400001‬‬ ‫‪A2D_data‬‬ ‫‪1‬‬
‫‪0x80000A‬‬ ‫‪0x400005‬‬ ‫‪ADC_Control_reg0‬‬ ‫‪2‬‬
‫‪0x80000C‬‬ ‫‪0x400006‬‬ ‫‪ADC_Sampling_Frequency‬‬ ‫‪3‬‬
‫‪0x800012‬‬ ‫‪0x400009‬‬ ‫‪A2D_FIFO_status‬‬ ‫‪4‬‬
‫‪0x800070‬‬ ‫‪0x400038‬‬ ‫‪A2D_Data_Count_For_Almost_Full‬‬ ‫‪5‬‬

‫‪ (1-2‬رﺟﻴﺴﺘﺮ ‪A2D_data‬‬
‫ﺑﺮاي ﺧﻮاﻧﺪن از ‪ ADC‬ﻛﺎﻓﻲ اﺳﺖ از اﻳﻦ رﺟﻴﺴﺘﺮ ﺧﻮاﻧﺪه ﺷﻮد‪ .‬اﻳﻦ رﺟﻴﺴﺘﺮ ﻫﻢ ﻣﻲ ﺗﻮاﻧﺪ ﺑﻪ ﺧﺮوﺟﻲ ‪ ADC‬و ﻫﻢ ﺑﻪ‬
‫ﺧﺮوﺟﻲ ‪ FIFO‬ﻣﺘﺼﻞ ﺑﺎﺷﺪ‪ .‬ﺑﺮاي اﻧﺘﺨﺎب ﻫﺮ ﻳﻚ از اﻳﻦ دو ﺣﺎﻟﺖ ﺑﺎﻳﺪ از ﺑﻴﺖ ‪ SC_FIFO1_DIRECT0‬در رﺟﻴﺴﺘﺮ‬
‫‪ ADC_Control_reg0‬اﺳﺘﻔﺎده ﮔﺮدد‪.‬‬

‫‪ADC_Control_reg0‬‬ ‫‪ (2-2‬رﺟﻴﺴﺘﺮ ﻛﻨﺘﺮﻟﻲ‬


‫اﻳﻦ رﺟﻴﺴﺘﺮ از ﺑﺨﺸﻬﺎي ﻣﺨﺘﻠﻔﻲ ﺗﺸﻜﻴﻞ ﺷﺪه اﺳﺖ ﻛﻪ ﻫﺮ ﺑﺨﺶ ﻳﻚ ﻋﻤﻠﻜﺮد ﻣﺴﺘﻘﻞ دارد‪.‬‬

‫ﺟﺪول ‪: 2‬رﺟﻴﺴﺘﺮ ﻛﻨﺘﺮﻟﻲ‪ADC_Control_reg0‬‬


‫‪Bit 10-15‬‬ ‫‪Bit 8-9‬‬ ‫‪Bit 4-7‬‬ ‫‪Bit 3‬‬ ‫‪Bit 2‬‬ ‫‪Bit 1‬‬ ‫‪Bit 0‬‬
‫‪Reserved‬‬ ‫‪selector‬‬ ‫‪Reserved‬‬ ‫‪SC_FIFO1_DIRECT0‬‬ ‫‪Sng1_USng0‬‬ ‫‪Reserved‬‬ ‫‪Reset_Fifo‬‬

‫در ﺟﺪول ﺑﻌﺪ ﻧﺤﻮه ﻋﻤﻠﻜﺮد ﻫﺮﺑﻴﺖ آﻣﺪه اﺳﺖ‪.‬‬

‫ﺟﺪول ‪ : 3‬ﺗﻮﺿﻴﺤﺎت رﺟﻴﺴﺘﺮ ‪ ) ADC_Control_reg0‬رﺟﻴﺴﺘﺮ ﻗﺎﺑﻞ ﺧﻮاﻧﺪن(‬


‫ﺗﻮﺿﻴﺤﺎت‬ ‫ﺷﻤﺎره‬ ‫اﺳﻢ‬
‫ﺑﻴﺖ‬
‫ﺑﺎ ﻳﻚ ﺷﺪن اﻳﻦ ﺑﻴﺖ‪ FIFO ،‬ﻣﺮﺑﻮط ﺑﻪ ﺑﻠﻮك ‪ ADC‬رﻳﺴﺖ ﻣﻲ‬ ‫‪0‬‬ ‫‪Reset_Fifo‬‬

‫ﮔﺮدد و ﻛﻠﻴﻪ ﻣﺤﺘﻮﻳﺎت آن ﭘﺎك ﻣﻲ ﺷﻮد‪ .‬ﻫﻤﻴﺸﻪ ﺑﻌﺪ از رﻳﺴﺖ‬


‫ﻛﺮدن ‪ ،FIFO‬ﺑﺎ ﺻﻔﺮ ﻛﺮدن اﻳﻦ ﺑﻴﺖ‪ ،‬ﻣﺠﺪد ‪ FIFO‬را از رﻳﺴﺖ‬
‫ﺧﺎرج ﻛﻨﻴﺪ ﺗﺎ ﺑﺘﻮاﻧﺪ ﻋﻤﻠﻜﺮد ﻋﺎدي ﺧﻮد را داﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬
‫اﻳﻦ ﺑﻴﺖ در ﻛﻴﻒ ﻛﺎرﺑﺮدي ﻧﺪارد و ﻓﻘﻂ در درون ﻛﺎرت‬
‫‪110‬‬ ‫ﺿﻤﻴﻤﻪ د‪ :‬ﻣﻌﺮﻓﻲ رﺟﻴﺴﺘﺮﻫﺎي ﻛﻴﻒ آزﻣﺎﻳﺸﮕﺎه‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫‪ adc‬ﻛﺎر ﻣﻲ ﻛﻨﺪ‪.‬‬
‫اﻳﻦ ﺑﻴﺖ ﻫﻴﭻ ﻋﻤﻠﻜﺮد ﻣﺸﺨﺼﻲ ﻧﺪارد‪.‬‬ ‫‪1‬‬ ‫‪Reserved‬‬

‫دﻳﺘﺎي ﺧﺮوﺟﻲ از ‪ ، ADC‬ﻫﻤﻴﺸﻪ از ﻃﺮﻳﻖ رﺟﻴﺴﺘﺮ‬ ‫‪2‬‬ ‫‪Sng1_USng0‬‬

‫‪ A2D_data‬ﻗﺎﺑﻞ دﺳﺘﺮﺳﻲ اﺳﺖ‪ .‬ﺑﺎ ﻳﻚ ﺷﺪن اﻳﻦ ﺑﻴﺖ ﻓﺮﻣﺖ‬


‫دﻳﺘﺎي ﺧﺮوﺟﻲ از ‪ ، ADC‬ﺑﻪ ﺻﻮرت ﺑﺎ ﻋﻼﻣﺖ )اﻋﺪاد ﺑﻴﻦ ‪-128‬‬
‫و ‪ ( + 128‬و ﺑﺎ ﺻﻔﺮ ﺷﺪن اﻳﻦ ﺑﻴﺖ دﻳﺘﺎي ﺧﺮوﺟﻲ ﺑﻪ ﺻﻮرت‬
‫ﺑﺪون ﻋﻼﻣﺖ ) اﻋﺪاد ﺑﻴﻦ ﺻﻔﺮ و ‪ ( +255‬ﺧﻮاﻫﺪ ﺑﻮد‪.‬‬
‫ﺑﺎ ﻫﺮ ﺑﺎر ﺧﻮاﻧﺪن از رﺟﻴﺴﺘﺮ ‪ ، A2D_data‬ﻳﻚ ﻋﺪد از‬ ‫‪3‬‬ ‫‪SC_FIFO1_DIRECT0‬‬

‫‪ FIFO‬ﺧﺎرج ﻣﻲ ﺷﻮد‪ .‬اﮔﺮ اﻳﻦ ﺑﻴﺖ ﻳﻚ ﺷﻮد دﻳﺘﺎي ﺧﺎرج ﺷﺪه‬


‫از ‪ FIFO‬از ﻃﺮﻳﻖ ‪ A2D_data‬ﻗﺎﺑﻞ دﺳﺘﺮﺳﻲ اﺳﺖ‪.‬‬
‫اﮔﺮ اﻳﻦ ﺑﻴﺖ ﺻﻔﺮ ﺑﺎﺷﺪ‪ ،‬دﻳﺘﺎ ﺑﺎس ‪ ADC‬از ﻃﺮﻳﻖ‬
‫‪ A2D_data‬ﻗﺎﺑﻞ ﺧﻮاﻧﺪن اﺳﺖ و ﺧﺮوﺟﻲ ‪ FIFO‬دور رﻳﺨﺘﻪ‬
‫ﻣﻲ ﺷﻮد‪.‬‬
‫ﻧﻜﺘﻪ‪ :‬ﺧﻮاﻧﺪن از رﺟﻴﺴﺘﺮ ‪ ،A2D_data‬ﻫﻤﻴﺸﻪ ﻣﻨﺠﺮ ﺑﻪ‬
‫ﺧﻮاﻧﺪه ﺷﺪن ﻳﻚ ﻋﺪد از ‪ FIFO‬ﺧﻮاﻫﺪ ﺷﺪ )ﺑﺪون ﺗﻮﺟﻪ ﺑﻪ‬
‫وﺿﻌﻴﺖ ﺑﻴﺖ ‪(SC_FIFO1_DIRECT0‬‬
‫اﻳﻦ ﺑﻴﺘﻬﺎ ﻫﻴﭻ ﻋﻤﻠﻜﺮد ﻣﺸﺨﺼﻲ ﻧﺪارد‪.‬‬ ‫‪4-7‬‬ ‫‪Reserved‬‬

‫اﻳﻦ دو ﺑﻴﺖ ﻧﺤﻮه اﻳﺠﺎد اﻳﻨﺘﺮاﭘﺖ ﺑﺎ آﻣﺪن ﻧﻤﻮﻧﻪ ﻳﺎ ﻧﻤﻮﻧﻪ‬ ‫‪8-9‬‬ ‫‪selector‬‬

‫ﻫﺎي ﺟﺪﻳﺪ از ‪ ADC‬ﺑﻪ ‪ FPGA‬را ﺷﺨﺺ ﻣﻲ ﻛﻨﻨﺪ‪ .‬در ﺻﻮرﺗﻴﻜﻪ‬


‫اﻳﻦ دو ﺑﻴﺖ اﺟﺎزه ﺗﻮﻟﻴﺪ اﻳﻨﺘﺮاﭘﺖ را ﺑﺪﻫﻨﺪ‪ ،‬اﻳﻨﺘﺮاﭘﺖ ﺷﻤﺎره ‪2‬‬

‫ﭘﺮدازﻧﺪه ) ‪ ( INT2‬ﺗﺤﺖ ﺗﺎﺛﻴﺮ ﻗﺮار ﻣﻲ ﮔﻴﺮد‪.‬‬


‫ﺗﻮﺿﻴﺤﺎت‬ ‫‪Bit‬‬ ‫‪Bit‬‬
‫‪9‬‬ ‫‪8‬‬
‫ﻫﻴﭻ اﻳﻨﺘﺮاﭘﺘﻲ ﺗﻮﻟﻴﺪ ﻧﻤﻲﺷﻮد‪.‬‬ ‫‪0‬‬ ‫‪0‬‬

‫ﺑﺎ آﻣﺪن ﻫﺮ ﻧﻤﻮﻧﻪ ﺟﺪﻳﺪ ﻳﻚ اﻳﻨﺘﺮاﭘﺖ ﺑﻪ ‪ DSP‬زده‬ ‫‪0‬‬ ‫‪1‬‬

‫وﻗﺘﻲ ‪ FIFO‬ﺗﻘﺮﻳﺒﺎ ﭘﺮ ﻣﻲ ﺷﻮد )‪(Almost Full‬‬ ‫‪1‬‬ ‫‪0‬‬

‫اﻳﻨﺘﺮاﭘﺖ زده ﻣﻲﺷﻮد‪ FIFO .‬ﺑﻪ ﻛﺎر رﻓﺘﻪ ‪256‬‬


‫ﺑﺎﻳﺖ ﻇﺮﻓﻴﺖ دارد‪ .‬ﻫﺮﮔﺎه ﻣﺤﺘﻮﻳﺎت درون اﻳﻦ‬
‫‪A2D_Data_Count_For_Almost_Full‬‬ ‫‪ FIFO‬ﺑﻪ ﻋﺪد رﺟﻴﺴﺘﺮ‬
‫ﺑﺮاﺑﺮ و ﻳﺎ ﺑﻴﺸﺘﺮ ﮔﺮدد‪ ،‬ﻳﻚ اﻳﻨﺘﺮاﭘﺖ ﺗﻮﻟﻴﺪ ﻣﻲ ﺷﻮد‬

‫ﻫﺮ ﮔﺎه ‪ FIFO‬ﺑﻪ ﻃﻮر ﻛﺎﻣﻞ ﭘﺮ ﺷﻮد )‪(FULL‬‬ ‫‪1‬‬ ‫‪1‬‬

‫اﻳﻨﺘﺮاﭘﺖ ﺗﻮﻟﻴﺪ ﻣﻲ ﺷﻮد‪.‬‬


‫‪111‬‬ ‫دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫اﻳﻦ ﺑﻴﺘﻬﺎ ﻫﻴﭻ ﻋﻤﻠﻜﺮد ﻣﺸﺨﺼﻲ ﻧﺪارد‪.‬‬ ‫‪10-15‬‬ ‫‪Reserved‬‬

‫ﻧﻜﺘﻪ ‪ :‬اﻳﻦ رﺟﻴﺴﺘﺮ ﻓﻘﻂ ﺧﻮاﻧﺪﻧﻲ اﺳﺖ و ﺷﻤﺎ ﻧﻤﻲ ﺗﻮاﻧﻴﺪ ﻣﻘﺎدﻳﺮ درون اﻳﻦ رﺟﻴﺴﺘﺮ را ﺑﺎ ﺑﺮﻧﺎﻣﻪ ‪ C‬ﻋﻮض ﻛﻨﻴﺪ‪.‬‬

‫‪ADC_Sampling_Frequency‬‬ ‫‪ (3-2‬رﺟﻴﺴﺘﺮ‬
‫ﻛﻼك ‪ ) ADC‬ﻛﻼك ﻧﻤﻮﻧﻪ ﺑﺮداري ( در اﻳﻦ ﺑﺮﻧﺎﻣﻪ از روي ﻛﺮﻳﺴﺘﺎل ‪ 12‬ﻣﮕﺎ ﻫﺮﺗﺰ ﻣﻮﺟﻮد در ﺑﺮد ‪ ، DSPro‬ﺳﺎﺧﺘﻪ‬
‫ﻣﻲ ﺷﻮد‪ .‬ﻛﻼك ‪ 12‬ﻣﮕﺎ ﻫﺮﺗﺰ‪ ،‬ﭘﺲ از ﻋﺒﻮر از ﻳﻚ ﺗﻘﺴﻴﻢ ﻛﻨﻨﺪه ‪ ،‬ﺑﻪ ‪ ADC‬داده ﻣﻲ ﺷﻮد‪ .‬ﻋﺪد ﻣﻮرد اﺳﺘﻔﺎده در ﺗﻘﺴﻴﻢ ﻛﻨﻨﺪه‪ ،‬از‬
‫ﻣﻲآﻳﺪ‪ .‬ﺣﺪاﻗﻞ ﻣﻘﺪار ﺑﺮاي اﻳﻦ رﺟﻴﺴﺘﺮ ﻋﺪد ‪ 2‬اﺳﺖ و در ﺻﻮرت اﻧﺘﺨﺎب ﻋﺪد‬ ‫‪ADC_Sampling_Frequency‬‬ ‫رﺟﻴﺴﺘﺮ‬
‫ﻛﻮﭼﻜﺘﺮ از ‪ ، 2‬ﻋﺪد ‪ 2‬در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬

‫ﻓﺮﻛﺎﻧﺲ ﺧﺮوﺟﻲ ‪ADC‬‬ ‫=‬ ‫‪_________12 MHz‬‬ ‫‪.‬‬


‫‪ADC_Sampling_Frequency‬‬

‫ﻧﻜﺘﻪ ‪ :‬اﻳﻦ رﺟﻴﺴﺘﺮ ﻓﻘﻂ ﺧﻮاﻧﺪﻧﻲ اﺳﺖ و ﺷﻤﺎ ﻧﻤﻲ ﺗﻮاﻧﻴﺪ ﻣﻘﺎدﻳﺮ درون اﻳﻦ رﺟﻴﺴﺘﺮ را ﺑﺎ ﺑﺮﻧﺎﻣﻪ ‪ C‬ﻋﻮض ﻛﻨﻴﺪ‪.‬‬
‫رﺟﻴﺴﺘﺮ ‪A2D_FIFO_status‬‬ ‫‪(4-2‬‬
‫اﻳﻦ رﺟﻴﺴﺘﺮ وﺿﻌﻴﺖ ﺑﺨﺸﻬﺎي ﻣﺨﺘﻞ ﻣﺎﻧﻨﺪ ‪ FIFO‬را ﻣﺸﺨﺺ ﻣﻲ ﻛﻨﺪ‪ .‬در ﺷﻜﻞ ﺑﻌﺪ اﻳﻦ رﺟﻴﺴﺘﺮ ﻧﺸﺎن داده ﺷﺪه اﺳﺖ‪.‬‬

‫ﺑﻴﺘﻬﺎي رﺟﻴﺴﺘﺮ ‪A2D_FIFO_status‬‬ ‫ﺟﺪول ‪: 4‬‬


‫‪Bit 15‬‬ ‫‪Bit 7-14‬‬ ‫‪Bit 6‬‬ ‫‪Bit 5‬‬ ‫‪Bit 1-4‬‬ ‫‪Bit 0‬‬
‫‪FIFO_Full‬‬ ‫‪FIFO_Used_Word‬‬ ‫‪FIFO_Almost_Full‬‬ ‫‪FIFO_Empt‬‬ ‫‪0‬‬ ‫‪A2D_WR‬‬
‫‪y‬‬

‫اﻳﻦ رﺟﻴﺴﺘﺮ اﻃﻼﻋﺎت ﻣﻬﻤﻲ از ﻋﻤﻠﻜﺮد ‪ FIFO‬را در اﺧﺘﻴﺎر ﻗﺮار ﻣﻲ دﻫﺪ‪ .‬ﺗﻮﺿﻴﺢ ﻣﺮﺑﻮط ﺑﻪ ﻫﺮ ﺑﺨﺶ اﻳﻦ رﺟﻴﺴﺘﺮ در‬
‫اداﻣﻪ آﻣﺪه اﺳﺖ‪.‬‬

‫‪A2D_FIFO_status‬‬ ‫ﺟﺪول ‪ : 5‬ﻣﺤﺘﻮﻳﺎت رﺟﻴﺴﺘﺮ‬


‫ﺗﻮﺿﻴﺤﺎت‬ ‫ﺷﻤﺎره‬ ‫اﺳﻢ‬
‫ﺑﻴﺖ‬
‫ﺑﺎ ﺗﻨﻈﻴﻢ ﻓﺮﻛﺎﻧﺲ ﻧﻤﻮﻧﻪ ﺑﺮداري اﻳﻦ ﺑﻴﻦ ﺑﺎ ﻓﺮﻛﺎﻧﺲ ﻧﻤﻮﻧﻪ ﺑﺮداري‬ ‫‪0‬‬ ‫‪A2D_WR‬‬

‫ﺻﻔﺮ و ﻳﻚ ﻣﻲ ﺷﻮد و ﻫﺮ ﺑﺎر ﺻﻔﺮ و ﻳﻚ ﺷﺪن اﻳﻦ ﺑﻴﺖ ﻧﺸﺎن‬


‫دﻫﻨﺪه ﺧﻮاﻧﺪه ﺷﺪن ﻳﻚ ﻧﻤﻮﻧﻪ ﺟﺪﻳﺪ از ‪ ADC‬ﻣﻲ ﺑﺎﺷﺪ‪.‬‬
‫ﺑﺎ ﺧﺎﻟﻲ ﺷﺪن ‪) FIFO‬ﺧﻮاﻧﺪن ﻛﺎﻣﻞ اﻃﻼﻋﺎت درون ‪ (FIFO‬اﻳﻦ‬ ‫‪5‬‬ ‫‪FIFO_Empty‬‬

‫ﺑﻴﺖ ﻳﻚ ﻣﻲ ﺷﻮد‪.‬‬
‫)ﺗﻌﺪاد ﻋﻨﺎﺻﺮ ذﺧﻴﺮه ﺷﺪه در‬ ‫‪FIFO_Used_Word‬‬ ‫ﻫﺮﮔﺎه ﻣﻘﺪار‬ ‫‪6‬‬ ‫‪FIFO_Almost_Full‬‬

‫‪A2D_Data_Count_For_Almost_Full‬‬ ‫‪ (FIFO‬از ﻋﺪد درون رﺟﻴﺴﺘﺮ‬


‫‪112‬‬ ‫ﺿﻤﻴﻤﻪ د‪ :‬ﻣﻌﺮﻓﻲ رﺟﻴﺴﺘﺮﻫﺎي ﻛﻴﻒ آزﻣﺎﻳﺸﮕﺎه‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫ﺑﻴﺸﺘﺮ ﮔﺮدد‪ ،‬آﻧﮕﺎه اﻳﻦ ﺑﻴﺖ ﻳﻚ ﻣﻲ ﮔﺮدد و ﮔﺮﻧﻪ ﻣﻘﺪار آن ﺻﻔﺮ‬


‫اﺳﺖ‪.‬‬
‫ﺗﻌﺪاد ﺑﺎﻳﺘﻬﺎﻳﻲ ﻛﻪ ﺗﺎ ﻛﻨﻮن از ‪ FIFO‬ﺧﻮاﻧﺪه ﻧﺸﺪه اﻧﺪ ﺗﻮﺳﻂ اﻳﻦ‬ ‫‪7-14‬‬ ‫‪FIFO_Used_Word‬‬

‫‪ 8‬ﺑﻴﺖ ﻣﺸﺨﺺ ﻣﻲ ﺷﻮد‪.‬‬


‫دﻗﺖ ﻛﻨﻴﺪ ﻛﻪ ﻫﺮﮔﺎه ‪ FIFO‬ﺑﻪ ﻃﻮر ﻛﺎﻣﻞ ‪ FULL‬ﻣﻲ ﺷﻮد ) ﻳﻌﻨﻲ‬
‫‪ 256‬ﺑﺎﻳﺖ در آن ﻗﺮار ﻣﻲ ﮔﻴﺮد ( اﻳﻦ ‪ 8‬ﺑﻴﺖ ﻣﻘﺪار ﺻﻔﺮ را ﻧﺸﺎن‬
‫ﻣﻲ دﻫﺪ و در ﻋﻮض ﺑﻴﺖ‪ FIFO_Full‬ﻳﻚ ﻣﻲ ﺷﻮد‪ .‬ﺑﻨﺎﺑﺮ اﻳﻦ‬
‫ﺑﺮاي ﻣﺸﺎﻫﺪه ﺻﺤﻴﺢ ﺗﻌﺪاد ﺑﻴﺘﻬﺎي درون ‪ FIFO‬ﻫﻤﻴﺸﻪ ﺑﻴﺖ ‪ 7‬ﺗﺎ‬
‫‪ ) 15‬ﺷﺎﻣﻞ ﺑﻴﺖ ‪ ( FIFO_Full‬را ﺑﺎ ﻫﻢ ﻣﺸﺎﻫﺪه ﻛﻨﻴﺪ‪.‬‬
‫ﻧﻜﺘﻪ ﻣﻬﻢ ‪ :‬ﭼﻮن اﻳﻦ ﺑﻴﺘﻬﺎ در ﺑﺮﻧﺎﻣﻪ ﻫﺎ ‪ latch‬ﻧﺸﺪه اﺳﺖ‪ ،‬ﻣﻤﻜﻦ‬
‫اﺳﺖ دﻗﻴﻘﺎ در ﻟﺤﻈﻪ ﺧﻮاﻧﺪه ﺷﺪن ﺗﻮﺳﻂ ‪ ، DSP‬ﻣﻘﺪار آن در‬
‫ﺣﺎل ﻋﻮض ﺷﺪن ﺑﺎﺷﺪ‪ ،‬و در ﻧﺘﻴﺠﻪ ﻋﺪدي ﻛﻪ ﺗﻮﺳﻂ ‪DSP‬‬

‫ﺧﻮاﻧﺪه ﻣﻲ ﺷﻮد ﻣﻘﺪار ﻧﺎ درﺳﺘﻲ ﺑﺎﺷﺪ‪ .‬اﮔﺮ در ﺑﺮﻧﺎﻣﻪ ﻫﺎ ﺑﻪ ﻃﻮر‬


‫ﭘﺸﺖ ﺳﺮﻫﻢ از اﻳﻦ ﺑﻴﺘﻬﺎ ﺑﺨﻮاﻧﻴﺪ ﻣﻤﻜﻦ اﺳﺖ ﻣﺜﻼ اﻧﺘﻈﺎر داﺷﺘﻪ‬
‫ﺑﺎﺷﻴﺪ ﺑﻌﺪ از ﻋﺪد ‪ ، 10‬ﻋﺪد ‪ 11‬را در اﻳﻦ ﺑﻴﺖ ﻫﺎ ﺑﺒﻴﻨﻴﺪ اﻣﺎ در‬
‫ﻋﻤﻞ ﺑﺮاي ﺗﻨﻬﺎ ﻳﻜﻲ از ﺧﻮاﻧﺪﻧﻬﺎ) دﻗﻴﻘﺎ در ﻫﻨﮕﺎم ﺗﻐﻴﻴﺮ ﻋﺪد از‬
‫‪ 10‬ﺑﻪ ‪ ( 11‬ﻳﻚ ﻋﺪد دﻳﮕﺮ ﺗﻮﺳﻂ ‪ DSP‬ﻗﺮاﺋﺖ ﺷﻮد‪.‬‬
‫ﻫﻨﮕﺎم ‪ Full‬ﺷﺪن ‪ FIFO‬اﻳﻦ ﺑﻴﺖ ﻳﻚ ﻣﻲ ﺷﻮد‪.‬‬ ‫‪15‬‬ ‫‪FIFO_Full‬‬

‫ﻧﻜﺘﻪ ‪ :‬اﻳﻦ رﺟﻴﺴﺘﺮ ﻓﻘﻂ ﺧﻮاﻧﺪﻧﻲ اﺳﺖ و ﺷﻤﺎ ﻧﻤﻲ ﺗﻮاﻧﻴﺪ ﻣﻘﺎدﻳﺮ درون اﻳﻦ رﺟﻴﺴﺘﺮ را ﺑﺎ ﺑﺮﻧﺎﻣﻪ ‪ C‬ﻋﻮض ﻛﻨﻴﺪ‪.‬‬
‫‪ ( 5-2‬رﺟﻴﺴﺘﺮ ‪A2D_Data_Count_For_Almost_Full‬‬
‫ﺑﺎ ﻛﻤﻚ اﻳﻦ رﺟﻴﺴﺘﺮ ﻣﻲ ﺗﻮان وﺿﻌﻴﺖ ﻓﻠﮓ ‪ Almost Full‬را در ﺑﺮﻧﺎﻣﻪ ﻫﺎ ﺗﻨﻈﻴﻢ ﻧﻤﻮد‪ .‬اﻳﻦ ﻓﻠﮓ ﻫﻢ در ﻗﺴﻤﺖ ﺗﻮﻟﻴﺪ‬
‫‪ A2D_FIFO_status‬ﺗﺎﺛﻴﺮ ﮔﺬار اﺳﺖ‪ .‬ﻫﺮﮔﺎه ﻣﻘﺪار ‪ FIFO_Used_Word‬در رﺟﻴﺴﺘﺮ‬ ‫اﻳﻨﺘﺮاﭘﺖ و ﻫﻢ در رﺟﻴﺴﺘﺮ‬
‫‪ A2D_FIFO_status‬از ﻣﻘﺪار وارد ﺷﺪه در اﻳﻦ رﺟﻴﺴﺘﺮ )‪ ( A2D_Data_Count_For_Almost_Full‬ﺑﻴﺸﺘﺮ ﺑﺎﺷﺪ ﻓﻠﮓ‬
‫‪ Almost Full‬در ﺑﺮﻧﺎﻣﻪ ﻫﺎ ﻳﻚ ﻣﻲ ﺷﻮد‪.‬‬
‫ﻧﻜﺘﻪ ‪ :‬اﻳﻦ رﺟﻴﺴﺘﺮ ﻓﻘﻂ ﺧﻮاﻧﺪﻧﻲ اﺳﺖ و ﺷﻤﺎ ﻧﻤﻲ ﺗﻮاﻧﻴﺪ ﻣﻘﺎدﻳﺮ درون اﻳﻦ رﺟﻴﺴﺘﺮ را ﺑﺎ ﺑﺮﻧﺎﻣﻪ ‪ C‬ﻋﻮض ﻛﻨﻴﺪ‪.‬‬

‫‪ (3‬رﺟﻴﺴﺘﺮﻫﺎي ﻣﺮﺑﻮط ﺑﻪ ارﺗﺒﺎط ﺑﺎ ‪DAC‬‬


‫در ﺷﻜﻞ ﺑﻌﺪ ﺑﻠﻮك دﻳﺎﮔﺮام ﻛﻠﻲ ﺑﺮﻧﺎﻣﻪ اﺗﺼﺎل ‪ DAC‬ﺑﻪ ﺑﺮد ‪ DSPro‬آﻣﺪه اﺳﺖ‪.‬‬
‫‪113‬‬ ‫دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫ﺷﻜﻞ ‪ : 2‬ﺑﻠﻮك دﻳﺎﮔﺮام ﻛﻠﻲ ﻧﺤﻮه اﺗﺼﺎل ‪ DAC‬ﺑﻪ ‪DSP‬‬

‫‪ DAC‬ﻣﺎﻧﻨﺪ ﻳﻚ ﺑﻠﻮك داﺧﻠﻲ درون ‪) DSP‬ﻣﺎﻧﻨﺪ ‪ Peripheral‬ﻫﺎ( ﻃﺮاﺣﻲ ﮔﺮدد‪ .‬ﺑﺮاي ‪ DAC‬ﭼﻨﺪ رﺟﻴﺴﺘﺮ ﻛﻤﻜﻲ‬
‫ﻗﺮار داده ﺷﺪه اﺳﺖ و ﺑﺮاي ﻫﺮ رﺟﻴﺴﺘﺮ ﻳﻚ آدرس ﻣﺠﺰا در ﻓﻀﺎي آدرس دﻫﻲ ﭘﺮدازﻧﺪه ‪ DSP‬در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪه اﺳﺖ‪ .‬ﻳﻌﻨﻲ‬
‫ﻣﺜﻼ ﺑﺮاي ﻧﻮﺷﺘﻦ در ‪ DAC‬ﻳﺎ ﺧﻮاﻧﺪن وﺿﻌﻴﺖ ﺑﺨﺶﻫﺎي ﻣﺨﺘﻠﻒ )رﺟﻴﺴﺘﺮ ‪ (STATUS‬ﻛﺎﻓﻲ اﺳﺖ از ﻳﻚ ﺳﺮي آدرﺳﻬﺎي‬
‫ﻣﺸﺨﺺ در ﻓﻀﺎي آدرس ‪ ،DSP‬اﺳﺘﻔﺎده ﺷﻮد‪ .‬ﻫﻤﭽﻨﻴﻦ ﺑﺮاي اﻋﻤﺎل ﺗﻨﻈﻴﻤﺎت ﻣﺨﺘﻠﻒ ﺑﻪ ‪ DAC‬ﺑﺎز ﻫﻢ ﺑﺎ روش آدرس دﻫﻲ‪،‬‬
‫ﺑﺎﻳﺪ ﺗﻨﻈﻴﻤﺎت ﻣﻮرد ﻧﻈﺮ را در ﺟﻴﺴﺘﺮ ‪ CONTROL‬ﻳﺎ ‪ (ADC_Sampling_Frequency) N‬ﻧﻮﺷﺖ‪ .‬آدرس ﻫﺮ رﺟﻴﺴﺘﺮ در‬
‫ﺷﻜﻞ ﺑﺎﻻ ﻣﺸﺨﺺ ﺷﺪه اﺳﺖ‪.‬‬
‫دﻳﺘﺎي ‪ ، DAC‬ﻫﻢ ﻣﻲ ﺗﻮاﻧﺪ از ‪ FIFO‬ﺧﻮاﻧﺪه ﺷﻮد و ﻫﻢ ﻣﺴﺘﻘﻴﻤﺎ از ‪ DSP‬ﻣﻨﺘﻘﻞ ﮔﺮدد)از ﻃﺮﻳﻖ رﺟﻴﺴﺘﺮ‬
‫‪ .(D2A_data‬در ﺻﻮرت ﻋﺒﻮر از ‪ ،FIFO‬ﻳﻚ ‪ FIFO‬ﺑﺎ ﻗﺎﺑﻠﻴﺖ ذﺧﻴﺮه ﺳﺎزي ‪ 256‬ﺑﺎﻳﺖ در ﻣﺴﻴﺮ ﻗﺮار ﻣﻲ ﮔﻴﺮد‪ .‬اﻳﻦ ‪FIFO‬‬
‫ﻛﻤﻚ ﻣﻲ ﻛﻨﺪ ﻛﻪ ‪ DSP‬ﻣﺠﺒﻮر ﻧﺒﺎﺷﺪ ﻛﻪ ﺑﻪ ازاي ﻫﺮ ‪ SAMPLE‬ﻣﻮرد ﻧﻴﺎز ‪ ،DAC‬ﻳﻜﺒﺎر اﻳﻨﺘﺮاﭘﺖ ﺑﺨﻮرد‪.‬‬
‫‪114‬‬ ‫ﺿﻤﻴﻤﻪ د‪ :‬ﻣﻌﺮﻓﻲ رﺟﻴﺴﺘﺮﻫﺎي ﻛﻴﻒ آزﻣﺎﻳﺸﮕﺎه‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫ﻫﻤﭽﻨﻴﻦ ﺑﺮاي راﺣﺘﻲ‪ ،‬ﺣﺎﻟﺘﻬﺎي ﻣﺨﺘﻠﻒ ﺗﻮﻟﻴﺪ اﻳﻨﺘﺮاﭘﺖ در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪه اﺳﺖ ﻛﻪ از ﻃﺮﻳﻖ رﺟﻴﺴﺘﺮ‬
‫‪ DAC_Control_reg0‬ﻗﺎﺑﻞ ﺗﻨﻈﻴﻢ اﺳﺖ‪ .‬اﻳﻦ ﺣﺎﻟﺘﻬﺎ ﻋﺒﺎرﺗﻨﺪ از ‪ ، FIFO Almost Empty ، FIFO Empty :‬آﻣﺪن ﻫﺮ‬
‫ﻛﻼك‪ ،‬و ﻋﺪم ﺗﻮﻟﻴﺪ اﻳﻨﺘﺮاﭘﺖ‪ .‬ﺑﻠﻮك ‪ DAC‬از اﻳﻨﺘﺮاﭘﺖ ﺷﻤﺎره ‪ INT1‬ﭘﺮدازﻧﺪه اﺳﺘﻔﺎده ﻛﺮده اﺳﺖ‪.‬‬
‫‪DAC_Sampling_Frequency‬‬ ‫ﺑﺮاي اﻧﺘﺨﺎب ﻓﺮﻛﺎﻧﺲﻫﺎي ﻣﺨﺘﻠﻒ ﻧﻤﻮﻧﻪ ﺑﺮداري‪ ،‬ﻳﻚ رﺟﻴﺴﺘﺮ ﺑﻪ ﻧﺎم‬
‫)رﺟﻴﺴﺘﺮ ‪ N‬در ﺷﻜﻞ ﻗﺒﻞ( ﻃﺮاﺣﻲ ﮔﺮدﻳﺪه اﺳﺖ ﻛﻪ ﺑﺎ ﻛﻤﻚ آن ﻣﻲ ﺗﻮان ﻓﺮﻛﺎﻧﺲ ﻧﻤﻮﻧﻪ ﺑﺮداري را ﺑﻪ‬
‫دﻟﺨﻮاه ﻋﻮض ﻧﻤﻮد‪ .‬ﭼﻮن ﺑﺮاي ﺗﻮﻟﻴﺪ ﻓﺮﻛﺎﻧﺲ ﻧﻤﻮﻧﻪ ﺑﺮداري از ﻳﻚ ﺗﻘﺴﻴﻢ ﻛﻨﻨﺪه اﺳﺘﻔﺎده ﺷﺪه اﺳﺖ‪ ،‬ﺗﻨﻬﺎ‬
‫اﻋﺪاد ﻣﺸﺨﺼﻲ از ﻃﺮﻳﻖ اﻳﻦ ﺑﺮﻧﺎﻣﻪ ﻗﺎﺑﻞ اﺳﺘﻔﺎده اﺳﺖ‪.‬‬
‫در ﺟﺪول ﺑﻌﺪ ﻟﻴﺴﺖ رﺟﻴﺴﺘﺮﻫﺎي ﻣﺮﺑﻮط ﺑﻪ ‪ DAC‬و آدرس ﻫﺮ ﻳﻚ آﻣﺪه اﺳﺖ‪.‬‬

‫ﺟﺪول ‪ : 6‬رﺟﻴﺴﺘﺮ ﻫﺎي ﻣﺮﺑﻮط ﺑﻪ ارﺗﺒﺎط ﺑﺎ ‪ADC‬‬


‫آدرس)‪( Byte‬‬ ‫آدرس)‪( Word‬‬ ‫اﺳﻢ رﺟﻴﺴﺘﺮ‬ ‫ردﻳﻒ‬
‫ﺑﺮاي اﺳﺘﻔﺎده در ﻓﺎﻳﻞ ‪Command‬‬
‫‪0x800004‬‬ ‫‪0x400002‬‬ ‫‪D2A_data‬‬ ‫‪1‬‬
‫‪0x80000E‬‬ ‫‪0x400007‬‬ ‫‪DAC_Control_reg0‬‬ ‫‪2‬‬
‫‪0x800010‬‬ ‫‪0x400008‬‬ ‫‪DAC_Sampling_Frequency‬‬ ‫‪3‬‬
‫‪0x800014‬‬ ‫‪0x40000A‬‬ ‫‪D2A_FIFO_status‬‬ ‫‪4‬‬

‫‪ (1-3‬رﺟﻴﺴﺘﺮ ‪D2A_data‬‬

‫ﺑﺮاي ﻧﻮﺷﺘﻦ در ‪ DAC‬ﻛﺎﻓﻲ اﺳﺖ در اﻳﻦ رﺟﻴﺴﺘﺮ ﻧﻮﺷﺘﺘﻪ ﺷﻮد‪ .‬اﻳﻦ رﺟﻴﺴﺘﺮ ﻫﻢ ﻣﻲ ﺗﻮاﻧﺪ ﻣﺴﺘﻘﻴﻤﺎ ﺑﻪ ‪ DAC‬ﻣﺘﺼﻞ ﮔﺮدد‬
‫و ﻫﻢ ﺑﻪ ورودي ‪ FIFO‬ﻣﺘﺼﻞ ﺑﺎﺷﺪ‪ .‬ﺑﺮاي اﻧﺘﺨﺎب ﻫﺮ ﻳﻚ از اﻳﻦ دو ﺣﺎﻟﺖ ﺑﺎﻳﺪ از ﺑﻴﺖ ‪ SC_FIFO1_DIRECT0‬در‬
‫رﺟﻴﺴﺘﺮ ‪ DAC_Control_reg0‬اﺳﺘﻔﺎده ﮔﺮدد‪.‬‬

‫‪ (2-3‬رﺟﻴﺴﺘﺮ ﻛﻨﺘﺮﻟﻲ ‪DAC_Control_reg0‬‬


‫اﻳﻦ رﺟﻴﺴﺘﺮ از ﺑﺨﺸﻬﺎي ﻣﺨﺘﻠﻔﻲ ﺗﺸﻜﻴﻞ ﺷﺪه اﺳﺖ ﻛﻪ ﻫﺮ ﺑﺨﺶ ﻳﻚ ﻋﻤﻠﻜﺮد ﻣﺴﺘﻘﻞ دارد‪.‬‬

‫ﺟﺪول ‪: 7‬رﺟﻴﺴﺘﺮ ﻛﻨﺘﺮﻟﻲ‪DAC_Control_reg0‬‬


‫‪Bit 10-15‬‬ ‫‪Bit 8-9‬‬ ‫‪Bit 4-7‬‬ ‫‪Bit 3‬‬ ‫‪Bit 2‬‬ ‫‪Bit 1‬‬ ‫‪Bit 0‬‬
‫‪Reserved‬‬ ‫‪selector‬‬ ‫‪Reserved‬‬ ‫‪SC_FIFO1_DIRECT0‬‬ ‫‪Sng1_USng0‬‬ ‫‪Reserved‬‬ ‫‪Reset_Fifo‬‬

‫در ﺟﺪول ﺑﻌﺪ ﻧﺤﻮه ﻋﻤﻠﻜﺮد ﻫﺮﺑﻴﺖ آﻣﺪه اﺳﺖ‪.‬‬

‫ﺟﺪول ‪ : 8‬ﺗﻮﺿﻴﺤﺎت رﺟﻴﺴﺘﺮ ‪ ) DAC_Control_reg0‬رﺟﻴﺴﺘﺮ ﻗﺎﺑﻞ ﻧﻮﺷﺘﻦ و ﻗﺎﺑﻞ ﺧﻮاﻧﺪن(‬


‫ﺗﻮﺿﻴﺤﺎت‬ ‫ﺷﻤﺎره‬ ‫اﺳﻢ‬
‫ﺑﻴﺖ‬
‫ﺑﺎ ﻳﻚ ﺷﺪن اﻳﻦ ﺑﻴﺖ‪ FIFO ،‬ﻣﺮﺑﻮط ﺑﻪ ﺑﻠﻮك ‪ DAC‬رﻳﺴﺖ ﻣﻲ ﮔﺮدد و ﻛﻠﻴﻪ ﻣﺤﺘﻮﻳﺎت‬ ‫‪0‬‬ ‫‪Reset_Fifo‬‬

‫آن ﭘﺎك ﻣﻲ ﺷﻮد‪ .‬ﻫﻤﻴﺸﻪ ﺑﻌﺪ از رﻳﺴﺖ ﻛﺮدن ‪ ، FIFO‬ﺑﺎ ﺻﻔﺮ ﻛﺮدن اﻳﻦ ﺑﻴﺖ‪ ،‬ﻣﺠﺪد‬
‫‪ FIFO‬را از رﻳﺴﺖ ﺧﺎرج ﻛﻨﻴﺪ ﺗﺎ ﺑﺘﻮاﻧﺪ ﻋﻤﻠﻜﺮد ﻋﺎدي ﺧﻮد را داﺷﺘﻪ ﺑﺎﺷﺪ‪.‬‬
‫‪115‬‬ ‫دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫ﺗﻮﺻﻴﻪ ﻣﻲ ﺷﻮد ﻫﻤﻴﺸﻪ در اﺑﺘﺪاي ﺷﺮوع ﺑﺮﻧﺎﻣﻪ ﻫﺎي ‪ ، C‬اﻳﻦ ﺑﻴﺖ را ﻳﻜﺒﺎر ﻳﻚ و ﺻﻔﺮ‬
‫ﻛﻨﻴﺪ‪.‬‬
‫اﻳﻦ ﺑﻴﺖ در ﻛﻴﻒ ﻛﺎرﺑﺮدي ﻧﺪارد و ﻓﻘﻂ در درون ﻛﺎرت ‪ adc‬ﻛﺎر ﻣﻲ ﻛﻨﺪ‪.‬‬

‫اﻳﻦ ﺑﻴﺖ ﻫﻴﭻ ﻋﻤﻠﻜﺮد ﻣﺸﺨﺼﻲ ﻧﺪارد‪.‬‬ ‫‪1‬‬ ‫‪Reserved‬‬

‫دﻳﺘﺎي ﺧﺮوﺟﻲ از ‪ ، DAC‬ﻫﻤﻴﺸﻪ از ﻃﺮﻳﻖ رﺟﻴﺴﺘﺮ ‪ D2A_data‬ﻗﺎﺑﻞ دﺳﺘﺮﺳﻲ اﺳﺖ‪ .‬ﺑﺎ‬ ‫‪2‬‬ ‫‪Sng1_USng0‬‬

‫ﻳﻚ ﺷﺪن اﻳﻦ ﺑﻴﺖ ﻓﺮﻣﺖ دﻳﺘﺎي ﺧﺮوﺟﻲ ﺑﻪ ‪ ، DAC‬ﺑﻪ ﺻﻮرت ﺑﺎ ﻋﻼﻣﺖ ) اﻋﺪاد ﺑﻴﻦ‬
‫‪ -2048‬و ‪ ( + 2048‬و ﺑﺎ ﺻﻔﺮ ﺷﺪن اﻳﻦ ﺑﻴﺖ دﻳﺘﺎي ﺧﺮوﺟﻲ ﺑﻪ ﺻﻮرت ﺑﺪون ﻋﻼﻣﺖ )‬
‫اﻋﺪاد ﺑﻴﻦ ﺻﻔﺮ و ‪ ( +4096‬ﺧﻮاﻫﺪ ﺑﻮد‪.‬‬
‫ﺑﺎ ﻫﺮ ﺑﺎر ﺧﻮاﻧﺪن از رﺟﻴﺴﺘﺮ ‪ ، D2A_data‬ﻳﻚ ﻋﺪد در ‪ FIFO‬ﻧﻮﺷﺘﻪ ﻣﻲ ﺷﻮد‪ .‬اﮔﺮ اﻳﻦ‬ ‫‪3‬‬ ‫‪SC_FIFO1_DIRECT0‬‬

‫ﺑﻴﺖ ﻳﻚ ﺷﻮد دﻳﺘﺎي ارﺳﺎل ﺷﺪه از ﺳﻤﺖ ﻛﺎﻣﭙﻴﻮﺗﺮ)‪ ( D2A_data‬در ‪ FIFO‬ﻧﻮﺷﺘﻪ ﻣﻲ‬
‫ﺷﻮد‪.‬‬
‫اﮔﺮ اﻳﻦ ﺑﻴﺖ ﺻﻔﺮ ﺑﺎﺷﺪ‪ ،‬دﻳﺘﺎ ﺑﺎس ورودي ‪ DAC‬ﻣﺴﺘﻘﻴﻤﺎ ﺑﻪ ‪ D2A_data‬ﻣﺘﺼﻞ ﺷﺪه و‬
‫ﺧﺮوﺟﻲ ‪ FIFO‬دور رﻳﺨﺘﻪ ﻣﻲ ﺷﻮد‪.‬‬
‫ﻧﻜﺘﻪ‪ :‬ﻧﻮﺷﺘﻦ در رﺟﻴﺴﺘﺮ ‪ ، D2A_data‬ﻫﻤﻴﺸﻪ ﻣﻨﺠﺮ ﺑﻪ ﻧﻮﺷﺘﻪ ﺷﺪن ﻳﻚ ﻋﺪد در ‪FIFO‬‬
‫ﺧﻮاﻫﺪ ﺷﺪ) ﺑﺪون ﺗﻮﺟﻪ ﺑﻪ وﺿﻌﻴﺖ ﺑﻴﺖ ‪( SC_FIFO1_DIRECT0‬‬
‫اﻳﻦ ﺑﻴﺘﻬﺎ ﻫﻴﭻ ﻋﻤﻠﻜﺮد ﻣﺸﺨﺼﻲ ﻧﺪارد‪.‬‬ ‫‪4-7‬‬ ‫‪Reserved‬‬

‫اﻳﻦ دو ﺑﻴﺖ ﻧﺤﻮه اﻳﺠﺎد اﻳﻨﺘﺮاﭘﺖ ﺑﺎ ارﺳﺎل ﻧﻤﻮﻧﻪ ﻳﺎ ﻧﻤﻮﻧﻪ ﻫﺎي ﺟﺪﻳﺪ از ‪ DAC‬ﺑﻪ ‪FPGA‬‬ ‫‪8-9‬‬ ‫‪selector‬‬

‫را ﺷﺨﺺ ﻣﻲ ﻛﻨﻨﺪ‪ .‬در ﺻﻮرﺗﻴﻜﻪ اﻳﻦ دو ﺑﻴﺖ اﺟﺎزه ﺗﻮﻟﻴﺪ اﻳﻨﺘﺮاﭘﺖ را ﺑﺪﻫﻨﺪ‪ ،‬اﻳﻨﺘﺮاﭘﺖ‬
‫ﺷﻤﺎره ‪ 1‬ﭘﺮدازﻧﺪه ) ‪ ( INT1‬ﺗﺤﺖ ﺗﺎﺛﻴﺮ ﻗﺮار ﻣﻲ ﮔﻴﺮد‪.‬‬
‫ﺗﻮﺿﻴﺤﺎت‬ ‫‪Bit‬‬ ‫‪Bit‬‬
‫‪9‬‬ ‫‪8‬‬
‫ﻫﻴﭻ اﻳﻨﺘﺮاﭘﺘﻲ ﺗﻮﻟﻴﺪ ﻧﻤﻲ ﺷﻮد‪.‬‬ ‫‪0‬‬ ‫‪0‬‬

‫ﺑﺎ آﻣﺪن ﻫﺮ ﻧﻤﻮﻧﻪ ﺟﺪﻳﺪ ﻳﻚ اﻳﻨﺘﺮاﭘﺖ ﺑﻪ ‪ DSP‬زده ﻣﻲ ﺷﻮد) ﻣﻌﺎدل‬ ‫‪0‬‬ ‫‪1‬‬

‫ﻓﺮﻛﺎﻧﺲ ﻧﻤﻮﻧﻪ ﺑﺮداري(‬


‫وﻗﺘﻲ ‪ FIFO‬ﺗﻘﺮﻳﺒﺎ ﺧﺎﻟﻲ ﻣﻲ ﺷﻮد ) ‪Almost‬‬ ‫‪1‬‬ ‫‪0‬‬

‫‪ ( Empty‬اﻳﻨﺘﺮاﭘﺖ زده ﻣﻲ ﺷﻮد‪ FIFO .‬ﺑﻪ ﻛﺎر رﻓﺘﻪ ‪ 256‬ﺑﺎﻳﺖ‬


‫ﻇﺮﻓﻴﺖ دارد‪ .‬ﻫﺮﮔﺎه ﻣﺤﺘﻮﻳﺎت درون اﻳﻦ ‪ FIFO‬ﻛﻤﺘﺮ از ‪ ) 128‬ﻧﺼﻒ‬
‫ﻃﻮل ‪ ( FIFO‬ﮔﺮدد‪ ،‬ﻳﻚ اﻳﻨﺘﺮاﭘﺖ ﺗﻮﻟﻴﺪ ﻣﻲ ﺷﻮد‪.‬‬
‫ﻫﺮ ﮔﺎه ‪ FIFO‬ﺑﻪ ﻃﻮر ﻛﺎﻣﻞ ﺧﺎﻟﻲ ﺷﻮد )‪ (EMPTY‬اﻳﻨﺘﺮاﭘﺖ ﺗﻮﻟﻴﺪ‬ ‫‪1‬‬ ‫‪1‬‬

‫ﻣﻲ ﺷﻮد‪.‬‬
‫اﻳﻦ ﺑﻴﺘﻬﺎ ﻫﻴﭻ ﻋﻤﻠﻜﺮد ﻣﺸﺨﺼﻲ ﻧﺪارد‪.‬‬ ‫‪10-15‬‬ ‫‪Reserved‬‬
‫‪116‬‬ ‫ﺿﻤﻴﻤﻪ د‪ :‬ﻣﻌﺮﻓﻲ رﺟﻴﺴﺘﺮﻫﺎي ﻛﻴﻒ آزﻣﺎﻳﺸﮕﺎه‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫ﻧﻜﺘﻪ ﻧﻜﺘﻪ ‪ :‬اﻳﻦ رﺟﻴﺴﺘﺮ ﻓﻘﻂ ﺧﻮاﻧﺪﻧﻲ اﺳﺖ و ﺷﻤﺎ ﻧﻤﻲ ﺗﻮاﻧﻴﺪ ﻣﻘﺎدﻳﺮ درون اﻳﻦ رﺟﻴﺴﺘﺮ را ﺑﺎ ﺑﺮﻧﺎﻣﻪ ‪ C‬ﻋﻮض ﻛﻨﻴﺪ‪..‬‬

‫‪ (3-3‬رﺟﻴﺴﺘﺮ ‪DAC_Sampling_Frequency‬‬

‫ﻛﻼك ‪ ) DAC‬ﻛﻼك ارﺳﺎل ﻧﻤﻮﻧﻪ ﺑﻪ ‪ ( DAC‬در اﻳﻦ ﺑﺮﻧﺎﻣﻪ از روي ﻛﺮﻳﺴﺘﺎل ‪ 12‬ﻣﮕﺎ ﻫﺮﺗﺰ ﻣﻮﺟﻮد در ﺑﺮد ‪، DSPro‬‬
‫ﺳﺎﺧﺘﻪ ﻣﻲ ﺷﻮد‪ .‬ﻛﻼك ‪ 12‬ﻣﮕﺎ ﻫﺮﺗﺰ‪ ،‬ﭘﺲ از ﻋﺒﻮر از ﻳﻚ ﺗﻘﺴﻴﻢ ﻛﻨﻨﺪه ‪ ،‬ﺑﻪ ‪ DAC‬داده ﻣﻲ ﺷﻮد‪ .‬ﻋﺪد ﻣﻮرد اﺳﺘﻔﺎده در ﺗﻘﺴﻴﻢ‬
‫ﻛﻨﻨﺪه ‪ ،‬از رﺟﻴﺴﺘﺮ ‪ DAC_Sampling_Frequency‬ﻣﻲ آﻳﺪ‪ .‬ﺣﺪاﻗﻞ ﻣﻘﺪار ﺑﺮاي اﻳﻦ رﺟﻴﺴﺘﺮ ﻋﺪد ‪ 6‬اﺳﺖ و در ﺻﻮرت‬
‫اﻧﺘﺨﺎب ﻋﺪد ﻛﻮﭼﻜﺘﺮ از ‪ ، 6‬ﻋﺪد ‪ 6‬در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺧﻮاﻫﺪ ﺷﺪ‪.‬‬

‫ﻓﺮﻛﺎﻧﺲ ﺧﺮوﺟﻲ ‪DAC‬‬ ‫=‬ ‫‪12 MHz‬‬ ‫‪.‬‬


‫‪DAC_Sampling_Frequency‬‬

‫ﻧﻜﺘﻪ ‪ :‬اﻳﻦ رﺟﻴﺴﺘﺮ ﻓﻘﻂ ﺧﻮاﻧﺪﻧﻲ اﺳﺖ و ﺷﻤﺎ ﻧﻤﻲ ﺗﻮاﻧﻴﺪ ﻣﻘﺎدﻳﺮ درون اﻳﻦ رﺟﻴﺴﺘﺮ را ﺑﺎ ﺑﺮﻧﺎﻣﻪ ‪ C‬ﻋﻮض ﻛﻨﻴﺪ‪.‬‬
‫‪ (4-3-3‬رﺟﻴﺴﺘﺮ ‪D2A_FIFO_status‬‬
‫اﻳﻦ رﺟﻴﺴﺘﺮ وﺿﻌﻴﺖ ﺑﺨﺸﻬﺎي ﻣﺨﺘﻠﻒ) ﻣﺎﻧﻨﺪ ‪ ( FIFO‬را ﻣﺸﺨﺺ ﻣﻲ ﻛﻨﺪ‪ .‬در ﺷﻜﻞ ﺑﻌﺪ اﻳﻦ رﺟﻴﺴﺘﺮ ﻧﺸﺎن داده ﺷﺪه اﺳﺖ‪.‬‬

‫‪D2A_FIFO_status‬‬ ‫ﺟﺪول ‪ : 9‬ﺑﻴﺘﻬﺎي رﺟﻴﺴﺘﺮ‬


‫‪Bit 15‬‬ ‫‪Bit 7-14‬‬ ‫‪Bit 6‬‬ ‫‪Bit 5‬‬ ‫‪Bit‬‬ ‫‪Bit 0‬‬
‫‪1-4‬‬
‫‪FIFO_Full‬‬ ‫‪FIFO_Used_Word‬‬ ‫‪FIFO_Almost_Empty‬‬ ‫‪FIFO_Empty‬‬ ‫‪0‬‬ ‫‪D2A_WR‬‬

‫اﻳﻦ رﺟﻴﺴﺘﺮ اﻃﻼﻋﺎت ﻣﻬﻤﻲ از ﻋﻤﻠﻜﺮد ‪ FIFO‬را در اﺧﺘﻴﺎر ﻗﺮار ﻣﻲ دﻫﺪ‪ .‬ﺗﻮﺿﻴﺢ ﻣﺮﺑﻮط ﺑﻪ ﻫﺮ ﺑﺨﺶ اﻳﻦ رﺟﻴﺴﺘﺮ در‬
‫اداﻣﻪ آﻣﺪه اﺳﺖ‪.‬‬
‫ﻧﻜﺘﻪ ‪ :‬اﻳﻦ رﺟﻴﺴﺘﺮ ﻓﻘﻂ ﺧﻮاﻧﺪﻧﻲ اﺳﺖ و ﺷﻤﺎ ﻧﻤﻲ ﺗﻮاﻧﻴﺪ ﻣﻘﺎدﻳﺮ درون اﻳﻦ رﺟﻴﺴﺘﺮ را ﺑﺎ ﺑﺮﻧﺎﻣﻪ ‪ C‬ﻋﻮض ﻛﻨﻴﺪ‪.‬‬

‫ﺟﺪول ‪ : 10‬ﻣﺤﺘﻮﻳﺎت رﺟﻴﺴﺘﺮ ‪D2A_FIFO_status‬‬


‫ﺗﻮﺿﻴﺤﺎت‬ ‫ﺷﻤﺎره‬ ‫اﺳﻢ‬
‫ﺑﻴﺖ‬
‫ﺑﺎ ﺗﻨﻈﻴﻢ ﻓﺮﻛﺎﻧﺲ ﻧﻤﻮﻧﻪ ﺑﺮداري اﻳﻦ ﺑﻴﻦ ﺑﺎ ﻓﺮﻛﺎﻧﺲ ﻧﻤﻮﻧﻪ ﺑﺮداري‬ ‫‪0‬‬ ‫‪D2A_WR‬‬

‫ﺻﻔﺮ و ﻳﻚ ﻣﻲ ﺷﻮد و ﻫﺮ ﺑﺎر ﺻﻔﺮ و ﻳﻚ ﺷﺪن اﻳﻦ ﺑﻴﺖ ﻧﺸﺎن‬


‫دﻫﻨﺪه ﺧﻮاﻧﺪه ﺷﺪن ﻳﻚ ﻧﻤﻮﻧﻪ ﺟﺪﻳﺪ از ‪ DAC‬ﻣﻲ ﺑﺎﺷﺪ‪.‬‬
‫ﺑﺎ ﺧﺎﻟﻲ ﺷﺪن ‪ ) FIFO‬ﺧﻮاﻧﺪن ﻛﺎﻣﻞ اﻃﻼﻋﺎت درون ‪ ( FIFO‬اﻳﻦ‬ ‫‪5‬‬ ‫‪FIFO_Empty‬‬

‫ﺑﻴﺖ ﻳﻚ ﻣﻲ ﺷﻮد‪.‬‬
‫ﻫﺮﮔﺎه ﻣﻘﺪار ‪ ) FIFO_Used_Word‬ﺗﻌﺪاد ﻋﻨﺎﺻﺮ ذﺧﻴﺮه ﺷﺪه‬ ‫‪6‬‬ ‫‪FIFO_Almost_Full‬‬

‫در ‪ ( FIFO‬از ﻋﺪد ‪128‬ﻛﻤﺘﺮﮔﺮدد‪ ،‬آﻧﮕﺎه اﻳﻦ ﺑﻴﺖ ﻳﻚ ﻣﻲ ﮔﺮدد‬


‫و ﮔﺮﻧﻪ ﻣﻘﺪار آن ﺻﻔﺮ اﺳﺖ‪.‬‬
‫‪117‬‬ ‫دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪DSP‬‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫ﺗﻌﺪاد ﺑﺎﻳﺘﻬﺎﻳﻲ ﻛﻪ ﺗﺎ ﻛﻨﻮن از ‪ FIFO‬ﺧﻮاﻧﺪه ﻧﺸﺪه اﻧﺪ ﺗﻮﺳﻂ اﻳﻦ ‪8‬‬ ‫‪7-14‬‬ ‫‪FIFO_Used_Word‬‬

‫ﺑﻴﺖ ﻣﺸﺨﺺ ﻣﻲ ﺷﻮد‪.‬‬


‫دﻗﺖ ﻛﻨﻴﺪ ﻛﻪ ﻫﺮﮔﺎه ‪ FIFO‬ﺑﻪ ﻃﻮر ﻛﺎﻣﻞ ‪ FULL‬ﻣﻲ ﺷﻮد ) ﻳﻌﻨﻲ‬
‫‪ 256‬ﺑﺎﻳﺖ در آن ﻗﺮار ﻣﻲ ﮔﻴﺮد ( اﻳﻦ ‪ 8‬ﺑﻴﺖ ﻣﻘﺪار ﺻﻔﺮ را ﻧﺸﺎن‬
‫ﻣﻲ دﻫﺪ و در ﻋﻮض ﺑﻴﺖ‪ FIFO_Full‬ﻳﻚ ﻣﻲ ﺷﻮد‪ .‬ﺑﻨﺎﺑﺮ اﻳﻦ‬
‫ﺑﺮاي ﻣﺸﺎﻫﺪه ﺻﺤﻴﺢ ﺗﻌﺪاد ﺑﻴﺘﻬﺎي درون ‪ FIFO‬ﻫﻤﻴﺸﻪ ﺑﻴﺖ ‪ 7‬ﺗﺎ‬
‫‪ ) 15‬ﺷﺎﻣﻞ ﺑﻴﺖ ‪ ( FIFO_Full‬را ﺑﺎ ﻫﻢ ﻣﺸﺎﻫﺪه ﻛﻨﻴﺪ‪.‬‬
‫ﻧﻜﺘﻪ ﻣﻬﻢ ‪ :‬ﭼﻮن اﻳﻦ ﺑﻴﺘﻬﺎ در ﺑﺮﻧﺎﻣﻪ ﻫﺎ ‪ latch‬ﻧﺸﺪه اﺳﺖ‪ ،‬ﻣﻤﻜﻦ‬
‫اﺳﺖ دﻗﻴﻘﺎ در ﻟﺤﻈﻪ ﺧﻮاﻧﺪه ﺷﺪن ﺗﻮﺳﻂ ‪ ، DSP‬ﻣﻘﺪار آن در ﺣﺎل‬
‫ﻋﻮض ﺷﺪن ﺑﺎﺷﺪ‪ ،‬و در ﻧﺘﻴﺠﻪ ﻋﺪدي ﻛﻪ ﺗﻮﺳﻂ ‪ DSP‬ﺧﻮاﻧﺪه ﻣﻲ‬
‫ﺷﻮد ﻣﻘﺪار ﻧﺎ درﺳﺘﻲ ﺑﺎﺷﺪ‪ .‬اﮔﺮ در ﺑﺮﻧﺎﻣﻪ ﻫﺎ ﺑﻪ ﻃﻮر ﭘﺸﺖ ﺳﺮﻫﻢ از‬
‫اﻳﻦ ﺑﻴﺘﻬﺎ ﺑﺨﻮاﻧﻴﺪ ﻣﻤﻜﻦ اﺳﺖ ﻣﺜﻼ اﻧﺘﻈﺎر داﺷﺘﻪ ﺑﺎﺷﻴﺪ ﺑﻌﺪ از ﻋﺪد‬
‫‪ ، 10‬ﻋﺪد ‪ 9‬را در اﻳﻦ ﺑﻴﺖ ﻫﺎ ﺑﺒﻴﻨﻴﺪ اﻣﺎ در ﻋﻤﻞ ﺑﺮاي ﺗﻨﻬﺎ ﻳﻜﻲ از‬
‫ﺧﻮاﻧﺪﻧﻬﺎ) دﻗﻴﻘﺎ در ﻫﻨﮕﺎم ﺗﻐﻴﻴﺮ ﻋﺪد از ‪ 10‬ﺑﻪ ‪ ( 9‬ﻳﻚ ﻋﺪد دﻳﮕﺮ‬
‫ﺗﻮﺳﻂ ‪ DSP‬ﻗﺮاﺋﺖ ﺷﻮد‪.‬‬
‫ﻫﻨﮕﺎم ‪ Full‬ﺷﺪن ‪ FIFO‬اﻳﻦ ﺑﻴﺖ ﻳﻚ ﻣﻲ ﺷﻮد‪.‬‬ ‫‪15‬‬ ‫‪FIFO_Full‬‬
‫ﺿﻤﻴﻤﻪ ه‪:‬‬
‫ﻣﻌﺮﻓﻲ رﺟﻴﺴﺘﺮﻫﺎي ﻛﻴﻒ‬
‫آزﻣﺎﻳﺸﮕﺎه ‪DSP‬‬
‫)رﺟﻴﺴﺘﺮﻫﺎي ‪ FIFO‬ﺳﺮﻳﺎل (‬

‫ﻧﺴﺨﻪ ‪1‬‬
‫ﺧﺮداد ‪1392‬‬

‫دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪ :DSP‬راﻫﻨﻤﺎي اﺳﺘﺎد‬


‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬
‫‪119‬‬ ‫دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪ :DSP‬راﻫﻨﻤﺎي اﺳﺘﺎد‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫‪ (1‬ﻣﻘﺪﻣﻪ‬
‫در اﻳﻦ ﻗﺴﻤﺖ رﺟﻴﺴﺘﺮﻫﺎي ﻣﺮﺗﺒﻂ ﺑﺎ ﭘﻮرت ﺳﺮﻳﺎل ﺗﻮﺿﻴﺢ داده ﺷﺪه اﺳﺖ‪ .‬ﺑﺎ اﺳﺘﻔﺎده از اﻳﻦ‬
‫رﺟﻴﺴﺘﺮﻫﺎ ﻣﻲﺗﻮاﻧﻴﻢ وﺿﻌﻴﺖ ﭘﻮرت ﺳﺮﻳﺎل را ﻣﺸﺎﻫﺪه ﻧﻤﻮد و از وﺟﻮد و ﻳﺎ ﻋﺪم وﺟﻮد اﻃﻼﻋﺎت‬
‫در ‪ FIFO‬ﻫﺎي اﺧﺘﺼﺎﺻﻲ ﻣﺠﺰا در ﻣﺴﻴﺮ ﻫﺎي ارﺳﺎل و درﻳﺎﻓﺖ اﻃﻼع ﭘﻴﺪا ﻛﺮد‪.‬‬

‫‪ (2‬رﺟﻴﺴﺘﺮﻫﺎي ﻣﺮﺑﻮط ﺑﻪ ارﺗﺒﺎط ﺑﺎ ﭘﻮرت ﺳﺮﻳﺎل‬


‫در ﺷﻜﻞ ﺑﻌﺪ ﺑﻠﻮك دﻳﺎﮔﺮام ﻛﻠﻲ اﺗﺼﺎل ﭘﻮرت ﺳﺮﻳﺎل ﺑﻪ ﺑﺮد ‪ DSPro‬آﻣﺪه اﺳﺖ‪ .‬در اﻳﻦ‬
‫ﺷﻜﻞ در ﻫﺮ دو ﻣﺴﻴﺮ ارﺳﺎل و درﻳﺎﻓﺖ دو ﻋﺪد ‪ fifo‬ﻣﺠﺰا ﻗﺮار دارد ‪ FIFO .‬ﻣﻮﺟﻮد در ﻣﺴﻴﺮ ارﺳﺎل‬
‫ﺑﻪ ﺳﻤﺖ ﻛﺎﻣﭙﻴﻮﺗﺮ ) ‪ ،( TX‬ﺑﺎﻋﺚ ﻣﻲ ﺷﻮد ﺗﺎ ﭘﺮدازﻧﺪه ‪ DSP‬ﺑﺘﻮاﻧﺪ ﺑﻪ راﺣﺘﻲ اﻋﺪاد زﻳﺎدي را ﭘﺸﺖ‬
‫ﺳﺮ ﻫﻢ در اﻳﻦ ‪ FIFO‬ﺑﺮﻳﺰد ) ﺣﺪاﻛﺜﺮ ‪ 256‬ﻋﺪد ( و ﺳﭙﺲ اﻃﻼﻋﺎت ﺑﻪ ﺗﺪرﻳﺞ و ﺑﺎ ﺳﺮﻋﺖ ﭘﺎﻳﻴﻦ‬
‫)ﺑﺴﺘﻪ ﺑﻪ ﺳﺮﻋﺖ ﭘﻮرت ﺳﺮﻳﺎل( از ‪ FIFO‬ﺧﺎرج ﺷﻮد و ﺑﻪ ﺳﻤﺖ ﻛﺎﻣﭙﻴﻮﺗﺮ ارﺳﺎل ﮔﺮدد‪ .‬در ﻣﺴﻴﺮ‬
‫ﻋﻜﺲ ﻧﻴﺰ اﻃﻼﻋﺎت ﭘﺲ از درﻳﺎﻓﺖ از ﭘﻮرت ﺳﺮﻳﺎل در ﻳﻚ ‪ FIFO‬رﻳﺨﺘﻪ ﺷﺪه و ﭘﺮدازﻧﺪه ﻣﻲ ﺗﻮاﻧﺪ‬
‫ﺑﺎ ﺳﺮﻛﺸﻲ ﺑﻪ ﺑﻴﺖ ‪ EMPTY‬ﻣﺮﺑﻮط ﺑﻪ ‪ FIFO‬ﻣﺴﻴﺮ ‪ RX‬از ﻋﺪم ﺧﺎﻟﻲ ﺑﻮدن ‪ FIFO‬اﻃﻼع ﭘﻴﺪا‬
‫ﻧﻤﺎﻳﺪ‪ .‬ﺳﭙﺲ اﻃﻼﻋﺎت را از ‪ FIFO‬ﻣﺴﻴﺮ ‪ RX‬ﺑﺨﻮاﻧﺪ‪.‬‬
‫‪120‬‬ ‫ﺿﻤﻴﻤﻪ د‪ :‬ﻣﻌﺮﻓﻲ رﺟﻴﺴﺘﺮﻫﺎي ﻛﻴﻒ آزﻣﺎﻳﺸﮕﺎه)ﭘﻮرت ﺳﺮﻳﺎل (‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫ﺷﻜﻞ ‪ : 1‬ﺑﻠﻮك دﻳﺎﮔﺮام ﭘﻮرت ﺳﺮﻳﺎل‬

‫در ﻃﺮاﺣﻲ ﭘﻮرت ﺳﺮﻳﺎل ‪ 3‬ﻋﺪد رﺟﻴﺴﺘﺮ دﺧﻴﻞ ﻣﻲ ﺑﺎﺷﺪ‪ .‬اﻳﻦ رﺟﻴﺴﺘﺮﻫﺎ ﺑﻪ ﻫﻤﺮاه آدرﺳﺸﺎن‬
‫در ﺟﺪول ﺑﻌﺪ آﻣﺪهاﻧﺪ‪.‬‬
‫‪121‬‬ ‫دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪ :DSP‬راﻫﻨﻤﺎي اﺳﺘﺎد‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫ﺟﺪول ‪ : 1‬رﺟﻴﺴﺘﺮ ﻫﺎي ﻣﺮﺑﻮط ﺑﻪ ارﺗﺒﺎط ﺑﺎ ﭘﻮرت ﺳﺮﻳﺎل‬


‫آدرس)‪( Byte‬‬ ‫آدرس)‪( Word‬‬ ‫اﺳﻢ رﺟﻴﺴﺘﺮ‬ ‫ردﻳﻒ‬
‫ﺑﺮاي اﺳﺘﻔﺎده در ﻓﺎﻳﻞ‬ ‫ﺑﺮاي اﺳﺘﻔﺎده در‬
‫‪Command‬‬ ‫ﺑﺮﻧﺎﻣﻪ ‪C‬‬
‫‪0x800024‬‬ ‫‪0x400012‬‬ ‫‪SERIAL_RX‬‬ ‫‪1‬‬
‫‪0x400028‬‬ ‫‪0x400014‬‬ ‫‪SERIAL_STATUS‬‬ ‫‪2‬‬
‫‪0x800022‬‬ ‫‪0x400011‬‬ ‫‪SERIAL_TX‬‬ ‫‪3‬‬

‫در ﻛﻴﻒ آزﻣﺎﻳﺸﮕﺎه اﺑﺘﺪا ﺑﺎﻳﺪ از درون ‪ LCD‬ﻣﺘﺼﻞ ﺑﻪ ﺑﺮد ‪ BAUD RATE‬ارﺗﺒﺎط را ﻣﺸﺨﺺ‬
‫ﻧﻤﻮد‪ .‬ﺳﭙﺲ در درون ﺑﺮﻧﺎﻣﻪ ‪ DSP‬ﺑﺎ ﻧﻮﺷﺘﻦ در رﺟﻴﺴﺘﺮ ‪ SERIAL_TX‬اﻃﻼﻋﺎت را از ﻛﻴﻒ ﺑﻪ‬
‫ﺑﻴﺮون ارﺳﺎل ﻧﻤﻮد‪ .‬در ﻣﺴﻴﺮ ﺑﺮﻋﻜﺲ ﺑﺎ ﺧﻮاﻧﺪن از رﺟﻴﺴﺘﺮ ‪ SERIAL_RX‬اﻃﻼﻋﺎت ﻗﺎﺑﻞ درﻳﺎﻓﺖ‬
‫ﺧﻮاﻫﺪ ﺑﻮد‪.‬‬
‫رﺟﻴﺴﺘﺮ ‪ SERIAL_STATUS‬وﺿﻌﻴﺖ ‪ FIFO‬و ‪BAUD RATE‬را ﻣﺸﺨﺺ ﻣﻲ ﻧﻤﺎﻳﺪ‪.‬‬

‫‪ (1-2‬رﺟﻴﺴﺘﺮ‪SERIAL_RX‬‬
‫اﻳﻦ رﺟﻴﺴﺘﺮ ﺑﺮاي ﺧﻮاﻧﺪن اﻃﻼﻋﺎت ارﺳﺎﻟﻲ از ﺧﺎرج ﻛﻴﻒ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﻲ ﮔﻴﺮد‪ .‬ﻓﺮﻣﺖ‬
‫دﻳﺘﺎي ارﺳﺎﻟﻲ ﺑﺎﻳﺪ ‪ ،‬ﺑﺪون ﺑﻴﺖ ﭘﺮﻳﺘﻲ ‪ 8 ،‬ﺑﻴﺘﻲ و ﺑﺎ ﻳﻚ ‪ STOP BIT‬ﺑﺎﺷﺪ‪ ..‬ﺳﺮﻋﺘﻬﺎﻳﻲ ﻛﻪ ﻛﻴﻒ‬
‫آزﻣﺎﻳﺸﮕﺎه ‪ DSP‬ﭘﺸﺘﻴﺒﺎﻧﻲ ﻣﻲ ﻧﻤﺎﻳﺪ از ‪ 2400‬ﺗﺎ ‪) 115200‬ﺑﺎ ﻛﻤﻚ ‪ ( LCD‬ﻗﺎﺑﻞ ﺗﻨﻈﻴﻢ اﺳﺖ‪.‬‬

‫‪ (2-2‬رﺟﻴﺴﺘﺮ‪SERIAL_TX‬‬
‫اﻳﻦ رﺟﻴﺴﺘﺮ ﺑﺮاي ارﺳﺎل اﻃﻼﻋﺎت از ﻛﻴﻒ آزﻣﺎﻳﺸﮕﺎه ﺑﻪ ﺧﺎرج ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﻲﮔﻴﺮد‪.‬‬
‫ﻓﺮﻣﺖ دﻳﺘﺎي ارﺳﺎﻟﻲ ﺑﻪ ﺻﻮرت ﺑﺪون ﺑﻴﺖ ﭘﺮﻳﺘﻲ ‪ 8 ،‬ﺑﻴﺘﻲ و ﺑﺎ ﻳﻚ ‪ STOP BIT‬ﻣﻲﺑﺎﺷﺪ‪..‬‬
‫ﺳﺮﻋﺘﻬﺎﻳﻲ ﻛﻪ ﻛﻴﻒ آزﻣﺎﻳﺸﮕﺎه ‪ DSP‬ﭘﺸﺘﻴﺒﺎﻧﻲ ﻣﻲﻧﻤﺎﻳﺪ از ‪ 2400‬ﺗﺎ ‪) 115200‬ﺑﺎ ﻛﻤﻚ ‪( LCD‬‬
‫ﻗﺎﺑﻞ ﺗﻨﻈﻴﻢ اﺳﺖ‪.‬‬
‫‪122‬‬ ‫ﺿﻤﻴﻤﻪ د‪ :‬ﻣﻌﺮﻓﻲ رﺟﻴﺴﺘﺮﻫﺎي ﻛﻴﻒ آزﻣﺎﻳﺸﮕﺎه)ﭘﻮرت ﺳﺮﻳﺎل (‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫‪ (3-2‬رﺟﻴﺴﺘﺮ‪SERIAL_STATUS‬‬
‫اﻳﻦ رﺟﻴﺴﺘﺮ ﻓﻘﻂ ﺧﻮاﻧﺪﻧﻲ ﺑﻮده و از ﺑﺨﺸﻬﺎي ﻣﺨﺘﻠﻔﻲ ﺗﺸﻜﻴﻞ ﺷﺪه اﺳﺖ ﻛﻪ ﻫﺮ ﺑﺨﺶ ﻳﻚ‬
‫ﻋﻤﻠﻜﺮد ﻣﺴﺘﻘﻞ دارد‪.‬‬
‫ﺟﺪول ‪: 2‬رﺟﻴﺴﺘﺮ ﻛﻨﺘﺮﻟﻲ‪SERIAL_STATUS‬‬
‫‪Bit 15‬‬ ‫‪Bit 14-7‬‬ ‫‪Bit 6‬‬ ‫‪Bit 5‬‬ ‫‪Bit 4‬‬ ‫‪Bit 0-3‬‬
‫‪Rx_fifo‬‬ ‫‪Rx_Fifo used‬‬ ‫‪Rx_fifo‬‬ ‫‪Tx_fifo‬‬ ‫‪Tx_fifo‬‬ ‫‪Baud‬‬
‫‪Full‬‬ ‫‪word‬‬ ‫‪Empty‬‬ ‫‪Full‬‬ ‫‪Empty‬‬ ‫‪Rate‬‬

‫در ﺟﺪول ﺑﻌﺪ ﻧﺤﻮه ﻋﻤﻠﻜﺮد ﻫﺮﺑﻴﺖ آﻣﺪه اﺳﺖ‪.‬‬


‫ﺟﺪول ‪ : 3‬ﺗﻮﺿﻴﺤﺎت رﺟﻴﺴﺘﺮ ‪ ) ADC_Control_reg0‬رﺟﻴﺴﺘﺮ ﻗﺎﺑﻞ ﻧﻮﺷﺘﻦ و ﻗﺎﺑﻞ ﺧﻮاﻧﺪن(‬
‫ﺗﻮﺿﻴﺤﺎت‬ ‫ﺷﻤﺎره‬ ‫اﺳﻢ‬
‫ﺑﻴﺖ‬
‫‪ 0‬ﺗﺎ ‪ 3‬ﺑﺎ ﺗﻨﻈﻴﻢ ﻧﺮخ ارﺳﺎل ﺑﺎ ﻛﻤﻚ ‪ LCD‬ﻛﻴﻒ آزﻣﺎﻳﺸﮕﺎه ‪، DSP‬‬ ‫‪Buad Rate‬‬

‫ﻣﻘﺪار اﻳﻦ ‪ 4‬ﺑﻴﺖ ﺑﻪ ﺷﻜﻞ اﺗﻮﻣﺎﺗﻴﻚ ﻋﻮض ﻣﻲﺷﻮد‪ .‬ﻛﺎرﺑﺮ‬


‫ﻫﻨﮕﺎم اﺳﺘﻔﺎده از ﭘﻮرت ﺳﺮﻳﺎل ﺑﺎ ﺧﻮاﻧﺪن اﻳﻦ ‪ 4‬ﺑﻴﺖ ﻣﻲﺗﻮاﻧﺪ‬
‫از ﻋﺪدي ﻛﻪ ﺗﻮﺳﻂ ‪ LCD‬ﺑﺮاي ﻧﺮخ ارﺳﺎل و درﻳﺎﻓﺖ ﺗﻨﻈﻴﻢ‬
‫ﺷﺪه اﺳﺖ ﺑﺮ اﺳﺎس ﺟﺪول زﻳﺮ اﻃﻼع ﻳﺎﺑﺪ‪.‬‬
‫ﻣﻌﺎدل ‪Baud Rate‬‬ ‫‪BIT 0 to 3‬‬

‫‪) 115200‬ﻣﻘﺪار ﭘﻴﺶ ﻓﺮض(‬ ‫‪0‬‬

‫‪57600‬‬ ‫‪1‬‬
‫‪38400‬‬ ‫‪2‬‬
‫‪19200‬‬ ‫‪3‬‬
‫‪9600‬‬ ‫‪4‬‬
‫‪4800‬‬ ‫‪5‬‬
‫‪2400‬‬ ‫‪6‬‬
‫ﻫﺮﮔﺎه ‪ fifo‬ﻣﺴﻴﺮ ‪ ) tx‬ارﺳﺎل از ﻛﻴﻒ ﺑﻪ ﺳﻤﺖ ﻛﺎﻣﭙﻴﻮﺗﺮ(‬ ‫‪4‬‬ ‫‪Tx_Fifo‬‬
‫‪Empty‬‬
‫ﺧﺎﻟﻲ ﺑﺎﺷﺪ‪ ،‬اﻳﻦ ﺑﻴﺖ ﻳﻚ ﻣﻲ ﺷﻮد وﮔﺮﻧﻪ ﺻﻔﺮ اﺳﺖ‪.‬‬
‫‪123‬‬ ‫دﺳﺘﻮر ﻛﺎر آزﻣﺎﻳﺸﮕﺎه ‪ :DSP‬راﻫﻨﻤﺎي اﺳﺘﺎد‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫ﻫﺮﮔﺎه ‪ fifo‬ﻣﺴﻴﺮ ‪ ) tx‬ارﺳﺎل از ﻛﻴﻒ ﺑﻪ ﺳﻤﺖ ﻛﺎﻣﭙﻴﻮﺗﺮ(‬ ‫‪5‬‬ ‫‪Tx_Fifo‬‬


‫‪Full‬‬
‫ﻛﺎﻣﻼ ﭘﺮ ﺑﺎﺷﺪ‪ ،‬اﻳﻦ ﺑﻴﺖ ﻳﻚ ﻣﻲ ﺷﻮد وﮔﺮﻧﻪ ﺻﻔﺮ اﺳﺖ‪.‬اﻳﻦ‬
‫ﺑﻴﺖ ﻳﻚ ﮔﺰﻳﻨﻪ ﺧﻮب اﺳﺖ ﺗﺎ ﻫﻨﮕﺎم ارﺳﺎل اﻃﻼﻋﺎت از ﻛﻴﻒ‬
‫ﺑﻪ ﺧﺎرج ‪ ،‬ﻣﻄﻤﺌﻦ ﺷﻮﻳﻢ ﻛﻪ ‪ fifo‬ﺑﻪ اﻧﺪازه ﻛﺎﻓﻲ ﺑﺮاي ارﺳﺎل‬
‫اﻃﻼﻋﺎت ﻓﻀﺎ دارد و ﻫﻴﭻ وﻗﺖ ﻛﺎﻣﻼ ﭘﺮ ﻧﻤﻲ ﺷﻮد‪ .‬و ﻫﺮ ﮔﺎه‬
‫ﭘﺮ ﺷﺪ از ﻧﻮﺷﺘﻦ اﻃﻼﻋﺎت ﺑﻴﺸﺘﺮ ﺧﻮد داري ﺷﻮد ﺗﺎ در ﻧﺘﻴﺠﻪ‬
‫اﻃﻼﻋﺎت ﮔﻢ ﻧﺸﻮد‪.‬‬
‫ﻫﺮﮔﺎه ‪ fifo‬ﻣﺴﻴﺮ ‪ ) Rx‬ارﺳﺎل از ﺳﻤﺖ ﻛﺎﻣﭙﻴﻮﺗﺮ ﺑﻪ‬ ‫‪6‬‬ ‫‪Rx_Fifo‬‬
‫‪Empty‬‬
‫ﻛﻴﻒ ( ﺧﺎﻟﻲ ﺑﺎﺷﺪ‪ ،‬اﻳﻦ ﺑﻴﺖ ﻳﻚ ﻣﻲ ﺷﻮد وﮔﺮﻧﻪ ﺻﻔﺮ اﺳﺖ‪.‬‬
‫ﻫﻨﮕﺎم ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﺑﺎ ﭼﻚ ﻧﻤﻮدن اﻳﻦ ﺑﻴﺖ ﺑﻪ ﺻﻮرت‬
‫دورهاي ﻣﻲﺗﻮان ﻣﻄﻤﺌﻦ ﺷﺪ ﻛﻪ آﻳﺎ اﻃﻼﻋﺎت ﺟﺪﻳﺪي ﺗﻮﺳﻂ‬
‫ﭘﻮرت ﺳﺮﻳﺎل درﻳﺎﻓﺖ ﺷﺪه اﺳﺖ ﻳﺎ ﻧﻪ‪ .‬در ﺻﻮرت درﻳﺎﻓﺖ‬
‫اﻃﻼﻋﺎت ﺟﺪﻳﺪ ﺗﺎ ﺻﻔﺮ ﺷﺪن دوﺑﺎره اﻳﻦ ﺑﻴﺖ داﺋﻤﺎ از رﺟﻴﺴﺘﺮ‬
‫‪ SERIAL_RX‬ﺧﻮاﻧﺪه ﺷﻮد‪ .‬اﺳﺘﻔﺎده از رﺟﻴﺴﺘﺮ ‪Rx_Fifo‬‬

‫‪ Used Word‬ﺑﺮاي اﻳﻦ ﻣﻨﻈﻮر ﺗﻮﺻﻴﻪ ﻧﻤﻲ ﺷﻮد‪.‬‬


‫ﺗﻌﺪاد ﺑﺎﻳﺘﻬﺎﻳﻲ ﻛﻪ ﺗﺎ ﻛﻨﻮن از ‪ FIFO‬ﺧﻮاﻧﺪه ﻧﺸﺪه اﻧﺪ ﺗﻮﺳﻂ‬ ‫‪14-7‬‬ ‫‪Rx_Fifo‬‬
‫‪Used Word‬‬
‫اﻳﻦ ‪ 8‬ﺑﻴﺖ ﻣﺸﺨﺺ ﻣﻲ ﺷﻮد‪.‬‬
‫دﻗﺖ ﻛﻨﻴﺪ ﻛﻪ ﻫﺮﮔﺎه ‪ FIFO‬ﺑﻪ ﻃﻮر ﻛﺎﻣﻞ ‪ FULL‬ﻣﻲ ﺷﻮد )‬
‫ﻳﻌﻨﻲ ‪ 256‬ﺑﺎﻳﺖ در آن ﻗﺮار ﻣﻲ ﮔﻴﺮد ( اﻳﻦ ‪ 8‬ﺑﻴﺖ ﻣﻘﺪار ﺻﻔﺮ‬
‫را ﻧﺸﺎن ﻣﻲ دﻫﺪ و در ﻋﻮض ﺑﻴﺖ‪ FIFO_Full‬ﻳﻚ ﻣﻲ ﺷﻮد‪.‬‬
‫ﺑﻨﺎﺑﺮ اﻳﻦ ﺑﺮاي ﻣﺸﺎﻫﺪه ﺻﺤﻴﺢ ﺗﻌﺪاد ﺑﻴﺘﻬﺎي درون ‪FIFO‬‬

‫ﻫﻤﻴﺸﻪ ﺑﻴﺖ ‪ 7‬ﺗﺎ ‪ ) 15‬ﺷﺎﻣﻞ ﺑﻴﺖ ‪ ( FIFO_Full‬را ﺑﺎ ﻫﻢ‬


‫ﻣﺸﺎﻫﺪه ﻛﻨﻴﺪ‪.‬‬
‫ﻧﻜﺘﻪ ﻣﻬﻢ ‪ :‬ﭼﻮن اﻳﻦ ﺑﻴﺘﻬﺎ در ﺑﺮﻧﺎﻣﻪ ﻫﺎ ‪ latch‬ﻧﺸﺪه‬
‫‪124‬‬ ‫ﺿﻤﻴﻤﻪ د‪ :‬ﻣﻌﺮﻓﻲ رﺟﻴﺴﺘﺮﻫﺎي ﻛﻴﻒ آزﻣﺎﻳﺸﮕﺎه)ﭘﻮرت ﺳﺮﻳﺎل (‬ ‫ارﺗﺒﺎﻃﺎت ﭘﻴﺸﺮو ﺧﺎورﻣﻴﺎﻧﻪ‬

‫اﺳﺖ‪ ،‬ﻣﻤﻜﻦ اﺳﺖ دﻗﻴﻘﺎ در ﻟﺤﻈﻪ ﺧﻮاﻧﺪه ﺷﺪن ﺗﻮﺳﻂ ‪، DSP‬‬


‫ﻣﻘﺪار آن در ﺣﺎل ﻋﻮض ﺷﺪن ﺑﺎﺷﺪ‪ ،‬و در ﻧﺘﻴﺠﻪ ﻋﺪدي ﻛﻪ‬
‫ﺗﻮﺳﻂ ‪ DSP‬ﺧﻮاﻧﺪه ﻣﻲ ﺷﻮد ﻣﻘﺪار ﻧﺎ درﺳﺘﻲ ﺑﺎﺷﺪ‪ .‬اﮔﺮ در‬
‫ﺑﺮﻧﺎﻣﻪ ﻫﺎ ﺑﻪ ﻃﻮر ﭘﺸﺖ ﺳﺮﻫﻢ از اﻳﻦ ﺑﻴﺘﻬﺎ ﺑﺨﻮاﻧﻴﺪ ﻣﻤﻜﻦ اﺳﺖ‬
‫ﻣﺜﻼ اﻧﺘﻈﺎر داﺷﺘﻪ ﺑﺎﺷﻴﺪ ﺑﻌﺪ از ﻋﺪد ‪ ، 10‬ﻋﺪد ‪ 11‬را در اﻳﻦ‬
‫ﺑﻴﺖ ﻫﺎ ﺑﺒﻴﻨﻴﺪ اﻣﺎ در ﻋﻤﻞ ﺑﺮاي ﺗﻨﻬﺎ ﻳﻜﻲ از ﺧﻮاﻧﺪﻧﻬﺎ) دﻗﻴﻘﺎ در‬
‫ﻫﻨﮕﺎم ﺗﻐﻴﻴﺮ ﻋﺪد از ‪ 10‬ﺑﻪ ‪ ( 11‬ﻳﻚ ﻋﺪد دﻳﮕﺮ ﺗﻮﺳﻂ ‪DSP‬‬

‫ﻗﺮاﺋﺖ ﺷﻮد‪.‬‬
‫ﻫﻨﮕﺎم ‪ Full‬ﺷﺪن ‪ FIFO‬ﻣﺴﻴﺮ ‪ Rx‬اﻳﻦ ﺑﻴﺖ ﻳﻚ ﻣﻲ ﺷﻮد‪.‬‬ ‫‪15‬‬ ‫‪Rx_Fifo‬‬
‫‪Full‬‬
‫ﺑﺮاي ﺧﻮاﻧﺪن ﺗﻌﺪاد واﻗﻌﻲ ‪ Used_WORD‬درون ‪ FIFO‬ﻫﻤﻴﺸﻪ ﺑﻴﺘﻬﺎي ‪ 7‬ﺗﺎ ‪ ) 15‬و ﻧﻪ‬
‫ﺑﻴﺘﻬﺎي ‪ 7‬ﺗﺎ ‪ (14‬را در ﺑﺮﻧﺎﻣﻪ ﺑﺨﻮاﻧﻴﺪ‪ .‬زﻳﺮا وﻗﺘﻲ ‪ FIFO‬ﺑﻪ ﺷﻜﻞ ﻛﺎﻣﻞ ﭘﺮ ﻣﻲ ﺷﻮد ) ‪ 256‬ﻋﺪد‬
‫اﻃﻼﻋﺎت در آن ﻗﺮار ﻣﻲ ﮔﻴﺮد ( ﻣﻘﺪار ﭘﺎراﻣﺘﺮ ‪ FIFO_Used_Word‬ﺑﺮاﺑﺮ ﺑﺎ ﺻﻔﺮ ﺷﺪه و در‬
‫ﻋﻮض ﺑﻴﺖ ‪ FIFO_Full‬ﻳﻚ ﻣﻲ ﺷﻮد‪.‬‬

You might also like