در قسمت قبل با کلیات gnuradio آشنا شدیم و توانستیم که در محیط گرافیکی اش (GUI) یک موج سینوسی تک تن در حوزه زمان و حوزه فرکانس نشان دهیم و آنرا بررسی کردیم. این نکته را هم گفتیم که زمان اجرای سیستم ساخته شده توسط gnuradio ابتدا بلوک های ساخته شده به برنامه های پایتون تبدیل و سپس اجرا میشود. بنابراین میتوانیم جدای نرم افزار ، در ترمینال لینوکس و با دستور python top_block.py بلوک ساخته شده را اجرا کنیم. در این قسمت میخواهیم به متغیر های پایتون در gnuradio بپردازیم و نحوه ویرایش و نوشتن آنها را یادبگیریم.
آشنایی با بلوک متغیر(variable)
بلوک متغیر در واقع شامل دو پارامتر میباشد اولی ID و دومی Value. توجه داشته باشید که با دابل کلیک برروی بلوک ها میتوانید تنظیمات مربوط به آنها را ویرایش کنید.
میتوانید با استفاده از فراخواندن نام قرار داده شده برای ID از مقدار قرار داده شده در Value در سایر بلوک ها استفاده کنید. این نکته هم مهم است که gnuradio تمامی متغیر ها را تبدیل به واحد SI میکند برای مثال:
اکنون gnuradio عدد 250 را در واحد SI به جای 0.25 نشان میدهد.
تعریف لیست متغیرها
متغیر ها در gnuradio میتوانند از لیست ها در پایتون استفاده کنند. به اینصورت که در هنگام تعریف آنها چندین نوع متغیر در کنار هم درون یک لیست قرار بگیرند چنانچه با لسیت متغیرها در پایتون آشنایی ندارید میتوانید به این لینک مراجعه کنید.
1 2 | listVariable = [0, 1, 2, 3] listComprehensionExample = [(i + 1) * 2 for i in listVariable] |
که لیست ها به اینصورت نمایش داده میشوند:
تغییر متغیر ها در زمان اجرا
برای اینکار میتوانید از بلوک QT GUI Range استفاده کنید که این بلوک در زمان اجرا سیستم یک slide bar گرافیک درست میکند که میتوانید برای آپدیت کردن متغیر ها از آن استفاده کنید.
با دابل کلیک بر روی بلوک مورد نظر و باز کردن تنظیمات آن مقادیر شروع(start value) ، پایان (stop value) ، پیش فرض (default value) را به مقادیر مشاهده شده در شکل زیر تغیر دهید. مقدار step هم به این معناست که هنگام تغییر فرکانس ، فرکانس با چه گامی تغییر کند.
بعد انجام تغییرات نوبت به اجرای سیستم میرسد که درخروجی چنین چیزی مشاهده میکنیم:
نوع داده های سیگنال (signal data types)
هر ورودی و خروجی در بلوک ها یک data type دارند که به آنها اختصاص داده شده اند. میتوانید در gnuradio تمامی آنها را در نوار ابزار help بخش types مشاهده کنید.
در data type از نوع مختلط مانند شکل زیر در زمان اجرا هم بخش موهومی و هم بخش حقیقی سیگنال ترسیم میشود.
ولی در data type از نوع float یا اعشاری تنها قسمت حقیقی سیگنال نمایش داده میشود.
خرید دانگل rtl-sdr
سلام ، فرق gnuradio با بخش simulink matlab چیه؟
سلام. بهتره در مورد شباهت هاشون صحبت کنیم تا تفاوت ها 🙂
به نظر تنها شباهتی که دارند اینه که در هر دو میشه به صورت بلوکی برنامه مورد نظر رو پیاده کرد.
و گرنه کاربرد ها و عملکرد و… هر دو خیلی با هم متفاوت هست و GNU Radio مخصوص کارهای مخابراتی هست.