و نکتهای که وجود دارد باید این مقدار را به خاطر اینکه مدولاسیون Bpsk میباشد تقسیم بر 2 کرد. اکنون فرض کنید index شماره صفر انتخاب شده است:
بنابراین افست فرکانسی برابر با صفر میباشد.
و اگر 1 انتخاب شود برابر با 488 هرتز میباشد.
بنابراین اگر از index شماره صفر به index شماره یک انتقال پیدا کنیم به یک بار افست فرکانسی 488 هرتز تغییر میکند.
فرض کنید افست فرکانسی واقعی برابر با 200 هرتز میباشد و به علت اینکه این مقدار به صفر نزدیک میباشد مقدار افست فرکانسی تخمین زده شده برابر با صفر در نظر گرفته شده است.
اکنون فرض کنید به علت گرم شدن اسلاتور فرستنده و گیرنده و یا حتی doppler و یا حتی نویز موجود در الگوریتم، افست فرکانسی به آرامی تغییر میکند و به حدود 250 هرتز میرسد در این صورت افست فرکانسی که ما در مرحله بعد تخمین میزنیم برابر با 488 هرتز است.
وقتی این اتفاق میافتد به یک باره افست فرکانسی تغییر میکند و در نتیجه سایر بلوکهای synchronization که با PLL کار میکنند مانند timing recovery و carrier recovery و ... واگر شده و به زمان نیاز دارند که دوباره Lock شوند.
برای جلوگیری از این کار در مرجع زیر دو روش پیشنهاد شده است که یکی از این روشها استفاده #ازفیلتریاستکهازتخمینهایبهدستآمدهدرطولزمانمیانگینگیریکند.
مرجع:
Software-Defined Radio for Engineers
و در نهایت داریم:
https://eitaa.com/SDR_one
به نام خدا
سلام وقت همگی بخیر در آپارت یک سیر ویدیو وجود داشت که در آن به مدولاسیونهای آنالوگ پرداخته بودیم و تا قسمت 11 ادامه داشت.
اکنون بعد از مدتهای قسمت 12 و 13 در آپارت بارگذاری شدند لینک قسمت 12 در زیر آمده است:
https://www.aparat.com/v/fekpqx3
نکته این ویدیوها نیز در کانال تلگرام نیز قرار گرفته است:
https://t.me/SDR_two
https://t.me/Engilandacademy
در این دو قسمت به موضوعات زیر پرداخته شده است:
به موضوع مدولاسیونهای QPSK و BPSK، موضوع Bit rate و symbol rate و samples per symbols و ...
https://eitaa.com/SDR_one
python-gps-receiver-main.zip
حجم:
1.1M
به نام خدا
سلام وقت همگی بخیر
در این کد به صورت خیلی ساده به موضوع گیرنده gps پرداخته است این کد به نظرم خیلی جالبه چون خودم هم مقداری خوندمش.
نکته مهم این است که حتما نباید از داده های GPS استفاده کنید میتونیم از این کد برای گیرنده DSSS استفاده کنیم. و برای فهم گیرنده DS به شدت توصیه میشود.
https://eitaa.com/SDR_one
به نام خدا
سلام وقت همگی بخیر
در ادامه جلسات مخابرات دیجیتال در gnu radio به موضوع pulse shaping پرداخته شده است pulse shaping مورد استفاده square root raised cosine میباشد و سپس نحوه به دست آوردن پهنای باند آن.
در ادامه تیز مقایسهای بین pulse مستطیلی و square root raised cosine شده است.
لینک جلسه 14 و 15 به صورت زیر میباشد:
https://www.aparat.com/v/hstq5rz?refererRef=channel_page
https://www.aparat.com/v/fada46s
به خاطر کیفیت بد صدا عذرخواهم.
https://eitaa.com/sdr_one
به نام خدا
سلام وقت همگی بخیر
اما امروز داشتم با دقت به موضوع Direct sequence spread spectrum توجه میکردم بعد از این افست فرکانسی درشت تخمین زده شد، صد در صد ما یک خطا داریم .
من رفتم و بیت اولم رو despread کردم اما با چنین صحنه ای روبه رو شدم یعنی شکل بالا به جای شکل پایین.
اما قبلا این رو میدونستم که #هرچهزمانبگذرهاینCFOباقیماندهرویهمجمعمیشوند و این جا دقیقا به چشم دیدم تجمع این خطاها رو. و این تجمع خطاها باعث شده که قسمت موهومی به جای اینکه صفر باشه به تدریج مقدارش زیاد بشه.
و قسمت حقیقی هم به جای اینکه منفی یک باشه مقدارش به تدریج کم میشه.
این نیاز به یک بلوک carrier recovery را نشان میدهد که بر مبنای PLL است.
https://eitaa.com/sdr_one
DSSS.py
حجم:
6.8K
به نام خدا
سلام وقت همگی بخیر
در این قسمت به موضوع تکنیک مدولاسیون direct sequence spread spectrum پرداختهایم. در جلسات گذشته این تکنیک را به صورت غیر استاندارد به صورت عملی پیادهسازی کردهایم. تقریبا مانند الگوریتم دریافت داده در GPS. در ادامه لینک ویدیو در آپارات آمده است:
https://www.aparat.com/v/reod731
ولی در این قسمت و در قسمتهای اینده قصد داریم این تکنیک را به صورت استاندارد پیادهسازی کنیم.
در این قسمت ابتدا از شبیهسازی شروع کردهایم و بعد از این که فرستنده پیادهسازی شد به موضوع گیرنده ورود پیدا کردیم.
در گیرنده ابتدا در قسمت Acquisition با استفاده از FFT و IFFT افست فرکانسی و افست code phase به دست اوریم.
در ادامه نیز وارد tracking شدیم اما به صورت کامل توضیح داده نشده است زیرا هنوز خودم کامل نتونستم آن را پیادهسازی کنم.
مراجعه استفاده شده:
https://github.com/justkow/python-gps-receiver/blob/main/acquisition_and_tracking.py
https://github.com/archity/GPS-Receiver
#قسمتهشتم: پیادهسازی direct sequence spread spectrum در پایتون
و در نهایت
https://eitaa.com/SDR_one
final_DSSS.zip
حجم:
15.3K
به نام خدا سلام وقت همگی بخیر
پیش نمایش لینک direct sequence spread spectrum قرار داده شد در این قسمت در SNR پایین تونستیم جواب بگیریم.
https://www.aparat.com/v/wqoev6z
البته ان شاءالله در جلسههای آینده بیشتر دربارهی خود پیادهسازی صحبت میکنیم و ان شاءالله در اینده بتونیم این لینک رو تقویت و قوی کنیم.
#قسمتنهم: پیادهسازی direct sequence spread spectrum در پایتون
فایل پیادهسازی در قسمت نظرات قرار گرفته است
و در نهایت
https://eitaa.com/SDR_one
به نام خدا
سلام وقت همگی بخیر
کد زیر مربوط به timing recovery میباشد که برای مدولاسیون BPSK نوشته شده است برای نوشتن کد زیر از مرجع زیر استفاده شده است:
https://github.com/igorauad/symbol_timing_sync
این کد از الگوریتم Timing error detector، گاردنر و early-late به همراه interpolator یا به عبارتی درون یاب cubic استفاده میکند.
چند نکته در این کدها افست فرکانسی و زمانی اضافه شده است ولی در گیرنده فقط خروجی بعد از timing recovery مورد بررسی قرار گرفته است.
https://eitaa.com/SDR_one
به نام خدا
سلام وقت بخیر با توجه به پست قبلی و کد ارائه شده دربارهی timing recovery چند نکته وجود داشت وقتی که افست فرکانسی وجود ندارد همانطور که میبینید داده به درستی decode میشود.
اما وقتی که افست فرکانسی وجود دارد هر چند کم مثلا در این مثال 600 هرتز این افست مقدارش تغییر نمیکند ولی به تدریج باعث میشود فاز سیگنال به صورت خطی تغییر کند.
و اگر نگاه کنید در انجایی که داده ها به درستی decode نشدهاند داری یک الگوریتم مشخص هستند و آن این است که بیتهای decode شده دقیقا عکس بیت های اصلی هستند.
من نظرم این است که این تغییر فاز وقتی به 180 درجه میرسد این اتفاق میافتد الیته این نتیجه گیری رو خودم گرفتم و ممکن است اشتباه باشه و اگه کسی دلیلش رو میدونه ممنون میشم کمکم کنه تا دلیل اصلیش رو بدونم.
https://eitaa.com/SDR_one