=NLSST
BLOCK
۴۹
ICOUNT
=۴
BLOCK 50
(ORDER 1 TO 10)
COPY
ATMP[2:11] TO APF[2:11]
BLOCK 50
(ORDER 11 TO 50)
GTMP[1]=GSTATE[4]
GTMP[2]=GSTATE[3] GTMP[3]=GSTATE[2]
GTMP[4]=GSTATE[1]
BLOCK 43
ICOUNT
=۱
BLOCK
۴۴
RETURN TO
MAIN-LOOP
شکل(۴-۴): روندنمای دیکدر(ادامه)
فصل۵
پیاده سازی الگوریتم بر رویDSP
۵-۱- مقدمه
پس از شبیه سازی الگوریتم کدک G.728 به زبان C ، نوبت به انتخاب DSP و پیاده سازی برنامه برروی آن می رسد . در این فصل ابتدا مروری بر نحوه پیاده سازی بلادرنگ داریم . سپس به معرفی DSP های سری TMS می پردازیم. در قسمت بعدی نحوه برنامه نویسی TMS و تبدیل کد برنامه از زبان C به زبان اسمبلی TMS و بهینه سازی آن را به منظور پیاده سازی بی درنگ شرح می دهیم .
۵-۲- مروری بر پیاده سازی بلادرنگ
یک پروسه بلادرنگ ، فرآیندی است که باید در زمان مشخص انجام پذیرد . این حد زمانی ممکن است از مرتبه ۲۰۰us تا حدود۲۰ ms برسد . در کدینگ صحبت با فرض نرخ نمونه برداری ۸ khz، برای کدری که بصورت نمونه به نمونه کارمی کند ، پردازش بلادرنگ باید در زمان ۰.۱۲۵ ms انجام شود . اما در کدرهای جدید مانند کدک CELP ، فرایند کدینگ ، بصورت بلوکی و با طول بلوک اصلی در حدود ۲۰-۳۰ ms ( فریم اصلی ) و طول بلوک فرعی ۴-۸ ms ( فریم فرعی ) صورت می گیرد که باعث افزایش محدودیت زمانی مجاز می شود .
به موازات پیشرفت در الگوریتم های کدینگ صحبت ، تکنولوژی پردازنده های DSP هم در چند سال اخیر پیشرفت زیادی داشته و با بهره گرفتن از DSP های قدرتمند ممیز ثابت[۳۰] و ممیز شناور[۳۱] ، امکان پیاده سازی بلادرنگ الگوریتم های صحبت بسیار پیچیده همچون CELP فراهم شده است DSP های ممیز ثابت ارزانتر هستند ولی از نظر برنامه نویسی مشکل تر می باشند . هرچند که از نظر قیمت ،استفاده از یک DSP ممیز ثابت بهتر به نظر می رسد اما طراحی یک نسخه ممیز ثابت از یک الگوریتم کدینگ صحبت که ممیز شناور است کاری دشوار و گاهی غیر ممکن می باشد زیرا باید اثرات مقیاس کردن ، نرمالیزه کردن و سرریز شدن را در نظر گرفت.
دو عامل مهم در انتخاب DSP جهت پیاده سازی الگوریتم کدینگ صحبت عبارتند از سیکل زمانی دستور العمل DSP (سرعت محاسبه )و مناسب بودن دستورالعملهای آن برای پردازش بلوک های اصلی آن الگوریتم . بعنوان مثال در الگوریتم کدینگ CELP بیشتر زمان پردازش DSP با دستوراتی به شکل MAC (ضرب و انباشت ) گرفته می شود. برای چنین الگوریتمی DSP هایی که این کار را در یک سیکل دستوالعمل انجام دهند مناسب خواهند بود.
۵-۳-چیپ های DSP
DSP های برنامه پذیر با توجه به دقت و عملیات حسابی به دو گروه ممیز ثابت و ممیزشناور دسته بندی می شوند . DSP های ممیز ثابت سریعتر و ارزانتر هستند ولی از نظر برنامه نویسی مشکل تربوده و دقت پایین تری را فراهم می سازند . امتیاز های پیاده سازی ممیز شناور بر پیاده سازی ممیز ثابت زیاد است . دقت در اعداد ممیز شناور بخاطر نرمالیزه شدن اتوماتیک مانتیس بوسیله پردازنده در طول برنامه ثابت می ماند . در حالیکه دقت داده های ممیز ثابت، بسته به اندازه ذخیره سازی آن داده پس از عملیات روی آن، تغییر می کند . بخاطر نرمالیزه شدن اتوماتیک مانتیس در DSP های ممیز شناور ، رند کردن و بریدن اعداد ، خطای کلی کمتری نسبت به ممیز ثابت بوجود می آورد . همچنین دقت ثابت بهمراه توانایی نمایش اعداد خیلی بزرگ یا خیلی کوچک ، باعث می شود مشکلاتی که در پیاده سازی فیلترها از نظر فاصله مکان صفرها و قطب ها وجود دارد ، برطرف گردد.
همانطور که در شکل(۵-۱) دیده می شود ، رنج دینامیکی وسیع در DSP های ممیز شناور اجازه می دهد که اعداد خیلی کوچک و خیلی بزرگ با دقت بالا نمایش داده شوند [۵] . این بخصوص در محاسبات میانی FFT ها و فیلتر های بازگشتی مرتبه بالا لازم می شود . همچنین رنج دینامیکی وسیع موجب حذف نیاز مقیاس کردن میانی در DSP های ممیز ثابت ، جهت جلوگیری
از سرریز شدن داده، می گردد. از این رو استفاده از DSP های ممیزشناور ، باعث کاهش اندازه و پیچیدگی برنامه می شود بعلاوه اغلب الگوریتم های DSP ابتدا بر روی کامپیوتر های شخصی و با بهره گرفتن از امکانات ممیز شناور شبیه سازی می شوند و در صورت استفاده از DSP های ممیز شناور نیاز به شبیه سازی مجدد ممیز ثابت این الگوریتم ها بر طرف می گردد .
شکل ( ۵-۱ ) . رنج دینامیک در DSP های ممیز ثابت و ممیز شناور
۵-۳-۱-DSP های ممیزثابت
در DSP های ممیز ثابت باید توجه خاصی به سرریز شدن و مقیاس کردن داده ها نمود . از طریق چک کردن اعداد و مقیاس کردن مناسب آنها می توان به دقت یکنواختی در تمام پیاده سازی دست یافت ، کاهش دقت اغلب در هنگام ضرب دو عدد رخ می دهد چرا که تعداد بیت لازم برای نمایش حاصلضرب برابر مجموع بیت های آن دو عدد می باشد . این بیت های اضافی باعث از دست رفتن اطلاعات می شود و بایستی حاصلضرب را با دقت مضاعف ذخیره نمود . در برخی از DSP ها سرریز شدن (overflow) بسادگی با قرار دادن نتیجه برابربا بزرگترین عدد مثبت یا منقی قابل نمایش در DSP ، کنترل می شود . ولی معمولا برای اینکه کنترل بهتری روی الگوریتم وکاهش خطای آن داشته باشیم بایستی قبل از جمع کردن، حاصلضرب را به اندازه مناسب به سمت راست شیفت دهیم تا از سرریز شدن آکومولاتور جلوگیری شود .
۵-۳-۳- مروری بر DSP های خانواده TMS320
شرکت TI بعنوان پیشرو در بازار DSP ، اولین چیپ DSP را در سال۱۹۸۲ معرفی نمود. خانواده TMS320 در حال حاضر به سه گروه اصلی C2000,C5000,C6000 تقسیم بندی می شوند[۱۶] .
گروه TMS320C6000 از نظر عملکرد و سرعت و راحتی استفاده برای برنامه نویسی سطح بالا بهینه شده اند.این گروه به نسل های ممیز ثابت C64X,C62X و ممیز شناورC67X تقسیم می شوند.
گروه TMS320C5000 از نظر عملکرد و مخصوصا توان مصرفی بهینه شده اند و برای کاربردهای موبایل و اینترنت که مشکل باتری دارند بسیار مناسب هستند.این گروه شامل دو نسل ممیز ثابت C55X,C54X می باشد.
گروه TMS320C 2000 برای کاربردهای کنترل دیجیتال در نظر گرفته شده و شامل دو نسل C28X,C24X می باشند.
در شکل زیر نمودار DSP های خانواده TMS320 نشان داده شده است.
شکل(۵-۲) : DSP های خانواده TMS320
۵-۳-۳-۱-معرفی سری TMS320C54X
DSP های سری C54X دارای سرعت و قابلیت عملیاتی بالایی هستند واز یک معماری باس پیشرفته ، CPU با سخت افزار مناسب کاربردهای خاص ، حافظه و ادوات جانبی on-chip و دستورالعمل های ویژه استفاده می کنند.
ویزگی های C54x:
معماری پیشرفته چند باسه با یک باس برنامه ، ۳ باس داده و۴ باس آدرس
واحد محاسبه و منطق (ALU) 40 بیتی و دو آکومولاتور ۴۰ بیتی جداگانه
ضرب کننده موازی برای عملیات ضرب/ انباشت (MAC) تک سیکلی بدون pipeline
فضای حافظه آدرس پذیر ۱۶ بیتی( , ۶۴ kword Data , 64 kword Program ( 64 kword I/O
در جدول (۵-۱) مشخصات حافظه DSP های C54x ( به kword ) نشان داده شده است[۱۲].
جدول (۵-۱)
کاربردهای زیررا می توان برای سری C54X در نظر گرفت:
راهنمای نگارش مقاله درباره پیاده سازی بلادرنگ کدک صحبت استاندارد G.728 بر روی ...