fm_radio.grc 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545
  1. options:
  2. parameters:
  3. author: ''
  4. catch_exceptions: 'True'
  5. category: '[GRC Hier Blocks]'
  6. cmake_opt: ''
  7. comment: ''
  8. copyright: ''
  9. description: ''
  10. gen_cmake: 'On'
  11. gen_linking: dynamic
  12. generate_options: qt_gui
  13. hier_block_src_path: '.:'
  14. id: fm_radio
  15. max_nouts: '0'
  16. output_language: python
  17. placement: (0,0)
  18. qt_qss_theme: ''
  19. realtime_scheduling: ''
  20. run: 'True'
  21. run_command: '{python} -u {filename}'
  22. run_options: prompt
  23. sizing_mode: fixed
  24. thread_safe_setters: ''
  25. title: FM Radio Receiver
  26. window_size: ''
  27. states:
  28. bus_sink: false
  29. bus_source: false
  30. bus_structure: null
  31. coordinate: [32, 34]
  32. rotation: 0
  33. state: enabled
  34. blocks:
  35. - name: audio_sample_rate_hertz
  36. id: variable
  37. parameters:
  38. comment: ''
  39. value: '48000'
  40. states:
  41. bus_sink: false
  42. bus_source: false
  43. bus_structure: null
  44. coordinate: [1105, 404]
  45. rotation: 0
  46. state: true
  47. - name: channel_width_hertz
  48. id: variable
  49. parameters:
  50. comment: ''
  51. value: '250000'
  52. states:
  53. bus_sink: false
  54. bus_source: false
  55. bus_structure: null
  56. coordinate: [705, 156]
  57. rotation: 0
  58. state: true
  59. - name: frequency_mhz
  60. id: variable_qtgui_range
  61. parameters:
  62. comment: ''
  63. gui_hint: ''
  64. label: Frequency MHz
  65. min_len: '200'
  66. orient: QtCore.Qt.Horizontal
  67. rangeType: float
  68. start: '87.5'
  69. step: '0.1'
  70. stop: '108'
  71. value: '98.3'
  72. widget: counter_slider
  73. states:
  74. bus_sink: false
  75. bus_source: false
  76. bus_structure: null
  77. coordinate: [405, 36]
  78. rotation: 0
  79. state: true
  80. - name: samp_rate
  81. id: variable
  82. parameters:
  83. comment: ''
  84. value: '2560000'
  85. states:
  86. bus_sink: false
  87. bus_source: false
  88. bus_structure: null
  89. coordinate: [33, 182]
  90. rotation: 0
  91. state: enabled
  92. - name: analog_wfm_rcv_0
  93. id: analog_wfm_rcv
  94. parameters:
  95. affinity: ''
  96. alias: ''
  97. audio_decimation: '1'
  98. comment: ''
  99. maxoutbuf: '0'
  100. minoutbuf: '0'
  101. quad_rate: channel_width_hertz
  102. states:
  103. bus_sink: false
  104. bus_source: false
  105. bus_structure: null
  106. coordinate: [1100, 261]
  107. rotation: 0
  108. state: enabled
  109. - name: audio_sink_0
  110. id: audio_sink
  111. parameters:
  112. affinity: ''
  113. alias: ''
  114. comment: ''
  115. device_name: ''
  116. num_inputs: '1'
  117. ok_to_block: 'True'
  118. samp_rate: audio_sample_rate_hertz
  119. states:
  120. bus_sink: false
  121. bus_source: false
  122. bus_structure: null
  123. coordinate: [1156, 503]
  124. rotation: 180
  125. state: enabled
  126. - name: low_pass_filter_0
  127. id: low_pass_filter
  128. parameters:
  129. affinity: ''
  130. alias: ''
  131. beta: '6.76'
  132. comment: https://de.wikipedia.org/wiki/Datei:UKW-Rundfunk-Basisband.svg
  133. cutoff_freq: '100000'
  134. decim: int(samp_rate/channel_width_hertz)
  135. gain: '2'
  136. interp: '1'
  137. maxoutbuf: '0'
  138. minoutbuf: '0'
  139. samp_rate: samp_rate
  140. type: fir_filter_ccf
  141. width: '10000'
  142. win: window.WIN_KAISER
  143. states:
  144. bus_sink: false
  145. bus_source: false
  146. bus_structure: null
  147. coordinate: [669, 283]
  148. rotation: 0
  149. state: true
  150. - name: rational_resampler_xxx_0
  151. id: rational_resampler_xxx
  152. parameters:
  153. affinity: ''
  154. alias: ''
  155. comment: ''
  156. decim: channel_width_hertz
  157. fbw: '0'
  158. interp: audio_sample_rate_hertz
  159. maxoutbuf: '0'
  160. minoutbuf: '0'
  161. taps: ''
  162. type: fff
  163. states:
  164. bus_sink: false
  165. bus_source: false
  166. bus_structure: null
  167. coordinate: [1576, 292]
  168. rotation: 0
  169. state: true
  170. - name: rtlsdr_source_0
  171. id: rtlsdr_source
  172. parameters:
  173. affinity: ''
  174. alias: ''
  175. ant0: ''
  176. ant1: ''
  177. ant10: ''
  178. ant11: ''
  179. ant12: ''
  180. ant13: ''
  181. ant14: ''
  182. ant15: ''
  183. ant16: ''
  184. ant17: ''
  185. ant18: ''
  186. ant19: ''
  187. ant2: ''
  188. ant20: ''
  189. ant21: ''
  190. ant22: ''
  191. ant23: ''
  192. ant24: ''
  193. ant25: ''
  194. ant26: ''
  195. ant27: ''
  196. ant28: ''
  197. ant29: ''
  198. ant3: ''
  199. ant30: ''
  200. ant31: ''
  201. ant4: ''
  202. ant5: ''
  203. ant6: ''
  204. ant7: ''
  205. ant8: ''
  206. ant9: ''
  207. args: '""'
  208. bb_gain0: '20'
  209. bb_gain1: '20'
  210. bb_gain10: '20'
  211. bb_gain11: '20'
  212. bb_gain12: '20'
  213. bb_gain13: '20'
  214. bb_gain14: '20'
  215. bb_gain15: '20'
  216. bb_gain16: '20'
  217. bb_gain17: '20'
  218. bb_gain18: '20'
  219. bb_gain19: '20'
  220. bb_gain2: '20'
  221. bb_gain20: '20'
  222. bb_gain21: '20'
  223. bb_gain22: '20'
  224. bb_gain23: '20'
  225. bb_gain24: '20'
  226. bb_gain25: '20'
  227. bb_gain26: '20'
  228. bb_gain27: '20'
  229. bb_gain28: '20'
  230. bb_gain29: '20'
  231. bb_gain3: '20'
  232. bb_gain30: '20'
  233. bb_gain31: '20'
  234. bb_gain4: '20'
  235. bb_gain5: '20'
  236. bb_gain6: '20'
  237. bb_gain7: '20'
  238. bb_gain8: '20'
  239. bb_gain9: '20'
  240. bw0: '0'
  241. bw1: '0'
  242. bw10: '0'
  243. bw11: '0'
  244. bw12: '0'
  245. bw13: '0'
  246. bw14: '0'
  247. bw15: '0'
  248. bw16: '0'
  249. bw17: '0'
  250. bw18: '0'
  251. bw19: '0'
  252. bw2: '0'
  253. bw20: '0'
  254. bw21: '0'
  255. bw22: '0'
  256. bw23: '0'
  257. bw24: '0'
  258. bw25: '0'
  259. bw26: '0'
  260. bw27: '0'
  261. bw28: '0'
  262. bw29: '0'
  263. bw3: '0'
  264. bw30: '0'
  265. bw31: '0'
  266. bw4: '0'
  267. bw5: '0'
  268. bw6: '0'
  269. bw7: '0'
  270. bw8: '0'
  271. bw9: '0'
  272. clock_source0: ''
  273. clock_source1: ''
  274. clock_source2: ''
  275. clock_source3: ''
  276. clock_source4: ''
  277. clock_source5: ''
  278. clock_source6: ''
  279. clock_source7: ''
  280. comment: '> What is the RTL-SDRs sample rate?
  281. > The maximum sample rate is 3.2 MS/s (mega samples per second).
  282. > However, the RTL-SDR is unstable at this rate and may drop samples.
  283. > The maximum sample rate that does not drop samples is 2.56 MS/s, [...]
  284. https://www.rtl-sdr.com/about-rtl-sdr/'
  285. corr0: '0'
  286. corr1: '0'
  287. corr10: '0'
  288. corr11: '0'
  289. corr12: '0'
  290. corr13: '0'
  291. corr14: '0'
  292. corr15: '0'
  293. corr16: '0'
  294. corr17: '0'
  295. corr18: '0'
  296. corr19: '0'
  297. corr2: '0'
  298. corr20: '0'
  299. corr21: '0'
  300. corr22: '0'
  301. corr23: '0'
  302. corr24: '0'
  303. corr25: '0'
  304. corr26: '0'
  305. corr27: '0'
  306. corr28: '0'
  307. corr29: '0'
  308. corr3: '0'
  309. corr30: '0'
  310. corr31: '0'
  311. corr4: '0'
  312. corr5: '0'
  313. corr6: '0'
  314. corr7: '0'
  315. corr8: '0'
  316. corr9: '0'
  317. dc_offset_mode0: '0'
  318. dc_offset_mode1: '0'
  319. dc_offset_mode10: '0'
  320. dc_offset_mode11: '0'
  321. dc_offset_mode12: '0'
  322. dc_offset_mode13: '0'
  323. dc_offset_mode14: '0'
  324. dc_offset_mode15: '0'
  325. dc_offset_mode16: '0'
  326. dc_offset_mode17: '0'
  327. dc_offset_mode18: '0'
  328. dc_offset_mode19: '0'
  329. dc_offset_mode2: '0'
  330. dc_offset_mode20: '0'
  331. dc_offset_mode21: '0'
  332. dc_offset_mode22: '0'
  333. dc_offset_mode23: '0'
  334. dc_offset_mode24: '0'
  335. dc_offset_mode25: '0'
  336. dc_offset_mode26: '0'
  337. dc_offset_mode27: '0'
  338. dc_offset_mode28: '0'
  339. dc_offset_mode29: '0'
  340. dc_offset_mode3: '0'
  341. dc_offset_mode30: '0'
  342. dc_offset_mode31: '0'
  343. dc_offset_mode4: '0'
  344. dc_offset_mode5: '0'
  345. dc_offset_mode6: '0'
  346. dc_offset_mode7: '0'
  347. dc_offset_mode8: '0'
  348. dc_offset_mode9: '0'
  349. freq0: frequency_mhz*1e6
  350. freq1: 100e6
  351. freq10: 100e6
  352. freq11: 100e6
  353. freq12: 100e6
  354. freq13: 100e6
  355. freq14: 100e6
  356. freq15: 100e6
  357. freq16: 100e6
  358. freq17: 100e6
  359. freq18: 100e6
  360. freq19: 100e6
  361. freq2: 100e6
  362. freq20: 100e6
  363. freq21: 100e6
  364. freq22: 100e6
  365. freq23: 100e6
  366. freq24: 100e6
  367. freq25: 100e6
  368. freq26: 100e6
  369. freq27: 100e6
  370. freq28: 100e6
  371. freq29: 100e6
  372. freq3: 100e6
  373. freq30: 100e6
  374. freq31: 100e6
  375. freq4: 100e6
  376. freq5: 100e6
  377. freq6: 100e6
  378. freq7: 100e6
  379. freq8: 100e6
  380. freq9: 100e6
  381. gain0: '20'
  382. gain1: '10'
  383. gain10: '10'
  384. gain11: '10'
  385. gain12: '10'
  386. gain13: '10'
  387. gain14: '10'
  388. gain15: '10'
  389. gain16: '10'
  390. gain17: '10'
  391. gain18: '10'
  392. gain19: '10'
  393. gain2: '10'
  394. gain20: '10'
  395. gain21: '10'
  396. gain22: '10'
  397. gain23: '10'
  398. gain24: '10'
  399. gain25: '10'
  400. gain26: '10'
  401. gain27: '10'
  402. gain28: '10'
  403. gain29: '10'
  404. gain3: '10'
  405. gain30: '10'
  406. gain31: '10'
  407. gain4: '10'
  408. gain5: '10'
  409. gain6: '10'
  410. gain7: '10'
  411. gain8: '10'
  412. gain9: '10'
  413. gain_mode0: 'False'
  414. gain_mode1: 'False'
  415. gain_mode10: 'False'
  416. gain_mode11: 'False'
  417. gain_mode12: 'False'
  418. gain_mode13: 'False'
  419. gain_mode14: 'False'
  420. gain_mode15: 'False'
  421. gain_mode16: 'False'
  422. gain_mode17: 'False'
  423. gain_mode18: 'False'
  424. gain_mode19: 'False'
  425. gain_mode2: 'False'
  426. gain_mode20: 'False'
  427. gain_mode21: 'False'
  428. gain_mode22: 'False'
  429. gain_mode23: 'False'
  430. gain_mode24: 'False'
  431. gain_mode25: 'False'
  432. gain_mode26: 'False'
  433. gain_mode27: 'False'
  434. gain_mode28: 'False'
  435. gain_mode29: 'False'
  436. gain_mode3: 'False'
  437. gain_mode30: 'False'
  438. gain_mode31: 'False'
  439. gain_mode4: 'False'
  440. gain_mode5: 'False'
  441. gain_mode6: 'False'
  442. gain_mode7: 'False'
  443. gain_mode8: 'False'
  444. gain_mode9: 'False'
  445. if_gain0: '20'
  446. if_gain1: '20'
  447. if_gain10: '20'
  448. if_gain11: '20'
  449. if_gain12: '20'
  450. if_gain13: '20'
  451. if_gain14: '20'
  452. if_gain15: '20'
  453. if_gain16: '20'
  454. if_gain17: '20'
  455. if_gain18: '20'
  456. if_gain19: '20'
  457. if_gain2: '20'
  458. if_gain20: '20'
  459. if_gain21: '20'
  460. if_gain22: '20'
  461. if_gain23: '20'
  462. if_gain24: '20'
  463. if_gain25: '20'
  464. if_gain26: '20'
  465. if_gain27: '20'
  466. if_gain28: '20'
  467. if_gain29: '20'
  468. if_gain3: '20'
  469. if_gain30: '20'
  470. if_gain31: '20'
  471. if_gain4: '20'
  472. if_gain5: '20'
  473. if_gain6: '20'
  474. if_gain7: '20'
  475. if_gain8: '20'
  476. if_gain9: '20'
  477. iq_balance_mode0: '0'
  478. iq_balance_mode1: '0'
  479. iq_balance_mode10: '0'
  480. iq_balance_mode11: '0'
  481. iq_balance_mode12: '0'
  482. iq_balance_mode13: '0'
  483. iq_balance_mode14: '0'
  484. iq_balance_mode15: '0'
  485. iq_balance_mode16: '0'
  486. iq_balance_mode17: '0'
  487. iq_balance_mode18: '0'
  488. iq_balance_mode19: '0'
  489. iq_balance_mode2: '0'
  490. iq_balance_mode20: '0'
  491. iq_balance_mode21: '0'
  492. iq_balance_mode22: '0'
  493. iq_balance_mode23: '0'
  494. iq_balance_mode24: '0'
  495. iq_balance_mode25: '0'
  496. iq_balance_mode26: '0'
  497. iq_balance_mode27: '0'
  498. iq_balance_mode28: '0'
  499. iq_balance_mode29: '0'
  500. iq_balance_mode3: '0'
  501. iq_balance_mode30: '0'
  502. iq_balance_mode31: '0'
  503. iq_balance_mode4: '0'
  504. iq_balance_mode5: '0'
  505. iq_balance_mode6: '0'
  506. iq_balance_mode7: '0'
  507. iq_balance_mode8: '0'
  508. iq_balance_mode9: '0'
  509. maxoutbuf: '0'
  510. minoutbuf: '0'
  511. nchan: '1'
  512. num_mboards: '1'
  513. sample_rate: samp_rate
  514. sync: sync
  515. time_source0: ''
  516. time_source1: ''
  517. time_source2: ''
  518. time_source3: ''
  519. time_source4: ''
  520. time_source5: ''
  521. time_source6: ''
  522. time_source7: ''
  523. type: fc32
  524. states:
  525. bus_sink: false
  526. bus_source: false
  527. bus_structure: null
  528. coordinate: [31, 290]
  529. rotation: 0
  530. state: true
  531. connections:
  532. - [analog_wfm_rcv_0, '0', rational_resampler_xxx_0, '0']
  533. - [low_pass_filter_0, '0', analog_wfm_rcv_0, '0']
  534. - [rational_resampler_xxx_0, '0', audio_sink_0, '0']
  535. - [rtlsdr_source_0, '0', low_pass_filter_0, '0']
  536. metadata:
  537. file_format: 1
  538. grc_version: 3.10.5.1