├── ANTSDR开发手册-GNU Radio篇.pdf ├── Chapter10_DVBS ├── MPEG2-lalinea.ts └── dvbs_tx.grc ├── Chapter11_DVBS_WebCam ├── datv_text.txt ├── dvbs_tx.grc └── ffmpeg-start.sh ├── Chapter1_Intr ├── lab1_tone.grc ├── lab2_signal_control.grc └── lab3_antsdr_tone.grc ├── Chapter2_Filter ├── lab1_lowpass_filter.grc ├── lab2_high_pass.grc └── lab3_rrc_filter.grc ├── Chapter3_Tag_Message ├── lab1_stream_tag.grc ├── lab2_message_pass.grc └── lab3_frame_sync.grc ├── Chapter4_AM ├── lab1_am_dsb_tc.grc ├── lab2_am_dsb_tc_antsdr.grc ├── lab3_am_envelope_demod.grc └── lab4_am_envelope_demod_antsdr.grc ├── Chapter5_FM ├── lab1_wfm.grc ├── lab2_fm_transmitter.grc ├── lab3_fm_demod.grc ├── lab4_wfm_receiver.grc └── lab5_fm_receiver.grc ├── Chapter6_ASK ├── image_out.png ├── image_src.png ├── lab1_ask_mod.grc ├── lab2_ask_demod.grc ├── lab3_ask_file.grc ├── lab4_ask_antsdr.grc ├── text.txt └── text_out.txt ├── Chapter7_BPSK ├── lab1_bpsk_mod.grc ├── lab2_bpsk_demod.grc ├── lab3_bpsk_text.grc ├── lab4_bpsk_antsdr.grc ├── text.txt └── text_out.txt ├── Chapter8_QPSK ├── lab1_qpsk_mod_demod.grc ├── lab2_qpsk_text.grc ├── lab3_qpsk_antsdr.grc ├── text.txt └── text_out.txt ├── Chapter9_FSK ├── lab1_fsk_mod.grc ├── lab2_fsk_mod_demod.grc └── lab3_fsk_antsdr.grc └── README.md /ANTSDR开发手册-GNU Radio篇.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MicroPhase/gnu-radio-demo/d3b6d475158c4a42fd7102af88a4dbe0dc444a39/ANTSDR开发手册-GNU Radio篇.pdf -------------------------------------------------------------------------------- /Chapter10_DVBS/MPEG2-lalinea.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MicroPhase/gnu-radio-demo/d3b6d475158c4a42fd7102af88a4dbe0dc444a39/Chapter10_DVBS/MPEG2-lalinea.ts -------------------------------------------------------------------------------- /Chapter11_DVBS_WebCam/datv_text.txt: -------------------------------------------------------------------------------- 1 | MicroPhase!!! 2 | -------------------------------------------------------------------------------- /Chapter11_DVBS_WebCam/ffmpeg-start.sh: -------------------------------------------------------------------------------- 1 | # Edit this file modify path to audio and TX (for OSD) file, change CALLSIGN 2 | 3 | AUDIOFILE=/home/wcc/GNU_Radio/Lab/source_audio/music1_mono48kHz.wav 4 | TEXTFILE=/home/wcc/GNU_Radio/Lab/source_audio/datv_text.txt 5 | CALLSIGN=Microphase 6 | 7 | ffmpeg -r 15 -i '/dev/video0' -i $AUDIOFILE -acodec mp2 -f mpegts -b:v 0.2M -s 320x240 \ 8 | -vf "drawtext=textfile=$TEXTFILE:x=60:y=34:fontsize=40:shadowx=3:shadowy=3:fontcolor=red:shadowcolor=white" \ 9 | -b:a 128k -ar 44100 -ac 2 -af asetpts=N/SR/TB \ 10 | -mpegts_service_id 1 -metadata service_provider=$CALLSIGN -metadata service_name=$CALLSIGN \ 11 | -r 15 -ignore_unknown -pix_fmt yuv420p udp://127.0.0.1:58000 12 | 13 | -------------------------------------------------------------------------------- /Chapter1_Intr/lab1_tone.grc: -------------------------------------------------------------------------------- 1 | options: 2 | parameters: 3 | author: wcc 4 | category: '[GRC Hier Blocks]' 5 | cmake_opt: '' 6 | comment: '' 7 | copyright: mircophase 8 | description: gnu radio example 9 | gen_cmake: 'On' 10 | gen_linking: dynamic 11 | generate_options: qt_gui 12 | hier_block_src_path: '.:' 13 | id: lab1_tone 14 | max_nouts: '0' 15 | output_language: python 16 | placement: (0,0) 17 | qt_qss_theme: '' 18 | realtime_scheduling: '' 19 | run: 'True' 20 | run_command: '{python} -u {filename}' 21 | run_options: prompt 22 | sizing_mode: fixed 23 | thread_safe_setters: '' 24 | title: lab1_tone 25 | window_size: '' 26 | states: 27 | bus_sink: false 28 | bus_source: false 29 | bus_structure: null 30 | coordinate: [10, 5] 31 | rotation: 0 32 | state: enabled 33 | 34 | blocks: 35 | - name: samp_rate 36 | id: variable 37 | parameters: 38 | comment: '' 39 | value: '32000' 40 | states: 41 | bus_sink: false 42 | bus_source: false 43 | bus_structure: null 44 | coordinate: [176, 8] 45 | rotation: 0 46 | state: enabled 47 | - name: analog_sig_source_x_0 48 | id: analog_sig_source_x 49 | parameters: 50 | affinity: '' 51 | alias: '' 52 | amp: '1' 53 | comment: '' 54 | freq: '1000' 55 | maxoutbuf: '0' 56 | minoutbuf: '0' 57 | offset: '0' 58 | phase: '0' 59 | samp_rate: samp_rate 60 | type: float 61 | waveform: analog.GR_COS_WAVE 62 | states: 63 | bus_sink: false 64 | bus_source: false 65 | bus_structure: null 66 | coordinate: [275, 132] 67 | rotation: 0 68 | state: true 69 | - name: blocks_throttle_0 70 | id: blocks_throttle 71 | parameters: 72 | affinity: '' 73 | alias: '' 74 | comment: '' 75 | ignoretag: 'True' 76 | maxoutbuf: '0' 77 | minoutbuf: '0' 78 | samples_per_second: samp_rate 79 | type: float 80 | vlen: '1' 81 | states: 82 | bus_sink: false 83 | bus_source: false 84 | bus_structure: null 85 | coordinate: [529, 176] 86 | rotation: 0 87 | state: true 88 | - name: qtgui_freq_sink_x_0 89 | id: qtgui_freq_sink_x 90 | parameters: 91 | affinity: '' 92 | alias: '' 93 | alpha1: '1.0' 94 | alpha10: '1.0' 95 | alpha2: '1.0' 96 | alpha3: '1.0' 97 | alpha4: '1.0' 98 | alpha5: '1.0' 99 | alpha6: '1.0' 100 | alpha7: '1.0' 101 | alpha8: '1.0' 102 | alpha9: '1.0' 103 | autoscale: 'True' 104 | average: '1.0' 105 | axislabels: 'True' 106 | bw: samp_rate 107 | color1: '"blue"' 108 | color10: '"dark blue"' 109 | color2: '"red"' 110 | color3: '"green"' 111 | color4: '"black"' 112 | color5: '"cyan"' 113 | color6: '"magenta"' 114 | color7: '"yellow"' 115 | color8: '"dark red"' 116 | color9: '"dark green"' 117 | comment: '' 118 | ctrlpanel: 'False' 119 | fc: '0' 120 | fftsize: '1024' 121 | freqhalf: 'True' 122 | grid: 'False' 123 | gui_hint: '' 124 | label: Relative Gain 125 | label1: '' 126 | label10: '''''' 127 | label2: '''''' 128 | label3: '''''' 129 | label4: '''''' 130 | label5: '''''' 131 | label6: '''''' 132 | label7: '''''' 133 | label8: '''''' 134 | label9: '''''' 135 | legend: 'True' 136 | maxoutbuf: '0' 137 | minoutbuf: '0' 138 | name: '"spectrum"' 139 | nconnections: '1' 140 | showports: 'False' 141 | tr_chan: '0' 142 | tr_level: '0.0' 143 | tr_mode: qtgui.TRIG_MODE_FREE 144 | tr_tag: '""' 145 | type: float 146 | units: dB 147 | update_time: '0.10' 148 | width1: '1' 149 | width10: '1' 150 | width2: '1' 151 | width3: '1' 152 | width4: '1' 153 | width5: '1' 154 | width6: '1' 155 | width7: '1' 156 | width8: '1' 157 | width9: '1' 158 | wintype: firdes.WIN_BLACKMAN_hARRIS 159 | ymax: '10' 160 | ymin: '-140' 161 | states: 162 | bus_sink: false 163 | bus_source: false 164 | bus_structure: null 165 | coordinate: [749, 266] 166 | rotation: 0 167 | state: true 168 | - name: qtgui_time_sink_x_0 169 | id: qtgui_time_sink_x 170 | parameters: 171 | affinity: '' 172 | alias: '' 173 | alpha1: '1.0' 174 | alpha10: '1.0' 175 | alpha2: '1.0' 176 | alpha3: '1.0' 177 | alpha4: '1.0' 178 | alpha5: '1.0' 179 | alpha6: '1.0' 180 | alpha7: '1.0' 181 | alpha8: '1.0' 182 | alpha9: '1.0' 183 | autoscale: 'True' 184 | axislabels: 'True' 185 | color1: blue 186 | color10: dark blue 187 | color2: red 188 | color3: green 189 | color4: black 190 | color5: cyan 191 | color6: magenta 192 | color7: yellow 193 | color8: dark red 194 | color9: dark green 195 | comment: '' 196 | ctrlpanel: 'False' 197 | entags: 'True' 198 | grid: 'False' 199 | gui_hint: '' 200 | label1: Signal 1 201 | label10: Signal 10 202 | label2: Signal 2 203 | label3: Signal 3 204 | label4: Signal 4 205 | label5: Signal 5 206 | label6: Signal 6 207 | label7: Signal 7 208 | label8: Signal 8 209 | label9: Signal 9 210 | legend: 'True' 211 | marker1: '-1' 212 | marker10: '-1' 213 | marker2: '-1' 214 | marker3: '-1' 215 | marker4: '-1' 216 | marker5: '-1' 217 | marker6: '-1' 218 | marker7: '-1' 219 | marker8: '-1' 220 | marker9: '-1' 221 | name: '"scope"' 222 | nconnections: '1' 223 | size: '1024' 224 | srate: samp_rate 225 | stemplot: 'False' 226 | style1: '1' 227 | style10: '1' 228 | style2: '1' 229 | style3: '1' 230 | style4: '1' 231 | style5: '1' 232 | style6: '1' 233 | style7: '1' 234 | style8: '1' 235 | style9: '1' 236 | tr_chan: '0' 237 | tr_delay: '0' 238 | tr_level: '0.0' 239 | tr_mode: qtgui.TRIG_MODE_FREE 240 | tr_slope: qtgui.TRIG_SLOPE_POS 241 | tr_tag: '""' 242 | type: float 243 | update_time: '0.10' 244 | width1: '1' 245 | width10: '1' 246 | width2: '1' 247 | width3: '1' 248 | width4: '1' 249 | width5: '1' 250 | width6: '1' 251 | width7: '1' 252 | width8: '1' 253 | width9: '1' 254 | ylabel: Amplitude 255 | ymax: '1' 256 | ymin: '-1' 257 | yunit: '""' 258 | states: 259 | bus_sink: false 260 | bus_source: false 261 | bus_structure: null 262 | coordinate: [749, 148] 263 | rotation: 0 264 | state: true 265 | 266 | connections: 267 | - [analog_sig_source_x_0, '0', blocks_throttle_0, '0'] 268 | - [blocks_throttle_0, '0', qtgui_freq_sink_x_0, '0'] 269 | - [blocks_throttle_0, '0', qtgui_time_sink_x_0, '0'] 270 | 271 | metadata: 272 | file_format: 1 273 | -------------------------------------------------------------------------------- /Chapter1_Intr/lab2_signal_control.grc: -------------------------------------------------------------------------------- 1 | options: 2 | parameters: 3 | author: wcc 4 | category: '[GRC Hier Blocks]' 5 | cmake_opt: '' 6 | comment: '' 7 | copyright: '' 8 | description: '' 9 | gen_cmake: 'On' 10 | gen_linking: dynamic 11 | generate_options: qt_gui 12 | hier_block_src_path: '.:' 13 | id: lab2_signal_control 14 | max_nouts: '0' 15 | output_language: python 16 | placement: (0,0) 17 | qt_qss_theme: '' 18 | realtime_scheduling: '' 19 | run: 'True' 20 | run_command: '{python} -u {filename}' 21 | run_options: prompt 22 | sizing_mode: fixed 23 | thread_safe_setters: '' 24 | title: lab2_signal_control 25 | window_size: '' 26 | states: 27 | bus_sink: false 28 | bus_source: false 29 | bus_structure: null 30 | coordinate: [76, 8] 31 | rotation: 0 32 | state: enabled 33 | 34 | blocks: 35 | - name: amp_0 36 | id: variable_qtgui_range 37 | parameters: 38 | comment: '' 39 | gui_hint: '' 40 | label: Amplitude0 41 | min_len: '200' 42 | orient: Qt.Horizontal 43 | rangeType: float 44 | start: '0' 45 | step: '0.05' 46 | stop: '1' 47 | value: '1' 48 | widget: counter_slider 49 | states: 50 | bus_sink: false 51 | bus_source: false 52 | bus_structure: null 53 | coordinate: [456, 13] 54 | rotation: 0 55 | state: true 56 | - name: amp_1 57 | id: variable_qtgui_range 58 | parameters: 59 | comment: '' 60 | gui_hint: '' 61 | label: Amplitude1 62 | min_len: '200' 63 | orient: Qt.Horizontal 64 | rangeType: float 65 | start: '0' 66 | step: '0.05' 67 | stop: '2' 68 | value: '0.5' 69 | widget: counter_slider 70 | states: 71 | bus_sink: false 72 | bus_source: false 73 | bus_structure: null 74 | coordinate: [685, 11] 75 | rotation: 0 76 | state: true 77 | - name: freq_0 78 | id: variable_qtgui_range 79 | parameters: 80 | comment: '' 81 | gui_hint: '' 82 | label: Frequency0 83 | min_len: '200' 84 | orient: Qt.Horizontal 85 | rangeType: int 86 | start: '0' 87 | step: '50' 88 | stop: '5000' 89 | value: '50' 90 | widget: counter_slider 91 | states: 92 | bus_sink: false 93 | bus_source: false 94 | bus_structure: null 95 | coordinate: [334, 11] 96 | rotation: 0 97 | state: true 98 | - name: freq_1 99 | id: variable_qtgui_range 100 | parameters: 101 | comment: '' 102 | gui_hint: '' 103 | label: Frequency1 104 | min_len: '200' 105 | orient: Qt.Horizontal 106 | rangeType: int 107 | start: '0' 108 | step: '50' 109 | stop: '10000' 110 | value: '2000' 111 | widget: counter_slider 112 | states: 113 | bus_sink: false 114 | bus_source: false 115 | bus_structure: null 116 | coordinate: [570, 12] 117 | rotation: 0 118 | state: true 119 | - name: samp_rate 120 | id: variable 121 | parameters: 122 | comment: '' 123 | value: '32000' 124 | states: 125 | bus_sink: false 126 | bus_source: false 127 | bus_structure: null 128 | coordinate: [247, 13] 129 | rotation: 0 130 | state: enabled 131 | - name: analog_sig_source_x_0 132 | id: analog_sig_source_x 133 | parameters: 134 | affinity: '' 135 | alias: '' 136 | amp: amp_0 137 | comment: '' 138 | freq: freq_0 139 | maxoutbuf: '0' 140 | minoutbuf: '0' 141 | offset: '0' 142 | phase: '0' 143 | samp_rate: samp_rate 144 | type: float 145 | waveform: analog.GR_COS_WAVE 146 | states: 147 | bus_sink: false 148 | bus_source: false 149 | bus_structure: null 150 | coordinate: [81, 178] 151 | rotation: 0 152 | state: true 153 | - name: analog_sig_source_x_0_0 154 | id: analog_sig_source_x 155 | parameters: 156 | affinity: '' 157 | alias: '' 158 | amp: amp_1 159 | comment: '' 160 | freq: freq_1 161 | maxoutbuf: '0' 162 | minoutbuf: '0' 163 | offset: '0' 164 | phase: '0' 165 | samp_rate: samp_rate 166 | type: float 167 | waveform: analog.GR_COS_WAVE 168 | states: 169 | bus_sink: false 170 | bus_source: false 171 | bus_structure: null 172 | coordinate: [80, 348] 173 | rotation: 0 174 | state: true 175 | - name: blocks_add_xx_0 176 | id: blocks_add_xx 177 | parameters: 178 | affinity: '' 179 | alias: '' 180 | comment: '' 181 | maxoutbuf: '0' 182 | minoutbuf: '0' 183 | num_inputs: '2' 184 | type: float 185 | vlen: '1' 186 | states: 187 | bus_sink: false 188 | bus_source: false 189 | bus_structure: null 190 | coordinate: [351, 276] 191 | rotation: 0 192 | state: true 193 | - name: blocks_throttle_0 194 | id: blocks_throttle 195 | parameters: 196 | affinity: '' 197 | alias: '' 198 | comment: '' 199 | ignoretag: 'True' 200 | maxoutbuf: '0' 201 | minoutbuf: '0' 202 | samples_per_second: samp_rate 203 | type: float 204 | vlen: '1' 205 | states: 206 | bus_sink: false 207 | bus_source: false 208 | bus_structure: null 209 | coordinate: [484, 284] 210 | rotation: 0 211 | state: true 212 | - name: qtgui_freq_sink_x_0 213 | id: qtgui_freq_sink_x 214 | parameters: 215 | affinity: '' 216 | alias: '' 217 | alpha1: '1.0' 218 | alpha10: '1.0' 219 | alpha2: '1.0' 220 | alpha3: '1.0' 221 | alpha4: '1.0' 222 | alpha5: '1.0' 223 | alpha6: '1.0' 224 | alpha7: '1.0' 225 | alpha8: '1.0' 226 | alpha9: '1.0' 227 | autoscale: 'True' 228 | average: '1.0' 229 | axislabels: 'True' 230 | bw: samp_rate 231 | color1: '"blue"' 232 | color10: '"dark blue"' 233 | color2: '"red"' 234 | color3: '"green"' 235 | color4: '"black"' 236 | color5: '"cyan"' 237 | color6: '"magenta"' 238 | color7: '"yellow"' 239 | color8: '"dark red"' 240 | color9: '"dark green"' 241 | comment: '' 242 | ctrlpanel: 'False' 243 | fc: '0' 244 | fftsize: '1024' 245 | freqhalf: 'True' 246 | grid: 'False' 247 | gui_hint: '' 248 | label: Relative Gain 249 | label1: '' 250 | label10: '''''' 251 | label2: '''''' 252 | label3: '''''' 253 | label4: '''''' 254 | label5: '''''' 255 | label6: '''''' 256 | label7: '''''' 257 | label8: '''''' 258 | label9: '''''' 259 | legend: 'True' 260 | maxoutbuf: '0' 261 | minoutbuf: '0' 262 | name: '"spectrum"' 263 | nconnections: '1' 264 | showports: 'False' 265 | tr_chan: '0' 266 | tr_level: '0.0' 267 | tr_mode: qtgui.TRIG_MODE_FREE 268 | tr_tag: '""' 269 | type: float 270 | units: dB 271 | update_time: '0.10' 272 | width1: '1' 273 | width10: '1' 274 | width2: '1' 275 | width3: '1' 276 | width4: '1' 277 | width5: '1' 278 | width6: '1' 279 | width7: '1' 280 | width8: '1' 281 | width9: '1' 282 | wintype: firdes.WIN_BLACKMAN_hARRIS 283 | ymax: '10' 284 | ymin: '-140' 285 | states: 286 | bus_sink: false 287 | bus_source: false 288 | bus_structure: null 289 | coordinate: [675, 350] 290 | rotation: 0 291 | state: true 292 | - name: qtgui_time_sink_x_0 293 | id: qtgui_time_sink_x 294 | parameters: 295 | affinity: '' 296 | alias: '' 297 | alpha1: '1.0' 298 | alpha10: '1.0' 299 | alpha2: '1.0' 300 | alpha3: '1.0' 301 | alpha4: '1.0' 302 | alpha5: '1.0' 303 | alpha6: '1.0' 304 | alpha7: '1.0' 305 | alpha8: '1.0' 306 | alpha9: '1.0' 307 | autoscale: 'False' 308 | axislabels: 'True' 309 | color1: blue 310 | color10: dark blue 311 | color2: red 312 | color3: green 313 | color4: black 314 | color5: cyan 315 | color6: magenta 316 | color7: yellow 317 | color8: dark red 318 | color9: dark green 319 | comment: '' 320 | ctrlpanel: 'False' 321 | entags: 'True' 322 | grid: 'False' 323 | gui_hint: '' 324 | label1: Signal 1 325 | label10: Signal 10 326 | label2: Signal 2 327 | label3: Signal 3 328 | label4: Signal 4 329 | label5: Signal 5 330 | label6: Signal 6 331 | label7: Signal 7 332 | label8: Signal 8 333 | label9: Signal 9 334 | legend: 'True' 335 | marker1: '-1' 336 | marker10: '-1' 337 | marker2: '-1' 338 | marker3: '-1' 339 | marker4: '-1' 340 | marker5: '-1' 341 | marker6: '-1' 342 | marker7: '-1' 343 | marker8: '-1' 344 | marker9: '-1' 345 | name: '"scope"' 346 | nconnections: '1' 347 | size: '1024' 348 | srate: samp_rate 349 | stemplot: 'False' 350 | style1: '1' 351 | style10: '1' 352 | style2: '1' 353 | style3: '1' 354 | style4: '1' 355 | style5: '1' 356 | style6: '1' 357 | style7: '1' 358 | style8: '1' 359 | style9: '1' 360 | tr_chan: '0' 361 | tr_delay: '0' 362 | tr_level: '0.0' 363 | tr_mode: qtgui.TRIG_MODE_FREE 364 | tr_slope: qtgui.TRIG_SLOPE_POS 365 | tr_tag: '""' 366 | type: float 367 | update_time: '0.10' 368 | width1: '1' 369 | width10: '1' 370 | width2: '1' 371 | width3: '1' 372 | width4: '1' 373 | width5: '1' 374 | width6: '1' 375 | width7: '1' 376 | width8: '1' 377 | width9: '1' 378 | ylabel: Amplitude 379 | ymax: '1' 380 | ymin: '-1' 381 | yunit: '""' 382 | states: 383 | bus_sink: false 384 | bus_source: false 385 | bus_structure: null 386 | coordinate: [675, 212] 387 | rotation: 0 388 | state: true 389 | 390 | connections: 391 | - [analog_sig_source_x_0, '0', blocks_add_xx_0, '0'] 392 | - [analog_sig_source_x_0_0, '0', blocks_add_xx_0, '1'] 393 | - [blocks_add_xx_0, '0', blocks_throttle_0, '0'] 394 | - [blocks_throttle_0, '0', qtgui_freq_sink_x_0, '0'] 395 | - [blocks_throttle_0, '0', qtgui_time_sink_x_0, '0'] 396 | 397 | metadata: 398 | file_format: 1 399 | -------------------------------------------------------------------------------- /Chapter1_Intr/lab3_antsdr_tone.grc: -------------------------------------------------------------------------------- 1 | options: 2 | parameters: 3 | author: wcc 4 | category: '[GRC Hier Blocks]' 5 | cmake_opt: '' 6 | comment: '' 7 | copyright: '' 8 | description: '' 9 | gen_cmake: 'On' 10 | gen_linking: dynamic 11 | generate_options: qt_gui 12 | hier_block_src_path: '.:' 13 | id: lab3_antsdr_tone 14 | max_nouts: '0' 15 | output_language: python 16 | placement: (0,0) 17 | qt_qss_theme: '' 18 | realtime_scheduling: '' 19 | run: 'True' 20 | run_command: '{python} -u {filename}' 21 | run_options: prompt 22 | sizing_mode: fixed 23 | thread_safe_setters: '' 24 | title: lab3_antsdr_tone 25 | window_size: '' 26 | states: 27 | bus_sink: false 28 | bus_source: false 29 | bus_structure: null 30 | coordinate: [8, 8] 31 | rotation: 0 32 | state: enabled 33 | 34 | blocks: 35 | - name: amp_0 36 | id: variable_qtgui_range 37 | parameters: 38 | comment: '' 39 | gui_hint: '' 40 | label: Amplitude0 41 | min_len: '200' 42 | orient: Qt.Horizontal 43 | rangeType: float 44 | start: '0' 45 | step: '0.05' 46 | stop: '1' 47 | value: '1' 48 | widget: counter_slider 49 | states: 50 | bus_sink: false 51 | bus_source: false 52 | bus_structure: null 53 | coordinate: [154, 11] 54 | rotation: 0 55 | state: true 56 | - name: amp_1 57 | id: variable_qtgui_range 58 | parameters: 59 | comment: '' 60 | gui_hint: '' 61 | label: Amplitude1 62 | min_len: '200' 63 | orient: Qt.Horizontal 64 | rangeType: float 65 | start: '0' 66 | step: '0.05' 67 | stop: '1' 68 | value: '0.5' 69 | widget: counter_slider 70 | states: 71 | bus_sink: false 72 | bus_source: false 73 | bus_structure: null 74 | coordinate: [151, 156] 75 | rotation: 0 76 | state: true 77 | - name: freq_0 78 | id: variable_qtgui_range 79 | parameters: 80 | comment: '' 81 | gui_hint: '' 82 | label: Frequency0 83 | min_len: '200' 84 | orient: Qt.Horizontal 85 | rangeType: int 86 | start: '0' 87 | step: '50' 88 | stop: '2000' 89 | value: '1000' 90 | widget: counter_slider 91 | states: 92 | bus_sink: false 93 | bus_source: false 94 | bus_structure: null 95 | coordinate: [272, 9] 96 | rotation: 0 97 | state: true 98 | - name: freq_1 99 | id: variable_qtgui_range 100 | parameters: 101 | comment: '' 102 | gui_hint: '' 103 | label: Frequency1 104 | min_len: '200' 105 | orient: Qt.Horizontal 106 | rangeType: int 107 | start: '0' 108 | step: '50' 109 | stop: '2000' 110 | value: '2000' 111 | widget: counter_slider 112 | states: 113 | bus_sink: false 114 | bus_source: false 115 | bus_structure: null 116 | coordinate: [272, 155] 117 | rotation: 0 118 | state: true 119 | - name: samp_rate 120 | id: variable 121 | parameters: 122 | comment: '' 123 | value: '1000000' 124 | states: 125 | bus_sink: false 126 | bus_source: false 127 | bus_structure: null 128 | coordinate: [10, 247] 129 | rotation: 0 130 | state: enabled 131 | - name: analog_sig_source_x_0 132 | id: analog_sig_source_x 133 | parameters: 134 | affinity: '' 135 | alias: '' 136 | amp: amp_0 137 | comment: '' 138 | freq: freq_0 139 | maxoutbuf: '0' 140 | minoutbuf: '0' 141 | offset: '0' 142 | phase: '0' 143 | samp_rate: samp_rate 144 | type: float 145 | waveform: analog.GR_COS_WAVE 146 | states: 147 | bus_sink: false 148 | bus_source: false 149 | bus_structure: null 150 | coordinate: [480, 19] 151 | rotation: 0 152 | state: true 153 | - name: analog_sig_source_x_0_0 154 | id: analog_sig_source_x 155 | parameters: 156 | affinity: '' 157 | alias: '' 158 | amp: amp_1 159 | comment: '' 160 | freq: freq_1 161 | maxoutbuf: '0' 162 | minoutbuf: '0' 163 | offset: '0' 164 | phase: '0' 165 | samp_rate: samp_rate 166 | type: float 167 | waveform: analog.GR_COS_WAVE 168 | states: 169 | bus_sink: false 170 | bus_source: false 171 | bus_structure: null 172 | coordinate: [479, 165] 173 | rotation: 0 174 | state: true 175 | - name: blocks_float_to_complex_0 176 | id: blocks_float_to_complex 177 | parameters: 178 | affinity: '' 179 | alias: '' 180 | comment: '' 181 | maxoutbuf: '0' 182 | minoutbuf: '0' 183 | vlen: '1' 184 | states: 185 | bus_sink: false 186 | bus_source: false 187 | bus_structure: null 188 | coordinate: [794, 145] 189 | rotation: 0 190 | state: true 191 | - name: iio_pluto_sink_0 192 | id: iio_pluto_sink 193 | parameters: 194 | affinity: '' 195 | alias: '' 196 | attenuation1: '10.0' 197 | auto_filter: 'True' 198 | bandwidth: '2000000' 199 | buffer_size: '32768' 200 | comment: '' 201 | cyclic: 'False' 202 | filter: '' 203 | frequency: '2400000000' 204 | samplerate: samp_rate 205 | uri: uri 206 | states: 207 | bus_sink: false 208 | bus_source: false 209 | bus_structure: null 210 | coordinate: [1135, 13] 211 | rotation: 0 212 | state: true 213 | - name: iio_pluto_source_0 214 | id: iio_pluto_source 215 | parameters: 216 | affinity: '' 217 | alias: '' 218 | auto_filter: 'True' 219 | bandwidth: '2000000' 220 | bbdc: 'True' 221 | buffer_size: '32768' 222 | comment: '' 223 | filter: '' 224 | frequency: '2400000000' 225 | gain1: '''fast_attack''' 226 | manual_gain1: '64' 227 | maxoutbuf: '0' 228 | minoutbuf: '0' 229 | quadrature: 'True' 230 | rfdc: 'True' 231 | samplerate: samp_rate 232 | uri: uri 233 | states: 234 | bus_sink: false 235 | bus_source: false 236 | bus_structure: null 237 | coordinate: [478, 318] 238 | rotation: 0 239 | state: true 240 | - name: qtgui_freq_sink_x_0 241 | id: qtgui_freq_sink_x 242 | parameters: 243 | affinity: '' 244 | alias: '' 245 | alpha1: '1.0' 246 | alpha10: '1.0' 247 | alpha2: '1.0' 248 | alpha3: '1.0' 249 | alpha4: '1.0' 250 | alpha5: '1.0' 251 | alpha6: '1.0' 252 | alpha7: '1.0' 253 | alpha8: '1.0' 254 | alpha9: '1.0' 255 | autoscale: 'True' 256 | average: '0.1' 257 | axislabels: 'True' 258 | bw: samp_rate/10 259 | color1: '"blue"' 260 | color10: '"dark blue"' 261 | color2: '"red"' 262 | color3: '"green"' 263 | color4: '"black"' 264 | color5: '"cyan"' 265 | color6: '"magenta"' 266 | color7: '"yellow"' 267 | color8: '"dark red"' 268 | color9: '"dark green"' 269 | comment: '' 270 | ctrlpanel: 'False' 271 | fc: '0' 272 | fftsize: '1024' 273 | freqhalf: 'True' 274 | grid: 'False' 275 | gui_hint: '' 276 | label: Relative Gain 277 | label1: tx siganl 278 | label10: '''''' 279 | label2: rx_signal 280 | label3: '''''' 281 | label4: '''''' 282 | label5: '''''' 283 | label6: '''''' 284 | label7: '''''' 285 | label8: '''''' 286 | label9: '''''' 287 | legend: 'True' 288 | maxoutbuf: '0' 289 | minoutbuf: '0' 290 | name: '"spectrum"' 291 | nconnections: '2' 292 | showports: 'False' 293 | tr_chan: '0' 294 | tr_level: '0.0' 295 | tr_mode: qtgui.TRIG_MODE_FREE 296 | tr_tag: '""' 297 | type: complex 298 | units: dB 299 | update_time: '0.10' 300 | width1: '1' 301 | width10: '1' 302 | width2: '1' 303 | width3: '1' 304 | width4: '1' 305 | width5: '1' 306 | width6: '1' 307 | width7: '1' 308 | width8: '1' 309 | width9: '1' 310 | wintype: firdes.WIN_BLACKMAN_hARRIS 311 | ymax: '10' 312 | ymin: '-140' 313 | states: 314 | bus_sink: false 315 | bus_source: false 316 | bus_structure: null 317 | coordinate: [1145, 232] 318 | rotation: 0 319 | state: true 320 | - name: qtgui_time_sink_x_0 321 | id: qtgui_time_sink_x 322 | parameters: 323 | affinity: '' 324 | alias: '' 325 | alpha1: '1.0' 326 | alpha10: '1.0' 327 | alpha2: '1.0' 328 | alpha3: '1.0' 329 | alpha4: '1.0' 330 | alpha5: '1.0' 331 | alpha6: '1.0' 332 | alpha7: '1.0' 333 | alpha8: '1.0' 334 | alpha9: '1.0' 335 | autoscale: 'False' 336 | axislabels: 'True' 337 | color1: blue 338 | color10: dark blue 339 | color2: red 340 | color3: green 341 | color4: black 342 | color5: cyan 343 | color6: magenta 344 | color7: yellow 345 | color8: dark red 346 | color9: dark green 347 | comment: '' 348 | ctrlpanel: 'False' 349 | entags: 'True' 350 | grid: 'False' 351 | gui_hint: '' 352 | label1: tx_i 353 | label10: Signal 10 354 | label2: tx_q 355 | label3: rx_i 356 | label4: rx_q 357 | label5: Signal 5 358 | label6: Signal 6 359 | label7: Signal 7 360 | label8: Signal 8 361 | label9: Signal 9 362 | legend: 'True' 363 | marker1: '-1' 364 | marker10: '-1' 365 | marker2: '-1' 366 | marker3: '-1' 367 | marker4: '-1' 368 | marker5: '-1' 369 | marker6: '-1' 370 | marker7: '-1' 371 | marker8: '-1' 372 | marker9: '-1' 373 | name: '"scope"' 374 | nconnections: '2' 375 | size: '1024' 376 | srate: samp_rate/10 377 | stemplot: 'False' 378 | style1: '1' 379 | style10: '1' 380 | style2: '1' 381 | style3: '1' 382 | style4: '1' 383 | style5: '1' 384 | style6: '1' 385 | style7: '1' 386 | style8: '1' 387 | style9: '1' 388 | tr_chan: '0' 389 | tr_delay: '0' 390 | tr_level: '0.0' 391 | tr_mode: qtgui.TRIG_MODE_FREE 392 | tr_slope: qtgui.TRIG_SLOPE_POS 393 | tr_tag: '""' 394 | type: complex 395 | update_time: '0.10' 396 | width1: '1' 397 | width10: '1' 398 | width2: '1' 399 | width3: '1' 400 | width4: '1' 401 | width5: '1' 402 | width6: '1' 403 | width7: '1' 404 | width8: '1' 405 | width9: '1' 406 | ylabel: Amplitude 407 | ymax: '1' 408 | ymin: '-1' 409 | yunit: '""' 410 | states: 411 | bus_sink: false 412 | bus_source: false 413 | bus_structure: null 414 | coordinate: [1142, 378] 415 | rotation: 0 416 | state: true 417 | - name: uri 418 | id: parameter 419 | parameters: 420 | alias: '' 421 | comment: '' 422 | hide: none 423 | label: URI 424 | short_id: '' 425 | type: str 426 | value: ip:192.168.1.10 427 | states: 428 | bus_sink: false 429 | bus_source: false 430 | bus_structure: null 431 | coordinate: [11, 124] 432 | rotation: 0 433 | state: true 434 | 435 | connections: 436 | - [analog_sig_source_x_0, '0', blocks_float_to_complex_0, '0'] 437 | - [analog_sig_source_x_0_0, '0', blocks_float_to_complex_0, '1'] 438 | - [blocks_float_to_complex_0, '0', iio_pluto_sink_0, '0'] 439 | - [blocks_float_to_complex_0, '0', qtgui_freq_sink_x_0, '0'] 440 | - [blocks_float_to_complex_0, '0', qtgui_time_sink_x_0, '0'] 441 | - [iio_pluto_source_0, '0', qtgui_freq_sink_x_0, '1'] 442 | - [iio_pluto_source_0, '0', qtgui_time_sink_x_0, '1'] 443 | 444 | metadata: 445 | file_format: 1 446 | -------------------------------------------------------------------------------- /Chapter2_Filter/lab2_high_pass.grc: -------------------------------------------------------------------------------- 1 | options: 2 | parameters: 3 | author: wcc 4 | category: '[GRC Hier Blocks]' 5 | cmake_opt: '' 6 | comment: '' 7 | copyright: '' 8 | description: '' 9 | gen_cmake: 'On' 10 | gen_linking: dynamic 11 | generate_options: qt_gui 12 | hier_block_src_path: '.:' 13 | id: lab2_high_pass 14 | max_nouts: '0' 15 | output_language: python 16 | placement: (0,0) 17 | qt_qss_theme: '' 18 | realtime_scheduling: '' 19 | run: 'True' 20 | run_command: '{python} -u {filename}' 21 | run_options: prompt 22 | sizing_mode: fixed 23 | thread_safe_setters: '' 24 | title: lab2_high_pass 25 | window_size: '' 26 | states: 27 | bus_sink: false 28 | bus_source: false 29 | bus_structure: null 30 | coordinate: [8, 8] 31 | rotation: 0 32 | state: enabled 33 | 34 | blocks: 35 | - name: freq_0 36 | id: variable_qtgui_range 37 | parameters: 38 | comment: '' 39 | gui_hint: '' 40 | label: Frequency_0 41 | min_len: '200' 42 | orient: Qt.Horizontal 43 | rangeType: int 44 | start: '0' 45 | step: '1' 46 | stop: '15000' 47 | value: '1000' 48 | widget: counter_slider 49 | states: 50 | bus_sink: false 51 | bus_source: false 52 | bus_structure: null 53 | coordinate: [6, 124] 54 | rotation: 0 55 | state: true 56 | - name: freq_1 57 | id: variable_qtgui_range 58 | parameters: 59 | comment: '' 60 | gui_hint: '' 61 | label: Frequency_1 62 | min_len: '200' 63 | orient: Qt.Horizontal 64 | rangeType: int 65 | start: '0' 66 | step: '1' 67 | stop: '15000' 68 | value: '10000' 69 | widget: counter_slider 70 | states: 71 | bus_sink: false 72 | bus_source: false 73 | bus_structure: null 74 | coordinate: [0, 336] 75 | rotation: 0 76 | state: true 77 | - name: samp_rate 78 | id: variable 79 | parameters: 80 | comment: '' 81 | value: '256000' 82 | states: 83 | bus_sink: false 84 | bus_source: false 85 | bus_structure: null 86 | coordinate: [184, 12] 87 | rotation: 0 88 | state: enabled 89 | - name: analog_sig_source_x_0 90 | id: analog_sig_source_x 91 | parameters: 92 | affinity: '' 93 | alias: '' 94 | amp: '1' 95 | comment: '' 96 | freq: freq_0 97 | maxoutbuf: '0' 98 | minoutbuf: '0' 99 | offset: '0' 100 | phase: '0' 101 | samp_rate: samp_rate 102 | type: complex 103 | waveform: analog.GR_COS_WAVE 104 | states: 105 | bus_sink: false 106 | bus_source: false 107 | bus_structure: null 108 | coordinate: [180, 145] 109 | rotation: 0 110 | state: true 111 | - name: analog_sig_source_x_0_0 112 | id: analog_sig_source_x 113 | parameters: 114 | affinity: '' 115 | alias: '' 116 | amp: '1' 117 | comment: '' 118 | freq: freq_1 119 | maxoutbuf: '0' 120 | minoutbuf: '0' 121 | offset: '0' 122 | phase: '0' 123 | samp_rate: samp_rate 124 | type: complex 125 | waveform: analog.GR_COS_WAVE 126 | states: 127 | bus_sink: false 128 | bus_source: false 129 | bus_structure: null 130 | coordinate: [182, 334] 131 | rotation: 0 132 | state: true 133 | - name: blocks_add_xx_0 134 | id: blocks_add_xx 135 | parameters: 136 | affinity: '' 137 | alias: '' 138 | comment: '' 139 | maxoutbuf: '0' 140 | minoutbuf: '0' 141 | num_inputs: '2' 142 | type: complex 143 | vlen: '1' 144 | states: 145 | bus_sink: false 146 | bus_source: false 147 | bus_structure: null 148 | coordinate: [416, 247] 149 | rotation: 0 150 | state: true 151 | - name: blocks_throttle_0 152 | id: blocks_throttle 153 | parameters: 154 | affinity: '' 155 | alias: '' 156 | comment: '' 157 | ignoretag: 'True' 158 | maxoutbuf: '0' 159 | minoutbuf: '0' 160 | samples_per_second: samp_rate 161 | type: complex 162 | vlen: '1' 163 | states: 164 | bus_sink: false 165 | bus_source: false 166 | bus_structure: null 167 | coordinate: [531, 255] 168 | rotation: 0 169 | state: true 170 | - name: high_pass_filter_0 171 | id: high_pass_filter 172 | parameters: 173 | affinity: '' 174 | alias: '' 175 | beta: '6.76' 176 | comment: '' 177 | cutoff_freq: '10000' 178 | decim: '2' 179 | gain: '1' 180 | interp: '1' 181 | maxoutbuf: '0' 182 | minoutbuf: '0' 183 | samp_rate: samp_rate 184 | type: fir_filter_ccf 185 | width: '1000' 186 | win: firdes.WIN_HAMMING 187 | states: 188 | bus_sink: false 189 | bus_source: false 190 | bus_structure: null 191 | coordinate: [937, 210] 192 | rotation: 0 193 | state: true 194 | - name: qtgui_freq_sink_x_0 195 | id: qtgui_freq_sink_x 196 | parameters: 197 | affinity: '' 198 | alias: '' 199 | alpha1: '1.0' 200 | alpha10: '1.0' 201 | alpha2: '1.0' 202 | alpha3: '1.0' 203 | alpha4: '1.0' 204 | alpha5: '1.0' 205 | alpha6: '1.0' 206 | alpha7: '1.0' 207 | alpha8: '1.0' 208 | alpha9: '1.0' 209 | autoscale: 'False' 210 | average: '1.0' 211 | axislabels: 'True' 212 | bw: samp_rate 213 | color1: '"blue"' 214 | color10: '"dark blue"' 215 | color2: '"red"' 216 | color3: '"green"' 217 | color4: '"black"' 218 | color5: '"cyan"' 219 | color6: '"magenta"' 220 | color7: '"yellow"' 221 | color8: '"dark red"' 222 | color9: '"dark green"' 223 | comment: '' 224 | ctrlpanel: 'False' 225 | fc: '0' 226 | fftsize: '1024' 227 | freqhalf: 'True' 228 | grid: 'False' 229 | gui_hint: '' 230 | label: Relative Gain 231 | label1: '' 232 | label10: '''''' 233 | label2: '''''' 234 | label3: '''''' 235 | label4: '''''' 236 | label5: '''''' 237 | label6: '''''' 238 | label7: '''''' 239 | label8: '''''' 240 | label9: '''''' 241 | legend: 'True' 242 | maxoutbuf: '0' 243 | minoutbuf: '0' 244 | name: '"input spectrum"' 245 | nconnections: '1' 246 | showports: 'False' 247 | tr_chan: '0' 248 | tr_level: '0.0' 249 | tr_mode: qtgui.TRIG_MODE_FREE 250 | tr_tag: '""' 251 | type: complex 252 | units: dB 253 | update_time: '0.10' 254 | width1: '1' 255 | width10: '1' 256 | width2: '1' 257 | width3: '1' 258 | width4: '1' 259 | width5: '1' 260 | width6: '1' 261 | width7: '1' 262 | width8: '1' 263 | width9: '1' 264 | wintype: firdes.WIN_BLACKMAN_hARRIS 265 | ymax: '10' 266 | ymin: '-140' 267 | states: 268 | bus_sink: false 269 | bus_source: false 270 | bus_structure: null 271 | coordinate: [731, 60] 272 | rotation: 0 273 | state: true 274 | - name: qtgui_freq_sink_x_0_0 275 | id: qtgui_freq_sink_x 276 | parameters: 277 | affinity: '' 278 | alias: '' 279 | alpha1: '1.0' 280 | alpha10: '1.0' 281 | alpha2: '1.0' 282 | alpha3: '1.0' 283 | alpha4: '1.0' 284 | alpha5: '1.0' 285 | alpha6: '1.0' 286 | alpha7: '1.0' 287 | alpha8: '1.0' 288 | alpha9: '1.0' 289 | autoscale: 'False' 290 | average: '1.0' 291 | axislabels: 'True' 292 | bw: samp_rate/2 293 | color1: '"blue"' 294 | color10: '"dark blue"' 295 | color2: '"red"' 296 | color3: '"green"' 297 | color4: '"black"' 298 | color5: '"cyan"' 299 | color6: '"magenta"' 300 | color7: '"yellow"' 301 | color8: '"dark red"' 302 | color9: '"dark green"' 303 | comment: '' 304 | ctrlpanel: 'False' 305 | fc: '0' 306 | fftsize: '1024' 307 | freqhalf: 'True' 308 | grid: 'False' 309 | gui_hint: '' 310 | label: Relative Gain 311 | label1: '' 312 | label10: '''''' 313 | label2: '''''' 314 | label3: '''''' 315 | label4: '''''' 316 | label5: '''''' 317 | label6: '''''' 318 | label7: '''''' 319 | label8: '''''' 320 | label9: '''''' 321 | legend: 'True' 322 | maxoutbuf: '0' 323 | minoutbuf: '0' 324 | name: '"output spectrum"' 325 | nconnections: '1' 326 | showports: 'False' 327 | tr_chan: '0' 328 | tr_level: '0.0' 329 | tr_mode: qtgui.TRIG_MODE_FREE 330 | tr_tag: '""' 331 | type: complex 332 | units: dB 333 | update_time: '0.10' 334 | width1: '1' 335 | width10: '1' 336 | width2: '1' 337 | width3: '1' 338 | width4: '1' 339 | width5: '1' 340 | width6: '1' 341 | width7: '1' 342 | width8: '1' 343 | width9: '1' 344 | wintype: firdes.WIN_BLACKMAN_hARRIS 345 | ymax: '10' 346 | ymin: '-140' 347 | states: 348 | bus_sink: false 349 | bus_source: false 350 | bus_structure: null 351 | coordinate: [1170, 114] 352 | rotation: 0 353 | state: true 354 | - name: qtgui_time_sink_x_0 355 | id: qtgui_time_sink_x 356 | parameters: 357 | affinity: '' 358 | alias: '' 359 | alpha1: '1.0' 360 | alpha10: '1.0' 361 | alpha2: '1.0' 362 | alpha3: '1.0' 363 | alpha4: '1.0' 364 | alpha5: '1.0' 365 | alpha6: '1.0' 366 | alpha7: '1.0' 367 | alpha8: '1.0' 368 | alpha9: '1.0' 369 | autoscale: 'True' 370 | axislabels: 'True' 371 | color1: blue 372 | color10: dark blue 373 | color2: red 374 | color3: green 375 | color4: black 376 | color5: cyan 377 | color6: magenta 378 | color7: yellow 379 | color8: dark red 380 | color9: dark green 381 | comment: '' 382 | ctrlpanel: 'False' 383 | entags: 'True' 384 | grid: 'False' 385 | gui_hint: '' 386 | label1: Signal 1 387 | label10: Signal 10 388 | label2: Signal 2 389 | label3: Signal 3 390 | label4: Signal 4 391 | label5: Signal 5 392 | label6: Signal 6 393 | label7: Signal 7 394 | label8: Signal 8 395 | label9: Signal 9 396 | legend: 'True' 397 | marker1: '0' 398 | marker10: '-1' 399 | marker2: '0' 400 | marker3: '-1' 401 | marker4: '-1' 402 | marker5: '-1' 403 | marker6: '-1' 404 | marker7: '-1' 405 | marker8: '-1' 406 | marker9: '-1' 407 | name: '"input scope"' 408 | nconnections: '1' 409 | size: '1024' 410 | srate: samp_rate 411 | stemplot: 'False' 412 | style1: '1' 413 | style10: '1' 414 | style2: '1' 415 | style3: '1' 416 | style4: '1' 417 | style5: '1' 418 | style6: '1' 419 | style7: '1' 420 | style8: '1' 421 | style9: '1' 422 | tr_chan: '0' 423 | tr_delay: '0' 424 | tr_level: '0.0' 425 | tr_mode: qtgui.TRIG_MODE_FREE 426 | tr_slope: qtgui.TRIG_SLOPE_POS 427 | tr_tag: '""' 428 | type: complex 429 | update_time: '0.10' 430 | width1: '1' 431 | width10: '1' 432 | width2: '1' 433 | width3: '1' 434 | width4: '1' 435 | width5: '1' 436 | width6: '1' 437 | width7: '1' 438 | width8: '1' 439 | width9: '1' 440 | ylabel: Amplitude 441 | ymax: '1' 442 | ymin: '-1' 443 | yunit: '""' 444 | states: 445 | bus_sink: false 446 | bus_source: false 447 | bus_structure: null 448 | coordinate: [728, 173] 449 | rotation: 0 450 | state: true 451 | - name: qtgui_time_sink_x_0_0 452 | id: qtgui_time_sink_x 453 | parameters: 454 | affinity: '' 455 | alias: '' 456 | alpha1: '1.0' 457 | alpha10: '1.0' 458 | alpha2: '1.0' 459 | alpha3: '1.0' 460 | alpha4: '1.0' 461 | alpha5: '1.0' 462 | alpha6: '1.0' 463 | alpha7: '1.0' 464 | alpha8: '1.0' 465 | alpha9: '1.0' 466 | autoscale: 'True' 467 | axislabels: 'True' 468 | color1: blue 469 | color10: dark blue 470 | color2: black 471 | color3: green 472 | color4: black 473 | color5: cyan 474 | color6: magenta 475 | color7: yellow 476 | color8: dark red 477 | color9: dark green 478 | comment: '' 479 | ctrlpanel: 'False' 480 | entags: 'True' 481 | grid: 'True' 482 | gui_hint: '' 483 | label1: Signal 1 484 | label10: Signal 10 485 | label2: Signal 2 486 | label3: Signal 3 487 | label4: Signal 4 488 | label5: Signal 5 489 | label6: Signal 6 490 | label7: Signal 7 491 | label8: Signal 8 492 | label9: Signal 9 493 | legend: 'True' 494 | marker1: '1' 495 | marker10: '-1' 496 | marker2: '0' 497 | marker3: '-1' 498 | marker4: '-1' 499 | marker5: '-1' 500 | marker6: '-1' 501 | marker7: '-1' 502 | marker8: '-1' 503 | marker9: '-1' 504 | name: '"output scope"' 505 | nconnections: '1' 506 | size: '1024' 507 | srate: samp_rate/2 508 | stemplot: 'False' 509 | style1: '1' 510 | style10: '1' 511 | style2: '1' 512 | style3: '1' 513 | style4: '1' 514 | style5: '1' 515 | style6: '1' 516 | style7: '1' 517 | style8: '1' 518 | style9: '1' 519 | tr_chan: '0' 520 | tr_delay: '0' 521 | tr_level: '0.0' 522 | tr_mode: qtgui.TRIG_MODE_FREE 523 | tr_slope: qtgui.TRIG_SLOPE_POS 524 | tr_tag: '""' 525 | type: complex 526 | update_time: '0.10' 527 | width1: '1' 528 | width10: '1' 529 | width2: '1' 530 | width3: '1' 531 | width4: '1' 532 | width5: '1' 533 | width6: '1' 534 | width7: '1' 535 | width8: '1' 536 | width9: '1' 537 | ylabel: Amplitude 538 | ymax: '1' 539 | ymin: '-1' 540 | yunit: '""' 541 | states: 542 | bus_sink: false 543 | bus_source: false 544 | bus_structure: null 545 | coordinate: [1158, 266] 546 | rotation: 0 547 | state: true 548 | 549 | connections: 550 | - [analog_sig_source_x_0, '0', blocks_add_xx_0, '0'] 551 | - [analog_sig_source_x_0_0, '0', blocks_add_xx_0, '1'] 552 | - [blocks_add_xx_0, '0', blocks_throttle_0, '0'] 553 | - [blocks_throttle_0, '0', high_pass_filter_0, '0'] 554 | - [blocks_throttle_0, '0', qtgui_freq_sink_x_0, '0'] 555 | - [blocks_throttle_0, '0', qtgui_time_sink_x_0, '0'] 556 | - [high_pass_filter_0, '0', qtgui_freq_sink_x_0_0, '0'] 557 | - [high_pass_filter_0, '0', qtgui_time_sink_x_0_0, '0'] 558 | 559 | metadata: 560 | file_format: 1 561 | -------------------------------------------------------------------------------- /Chapter2_Filter/lab3_rrc_filter.grc: -------------------------------------------------------------------------------- 1 | options: 2 | parameters: 3 | author: wcc 4 | category: '[GRC Hier Blocks]' 5 | cmake_opt: '' 6 | comment: '' 7 | copyright: '' 8 | description: '' 9 | gen_cmake: 'On' 10 | gen_linking: dynamic 11 | generate_options: qt_gui 12 | hier_block_src_path: '.:' 13 | id: lab3_rrc_filter 14 | max_nouts: '0' 15 | output_language: python 16 | placement: (0,0) 17 | qt_qss_theme: '' 18 | realtime_scheduling: '' 19 | run: 'True' 20 | run_command: '{python} -u {filename}' 21 | run_options: prompt 22 | sizing_mode: fixed 23 | thread_safe_setters: '' 24 | title: lab3_rrc_filter 25 | window_size: '' 26 | states: 27 | bus_sink: false 28 | bus_source: false 29 | bus_structure: null 30 | coordinate: [20, 58] 31 | rotation: 0 32 | state: enabled 33 | 34 | blocks: 35 | - name: samp_rate 36 | id: variable 37 | parameters: 38 | comment: '' 39 | value: '80000' 40 | states: 41 | bus_sink: false 42 | bus_source: false 43 | bus_structure: null 44 | coordinate: [171, 60] 45 | rotation: 0 46 | state: enabled 47 | - name: blocks_complex_to_real_0 48 | id: blocks_complex_to_real 49 | parameters: 50 | affinity: '' 51 | alias: '' 52 | comment: '' 53 | maxoutbuf: '0' 54 | minoutbuf: '0' 55 | vlen: '1' 56 | states: 57 | bus_sink: false 58 | bus_source: false 59 | bus_structure: null 60 | coordinate: [714, 397] 61 | rotation: 0 62 | state: true 63 | - name: blocks_delay_0 64 | id: blocks_delay 65 | parameters: 66 | affinity: '' 67 | alias: '' 68 | comment: '' 69 | delay: '40' 70 | maxoutbuf: '0' 71 | minoutbuf: '0' 72 | num_ports: '1' 73 | type: complex 74 | vlen: '1' 75 | states: 76 | bus_sink: false 77 | bus_source: false 78 | bus_structure: null 79 | coordinate: [580, 388] 80 | rotation: 0 81 | state: true 82 | - name: blocks_float_to_complex_0 83 | id: blocks_float_to_complex 84 | parameters: 85 | affinity: '' 86 | alias: '' 87 | comment: '' 88 | maxoutbuf: '0' 89 | minoutbuf: '0' 90 | vlen: '1' 91 | states: 92 | bus_sink: false 93 | bus_source: false 94 | bus_structure: null 95 | coordinate: [882, 397] 96 | rotation: 0 97 | state: true 98 | - name: blocks_throttle_0 99 | id: blocks_throttle 100 | parameters: 101 | affinity: '' 102 | alias: '' 103 | comment: '' 104 | ignoretag: 'True' 105 | maxoutbuf: '0' 106 | minoutbuf: '0' 107 | samples_per_second: samp_rate 108 | type: complex 109 | vlen: '1' 110 | states: 111 | bus_sink: false 112 | bus_source: false 113 | bus_structure: null 114 | coordinate: [403, 251] 115 | rotation: 0 116 | state: true 117 | - name: blocks_vector_source_x_0 118 | id: blocks_vector_source_x 119 | parameters: 120 | affinity: '' 121 | alias: '' 122 | comment: '' 123 | maxoutbuf: '0' 124 | minoutbuf: '0' 125 | repeat: 'True' 126 | tags: '[]' 127 | type: complex 128 | vector: (1, 0, 0, 0, 1, 0) 129 | vlen: '1' 130 | states: 131 | bus_sink: false 132 | bus_source: false 133 | bus_structure: null 134 | coordinate: [28, 231] 135 | rotation: 0 136 | state: true 137 | - name: interp_fir_filter_xxx_0 138 | id: interp_fir_filter_xxx 139 | parameters: 140 | affinity: '' 141 | alias: '' 142 | comment: '' 143 | interp: '8' 144 | maxoutbuf: '0' 145 | minoutbuf: '0' 146 | samp_delay: '0' 147 | taps: '1' 148 | type: ccc 149 | states: 150 | bus_sink: false 151 | bus_source: false 152 | bus_structure: null 153 | coordinate: [216, 243] 154 | rotation: 0 155 | state: true 156 | - name: qtgui_time_sink_x_0 157 | id: qtgui_time_sink_x 158 | parameters: 159 | affinity: '' 160 | alias: '' 161 | alpha1: '1.0' 162 | alpha10: '1.0' 163 | alpha2: '1.0' 164 | alpha3: '1.0' 165 | alpha4: '1.0' 166 | alpha5: '1.0' 167 | alpha6: '1.0' 168 | alpha7: '1.0' 169 | alpha8: '1.0' 170 | alpha9: '1.0' 171 | autoscale: 'False' 172 | axislabels: 'True' 173 | color1: blue 174 | color10: dark blue 175 | color2: red 176 | color3: green 177 | color4: black 178 | color5: cyan 179 | color6: magenta 180 | color7: yellow 181 | color8: dark red 182 | color9: dark green 183 | comment: '' 184 | ctrlpanel: 'False' 185 | entags: 'True' 186 | grid: 'False' 187 | gui_hint: '' 188 | label1: rrc_i 189 | label10: Signal 10 190 | label2: rrc_q 191 | label3: delay_i 192 | label4: delay_q 193 | label5: Signal 5 194 | label6: Signal 6 195 | label7: Signal 7 196 | label8: Signal 8 197 | label9: Signal 9 198 | legend: 'True' 199 | marker1: '-1' 200 | marker10: '-1' 201 | marker2: '1' 202 | marker3: '0' 203 | marker4: '-1' 204 | marker5: '-1' 205 | marker6: '-1' 206 | marker7: '-1' 207 | marker8: '-1' 208 | marker9: '-1' 209 | name: '""' 210 | nconnections: '2' 211 | size: '1024' 212 | srate: samp_rate 213 | stemplot: 'False' 214 | style1: '1' 215 | style10: '1' 216 | style2: '3' 217 | style3: '1' 218 | style4: '1' 219 | style5: '1' 220 | style6: '1' 221 | style7: '1' 222 | style8: '1' 223 | style9: '1' 224 | tr_chan: '0' 225 | tr_delay: '0' 226 | tr_level: '0.0' 227 | tr_mode: qtgui.TRIG_MODE_FREE 228 | tr_slope: qtgui.TRIG_SLOPE_POS 229 | tr_tag: '""' 230 | type: complex 231 | update_time: '0.10' 232 | width1: '1' 233 | width10: '1' 234 | width2: '1' 235 | width3: '1' 236 | width4: '1' 237 | width5: '1' 238 | width6: '1' 239 | width7: '1' 240 | width8: '1' 241 | width9: '1' 242 | ylabel: Amplitude 243 | ymax: '1' 244 | ymin: '-1' 245 | yunit: '""' 246 | states: 247 | bus_sink: false 248 | bus_source: false 249 | bus_structure: null 250 | coordinate: [1085, 273] 251 | rotation: 0 252 | state: true 253 | - name: root_raised_cosine_filter_0 254 | id: root_raised_cosine_filter 255 | parameters: 256 | affinity: '' 257 | alias: '' 258 | alpha: '0.35' 259 | comment: '' 260 | decim: '1' 261 | gain: '8' 262 | interp: '1' 263 | maxoutbuf: '0' 264 | minoutbuf: '0' 265 | ntaps: 11*8 266 | samp_rate: '80000' 267 | sym_rate: '10000' 268 | type: fir_filter_ccf 269 | states: 270 | bus_sink: false 271 | bus_source: false 272 | bus_structure: null 273 | coordinate: [584, 72] 274 | rotation: 0 275 | state: true 276 | - name: root_raised_cosine_filter_0_0 277 | id: root_raised_cosine_filter 278 | parameters: 279 | affinity: '' 280 | alias: '' 281 | alpha: '0.35' 282 | comment: '' 283 | decim: '1' 284 | gain: '1' 285 | interp: '1' 286 | maxoutbuf: '0' 287 | minoutbuf: '0' 288 | ntaps: 11*8 289 | samp_rate: '80000' 290 | sym_rate: '10000' 291 | type: fir_filter_ccf 292 | states: 293 | bus_sink: false 294 | bus_source: false 295 | bus_structure: null 296 | coordinate: [848, 73] 297 | rotation: 0 298 | state: true 299 | 300 | connections: 301 | - [blocks_complex_to_real_0, '0', blocks_float_to_complex_0, '0'] 302 | - [blocks_delay_0, '0', blocks_complex_to_real_0, '0'] 303 | - [blocks_float_to_complex_0, '0', qtgui_time_sink_x_0, '1'] 304 | - [blocks_throttle_0, '0', blocks_delay_0, '0'] 305 | - [blocks_throttle_0, '0', root_raised_cosine_filter_0, '0'] 306 | - [blocks_vector_source_x_0, '0', interp_fir_filter_xxx_0, '0'] 307 | - [interp_fir_filter_xxx_0, '0', blocks_throttle_0, '0'] 308 | - [root_raised_cosine_filter_0, '0', root_raised_cosine_filter_0_0, '0'] 309 | - [root_raised_cosine_filter_0_0, '0', qtgui_time_sink_x_0, '0'] 310 | 311 | metadata: 312 | file_format: 1 313 | -------------------------------------------------------------------------------- /Chapter3_Tag_Message/lab1_stream_tag.grc: -------------------------------------------------------------------------------- 1 | options: 2 | parameters: 3 | author: wcc 4 | category: '[GRC Hier Blocks]' 5 | cmake_opt: '' 6 | comment: '' 7 | copyright: '' 8 | description: '' 9 | gen_cmake: 'On' 10 | gen_linking: dynamic 11 | generate_options: qt_gui 12 | hier_block_src_path: '.:' 13 | id: lab1_stream_tag 14 | max_nouts: '0' 15 | output_language: python 16 | placement: (0,0) 17 | qt_qss_theme: '' 18 | realtime_scheduling: '' 19 | run: 'True' 20 | run_command: '{python} -u {filename}' 21 | run_options: prompt 22 | sizing_mode: fixed 23 | thread_safe_setters: '' 24 | title: lab1_stream_tag 25 | window_size: '' 26 | states: 27 | bus_sink: false 28 | bus_source: false 29 | bus_structure: null 30 | coordinate: [8, 8] 31 | rotation: 0 32 | state: enabled 33 | 34 | blocks: 35 | - name: samp_rate 36 | id: variable 37 | parameters: 38 | comment: '' 39 | value: '32000' 40 | states: 41 | bus_sink: false 42 | bus_source: false 43 | bus_structure: null 44 | coordinate: [184, 12] 45 | rotation: 0 46 | state: enabled 47 | - name: blocks_add_xx_0 48 | id: blocks_add_xx 49 | parameters: 50 | affinity: '' 51 | alias: '' 52 | comment: '' 53 | maxoutbuf: '0' 54 | minoutbuf: '0' 55 | num_inputs: '2' 56 | type: float 57 | vlen: '1' 58 | states: 59 | bus_sink: false 60 | bus_source: false 61 | bus_structure: null 62 | coordinate: [198, 228] 63 | rotation: 0 64 | state: true 65 | - name: blocks_repeat_0 66 | id: blocks_repeat 67 | parameters: 68 | affinity: '' 69 | alias: '' 70 | comment: '' 71 | interp: '10' 72 | maxoutbuf: '0' 73 | minoutbuf: '0' 74 | type: float 75 | vlen: '1' 76 | states: 77 | bus_sink: false 78 | bus_source: false 79 | bus_structure: null 80 | coordinate: [474, 236] 81 | rotation: 0 82 | state: true 83 | - name: blocks_tags_strobe_0 84 | id: blocks_tags_strobe 85 | parameters: 86 | affinity: '' 87 | alias: '' 88 | comment: '' 89 | key: pmt.intern("strobe") 90 | maxoutbuf: '0' 91 | minoutbuf: '0' 92 | nsamps: '10' 93 | type: float 94 | value: pmt.intern("TEST") 95 | vlen: '1' 96 | states: 97 | bus_sink: false 98 | bus_source: false 99 | bus_structure: null 100 | coordinate: [18, 267] 101 | rotation: 0 102 | state: true 103 | - name: blocks_throttle_0 104 | id: blocks_throttle 105 | parameters: 106 | affinity: '' 107 | alias: '' 108 | comment: '' 109 | ignoretag: 'True' 110 | maxoutbuf: '0' 111 | minoutbuf: '0' 112 | samples_per_second: samp_rate 113 | type: float 114 | vlen: '1' 115 | states: 116 | bus_sink: false 117 | bus_source: false 118 | bus_structure: null 119 | coordinate: [314, 236] 120 | rotation: 0 121 | state: true 122 | - name: blocks_vector_source_x_0 123 | id: blocks_vector_source_x 124 | parameters: 125 | affinity: '' 126 | alias: '' 127 | comment: '' 128 | maxoutbuf: '0' 129 | minoutbuf: '0' 130 | repeat: 'True' 131 | tags: '[]' 132 | type: float 133 | vector: range(10) 134 | vlen: '1' 135 | states: 136 | bus_sink: false 137 | bus_source: false 138 | bus_structure: null 139 | coordinate: [25, 142] 140 | rotation: 0 141 | state: true 142 | - name: qtgui_time_sink_x_0 143 | id: qtgui_time_sink_x 144 | parameters: 145 | affinity: '' 146 | alias: '' 147 | alpha1: '1.0' 148 | alpha10: '1.0' 149 | alpha2: '1.0' 150 | alpha3: '1.0' 151 | alpha4: '1.0' 152 | alpha5: '1.0' 153 | alpha6: '1.0' 154 | alpha7: '1.0' 155 | alpha8: '1.0' 156 | alpha9: '1.0' 157 | autoscale: 'True' 158 | axislabels: 'True' 159 | color1: blue 160 | color10: dark blue 161 | color2: red 162 | color3: green 163 | color4: black 164 | color5: cyan 165 | color6: magenta 166 | color7: yellow 167 | color8: dark red 168 | color9: dark green 169 | comment: '' 170 | ctrlpanel: 'False' 171 | entags: 'True' 172 | grid: 'False' 173 | gui_hint: '' 174 | label1: Signal 1 175 | label10: Signal 10 176 | label2: Signal 2 177 | label3: Signal 3 178 | label4: Signal 4 179 | label5: Signal 5 180 | label6: Signal 6 181 | label7: Signal 7 182 | label8: Signal 8 183 | label9: Signal 9 184 | legend: 'True' 185 | marker1: '-1' 186 | marker10: '-1' 187 | marker2: '-1' 188 | marker3: '-1' 189 | marker4: '-1' 190 | marker5: '-1' 191 | marker6: '-1' 192 | marker7: '-1' 193 | marker8: '-1' 194 | marker9: '-1' 195 | name: repeate 196 | nconnections: '1' 197 | size: '1024' 198 | srate: samp_rate 199 | stemplot: 'False' 200 | style1: '1' 201 | style10: '1' 202 | style2: '1' 203 | style3: '1' 204 | style4: '1' 205 | style5: '1' 206 | style6: '1' 207 | style7: '1' 208 | style8: '1' 209 | style9: '1' 210 | tr_chan: '0' 211 | tr_delay: '0' 212 | tr_level: '0.0' 213 | tr_mode: qtgui.TRIG_MODE_FREE 214 | tr_slope: qtgui.TRIG_SLOPE_POS 215 | tr_tag: '""' 216 | type: float 217 | update_time: '0.10' 218 | width1: '1' 219 | width10: '1' 220 | width2: '1' 221 | width3: '1' 222 | width4: '1' 223 | width5: '1' 224 | width6: '1' 225 | width7: '1' 226 | width8: '1' 227 | width9: '1' 228 | ylabel: Amplitude 229 | ymax: '1' 230 | ymin: '-1' 231 | yunit: '""' 232 | states: 233 | bus_sink: false 234 | bus_source: false 235 | bus_structure: null 236 | coordinate: [645, 208] 237 | rotation: 0 238 | state: true 239 | - name: qtgui_time_sink_x_0_0 240 | id: qtgui_time_sink_x 241 | parameters: 242 | affinity: '' 243 | alias: '' 244 | alpha1: '1.0' 245 | alpha10: '1.0' 246 | alpha2: '1.0' 247 | alpha3: '1.0' 248 | alpha4: '1.0' 249 | alpha5: '1.0' 250 | alpha6: '1.0' 251 | alpha7: '1.0' 252 | alpha8: '1.0' 253 | alpha9: '1.0' 254 | autoscale: 'True' 255 | axislabels: 'True' 256 | color1: blue 257 | color10: dark blue 258 | color2: red 259 | color3: green 260 | color4: black 261 | color5: cyan 262 | color6: magenta 263 | color7: yellow 264 | color8: dark red 265 | color9: dark green 266 | comment: '' 267 | ctrlpanel: 'False' 268 | entags: 'True' 269 | grid: 'False' 270 | gui_hint: '' 271 | label1: Signal 1 272 | label10: Signal 10 273 | label2: Signal 2 274 | label3: Signal 3 275 | label4: Signal 4 276 | label5: Signal 5 277 | label6: Signal 6 278 | label7: Signal 7 279 | label8: Signal 8 280 | label9: Signal 9 281 | legend: 'True' 282 | marker1: '0' 283 | marker10: '-1' 284 | marker2: '-1' 285 | marker3: '-1' 286 | marker4: '-1' 287 | marker5: '-1' 288 | marker6: '-1' 289 | marker7: '-1' 290 | marker8: '-1' 291 | marker9: '-1' 292 | name: stream with tags 293 | nconnections: '1' 294 | size: '256' 295 | srate: samp_rate 296 | stemplot: 'False' 297 | style1: '1' 298 | style10: '1' 299 | style2: '1' 300 | style3: '1' 301 | style4: '1' 302 | style5: '1' 303 | style6: '1' 304 | style7: '1' 305 | style8: '1' 306 | style9: '1' 307 | tr_chan: '0' 308 | tr_delay: '0' 309 | tr_level: '0.0' 310 | tr_mode: qtgui.TRIG_MODE_FREE 311 | tr_slope: qtgui.TRIG_SLOPE_POS 312 | tr_tag: '""' 313 | type: float 314 | update_time: '0.10' 315 | width1: '1' 316 | width10: '1' 317 | width2: '1' 318 | width3: '1' 319 | width4: '1' 320 | width5: '1' 321 | width6: '1' 322 | width7: '1' 323 | width8: '1' 324 | width9: '1' 325 | ylabel: Amplitude 326 | ymax: '1' 327 | ymin: '-1' 328 | yunit: '""' 329 | states: 330 | bus_sink: false 331 | bus_source: false 332 | bus_structure: null 333 | coordinate: [279, 330] 334 | rotation: 0 335 | state: true 336 | 337 | connections: 338 | - [blocks_add_xx_0, '0', blocks_throttle_0, '0'] 339 | - [blocks_add_xx_0, '0', qtgui_time_sink_x_0_0, '0'] 340 | - [blocks_repeat_0, '0', qtgui_time_sink_x_0, '0'] 341 | - [blocks_tags_strobe_0, '0', blocks_add_xx_0, '1'] 342 | - [blocks_throttle_0, '0', blocks_repeat_0, '0'] 343 | - [blocks_vector_source_x_0, '0', blocks_add_xx_0, '0'] 344 | 345 | metadata: 346 | file_format: 1 347 | -------------------------------------------------------------------------------- /Chapter3_Tag_Message/lab2_message_pass.grc: -------------------------------------------------------------------------------- 1 | options: 2 | parameters: 3 | author: wcc 4 | category: '[GRC Hier Blocks]' 5 | cmake_opt: '' 6 | comment: '' 7 | copyright: '' 8 | description: '' 9 | gen_cmake: 'On' 10 | gen_linking: dynamic 11 | generate_options: qt_gui 12 | hier_block_src_path: '.:' 13 | id: lab2_message_pass 14 | max_nouts: '0' 15 | output_language: python 16 | placement: (0,0) 17 | qt_qss_theme: '' 18 | realtime_scheduling: '' 19 | run: 'True' 20 | run_command: '{python} -u {filename}' 21 | run_options: prompt 22 | sizing_mode: fixed 23 | thread_safe_setters: '' 24 | title: lab2_message_pass 25 | window_size: '' 26 | states: 27 | bus_sink: false 28 | bus_source: false 29 | bus_structure: null 30 | coordinate: [8, 8] 31 | rotation: 0 32 | state: enabled 33 | 34 | blocks: 35 | - name: samp_rate 36 | id: variable 37 | parameters: 38 | comment: '' 39 | value: '2' 40 | states: 41 | bus_sink: false 42 | bus_source: false 43 | bus_structure: null 44 | coordinate: [185, 12] 45 | rotation: 0 46 | state: enabled 47 | - name: blocks_message_debug_0 48 | id: blocks_message_debug 49 | parameters: 50 | affinity: '' 51 | alias: '' 52 | comment: '' 53 | states: 54 | bus_sink: false 55 | bus_source: false 56 | bus_structure: null 57 | coordinate: [815, 229] 58 | rotation: 0 59 | state: true 60 | - name: blocks_message_strobe_0 61 | id: blocks_message_strobe 62 | parameters: 63 | affinity: '' 64 | alias: '' 65 | comment: '' 66 | maxoutbuf: '0' 67 | minoutbuf: '0' 68 | msg: pmt.cons(pmt.make_dict(), pmt.pmt_to_python.numpy_to_uvector(numpy.array([ord(c) 69 | for c in "Hello world!"], numpy.uint8))) 70 | period: '500' 71 | states: 72 | bus_sink: false 73 | bus_source: false 74 | bus_structure: null 75 | coordinate: [67, 149] 76 | rotation: 0 77 | state: true 78 | - name: blocks_pdu_to_tagged_stream_0 79 | id: blocks_pdu_to_tagged_stream 80 | parameters: 81 | affinity: '' 82 | alias: '' 83 | comment: '' 84 | maxoutbuf: '0' 85 | minoutbuf: '0' 86 | tag: packet_len 87 | type: byte 88 | states: 89 | bus_sink: false 90 | bus_source: false 91 | bus_structure: null 92 | coordinate: [315, 157] 93 | rotation: 0 94 | state: true 95 | - name: blocks_tagged_stream_to_pdu_0 96 | id: blocks_tagged_stream_to_pdu 97 | parameters: 98 | affinity: '' 99 | alias: '' 100 | comment: '' 101 | maxoutbuf: '0' 102 | minoutbuf: '0' 103 | tag: packet_len 104 | type: byte 105 | states: 106 | bus_sink: false 107 | bus_source: false 108 | bus_structure: null 109 | coordinate: [560, 156] 110 | rotation: 0 111 | state: true 112 | - name: import_0 113 | id: import 114 | parameters: 115 | alias: '' 116 | comment: '' 117 | imports: import numpy 118 | states: 119 | bus_sink: false 120 | bus_source: false 121 | bus_structure: null 122 | coordinate: [292, 17] 123 | rotation: 0 124 | state: true 125 | 126 | connections: 127 | - [blocks_message_strobe_0, strobe, blocks_pdu_to_tagged_stream_0, pdus] 128 | - [blocks_pdu_to_tagged_stream_0, '0', blocks_tagged_stream_to_pdu_0, '0'] 129 | - [blocks_tagged_stream_to_pdu_0, pdus, blocks_message_debug_0, print] 130 | - [blocks_tagged_stream_to_pdu_0, pdus, blocks_message_debug_0, print_pdu] 131 | 132 | metadata: 133 | file_format: 1 134 | -------------------------------------------------------------------------------- /Chapter3_Tag_Message/lab3_frame_sync.grc: -------------------------------------------------------------------------------- 1 | options: 2 | parameters: 3 | author: wcc 4 | category: '[GRC Hier Blocks]' 5 | cmake_opt: '' 6 | comment: '' 7 | copyright: '' 8 | description: '' 9 | gen_cmake: 'On' 10 | gen_linking: dynamic 11 | generate_options: qt_gui 12 | hier_block_src_path: '.:' 13 | id: lab3_frame_sync 14 | max_nouts: '0' 15 | output_language: python 16 | placement: (0,0) 17 | qt_qss_theme: '' 18 | realtime_scheduling: '' 19 | run: 'True' 20 | run_command: '{python} -u {filename}' 21 | run_options: prompt 22 | sizing_mode: fixed 23 | thread_safe_setters: '' 24 | title: lab3_frame_sync 25 | window_size: '' 26 | states: 27 | bus_sink: false 28 | bus_source: false 29 | bus_structure: null 30 | coordinate: [8, 8] 31 | rotation: 0 32 | state: enabled 33 | 34 | blocks: 35 | - name: samp_rate 36 | id: variable 37 | parameters: 38 | comment: '' 39 | value: '32000' 40 | states: 41 | bus_sink: false 42 | bus_source: false 43 | bus_structure: null 44 | coordinate: [184, 12] 45 | rotation: 0 46 | state: enabled 47 | - name: blocks_message_debug_0 48 | id: blocks_message_debug 49 | parameters: 50 | affinity: '' 51 | alias: '' 52 | comment: Display the message that was sent. 53 | states: 54 | bus_sink: false 55 | bus_source: false 56 | bus_structure: null 57 | coordinate: [247, 362] 58 | rotation: 0 59 | state: enabled 60 | - name: blocks_message_strobe_0_0 61 | id: blocks_message_strobe 62 | parameters: 63 | affinity: '' 64 | alias: '' 65 | comment: Generate hello world message 66 | maxoutbuf: '0' 67 | minoutbuf: '0' 68 | msg: pmt.cons(pmt.make_dict(), pmt.pmt_to_python.numpy_to_uvector(numpy.array([ord(c) 69 | for c in 'Hello world!'], numpy.uint8))) 70 | period: '500' 71 | states: 72 | bus_sink: false 73 | bus_source: false 74 | bus_structure: null 75 | coordinate: [366, 40] 76 | rotation: 0 77 | state: enabled 78 | - name: blocks_pdu_to_tagged_stream_1 79 | id: blocks_pdu_to_tagged_stream 80 | parameters: 81 | affinity: '' 82 | alias: '' 83 | comment: '' 84 | maxoutbuf: '0' 85 | minoutbuf: '0' 86 | tag: len_key 87 | type: byte 88 | states: 89 | bus_sink: false 90 | bus_source: false 91 | bus_structure: null 92 | coordinate: [537, 148] 93 | rotation: 0 94 | state: enabled 95 | - name: blocks_repack_bits_bb_0_0 96 | id: blocks_repack_bits_bb 97 | parameters: 98 | affinity: '' 99 | alias: '' 100 | align_output: 'False' 101 | comment: Access code block up ahead needs 1 byte per bit 102 | endianness: gr.GR_MSB_FIRST 103 | k: '8' 104 | l: '1' 105 | len_tag_key: len_key 106 | maxoutbuf: '0' 107 | minoutbuf: '0' 108 | states: 109 | bus_sink: false 110 | bus_source: false 111 | bus_structure: null 112 | coordinate: [1150, 264] 113 | rotation: 180 114 | state: enabled 115 | - name: blocks_repack_bits_bb_0_0_0 116 | id: blocks_repack_bits_bb 117 | parameters: 118 | affinity: '' 119 | alias: '' 120 | align_output: 'False' 121 | comment: Tagged Stream to PDU block up ahead needs packed bytes 122 | endianness: gr.GR_MSB_FIRST 123 | k: '1' 124 | l: '8' 125 | len_tag_key: len_key2 126 | maxoutbuf: '0' 127 | minoutbuf: '0' 128 | states: 129 | bus_sink: false 130 | bus_source: false 131 | bus_structure: null 132 | coordinate: [451, 265] 133 | rotation: 180 134 | state: enabled 135 | - name: blocks_tagged_stream_mux_0 136 | id: blocks_tagged_stream_mux 137 | parameters: 138 | affinity: '' 139 | alias: '' 140 | comment: Append header to payload 141 | lengthtagname: len_key 142 | maxoutbuf: '0' 143 | minoutbuf: '0' 144 | ninputs: '2' 145 | tag_preserve_head_pos: '0' 146 | type: byte 147 | vlen: '1' 148 | states: 149 | bus_sink: false 150 | bus_source: false 151 | bus_structure: null 152 | coordinate: [979, 121] 153 | rotation: 0 154 | state: enabled 155 | - name: blocks_tagged_stream_to_pdu_0 156 | id: blocks_tagged_stream_to_pdu 157 | parameters: 158 | affinity: '' 159 | alias: '' 160 | comment: '' 161 | maxoutbuf: '0' 162 | minoutbuf: '0' 163 | tag: len_key2 164 | type: byte 165 | states: 166 | bus_sink: false 167 | bus_source: false 168 | bus_structure: null 169 | coordinate: [217, 273] 170 | rotation: 180 171 | state: enabled 172 | - name: blocks_throttle_0 173 | id: blocks_throttle 174 | parameters: 175 | affinity: '' 176 | alias: '' 177 | comment: Slow things down 178 | ignoretag: 'True' 179 | maxoutbuf: '0' 180 | minoutbuf: '0' 181 | samples_per_second: samp_rate 182 | type: byte 183 | vlen: '1' 184 | states: 185 | bus_sink: false 186 | bus_source: false 187 | bus_structure: null 188 | coordinate: [1200, 129] 189 | rotation: 0 190 | state: enabled 191 | - name: digital_chunks_to_symbols_xx_0_0_0 192 | id: digital_chunks_to_symbols_xx 193 | parameters: 194 | affinity: '' 195 | alias: '' 196 | comment: To display in time domain we map individual bits to (complex) symbols 197 | dimension: '1' 198 | in_type: byte 199 | maxoutbuf: '0' 200 | minoutbuf: '0' 201 | num_ports: '1' 202 | out_type: complex 203 | symbol_table: '[-1, 1]' 204 | states: 205 | bus_sink: false 206 | bus_source: false 207 | bus_structure: null 208 | coordinate: [786, 399] 209 | rotation: 0 210 | state: enabled 211 | - name: digital_correlate_access_code_xx_ts_1 212 | id: digital_correlate_access_code_xx_ts 213 | parameters: 214 | access_code: digital.packet_utils.default_access_code 215 | affinity: '' 216 | alias: '' 217 | comment: Correlates with access code to extract the payload. 218 | maxoutbuf: '0' 219 | minoutbuf: '0' 220 | tagname: len_key2 221 | threshold: '0' 222 | type: byte 223 | states: 224 | bus_sink: false 225 | bus_source: false 226 | bus_structure: null 227 | coordinate: [740, 255] 228 | rotation: 180 229 | state: enabled 230 | - name: digital_protocol_formatter_bb_0 231 | id: digital_protocol_formatter_bb 232 | parameters: 233 | affinity: '' 234 | alias: '' 235 | comment: Generate header 236 | format: hdr_format 237 | len_tag_key: len_key 238 | maxoutbuf: '0' 239 | minoutbuf: '0' 240 | states: 241 | bus_sink: false 242 | bus_source: false 243 | bus_structure: null 244 | coordinate: [731, 40] 245 | rotation: 0 246 | state: enabled 247 | - name: hdr_format 248 | id: parameter 249 | parameters: 250 | alias: '' 251 | comment: '' 252 | hide: none 253 | label: Header Formatter 254 | short_id: '' 255 | type: '' 256 | value: digital.header_format_default(digital.packet_utils.default_access_code, 257 | 0) 258 | states: 259 | bus_sink: false 260 | bus_source: false 261 | bus_structure: null 262 | coordinate: [161, 93] 263 | rotation: 0 264 | state: enabled 265 | - name: import_0 266 | id: import 267 | parameters: 268 | alias: '' 269 | comment: '' 270 | imports: import numpy 271 | states: 272 | bus_sink: false 273 | bus_source: false 274 | bus_structure: null 275 | coordinate: [12, 116] 276 | rotation: 0 277 | state: enabled 278 | - name: qtgui_time_sink_x_0_1_0 279 | id: qtgui_time_sink_x 280 | parameters: 281 | affinity: '' 282 | alias: '' 283 | alpha1: '1.0' 284 | alpha10: '1.0' 285 | alpha2: '1.0' 286 | alpha3: '1.0' 287 | alpha4: '1.0' 288 | alpha5: '1.0' 289 | alpha6: '1.0' 290 | alpha7: '1.0' 291 | alpha8: '1.0' 292 | alpha9: '1.0' 293 | autoscale: 'True' 294 | axislabels: 'True' 295 | color1: blue 296 | color10: dark blue 297 | color2: red 298 | color3: green 299 | color4: black 300 | color5: cyan 301 | color6: magenta 302 | color7: yellow 303 | color8: dark red 304 | color9: dark green 305 | comment: Display payloud in time domain 306 | ctrlpanel: 'False' 307 | entags: 'True' 308 | grid: 'False' 309 | gui_hint: '' 310 | label1: '' 311 | label10: '' 312 | label2: '' 313 | label3: '' 314 | label4: '' 315 | label5: '' 316 | label6: '' 317 | label7: '' 318 | label8: '' 319 | label9: '' 320 | legend: 'True' 321 | marker1: '-1' 322 | marker10: '-1' 323 | marker2: '-1' 324 | marker3: '-1' 325 | marker4: '-1' 326 | marker5: '-1' 327 | marker6: '-1' 328 | marker7: '-1' 329 | marker8: '-1' 330 | marker9: '-1' 331 | name: '""' 332 | nconnections: '1' 333 | size: '512' 334 | srate: samp_rate 335 | stemplot: 'False' 336 | style1: '1' 337 | style10: '1' 338 | style2: '1' 339 | style3: '1' 340 | style4: '1' 341 | style5: '1' 342 | style6: '1' 343 | style7: '1' 344 | style8: '1' 345 | style9: '1' 346 | tr_chan: '0' 347 | tr_delay: '0' 348 | tr_level: '0.0' 349 | tr_mode: qtgui.TRIG_MODE_FREE 350 | tr_slope: qtgui.TRIG_SLOPE_POS 351 | tr_tag: '""' 352 | type: complex 353 | update_time: '0.10' 354 | width1: '1' 355 | width10: '1' 356 | width2: '1' 357 | width3: '1' 358 | width4: '1' 359 | width5: '1' 360 | width6: '1' 361 | width7: '1' 362 | width8: '1' 363 | width9: '1' 364 | ylabel: Amplitude 365 | ymax: '1' 366 | ymin: '-1' 367 | yunit: '""' 368 | states: 369 | bus_sink: false 370 | bus_source: false 371 | bus_structure: null 372 | coordinate: [1156, 371] 373 | rotation: 0 374 | state: enabled 375 | 376 | connections: 377 | - [blocks_message_strobe_0_0, strobe, blocks_pdu_to_tagged_stream_1, pdus] 378 | - [blocks_pdu_to_tagged_stream_1, '0', blocks_tagged_stream_mux_0, '1'] 379 | - [blocks_pdu_to_tagged_stream_1, '0', digital_protocol_formatter_bb_0, '0'] 380 | - [blocks_repack_bits_bb_0_0, '0', digital_correlate_access_code_xx_ts_1, '0'] 381 | - [blocks_repack_bits_bb_0_0_0, '0', blocks_tagged_stream_to_pdu_0, '0'] 382 | - [blocks_tagged_stream_mux_0, '0', blocks_throttle_0, '0'] 383 | - [blocks_tagged_stream_to_pdu_0, pdus, blocks_message_debug_0, print] 384 | - [blocks_throttle_0, '0', blocks_repack_bits_bb_0_0, '0'] 385 | - [digital_chunks_to_symbols_xx_0_0_0, '0', qtgui_time_sink_x_0_1_0, '0'] 386 | - [digital_correlate_access_code_xx_ts_1, '0', blocks_repack_bits_bb_0_0_0, '0'] 387 | - [digital_correlate_access_code_xx_ts_1, '0', digital_chunks_to_symbols_xx_0_0_0, 388 | '0'] 389 | - [digital_protocol_formatter_bb_0, '0', blocks_tagged_stream_mux_0, '0'] 390 | 391 | metadata: 392 | file_format: 1 393 | -------------------------------------------------------------------------------- /Chapter4_AM/lab1_am_dsb_tc.grc: -------------------------------------------------------------------------------- 1 | options: 2 | parameters: 3 | author: wcc 4 | category: '[GRC Hier Blocks]' 5 | cmake_opt: '' 6 | comment: '' 7 | copyright: '' 8 | description: '' 9 | gen_cmake: 'On' 10 | gen_linking: dynamic 11 | generate_options: qt_gui 12 | hier_block_src_path: '.:' 13 | id: lab1_am_dsb_tc 14 | max_nouts: '0' 15 | output_language: python 16 | placement: (0,0) 17 | qt_qss_theme: '' 18 | realtime_scheduling: '' 19 | run: 'True' 20 | run_command: '{python} -u {filename}' 21 | run_options: prompt 22 | sizing_mode: fixed 23 | thread_safe_setters: '' 24 | title: lab1_am_dsb_tc 25 | window_size: '' 26 | states: 27 | bus_sink: false 28 | bus_source: false 29 | bus_structure: null 30 | coordinate: [8, 8] 31 | rotation: 0 32 | state: enabled 33 | 34 | blocks: 35 | - name: bband_freq 36 | id: variable_qtgui_range 37 | parameters: 38 | comment: '' 39 | gui_hint: '' 40 | label: baseband frequency 41 | min_len: '200' 42 | orient: Qt.Horizontal 43 | rangeType: float 44 | start: '0' 45 | step: '1' 46 | stop: 15e3 47 | value: 5e3 48 | widget: counter_slider 49 | states: 50 | bus_sink: false 51 | bus_source: false 52 | bus_structure: null 53 | coordinate: [242, 14] 54 | rotation: 0 55 | state: true 56 | - name: carrier_freq 57 | id: variable_qtgui_range 58 | parameters: 59 | comment: '' 60 | gui_hint: '' 61 | label: carrier frequency 62 | min_len: '200' 63 | orient: Qt.Horizontal 64 | rangeType: int 65 | start: '50000' 66 | step: '1' 67 | stop: '80000' 68 | value: '50000' 69 | widget: counter_slider 70 | states: 71 | bus_sink: false 72 | bus_source: false 73 | bus_structure: null 74 | coordinate: [404, 15] 75 | rotation: 0 76 | state: true 77 | - name: samp_rate 78 | id: variable 79 | parameters: 80 | comment: '' 81 | value: 500e3 82 | states: 83 | bus_sink: false 84 | bus_source: false 85 | bus_structure: null 86 | coordinate: [153, 11] 87 | rotation: 0 88 | state: enabled 89 | - name: analog_sig_source_x_0 90 | id: analog_sig_source_x 91 | parameters: 92 | affinity: '' 93 | alias: '' 94 | amp: '1' 95 | comment: '' 96 | freq: bband_freq 97 | maxoutbuf: '0' 98 | minoutbuf: '0' 99 | offset: '0' 100 | phase: '0' 101 | samp_rate: samp_rate 102 | type: float 103 | waveform: analog.GR_COS_WAVE 104 | states: 105 | bus_sink: false 106 | bus_source: false 107 | bus_structure: null 108 | coordinate: [53, 178] 109 | rotation: 0 110 | state: true 111 | - name: analog_sig_source_x_1 112 | id: analog_sig_source_x 113 | parameters: 114 | affinity: '' 115 | alias: '' 116 | amp: '1' 117 | comment: '' 118 | freq: carrier_freq 119 | maxoutbuf: '0' 120 | minoutbuf: '0' 121 | offset: '0' 122 | phase: '0' 123 | samp_rate: samp_rate 124 | type: float 125 | waveform: analog.GR_COS_WAVE 126 | states: 127 | bus_sink: false 128 | bus_source: false 129 | bus_structure: null 130 | coordinate: [51, 344] 131 | rotation: 0 132 | state: true 133 | - name: blocks_add_const_vxx_0 134 | id: blocks_add_const_vxx 135 | parameters: 136 | affinity: '' 137 | alias: '' 138 | comment: '' 139 | const: '1' 140 | maxoutbuf: '0' 141 | minoutbuf: '0' 142 | type: float 143 | vlen: '1' 144 | states: 145 | bus_sink: false 146 | bus_source: false 147 | bus_structure: null 148 | coordinate: [268, 223] 149 | rotation: 0 150 | state: true 151 | - name: blocks_multiply_xx_0 152 | id: blocks_multiply_xx 153 | parameters: 154 | affinity: '' 155 | alias: '' 156 | comment: '' 157 | maxoutbuf: '0' 158 | minoutbuf: '0' 159 | num_inputs: '2' 160 | type: float 161 | vlen: '1' 162 | states: 163 | bus_sink: false 164 | bus_source: false 165 | bus_structure: null 166 | coordinate: [434, 359] 167 | rotation: 0 168 | state: true 169 | - name: blocks_throttle_0 170 | id: blocks_throttle 171 | parameters: 172 | affinity: '' 173 | alias: '' 174 | comment: '' 175 | ignoretag: 'True' 176 | maxoutbuf: '0' 177 | minoutbuf: '0' 178 | samples_per_second: samp_rate 179 | type: float 180 | vlen: '1' 181 | states: 182 | bus_sink: false 183 | bus_source: false 184 | bus_structure: null 185 | coordinate: [579, 367] 186 | rotation: 0 187 | state: true 188 | - name: qtgui_freq_sink_x_0 189 | id: qtgui_freq_sink_x 190 | parameters: 191 | affinity: '' 192 | alias: '' 193 | alpha1: '1.0' 194 | alpha10: '1.0' 195 | alpha2: '1.0' 196 | alpha3: '1.0' 197 | alpha4: '1.0' 198 | alpha5: '1.0' 199 | alpha6: '1.0' 200 | alpha7: '1.0' 201 | alpha8: '1.0' 202 | alpha9: '1.0' 203 | autoscale: 'False' 204 | average: '1.0' 205 | axislabels: 'True' 206 | bw: samp_rate 207 | color1: '"blue"' 208 | color10: '"dark blue"' 209 | color2: '"red"' 210 | color3: '"green"' 211 | color4: '"black"' 212 | color5: '"cyan"' 213 | color6: '"magenta"' 214 | color7: '"yellow"' 215 | color8: '"dark red"' 216 | color9: '"dark green"' 217 | comment: '' 218 | ctrlpanel: 'False' 219 | fc: '0' 220 | fftsize: '1024' 221 | freqhalf: 'True' 222 | grid: 'False' 223 | gui_hint: '' 224 | label: Relative Gain 225 | label1: basebande 226 | label10: '''''' 227 | label2: carrier wave 228 | label3: modulated 229 | label4: '''''' 230 | label5: '''''' 231 | label6: '''''' 232 | label7: '''''' 233 | label8: '''''' 234 | label9: '''''' 235 | legend: 'True' 236 | maxoutbuf: '0' 237 | minoutbuf: '0' 238 | name: '""' 239 | nconnections: '3' 240 | showports: 'False' 241 | tr_chan: '0' 242 | tr_level: '0.0' 243 | tr_mode: qtgui.TRIG_MODE_FREE 244 | tr_tag: '""' 245 | type: float 246 | units: dB 247 | update_time: '0.10' 248 | width1: '1' 249 | width10: '1' 250 | width2: '1' 251 | width3: '1' 252 | width4: '1' 253 | width5: '1' 254 | width6: '1' 255 | width7: '1' 256 | width8: '1' 257 | width9: '1' 258 | wintype: firdes.WIN_BLACKMAN_hARRIS 259 | ymax: '10' 260 | ymin: '-140' 261 | states: 262 | bus_sink: false 263 | bus_source: false 264 | bus_structure: null 265 | coordinate: [792, 178] 266 | rotation: 0 267 | state: true 268 | - name: qtgui_time_sink_x_0 269 | id: qtgui_time_sink_x 270 | parameters: 271 | affinity: '' 272 | alias: '' 273 | alpha1: '1.0' 274 | alpha10: '1.0' 275 | alpha2: '1.0' 276 | alpha3: '1.0' 277 | alpha4: '1.0' 278 | alpha5: '1.0' 279 | alpha6: '1.0' 280 | alpha7: '1.0' 281 | alpha8: '1.0' 282 | alpha9: '1.0' 283 | autoscale: 'False' 284 | axislabels: 'True' 285 | color1: blue 286 | color10: dark blue 287 | color2: green 288 | color3: black 289 | color4: black 290 | color5: cyan 291 | color6: magenta 292 | color7: yellow 293 | color8: dark red 294 | color9: dark green 295 | comment: '' 296 | ctrlpanel: 'False' 297 | entags: 'True' 298 | grid: 'False' 299 | gui_hint: '' 300 | label1: baseband_signal 301 | label10: Signal 10 302 | label2: carrier_wave 303 | label3: modulated 304 | label4: carrier_wave_q 305 | label5: modulated_i 306 | label6: modulated_q 307 | label7: Signal 7 308 | label8: Signal 8 309 | label9: Signal 9 310 | legend: 'True' 311 | marker1: '-1' 312 | marker10: '-1' 313 | marker2: '-1' 314 | marker3: '-1' 315 | marker4: '-1' 316 | marker5: '-1' 317 | marker6: '-1' 318 | marker7: '-1' 319 | marker8: '-1' 320 | marker9: '-1' 321 | name: '""' 322 | nconnections: '3' 323 | size: '1024' 324 | srate: samp_rate 325 | stemplot: 'False' 326 | style1: '1' 327 | style10: '1' 328 | style2: '2' 329 | style3: '1' 330 | style4: '1' 331 | style5: '1' 332 | style6: '3' 333 | style7: '1' 334 | style8: '1' 335 | style9: '1' 336 | tr_chan: '0' 337 | tr_delay: '0' 338 | tr_level: '0.0' 339 | tr_mode: qtgui.TRIG_MODE_FREE 340 | tr_slope: qtgui.TRIG_SLOPE_POS 341 | tr_tag: '""' 342 | type: float 343 | update_time: '0.10' 344 | width1: '1' 345 | width10: '1' 346 | width2: '1' 347 | width3: '1' 348 | width4: '1' 349 | width5: '1' 350 | width6: '1' 351 | width7: '1' 352 | width8: '1' 353 | width9: '1' 354 | ylabel: Amplitude 355 | ymax: '1' 356 | ymin: '-1' 357 | yunit: '""' 358 | states: 359 | bus_sink: false 360 | bus_source: false 361 | bus_structure: null 362 | coordinate: [791, 67] 363 | rotation: 0 364 | state: true 365 | 366 | connections: 367 | - [analog_sig_source_x_0, '0', blocks_add_const_vxx_0, '0'] 368 | - [analog_sig_source_x_1, '0', blocks_multiply_xx_0, '1'] 369 | - [analog_sig_source_x_1, '0', qtgui_freq_sink_x_0, '1'] 370 | - [analog_sig_source_x_1, '0', qtgui_time_sink_x_0, '1'] 371 | - [blocks_add_const_vxx_0, '0', blocks_multiply_xx_0, '0'] 372 | - [blocks_add_const_vxx_0, '0', qtgui_freq_sink_x_0, '0'] 373 | - [blocks_add_const_vxx_0, '0', qtgui_time_sink_x_0, '0'] 374 | - [blocks_multiply_xx_0, '0', blocks_throttle_0, '0'] 375 | - [blocks_throttle_0, '0', qtgui_freq_sink_x_0, '2'] 376 | - [blocks_throttle_0, '0', qtgui_time_sink_x_0, '2'] 377 | 378 | metadata: 379 | file_format: 1 380 | -------------------------------------------------------------------------------- /Chapter4_AM/lab2_am_dsb_tc_antsdr.grc: -------------------------------------------------------------------------------- 1 | options: 2 | parameters: 3 | author: '' 4 | category: '[GRC Hier Blocks]' 5 | cmake_opt: '' 6 | comment: '' 7 | copyright: '' 8 | description: '' 9 | gen_cmake: 'On' 10 | gen_linking: dynamic 11 | generate_options: qt_gui 12 | hier_block_src_path: '.:' 13 | id: am_dsb_tc 14 | max_nouts: '0' 15 | output_language: python 16 | placement: (0,0) 17 | qt_qss_theme: '' 18 | realtime_scheduling: '' 19 | run: 'True' 20 | run_command: '{python} -u {filename}' 21 | run_options: prompt 22 | sizing_mode: fixed 23 | thread_safe_setters: '' 24 | title: am_dsb_tc 25 | window_size: '' 26 | states: 27 | bus_sink: false 28 | bus_source: false 29 | bus_structure: null 30 | coordinate: [8, 8] 31 | rotation: 0 32 | state: enabled 33 | 34 | blocks: 35 | - name: bband_duc 36 | id: variable_low_pass_filter_taps 37 | parameters: 38 | beta: '6.76' 39 | comment: '' 40 | cutoff_freq: 10e3 41 | gain: '5' 42 | samp_rate: 48e3 43 | width: 1e3 44 | win: firdes.WIN_HAMMING 45 | states: 46 | bus_sink: false 47 | bus_source: false 48 | bus_structure: null 49 | coordinate: [378, 8] 50 | rotation: 0 51 | state: true 52 | - name: samp_rate 53 | id: variable 54 | parameters: 55 | comment: '' 56 | value: '48000' 57 | states: 58 | bus_sink: false 59 | bus_source: false 60 | bus_structure: null 61 | coordinate: [153, 8] 62 | rotation: 0 63 | state: enabled 64 | - name: blocks_add_const_vxx_0 65 | id: blocks_add_const_vxx 66 | parameters: 67 | affinity: '' 68 | alias: '' 69 | comment: '' 70 | const: '0.5' 71 | maxoutbuf: '0' 72 | minoutbuf: '0' 73 | type: float 74 | vlen: '1' 75 | states: 76 | bus_sink: false 77 | bus_source: false 78 | bus_structure: null 79 | coordinate: [244, 238] 80 | rotation: 0 81 | state: true 82 | - name: blocks_float_to_complex_0 83 | id: blocks_float_to_complex 84 | parameters: 85 | affinity: '' 86 | alias: '' 87 | comment: '' 88 | maxoutbuf: '0' 89 | minoutbuf: '0' 90 | vlen: '1' 91 | states: 92 | bus_sink: false 93 | bus_source: false 94 | bus_structure: null 95 | coordinate: [404, 246] 96 | rotation: 0 97 | state: true 98 | - name: blocks_wavfile_source_0 99 | id: blocks_wavfile_source 100 | parameters: 101 | affinity: '' 102 | alias: '' 103 | comment: '' 104 | file: ../audio/music1_mono48kHz.wav 105 | maxoutbuf: '0' 106 | minoutbuf: '0' 107 | nchan: '1' 108 | repeat: 'True' 109 | states: 110 | bus_sink: false 111 | bus_source: false 112 | bus_structure: null 113 | coordinate: [4, 230] 114 | rotation: 0 115 | state: true 116 | - name: iio_pluto_sink_0 117 | id: iio_pluto_sink 118 | parameters: 119 | affinity: '' 120 | alias: '' 121 | attenuation1: '10.0' 122 | auto_filter: 'True' 123 | bandwidth: '200000' 124 | buffer_size: '32768' 125 | comment: '' 126 | cyclic: 'False' 127 | filter: '' 128 | frequency: '500000000' 129 | samplerate: samp_rate*20 130 | uri: url 131 | states: 132 | bus_sink: false 133 | bus_source: false 134 | bus_structure: null 135 | coordinate: [1018, 257] 136 | rotation: 0 137 | state: true 138 | - name: interp_fir_filter_xxx_0 139 | id: interp_fir_filter_xxx 140 | parameters: 141 | affinity: '' 142 | alias: '' 143 | comment: '' 144 | interp: '20' 145 | maxoutbuf: '0' 146 | minoutbuf: '0' 147 | samp_delay: '0' 148 | taps: bband_duc 149 | type: ccc 150 | states: 151 | bus_sink: false 152 | bus_source: false 153 | bus_structure: null 154 | coordinate: [602, 246] 155 | rotation: 0 156 | state: true 157 | - name: low_pass_filter_0 158 | id: low_pass_filter 159 | parameters: 160 | affinity: '' 161 | alias: '' 162 | beta: '6.76' 163 | comment: '' 164 | cutoff_freq: 15e3 165 | decim: '20' 166 | gain: '1' 167 | interp: '1' 168 | maxoutbuf: '0' 169 | minoutbuf: '0' 170 | samp_rate: samp_rate*20 171 | type: interp_fir_filter_ccf 172 | width: 1e3 173 | win: firdes.WIN_HAMMING 174 | states: 175 | bus_sink: false 176 | bus_source: false 177 | bus_structure: null 178 | coordinate: [808, 197] 179 | rotation: 0 180 | state: true 181 | - name: qtgui_sink_x_0 182 | id: qtgui_sink_x 183 | parameters: 184 | affinity: '' 185 | alias: '' 186 | bw: samp_rate 187 | comment: '' 188 | fc: '0' 189 | fftsize: '1024' 190 | gui_hint: '' 191 | maxoutbuf: '0' 192 | minoutbuf: '0' 193 | name: '""' 194 | plotconst: 'True' 195 | plotfreq: 'True' 196 | plottime: 'True' 197 | plotwaterfall: 'True' 198 | rate: '10' 199 | showports: 'False' 200 | showrf: 'False' 201 | type: complex 202 | wintype: firdes.WIN_BLACKMAN_hARRIS 203 | states: 204 | bus_sink: false 205 | bus_source: false 206 | bus_structure: null 207 | coordinate: [1019, 131] 208 | rotation: 0 209 | state: true 210 | - name: url 211 | id: parameter 212 | parameters: 213 | alias: '' 214 | comment: '' 215 | hide: none 216 | label: URL 217 | short_id: '' 218 | type: str 219 | value: ip:192.168.1.10 220 | states: 221 | bus_sink: false 222 | bus_source: false 223 | bus_structure: null 224 | coordinate: [250, 8] 225 | rotation: 0 226 | state: true 227 | 228 | connections: 229 | - [blocks_add_const_vxx_0, '0', blocks_float_to_complex_0, '0'] 230 | - [blocks_float_to_complex_0, '0', interp_fir_filter_xxx_0, '0'] 231 | - [blocks_wavfile_source_0, '0', blocks_add_const_vxx_0, '0'] 232 | - [interp_fir_filter_xxx_0, '0', low_pass_filter_0, '0'] 233 | - [low_pass_filter_0, '0', iio_pluto_sink_0, '0'] 234 | - [low_pass_filter_0, '0', qtgui_sink_x_0, '0'] 235 | 236 | metadata: 237 | file_format: 1 238 | -------------------------------------------------------------------------------- /Chapter4_AM/lab3_am_envelope_demod.grc: -------------------------------------------------------------------------------- 1 | options: 2 | parameters: 3 | author: wcc 4 | category: '[GRC Hier Blocks]' 5 | cmake_opt: '' 6 | comment: '' 7 | copyright: '' 8 | description: '' 9 | gen_cmake: 'On' 10 | gen_linking: dynamic 11 | generate_options: qt_gui 12 | hier_block_src_path: '.:' 13 | id: lab3_am_envelope_demod 14 | max_nouts: '0' 15 | output_language: python 16 | placement: (0,0) 17 | qt_qss_theme: '' 18 | realtime_scheduling: '' 19 | run: 'True' 20 | run_command: '{python} -u {filename}' 21 | run_options: prompt 22 | sizing_mode: fixed 23 | thread_safe_setters: '' 24 | title: lab3_am_envelope_demod 25 | window_size: '' 26 | states: 27 | bus_sink: false 28 | bus_source: false 29 | bus_structure: null 30 | coordinate: [8, 8] 31 | rotation: 0 32 | state: enabled 33 | 34 | blocks: 35 | - name: bband_freq 36 | id: variable_qtgui_range 37 | parameters: 38 | comment: '' 39 | gui_hint: '' 40 | label: baseband frequency 41 | min_len: '200' 42 | orient: Qt.Horizontal 43 | rangeType: float 44 | start: '0' 45 | step: '1' 46 | stop: 15e3 47 | value: 5e3 48 | widget: counter_slider 49 | states: 50 | bus_sink: false 51 | bus_source: false 52 | bus_structure: null 53 | coordinate: [287, 9] 54 | rotation: 0 55 | state: true 56 | - name: carrier_freq 57 | id: variable_qtgui_range 58 | parameters: 59 | comment: '' 60 | gui_hint: '' 61 | label: carrier frequency 62 | min_len: '200' 63 | orient: Qt.Horizontal 64 | rangeType: int 65 | start: '50000' 66 | step: '1' 67 | stop: '80000' 68 | value: '50000' 69 | widget: counter_slider 70 | states: 71 | bus_sink: false 72 | bus_source: false 73 | bus_structure: null 74 | coordinate: [449, 10] 75 | rotation: 0 76 | state: true 77 | - name: samp_rate 78 | id: variable 79 | parameters: 80 | comment: '' 81 | value: '500000' 82 | states: 83 | bus_sink: false 84 | bus_source: false 85 | bus_structure: null 86 | coordinate: [188, 9] 87 | rotation: 0 88 | state: enabled 89 | - name: analog_sig_source_x_0 90 | id: analog_sig_source_x 91 | parameters: 92 | affinity: '' 93 | alias: '' 94 | amp: '1' 95 | comment: '' 96 | freq: bband_freq 97 | maxoutbuf: '0' 98 | minoutbuf: '0' 99 | offset: '0' 100 | phase: '0' 101 | samp_rate: samp_rate 102 | type: float 103 | waveform: analog.GR_COS_WAVE 104 | states: 105 | bus_sink: false 106 | bus_source: false 107 | bus_structure: null 108 | coordinate: [34, 162] 109 | rotation: 0 110 | state: true 111 | - name: analog_sig_source_x_1 112 | id: analog_sig_source_x 113 | parameters: 114 | affinity: '' 115 | alias: '' 116 | amp: '1' 117 | comment: '' 118 | freq: carrier_freq 119 | maxoutbuf: '0' 120 | minoutbuf: '0' 121 | offset: '0' 122 | phase: '0' 123 | samp_rate: samp_rate 124 | type: float 125 | waveform: analog.GR_COS_WAVE 126 | states: 127 | bus_sink: false 128 | bus_source: false 129 | bus_structure: null 130 | coordinate: [32, 328] 131 | rotation: 0 132 | state: true 133 | - name: blocks_abs_xx_0 134 | id: blocks_abs_xx 135 | parameters: 136 | affinity: '' 137 | alias: '' 138 | comment: '' 139 | maxoutbuf: '0' 140 | minoutbuf: '0' 141 | type: float 142 | vlen: '1' 143 | states: 144 | bus_sink: false 145 | bus_source: false 146 | bus_structure: null 147 | coordinate: [759, 358] 148 | rotation: 0 149 | state: true 150 | - name: blocks_add_const_vxx_0 151 | id: blocks_add_const_vxx 152 | parameters: 153 | affinity: '' 154 | alias: '' 155 | comment: '' 156 | const: '1' 157 | maxoutbuf: '0' 158 | minoutbuf: '0' 159 | type: float 160 | vlen: '1' 161 | states: 162 | bus_sink: false 163 | bus_source: false 164 | bus_structure: null 165 | coordinate: [249, 207] 166 | rotation: 0 167 | state: true 168 | - name: blocks_multiply_xx_0 169 | id: blocks_multiply_xx 170 | parameters: 171 | affinity: '' 172 | alias: '' 173 | comment: '' 174 | maxoutbuf: '0' 175 | minoutbuf: '0' 176 | num_inputs: '2' 177 | type: float 178 | vlen: '1' 179 | states: 180 | bus_sink: false 181 | bus_source: false 182 | bus_structure: null 183 | coordinate: [415, 343] 184 | rotation: 0 185 | state: true 186 | - name: blocks_throttle_0 187 | id: blocks_throttle 188 | parameters: 189 | affinity: '' 190 | alias: '' 191 | comment: '' 192 | ignoretag: 'True' 193 | maxoutbuf: '0' 194 | minoutbuf: '0' 195 | samples_per_second: samp_rate 196 | type: float 197 | vlen: '1' 198 | states: 199 | bus_sink: false 200 | bus_source: false 201 | bus_structure: null 202 | coordinate: [560, 351] 203 | rotation: 0 204 | state: true 205 | - name: low_pass_filter_0 206 | id: low_pass_filter 207 | parameters: 208 | affinity: '' 209 | alias: '' 210 | beta: '6.76' 211 | comment: '' 212 | cutoff_freq: 15e3 213 | decim: '1' 214 | gain: '1' 215 | interp: '1' 216 | maxoutbuf: '0' 217 | minoutbuf: '0' 218 | samp_rate: samp_rate 219 | type: fir_filter_fff 220 | width: 1e3 221 | win: firdes.WIN_HAMMING 222 | states: 223 | bus_sink: false 224 | bus_source: false 225 | bus_structure: null 226 | coordinate: [889, 293] 227 | rotation: 0 228 | state: true 229 | - name: qtgui_freq_sink_x_0 230 | id: qtgui_freq_sink_x 231 | parameters: 232 | affinity: '' 233 | alias: '' 234 | alpha1: '1.0' 235 | alpha10: '1.0' 236 | alpha2: '1.0' 237 | alpha3: '1.0' 238 | alpha4: '1.0' 239 | alpha5: '1.0' 240 | alpha6: '1.0' 241 | alpha7: '1.0' 242 | alpha8: '1.0' 243 | alpha9: '1.0' 244 | autoscale: 'True' 245 | average: '1.0' 246 | axislabels: 'True' 247 | bw: samp_rate 248 | color1: '"blue"' 249 | color10: '"dark blue"' 250 | color2: '"red"' 251 | color3: '"green"' 252 | color4: '"black"' 253 | color5: '"cyan"' 254 | color6: '"magenta"' 255 | color7: '"yellow"' 256 | color8: '"dark red"' 257 | color9: '"dark green"' 258 | comment: '' 259 | ctrlpanel: 'False' 260 | fc: '0' 261 | fftsize: '1024' 262 | freqhalf: 'True' 263 | grid: 'False' 264 | gui_hint: '' 265 | label: Relative Gain 266 | label1: modulated signal 267 | label10: '''''' 268 | label2: demodulated signal 269 | label3: '''''' 270 | label4: '''''' 271 | label5: '''''' 272 | label6: '''''' 273 | label7: '''''' 274 | label8: '''''' 275 | label9: '''''' 276 | legend: 'True' 277 | maxoutbuf: '0' 278 | minoutbuf: '0' 279 | name: spectrum 280 | nconnections: '2' 281 | showports: 'False' 282 | tr_chan: '0' 283 | tr_level: '0.0' 284 | tr_mode: qtgui.TRIG_MODE_FREE 285 | tr_tag: '""' 286 | type: float 287 | units: dB 288 | update_time: '0.10' 289 | width1: '1' 290 | width10: '1' 291 | width2: '1' 292 | width3: '1' 293 | width4: '1' 294 | width5: '1' 295 | width6: '1' 296 | width7: '1' 297 | width8: '1' 298 | width9: '1' 299 | wintype: firdes.WIN_BLACKMAN_hARRIS 300 | ymax: '10' 301 | ymin: '-140' 302 | states: 303 | bus_sink: false 304 | bus_source: false 305 | bus_structure: null 306 | coordinate: [1101, 167] 307 | rotation: 0 308 | state: true 309 | - name: qtgui_time_sink_x_0 310 | id: qtgui_time_sink_x 311 | parameters: 312 | affinity: '' 313 | alias: '' 314 | alpha1: '1.0' 315 | alpha10: '1.0' 316 | alpha2: '1.0' 317 | alpha3: '1.0' 318 | alpha4: '1.0' 319 | alpha5: '1.0' 320 | alpha6: '1.0' 321 | alpha7: '1.0' 322 | alpha8: '1.0' 323 | alpha9: '1.0' 324 | autoscale: 'True' 325 | axislabels: 'True' 326 | color1: blue 327 | color10: dark blue 328 | color2: red 329 | color3: green 330 | color4: black 331 | color5: cyan 332 | color6: magenta 333 | color7: yellow 334 | color8: dark red 335 | color9: dark green 336 | comment: '' 337 | ctrlpanel: 'False' 338 | entags: 'True' 339 | grid: 'False' 340 | gui_hint: '' 341 | label1: Signal 1 342 | label10: Signal 10 343 | label2: Signal 2 344 | label3: Signal 3 345 | label4: Signal 4 346 | label5: Signal 5 347 | label6: Signal 6 348 | label7: Signal 7 349 | label8: Signal 8 350 | label9: Signal 9 351 | legend: 'True' 352 | marker1: '-1' 353 | marker10: '-1' 354 | marker2: '-1' 355 | marker3: '-1' 356 | marker4: '-1' 357 | marker5: '-1' 358 | marker6: '-1' 359 | marker7: '-1' 360 | marker8: '-1' 361 | marker9: '-1' 362 | name: demod 363 | nconnections: '1' 364 | size: '1024' 365 | srate: samp_rate 366 | stemplot: 'False' 367 | style1: '1' 368 | style10: '1' 369 | style2: '1' 370 | style3: '1' 371 | style4: '1' 372 | style5: '1' 373 | style6: '1' 374 | style7: '1' 375 | style8: '1' 376 | style9: '1' 377 | tr_chan: '0' 378 | tr_delay: '0' 379 | tr_level: '0.0' 380 | tr_mode: qtgui.TRIG_MODE_FREE 381 | tr_slope: qtgui.TRIG_SLOPE_POS 382 | tr_tag: '""' 383 | type: float 384 | update_time: '0.10' 385 | width1: '1' 386 | width10: '1' 387 | width2: '1' 388 | width3: '1' 389 | width4: '1' 390 | width5: '1' 391 | width6: '1' 392 | width7: '1' 393 | width8: '1' 394 | width9: '1' 395 | ylabel: Amplitude 396 | ymax: '1' 397 | ymin: '-1' 398 | yunit: '""' 399 | states: 400 | bus_sink: false 401 | bus_source: false 402 | bus_structure: null 403 | coordinate: [1099, 321] 404 | rotation: 0 405 | state: true 406 | - name: qtgui_time_sink_x_0_0 407 | id: qtgui_time_sink_x 408 | parameters: 409 | affinity: '' 410 | alias: '' 411 | alpha1: '1.0' 412 | alpha10: '1.0' 413 | alpha2: '1.0' 414 | alpha3: '1.0' 415 | alpha4: '1.0' 416 | alpha5: '1.0' 417 | alpha6: '1.0' 418 | alpha7: '1.0' 419 | alpha8: '1.0' 420 | alpha9: '1.0' 421 | autoscale: 'True' 422 | axislabels: 'True' 423 | color1: blue 424 | color10: dark blue 425 | color2: red 426 | color3: green 427 | color4: black 428 | color5: cyan 429 | color6: magenta 430 | color7: yellow 431 | color8: dark red 432 | color9: dark green 433 | comment: '' 434 | ctrlpanel: 'False' 435 | entags: 'True' 436 | grid: 'False' 437 | gui_hint: '' 438 | label1: modulated signal 439 | label10: Signal 10 440 | label2: Signal 2 441 | label3: Signal 3 442 | label4: Signal 4 443 | label5: Signal 5 444 | label6: Signal 6 445 | label7: Signal 7 446 | label8: Signal 8 447 | label9: Signal 9 448 | legend: 'True' 449 | marker1: '-1' 450 | marker10: '-1' 451 | marker2: '-1' 452 | marker3: '-1' 453 | marker4: '-1' 454 | marker5: '-1' 455 | marker6: '-1' 456 | marker7: '-1' 457 | marker8: '-1' 458 | marker9: '-1' 459 | name: modulated 460 | nconnections: '1' 461 | size: '1024' 462 | srate: samp_rate 463 | stemplot: 'False' 464 | style1: '1' 465 | style10: '1' 466 | style2: '1' 467 | style3: '1' 468 | style4: '1' 469 | style5: '1' 470 | style6: '1' 471 | style7: '1' 472 | style8: '1' 473 | style9: '1' 474 | tr_chan: '0' 475 | tr_delay: '0' 476 | tr_level: '0.0' 477 | tr_mode: qtgui.TRIG_MODE_FREE 478 | tr_slope: qtgui.TRIG_SLOPE_POS 479 | tr_tag: '""' 480 | type: float 481 | update_time: '0.10' 482 | width1: '1' 483 | width10: '1' 484 | width2: '1' 485 | width3: '1' 486 | width4: '1' 487 | width5: '1' 488 | width6: '1' 489 | width7: '1' 490 | width8: '1' 491 | width9: '1' 492 | ylabel: Amplitude 493 | ymax: '1' 494 | ymin: '-1' 495 | yunit: '""' 496 | states: 497 | bus_sink: false 498 | bus_source: false 499 | bus_structure: null 500 | coordinate: [560, 167] 501 | rotation: 0 502 | state: true 503 | 504 | connections: 505 | - [analog_sig_source_x_0, '0', blocks_add_const_vxx_0, '0'] 506 | - [analog_sig_source_x_1, '0', blocks_multiply_xx_0, '1'] 507 | - [blocks_abs_xx_0, '0', low_pass_filter_0, '0'] 508 | - [blocks_add_const_vxx_0, '0', blocks_multiply_xx_0, '0'] 509 | - [blocks_multiply_xx_0, '0', blocks_throttle_0, '0'] 510 | - [blocks_multiply_xx_0, '0', qtgui_freq_sink_x_0, '0'] 511 | - [blocks_multiply_xx_0, '0', qtgui_time_sink_x_0_0, '0'] 512 | - [blocks_throttle_0, '0', blocks_abs_xx_0, '0'] 513 | - [low_pass_filter_0, '0', qtgui_freq_sink_x_0, '1'] 514 | - [low_pass_filter_0, '0', qtgui_time_sink_x_0, '0'] 515 | 516 | metadata: 517 | file_format: 1 518 | -------------------------------------------------------------------------------- /Chapter4_AM/lab4_am_envelope_demod_antsdr.grc: -------------------------------------------------------------------------------- 1 | options: 2 | parameters: 3 | author: wcc 4 | category: '[GRC Hier Blocks]' 5 | cmake_opt: '' 6 | comment: '' 7 | copyright: '' 8 | description: '' 9 | gen_cmake: 'On' 10 | gen_linking: dynamic 11 | generate_options: qt_gui 12 | hier_block_src_path: '.:' 13 | id: am_dsb_tc_demod 14 | max_nouts: '0' 15 | output_language: python 16 | placement: (0,0) 17 | qt_qss_theme: '' 18 | realtime_scheduling: '' 19 | run: 'True' 20 | run_command: '{python} -u {filename}' 21 | run_options: prompt 22 | sizing_mode: fixed 23 | thread_safe_setters: '' 24 | title: am_dsb_tc_demod 25 | window_size: '' 26 | states: 27 | bus_sink: false 28 | bus_source: false 29 | bus_structure: null 30 | coordinate: [8, 12.0] 31 | rotation: 0 32 | state: enabled 33 | 34 | blocks: 35 | - name: bband_duc 36 | id: variable_low_pass_filter_taps 37 | parameters: 38 | beta: '6.76' 39 | comment: '' 40 | cutoff_freq: 10e3 41 | gain: '5' 42 | samp_rate: 48e3 43 | width: 1e3 44 | win: firdes.WIN_HAMMING 45 | states: 46 | bus_sink: false 47 | bus_source: false 48 | bus_structure: null 49 | coordinate: [8, 116.0] 50 | rotation: 0 51 | state: true 52 | - name: rx_lo_freq 53 | id: variable 54 | parameters: 55 | comment: '' 56 | value: '499960000' 57 | states: 58 | bus_sink: false 59 | bus_source: false 60 | bus_structure: null 61 | coordinate: [184, 12.0] 62 | rotation: 0 63 | state: true 64 | - name: samp_rate 65 | id: variable 66 | parameters: 67 | comment: '' 68 | value: '48000' 69 | states: 70 | bus_sink: false 71 | bus_source: false 72 | bus_structure: null 73 | coordinate: [288, 12.0] 74 | rotation: 0 75 | state: enabled 76 | - name: tx_lo_freq 77 | id: variable 78 | parameters: 79 | comment: '' 80 | value: '500000000' 81 | states: 82 | bus_sink: false 83 | bus_source: false 84 | bus_structure: null 85 | coordinate: [376, 12.0] 86 | rotation: 0 87 | state: enabled 88 | - name: audio_sink_0 89 | id: audio_sink 90 | parameters: 91 | affinity: '' 92 | alias: '' 93 | comment: '' 94 | device_name: '' 95 | num_inputs: '1' 96 | ok_to_block: 'True' 97 | samp_rate: samp_rate 98 | states: 99 | bus_sink: false 100 | bus_source: false 101 | bus_structure: null 102 | coordinate: [1142, 422] 103 | rotation: 0 104 | state: true 105 | - name: band_pass_filter_0 106 | id: band_pass_filter 107 | parameters: 108 | affinity: '' 109 | alias: '' 110 | beta: '6.76' 111 | comment: '' 112 | decim: '5' 113 | gain: '1' 114 | high_cutoff_freq: 55e3 115 | interp: '1' 116 | low_cutoff_freq: 25e3 117 | maxoutbuf: '0' 118 | minoutbuf: '0' 119 | samp_rate: '960000' 120 | type: fir_filter_ccf 121 | width: 4e3 122 | win: firdes.WIN_HAMMING 123 | states: 124 | bus_sink: false 125 | bus_source: false 126 | bus_structure: null 127 | coordinate: [452, 357] 128 | rotation: 0 129 | state: true 130 | - name: blocks_abs_xx_0 131 | id: blocks_abs_xx 132 | parameters: 133 | affinity: '' 134 | alias: '' 135 | comment: '' 136 | maxoutbuf: '0' 137 | minoutbuf: '0' 138 | type: float 139 | vlen: '1' 140 | states: 141 | bus_sink: false 142 | bus_source: false 143 | bus_structure: null 144 | coordinate: [803, 430] 145 | rotation: 0 146 | state: true 147 | - name: blocks_add_const_vxx_0 148 | id: blocks_add_const_vxx 149 | parameters: 150 | affinity: '' 151 | alias: '' 152 | comment: '' 153 | const: '0.5' 154 | maxoutbuf: '0' 155 | minoutbuf: '0' 156 | type: float 157 | vlen: '1' 158 | states: 159 | bus_sink: false 160 | bus_source: false 161 | bus_structure: null 162 | coordinate: [421, 196] 163 | rotation: 0 164 | state: true 165 | - name: blocks_complex_to_mag_0 166 | id: blocks_complex_to_mag 167 | parameters: 168 | affinity: '' 169 | alias: '' 170 | comment: '' 171 | maxoutbuf: '0' 172 | minoutbuf: '0' 173 | vlen: '1' 174 | states: 175 | bus_sink: false 176 | bus_source: false 177 | bus_structure: null 178 | coordinate: [634, 430] 179 | rotation: 0 180 | state: true 181 | - name: blocks_float_to_complex_0 182 | id: blocks_float_to_complex 183 | parameters: 184 | affinity: '' 185 | alias: '' 186 | comment: '' 187 | maxoutbuf: '0' 188 | minoutbuf: '0' 189 | vlen: '1' 190 | states: 191 | bus_sink: false 192 | bus_source: false 193 | bus_structure: null 194 | coordinate: [590, 203] 195 | rotation: 0 196 | state: true 197 | - name: blocks_wavfile_source_0 198 | id: blocks_wavfile_source 199 | parameters: 200 | affinity: '' 201 | alias: '' 202 | comment: '' 203 | file: /home/wcc/GNU_Radio/audio/music1_mono48kHz.wav 204 | maxoutbuf: '0' 205 | minoutbuf: '0' 206 | nchan: '1' 207 | repeat: 'True' 208 | states: 209 | bus_sink: false 210 | bus_source: false 211 | bus_structure: null 212 | coordinate: [172, 188] 213 | rotation: 0 214 | state: true 215 | - name: iio_pluto_sink_0 216 | id: iio_pluto_sink 217 | parameters: 218 | affinity: '' 219 | alias: '' 220 | attenuation1: '10.0' 221 | auto_filter: 'True' 222 | bandwidth: '200000' 223 | buffer_size: '32768' 224 | comment: '' 225 | cyclic: 'False' 226 | filter: '' 227 | frequency: tx_lo_freq 228 | samplerate: '960000' 229 | uri: uri 230 | states: 231 | bus_sink: false 232 | bus_source: false 233 | bus_structure: null 234 | coordinate: [1176, 220] 235 | rotation: 0 236 | state: true 237 | - name: iio_pluto_source_0 238 | id: iio_pluto_source 239 | parameters: 240 | affinity: '' 241 | alias: '' 242 | auto_filter: 'True' 243 | bandwidth: '200000' 244 | bbdc: 'True' 245 | buffer_size: '32768' 246 | comment: '' 247 | filter: '' 248 | frequency: rx_lo_freq 249 | gain1: '''fast_attack''' 250 | manual_gain1: '64' 251 | maxoutbuf: '0' 252 | minoutbuf: '0' 253 | quadrature: 'True' 254 | rfdc: 'True' 255 | samplerate: '960000' 256 | uri: uri 257 | states: 258 | bus_sink: false 259 | bus_source: false 260 | bus_structure: null 261 | coordinate: [194, 329] 262 | rotation: 0 263 | state: true 264 | - name: interp_fir_filter_xxx_0 265 | id: interp_fir_filter_xxx 266 | parameters: 267 | affinity: '' 268 | alias: '' 269 | comment: '' 270 | interp: '20' 271 | maxoutbuf: '0' 272 | minoutbuf: '0' 273 | samp_delay: '0' 274 | taps: bband_duc 275 | type: ccc 276 | states: 277 | bus_sink: false 278 | bus_source: false 279 | bus_structure: null 280 | coordinate: [765, 203] 281 | rotation: 0 282 | state: true 283 | - name: low_pass_filter_0 284 | id: low_pass_filter 285 | parameters: 286 | affinity: '' 287 | alias: '' 288 | beta: '6.76' 289 | comment: '' 290 | cutoff_freq: 15e3 291 | decim: '20' 292 | gain: '1' 293 | interp: '1' 294 | maxoutbuf: '0' 295 | minoutbuf: '0' 296 | samp_rate: '960000' 297 | type: interp_fir_filter_ccf 298 | width: 1e3 299 | win: firdes.WIN_HAMMING 300 | states: 301 | bus_sink: false 302 | bus_source: false 303 | bus_structure: null 304 | coordinate: [965, 155] 305 | rotation: 0 306 | state: true 307 | - name: low_pass_filter_1 308 | id: low_pass_filter 309 | parameters: 310 | affinity: '' 311 | alias: '' 312 | beta: '6.76' 313 | comment: '' 314 | cutoff_freq: 15e3 315 | decim: '4' 316 | gain: '1' 317 | interp: '1' 318 | maxoutbuf: '0' 319 | minoutbuf: '0' 320 | samp_rate: 192e3 321 | type: fir_filter_fff 322 | width: 2e3 323 | win: firdes.WIN_HAMMING 324 | states: 325 | bus_sink: false 326 | bus_source: false 327 | bus_structure: null 328 | coordinate: [913, 366] 329 | rotation: 0 330 | state: true 331 | - name: qtgui_sink_x_0 332 | id: qtgui_sink_x 333 | parameters: 334 | affinity: '' 335 | alias: '' 336 | bw: samp_rate 337 | comment: '' 338 | fc: '0' 339 | fftsize: '1024' 340 | gui_hint: '' 341 | maxoutbuf: '0' 342 | minoutbuf: '0' 343 | name: '""' 344 | plotconst: 'True' 345 | plotfreq: 'True' 346 | plottime: 'True' 347 | plotwaterfall: 'True' 348 | rate: '10' 349 | showports: 'False' 350 | showrf: 'False' 351 | type: complex 352 | wintype: firdes.WIN_BLACKMAN_hARRIS 353 | states: 354 | bus_sink: false 355 | bus_source: false 356 | bus_structure: null 357 | coordinate: [1175, 97] 358 | rotation: 0 359 | state: true 360 | - name: uri 361 | id: parameter 362 | parameters: 363 | alias: '' 364 | comment: '' 365 | hide: none 366 | label: URI 367 | short_id: '' 368 | type: str 369 | value: ip:192.168.1.10 370 | states: 371 | bus_sink: false 372 | bus_source: false 373 | bus_structure: null 374 | coordinate: [184, 76.0] 375 | rotation: 0 376 | state: true 377 | 378 | connections: 379 | - [band_pass_filter_0, '0', blocks_complex_to_mag_0, '0'] 380 | - [blocks_abs_xx_0, '0', low_pass_filter_1, '0'] 381 | - [blocks_add_const_vxx_0, '0', blocks_float_to_complex_0, '0'] 382 | - [blocks_complex_to_mag_0, '0', blocks_abs_xx_0, '0'] 383 | - [blocks_float_to_complex_0, '0', interp_fir_filter_xxx_0, '0'] 384 | - [blocks_wavfile_source_0, '0', blocks_add_const_vxx_0, '0'] 385 | - [iio_pluto_source_0, '0', band_pass_filter_0, '0'] 386 | - [interp_fir_filter_xxx_0, '0', low_pass_filter_0, '0'] 387 | - [low_pass_filter_0, '0', iio_pluto_sink_0, '0'] 388 | - [low_pass_filter_0, '0', qtgui_sink_x_0, '0'] 389 | - [low_pass_filter_1, '0', audio_sink_0, '0'] 390 | 391 | metadata: 392 | file_format: 1 393 | -------------------------------------------------------------------------------- /Chapter5_FM/lab1_wfm.grc: -------------------------------------------------------------------------------- 1 | options: 2 | parameters: 3 | author: wcc 4 | category: '[GRC Hier Blocks]' 5 | cmake_opt: '' 6 | comment: '' 7 | copyright: '' 8 | description: '' 9 | gen_cmake: 'On' 10 | gen_linking: dynamic 11 | generate_options: qt_gui 12 | hier_block_src_path: '.:' 13 | id: lab1_wfm 14 | max_nouts: '0' 15 | output_language: python 16 | placement: (0,0) 17 | qt_qss_theme: '' 18 | realtime_scheduling: '' 19 | run: 'True' 20 | run_command: '{python} -u {filename}' 21 | run_options: prompt 22 | sizing_mode: fixed 23 | thread_safe_setters: '' 24 | title: lab1_wfm 25 | window_size: '' 26 | states: 27 | bus_sink: false 28 | bus_source: false 29 | bus_structure: null 30 | coordinate: [8, 8] 31 | rotation: 0 32 | state: enabled 33 | 34 | blocks: 35 | - name: bband_freq_0 36 | id: variable 37 | parameters: 38 | comment: '' 39 | value: '1000' 40 | states: 41 | bus_sink: false 42 | bus_source: false 43 | bus_structure: null 44 | coordinate: [288, 26] 45 | rotation: 0 46 | state: enabled 47 | - name: bband_freq_1 48 | id: variable 49 | parameters: 50 | comment: '' 51 | value: '2000' 52 | states: 53 | bus_sink: false 54 | bus_source: false 55 | bus_structure: null 56 | coordinate: [403, 25] 57 | rotation: 0 58 | state: enabled 59 | - name: bband_freq_2 60 | id: variable 61 | parameters: 62 | comment: '' 63 | value: '800' 64 | states: 65 | bus_sink: false 66 | bus_source: false 67 | bus_structure: null 68 | coordinate: [522, 27] 69 | rotation: 0 70 | state: enabled 71 | - name: samp_rate 72 | id: variable 73 | parameters: 74 | comment: '' 75 | value: '300000' 76 | states: 77 | bus_sink: false 78 | bus_source: false 79 | bus_structure: null 80 | coordinate: [155, 12] 81 | rotation: 0 82 | state: enabled 83 | - name: analog_const_source_x_0 84 | id: analog_const_source_x 85 | parameters: 86 | affinity: '' 87 | alias: '' 88 | comment: '' 89 | const: '1' 90 | maxoutbuf: '0' 91 | minoutbuf: '0' 92 | type: float 93 | states: 94 | bus_sink: false 95 | bus_source: false 96 | bus_structure: null 97 | coordinate: [725, 304] 98 | rotation: 180 99 | state: true 100 | - name: analog_sig_source_x_0_0 101 | id: analog_sig_source_x 102 | parameters: 103 | affinity: '' 104 | alias: '' 105 | amp: '0.5' 106 | comment: '' 107 | freq: bband_freq_0 108 | maxoutbuf: '0' 109 | minoutbuf: '0' 110 | offset: '0' 111 | phase: '0' 112 | samp_rate: samp_rate 113 | type: float 114 | waveform: analog.GR_COS_WAVE 115 | states: 116 | bus_sink: false 117 | bus_source: false 118 | bus_structure: null 119 | coordinate: [49, 129] 120 | rotation: 0 121 | state: true 122 | - name: analog_sig_source_x_0_0_0 123 | id: analog_sig_source_x 124 | parameters: 125 | affinity: '' 126 | alias: '' 127 | amp: '0.5' 128 | comment: '' 129 | freq: bband_freq_1 130 | maxoutbuf: '0' 131 | minoutbuf: '0' 132 | offset: '0' 133 | phase: '0' 134 | samp_rate: samp_rate 135 | type: float 136 | waveform: analog.GR_COS_WAVE 137 | states: 138 | bus_sink: false 139 | bus_source: false 140 | bus_structure: null 141 | coordinate: [44, 280] 142 | rotation: 0 143 | state: true 144 | - name: analog_sig_source_x_0_0_0_0 145 | id: analog_sig_source_x 146 | parameters: 147 | affinity: '' 148 | alias: '' 149 | amp: '0.5' 150 | comment: '' 151 | freq: bband_freq_2 152 | maxoutbuf: '0' 153 | minoutbuf: '0' 154 | offset: '0' 155 | phase: '0' 156 | samp_rate: samp_rate 157 | type: float 158 | waveform: analog.GR_COS_WAVE 159 | states: 160 | bus_sink: false 161 | bus_source: false 162 | bus_structure: null 163 | coordinate: [47, 435] 164 | rotation: 0 165 | state: true 166 | - name: blocks_add_xx_0 167 | id: blocks_add_xx 168 | parameters: 169 | affinity: '' 170 | alias: '' 171 | comment: '' 172 | maxoutbuf: '0' 173 | minoutbuf: '0' 174 | num_inputs: '3' 175 | type: float 176 | vlen: '1' 177 | states: 178 | bus_sink: false 179 | bus_source: false 180 | bus_structure: null 181 | coordinate: [294, 475] 182 | rotation: 0 183 | state: true 184 | - name: blocks_integrate_xx_0 185 | id: blocks_integrate_xx 186 | parameters: 187 | affinity: '' 188 | alias: '' 189 | comment: '' 190 | decim: '1' 191 | maxoutbuf: '0' 192 | minoutbuf: '0' 193 | type: float 194 | vlen: '1' 195 | states: 196 | bus_sink: false 197 | bus_source: false 198 | bus_structure: null 199 | coordinate: [432, 500] 200 | rotation: 0 201 | state: true 202 | - name: blocks_magphase_to_complex_0 203 | id: blocks_magphase_to_complex 204 | parameters: 205 | affinity: '' 206 | alias: '' 207 | comment: '' 208 | maxoutbuf: '0' 209 | minoutbuf: '0' 210 | vlen: '1' 211 | states: 212 | bus_sink: false 213 | bus_source: false 214 | bus_structure: null 215 | coordinate: [334, 361] 216 | rotation: 180 217 | state: true 218 | - name: blocks_multiply_const_vxx_0 219 | id: blocks_multiply_const_vxx 220 | parameters: 221 | affinity: '' 222 | alias: '' 223 | comment: '' 224 | const: '20' 225 | maxoutbuf: '0' 226 | minoutbuf: '0' 227 | type: float 228 | vlen: '1' 229 | states: 230 | bus_sink: false 231 | bus_source: false 232 | bus_structure: null 233 | coordinate: [679, 387] 234 | rotation: 180 235 | state: true 236 | - name: blocks_throttle_0 237 | id: blocks_throttle 238 | parameters: 239 | affinity: '' 240 | alias: '' 241 | comment: '' 242 | ignoretag: 'True' 243 | maxoutbuf: '0' 244 | minoutbuf: '0' 245 | samples_per_second: samp_rate 246 | type: float 247 | vlen: '1' 248 | states: 249 | bus_sink: false 250 | bus_source: false 251 | bus_structure: null 252 | coordinate: [622, 520] 253 | rotation: 0 254 | state: true 255 | - name: qtgui_freq_sink_x_0 256 | id: qtgui_freq_sink_x 257 | parameters: 258 | affinity: '' 259 | alias: '' 260 | alpha1: '1.0' 261 | alpha10: '1.0' 262 | alpha2: '1.0' 263 | alpha3: '1.0' 264 | alpha4: '1.0' 265 | alpha5: '1.0' 266 | alpha6: '1.0' 267 | alpha7: '1.0' 268 | alpha8: '1.0' 269 | alpha9: '1.0' 270 | autoscale: 'False' 271 | average: '1.0' 272 | axislabels: 'True' 273 | bw: samp_rate 274 | color1: '"blue"' 275 | color10: '"dark blue"' 276 | color2: '"red"' 277 | color3: '"green"' 278 | color4: '"black"' 279 | color5: '"cyan"' 280 | color6: '"magenta"' 281 | color7: '"yellow"' 282 | color8: '"dark red"' 283 | color9: '"dark green"' 284 | comment: '' 285 | ctrlpanel: 'False' 286 | fc: '0' 287 | fftsize: '1024' 288 | freqhalf: 'True' 289 | grid: 'False' 290 | gui_hint: '' 291 | label: Relative Gain 292 | label1: '' 293 | label10: '''''' 294 | label2: '''''' 295 | label3: '''''' 296 | label4: '''''' 297 | label5: '''''' 298 | label6: '''''' 299 | label7: '''''' 300 | label8: '''''' 301 | label9: '''''' 302 | legend: 'True' 303 | maxoutbuf: '0' 304 | minoutbuf: '0' 305 | name: '""' 306 | nconnections: '1' 307 | showports: 'False' 308 | tr_chan: '0' 309 | tr_level: '0.0' 310 | tr_mode: qtgui.TRIG_MODE_FREE 311 | tr_tag: '""' 312 | type: complex 313 | units: dB 314 | update_time: '0.10' 315 | width1: '1' 316 | width10: '1' 317 | width2: '1' 318 | width3: '1' 319 | width4: '1' 320 | width5: '1' 321 | width6: '1' 322 | width7: '1' 323 | width8: '1' 324 | width9: '1' 325 | wintype: firdes.WIN_BLACKMAN_hARRIS 326 | ymax: '10' 327 | ymin: '-140' 328 | states: 329 | bus_sink: false 330 | bus_source: false 331 | bus_structure: null 332 | coordinate: [402, 249] 333 | rotation: 0 334 | state: true 335 | - name: qtgui_time_sink_x_0 336 | id: qtgui_time_sink_x 337 | parameters: 338 | affinity: '' 339 | alias: '' 340 | alpha1: '1.0' 341 | alpha10: '1.0' 342 | alpha2: '1.0' 343 | alpha3: '1.0' 344 | alpha4: '1.0' 345 | alpha5: '1.0' 346 | alpha6: '1.0' 347 | alpha7: '1.0' 348 | alpha8: '1.0' 349 | alpha9: '1.0' 350 | autoscale: 'False' 351 | axislabels: 'True' 352 | color1: blue 353 | color10: dark blue 354 | color2: red 355 | color3: green 356 | color4: black 357 | color5: cyan 358 | color6: magenta 359 | color7: yellow 360 | color8: dark red 361 | color9: dark green 362 | comment: '' 363 | ctrlpanel: 'False' 364 | entags: 'False' 365 | grid: 'False' 366 | gui_hint: '' 367 | label1: modulated_i 368 | label10: Signal 10 369 | label2: modualted_q 370 | label3: carrier_i 371 | label4: carrier_q 372 | label5: Signal 5 373 | label6: Signal 6 374 | label7: Signal 7 375 | label8: Signal 8 376 | label9: Signal 9 377 | legend: 'True' 378 | marker1: '-1' 379 | marker10: '-1' 380 | marker2: '-1' 381 | marker3: '-1' 382 | marker4: '-1' 383 | marker5: '-1' 384 | marker6: '-1' 385 | marker7: '-1' 386 | marker8: '-1' 387 | marker9: '-1' 388 | name: '""' 389 | nconnections: '1' 390 | size: '1024' 391 | srate: samp_rate 392 | stemplot: 'False' 393 | style1: '1' 394 | style10: '1' 395 | style2: '1' 396 | style3: '1' 397 | style4: '1' 398 | style5: '1' 399 | style6: '1' 400 | style7: '1' 401 | style8: '1' 402 | style9: '1' 403 | tr_chan: '0' 404 | tr_delay: '0' 405 | tr_level: '0.0' 406 | tr_mode: qtgui.TRIG_MODE_FREE 407 | tr_slope: qtgui.TRIG_SLOPE_POS 408 | tr_tag: '""' 409 | type: complex 410 | update_time: '0.10' 411 | width1: '1' 412 | width10: '1' 413 | width2: '1' 414 | width3: '1' 415 | width4: '1' 416 | width5: '1' 417 | width6: '1' 418 | width7: '1' 419 | width8: '1' 420 | width9: '1' 421 | ylabel: Amplitude 422 | ymax: '1' 423 | ymin: '-1' 424 | yunit: '""' 425 | states: 426 | bus_sink: false 427 | bus_source: false 428 | bus_structure: null 429 | coordinate: [384, 137] 430 | rotation: 0 431 | state: true 432 | 433 | connections: 434 | - [analog_const_source_x_0, '0', blocks_magphase_to_complex_0, '0'] 435 | - [analog_sig_source_x_0_0, '0', blocks_add_xx_0, '0'] 436 | - [analog_sig_source_x_0_0_0, '0', blocks_add_xx_0, '1'] 437 | - [analog_sig_source_x_0_0_0_0, '0', blocks_add_xx_0, '2'] 438 | - [blocks_add_xx_0, '0', blocks_integrate_xx_0, '0'] 439 | - [blocks_integrate_xx_0, '0', blocks_throttle_0, '0'] 440 | - [blocks_magphase_to_complex_0, '0', qtgui_freq_sink_x_0, '0'] 441 | - [blocks_magphase_to_complex_0, '0', qtgui_time_sink_x_0, '0'] 442 | - [blocks_multiply_const_vxx_0, '0', blocks_magphase_to_complex_0, '1'] 443 | - [blocks_throttle_0, '0', blocks_multiply_const_vxx_0, '0'] 444 | 445 | metadata: 446 | file_format: 1 447 | -------------------------------------------------------------------------------- /Chapter5_FM/lab2_fm_transmitter.grc: -------------------------------------------------------------------------------- 1 | options: 2 | parameters: 3 | author: wcc 4 | category: '[GRC Hier Blocks]' 5 | cmake_opt: '' 6 | comment: '' 7 | copyright: '' 8 | description: '' 9 | gen_cmake: 'On' 10 | gen_linking: dynamic 11 | generate_options: qt_gui 12 | hier_block_src_path: '.:' 13 | id: fm_tx 14 | max_nouts: '0' 15 | output_language: python 16 | placement: (0,0) 17 | qt_qss_theme: '' 18 | realtime_scheduling: '' 19 | run: 'True' 20 | run_command: '{python} -u {filename}' 21 | run_options: prompt 22 | sizing_mode: fixed 23 | thread_safe_setters: '' 24 | title: fm_tx 25 | window_size: '' 26 | states: 27 | bus_sink: false 28 | bus_source: false 29 | bus_structure: null 30 | coordinate: [8, 8] 31 | rotation: 0 32 | state: enabled 33 | 34 | blocks: 35 | - name: bband_samp_rate 36 | id: variable 37 | parameters: 38 | comment: '' 39 | value: '960000' 40 | states: 41 | bus_sink: false 42 | bus_source: false 43 | bus_structure: null 44 | coordinate: [275, 79] 45 | rotation: 0 46 | state: enabled 47 | - name: rf_band_width 48 | id: variable 49 | parameters: 50 | comment: '' 51 | value: '300000' 52 | states: 53 | bus_sink: false 54 | bus_source: false 55 | bus_structure: null 56 | coordinate: [337, 9] 57 | rotation: 0 58 | state: enabled 59 | - name: samp_rate 60 | id: variable 61 | parameters: 62 | comment: '' 63 | value: '48000' 64 | states: 65 | bus_sink: false 66 | bus_source: false 67 | bus_structure: null 68 | coordinate: [150, 9] 69 | rotation: 0 70 | state: enabled 71 | - name: tx_local_freq 72 | id: variable 73 | parameters: 74 | comment: '' 75 | value: '1400000000' 76 | states: 77 | bus_sink: false 78 | bus_source: false 79 | bus_structure: null 80 | coordinate: [238, 9] 81 | rotation: 0 82 | state: enabled 83 | - name: analog_const_source_x_0 84 | id: analog_const_source_x 85 | parameters: 86 | affinity: '' 87 | alias: '' 88 | comment: '' 89 | const: '1' 90 | maxoutbuf: '0' 91 | minoutbuf: '0' 92 | type: float 93 | states: 94 | bus_sink: false 95 | bus_source: false 96 | bus_structure: null 97 | coordinate: [463, 12] 98 | rotation: 0 99 | state: true 100 | - name: blocks_integrate_xx_0 101 | id: blocks_integrate_xx 102 | parameters: 103 | affinity: '' 104 | alias: '' 105 | comment: '' 106 | decim: '1' 107 | maxoutbuf: '0' 108 | minoutbuf: '0' 109 | type: float 110 | vlen: '1' 111 | states: 112 | bus_sink: false 113 | bus_source: false 114 | bus_structure: null 115 | coordinate: [644, 242] 116 | rotation: 0 117 | state: true 118 | - name: blocks_magphase_to_complex_0 119 | id: blocks_magphase_to_complex 120 | parameters: 121 | affinity: '' 122 | alias: '' 123 | comment: '' 124 | maxoutbuf: '0' 125 | minoutbuf: '0' 126 | vlen: '1' 127 | states: 128 | bus_sink: false 129 | bus_source: false 130 | bus_structure: null 131 | coordinate: [668, 45] 132 | rotation: 0 133 | state: true 134 | - name: blocks_multiply_const_vxx_0 135 | id: blocks_multiply_const_vxx 136 | parameters: 137 | affinity: '' 138 | alias: '' 139 | comment: '' 140 | const: '2000' 141 | maxoutbuf: '0' 142 | minoutbuf: '0' 143 | type: float 144 | vlen: '1' 145 | states: 146 | bus_sink: false 147 | bus_source: false 148 | bus_structure: null 149 | coordinate: [464, 81] 150 | rotation: 0 151 | state: true 152 | - name: blocks_wavfile_source_0 153 | id: blocks_wavfile_source 154 | parameters: 155 | affinity: '' 156 | alias: '' 157 | comment: '' 158 | file: ../audio/music1_mono48kHz.wav 159 | maxoutbuf: '0' 160 | minoutbuf: '0' 161 | nchan: '1' 162 | repeat: 'True' 163 | states: 164 | bus_sink: false 165 | bus_source: false 166 | bus_structure: null 167 | coordinate: [20, 234] 168 | rotation: 0 169 | state: true 170 | - name: iio_pluto_sink_0 171 | id: iio_pluto_sink 172 | parameters: 173 | affinity: '' 174 | alias: '' 175 | attenuation1: '10.0' 176 | auto_filter: 'True' 177 | bandwidth: rf_band_width 178 | buffer_size: '32768' 179 | comment: '' 180 | cyclic: 'False' 181 | filter: '' 182 | frequency: tx_local_freq 183 | samplerate: bband_samp_rate 184 | uri: uri 185 | states: 186 | bus_sink: false 187 | bus_source: false 188 | bus_structure: null 189 | coordinate: [850, 183] 190 | rotation: 0 191 | state: true 192 | - name: low_pass_filter_0 193 | id: low_pass_filter 194 | parameters: 195 | affinity: '' 196 | alias: '' 197 | beta: '6.76' 198 | comment: '' 199 | cutoff_freq: 5e3 200 | decim: '1' 201 | gain: '1' 202 | interp: '5' 203 | maxoutbuf: '0' 204 | minoutbuf: '0' 205 | samp_rate: samp_rate 206 | type: interp_fir_filter_fff 207 | width: 1e3 208 | win: firdes.WIN_HANN 209 | states: 210 | bus_sink: false 211 | bus_source: false 212 | bus_structure: null 213 | coordinate: [279, 186] 214 | rotation: 0 215 | state: true 216 | - name: low_pass_filter_0_0 217 | id: low_pass_filter 218 | parameters: 219 | affinity: '' 220 | alias: '' 221 | beta: '6.76' 222 | comment: '' 223 | cutoff_freq: 15e3 224 | decim: '1' 225 | gain: '1' 226 | interp: '4' 227 | maxoutbuf: '0' 228 | minoutbuf: '0' 229 | samp_rate: samp_rate*5 230 | type: interp_fir_filter_fff 231 | width: 1e3 232 | win: firdes.WIN_HANN 233 | states: 234 | bus_sink: false 235 | bus_source: false 236 | bus_structure: null 237 | coordinate: [465, 186] 238 | rotation: 0 239 | state: true 240 | - name: qtgui_sink_x_0 241 | id: qtgui_sink_x 242 | parameters: 243 | affinity: '' 244 | alias: '' 245 | bw: samp_rate 246 | comment: '' 247 | fc: '0' 248 | fftsize: '1024' 249 | gui_hint: '' 250 | maxoutbuf: '0' 251 | minoutbuf: '0' 252 | name: '""' 253 | plotconst: 'True' 254 | plotfreq: 'True' 255 | plottime: 'True' 256 | plotwaterfall: 'True' 257 | rate: '10' 258 | showports: 'False' 259 | showrf: 'False' 260 | type: float 261 | wintype: firdes.WIN_BLACKMAN_hARRIS 262 | states: 263 | bus_sink: false 264 | bus_source: false 265 | bus_structure: null 266 | coordinate: [639, 323] 267 | rotation: 0 268 | state: true 269 | - name: uri 270 | id: parameter 271 | parameters: 272 | alias: '' 273 | comment: '' 274 | hide: none 275 | label: URI 276 | short_id: '' 277 | type: str 278 | value: ip:pluto.local 279 | states: 280 | bus_sink: false 281 | bus_source: false 282 | bus_structure: null 283 | coordinate: [151, 76] 284 | rotation: 0 285 | state: true 286 | 287 | connections: 288 | - [analog_const_source_x_0, '0', blocks_magphase_to_complex_0, '0'] 289 | - [blocks_integrate_xx_0, '0', blocks_multiply_const_vxx_0, '0'] 290 | - [blocks_magphase_to_complex_0, '0', iio_pluto_sink_0, '0'] 291 | - [blocks_multiply_const_vxx_0, '0', blocks_magphase_to_complex_0, '1'] 292 | - [blocks_wavfile_source_0, '0', low_pass_filter_0, '0'] 293 | - [low_pass_filter_0, '0', low_pass_filter_0_0, '0'] 294 | - [low_pass_filter_0_0, '0', blocks_integrate_xx_0, '0'] 295 | - [low_pass_filter_0_0, '0', qtgui_sink_x_0, '0'] 296 | 297 | metadata: 298 | file_format: 1 299 | -------------------------------------------------------------------------------- /Chapter5_FM/lab3_fm_demod.grc: -------------------------------------------------------------------------------- 1 | options: 2 | parameters: 3 | author: wcc 4 | category: '[GRC Hier Blocks]' 5 | cmake_opt: '' 6 | comment: '' 7 | copyright: '' 8 | description: '' 9 | gen_cmake: 'On' 10 | gen_linking: dynamic 11 | generate_options: qt_gui 12 | hier_block_src_path: '.:' 13 | id: lab3_wfm_demod 14 | max_nouts: '0' 15 | output_language: python 16 | placement: (0,0) 17 | qt_qss_theme: '' 18 | realtime_scheduling: '' 19 | run: 'True' 20 | run_command: '{python} -u {filename}' 21 | run_options: prompt 22 | sizing_mode: fixed 23 | thread_safe_setters: '' 24 | title: lab3_fm_demod 25 | window_size: '' 26 | states: 27 | bus_sink: false 28 | bus_source: false 29 | bus_structure: null 30 | coordinate: [75, 13] 31 | rotation: 0 32 | state: enabled 33 | 34 | blocks: 35 | - name: bband_freq 36 | id: variable_qtgui_range 37 | parameters: 38 | comment: '' 39 | gui_hint: '' 40 | label: base band frequency 41 | min_len: '200' 42 | orient: Qt.Horizontal 43 | rangeType: int 44 | start: '0' 45 | step: '1' 46 | stop: '5000' 47 | value: '1000' 48 | widget: counter_slider 49 | states: 50 | bus_sink: false 51 | bus_source: false 52 | bus_structure: null 53 | coordinate: [315, 10] 54 | rotation: 0 55 | state: true 56 | - name: samp_rate 57 | id: variable 58 | parameters: 59 | comment: '' 60 | value: '500000' 61 | states: 62 | bus_sink: false 63 | bus_source: false 64 | bus_structure: null 65 | coordinate: [221, 10] 66 | rotation: 0 67 | state: enabled 68 | - name: analog_const_source_x_0 69 | id: analog_const_source_x 70 | parameters: 71 | affinity: '' 72 | alias: '' 73 | comment: '' 74 | const: '1' 75 | maxoutbuf: '0' 76 | minoutbuf: '0' 77 | type: float 78 | states: 79 | bus_sink: false 80 | bus_source: false 81 | bus_structure: null 82 | coordinate: [619, 237] 83 | rotation: 180 84 | state: true 85 | - name: analog_sig_source_x_0_0 86 | id: analog_sig_source_x 87 | parameters: 88 | affinity: '' 89 | alias: '' 90 | amp: '0.5' 91 | comment: '' 92 | freq: bband_freq 93 | maxoutbuf: '0' 94 | minoutbuf: '0' 95 | offset: '0' 96 | phase: '0' 97 | samp_rate: samp_rate 98 | type: float 99 | waveform: analog.GR_COS_WAVE 100 | states: 101 | bus_sink: false 102 | bus_source: false 103 | bus_structure: null 104 | coordinate: [76, 129] 105 | rotation: 0 106 | state: true 107 | - name: blocks_complex_to_arg_0 108 | id: blocks_complex_to_arg 109 | parameters: 110 | affinity: '' 111 | alias: '' 112 | comment: '' 113 | maxoutbuf: '0' 114 | minoutbuf: '0' 115 | vlen: '1' 116 | states: 117 | bus_sink: false 118 | bus_source: false 119 | bus_structure: null 120 | coordinate: [227, 495] 121 | rotation: 0 122 | state: enabled 123 | - name: blocks_conjugate_cc_0 124 | id: blocks_conjugate_cc 125 | parameters: 126 | affinity: '' 127 | alias: '' 128 | comment: '' 129 | maxoutbuf: '0' 130 | minoutbuf: '0' 131 | states: 132 | bus_sink: false 133 | bus_source: false 134 | bus_structure: null 135 | coordinate: [84, 293] 136 | rotation: 180 137 | state: enabled 138 | - name: blocks_delay_0 139 | id: blocks_delay 140 | parameters: 141 | affinity: '' 142 | alias: '' 143 | comment: '' 144 | delay: '1' 145 | maxoutbuf: '0' 146 | minoutbuf: '0' 147 | num_ports: '1' 148 | type: complex 149 | vlen: '1' 150 | states: 151 | bus_sink: false 152 | bus_source: false 153 | bus_structure: null 154 | coordinate: [99, 343] 155 | rotation: 180 156 | state: enabled 157 | - name: blocks_integrate_xx_0 158 | id: blocks_integrate_xx 159 | parameters: 160 | affinity: '' 161 | alias: '' 162 | comment: '' 163 | decim: '1' 164 | maxoutbuf: '0' 165 | minoutbuf: '0' 166 | type: float 167 | vlen: '1' 168 | states: 169 | bus_sink: false 170 | bus_source: false 171 | bus_structure: null 172 | coordinate: [301, 173] 173 | rotation: 0 174 | state: true 175 | - name: blocks_magphase_to_complex_0 176 | id: blocks_magphase_to_complex 177 | parameters: 178 | affinity: '' 179 | alias: '' 180 | comment: '' 181 | maxoutbuf: '0' 182 | minoutbuf: '0' 183 | vlen: '1' 184 | states: 185 | bus_sink: false 186 | bus_source: false 187 | bus_structure: null 188 | coordinate: [336, 349] 189 | rotation: 180 190 | state: true 191 | - name: blocks_multiply_const_vxx_0 192 | id: blocks_multiply_const_vxx 193 | parameters: 194 | affinity: '' 195 | alias: '' 196 | comment: '' 197 | const: '20' 198 | maxoutbuf: '0' 199 | minoutbuf: '0' 200 | type: float 201 | vlen: '1' 202 | states: 203 | bus_sink: false 204 | bus_source: false 205 | bus_structure: null 206 | coordinate: [673, 166] 207 | rotation: 0 208 | state: true 209 | - name: blocks_multiply_xx_0 210 | id: blocks_multiply_xx 211 | parameters: 212 | affinity: '' 213 | alias: '' 214 | comment: '' 215 | maxoutbuf: '0' 216 | minoutbuf: '0' 217 | num_inputs: '2' 218 | type: complex 219 | vlen: '1' 220 | states: 221 | bus_sink: false 222 | bus_source: false 223 | bus_structure: null 224 | coordinate: [77, 478] 225 | rotation: 0 226 | state: enabled 227 | - name: blocks_throttle_0 228 | id: blocks_throttle 229 | parameters: 230 | affinity: '' 231 | alias: '' 232 | comment: '' 233 | ignoretag: 'True' 234 | maxoutbuf: '0' 235 | minoutbuf: '0' 236 | samples_per_second: samp_rate 237 | type: float 238 | vlen: '1' 239 | states: 240 | bus_sink: false 241 | bus_source: false 242 | bus_structure: null 243 | coordinate: [462, 171] 244 | rotation: 0 245 | state: true 246 | - name: low_pass_filter_1 247 | id: low_pass_filter 248 | parameters: 249 | affinity: '' 250 | alias: '' 251 | beta: '6.76' 252 | comment: '' 253 | cutoff_freq: 5e3 254 | decim: '1' 255 | gain: '2' 256 | interp: '1' 257 | maxoutbuf: '0' 258 | minoutbuf: '0' 259 | samp_rate: samp_rate 260 | type: fir_filter_fff 261 | width: 1e3 262 | win: firdes.WIN_HAMMING 263 | states: 264 | bus_sink: false 265 | bus_source: false 266 | bus_structure: null 267 | coordinate: [427, 431] 268 | rotation: 0 269 | state: true 270 | - name: qtgui_time_sink_x_0 271 | id: qtgui_time_sink_x 272 | parameters: 273 | affinity: '' 274 | alias: '' 275 | alpha1: '1.0' 276 | alpha10: '1.0' 277 | alpha2: '1.0' 278 | alpha3: '1.0' 279 | alpha4: '1.0' 280 | alpha5: '1.0' 281 | alpha6: '1.0' 282 | alpha7: '1.0' 283 | alpha8: '1.0' 284 | alpha9: '1.0' 285 | autoscale: 'True' 286 | axislabels: 'True' 287 | color1: blue 288 | color10: dark blue 289 | color2: red 290 | color3: green 291 | color4: black 292 | color5: cyan 293 | color6: magenta 294 | color7: yellow 295 | color8: dark red 296 | color9: dark green 297 | comment: '' 298 | ctrlpanel: 'False' 299 | entags: 'False' 300 | grid: 'False' 301 | gui_hint: '' 302 | label1: baseband 303 | label10: Signal 10 304 | label2: demod 305 | label3: carrier_i 306 | label4: carrier_q 307 | label5: Signal 5 308 | label6: Signal 6 309 | label7: Signal 7 310 | label8: Signal 8 311 | label9: Signal 9 312 | legend: 'True' 313 | marker1: '-1' 314 | marker10: '-1' 315 | marker2: '-1' 316 | marker3: '-1' 317 | marker4: '-1' 318 | marker5: '-1' 319 | marker6: '-1' 320 | marker7: '-1' 321 | marker8: '-1' 322 | marker9: '-1' 323 | name: '""' 324 | nconnections: '2' 325 | size: '1024' 326 | srate: samp_rate 327 | stemplot: 'False' 328 | style1: '1' 329 | style10: '1' 330 | style2: '1' 331 | style3: '1' 332 | style4: '1' 333 | style5: '1' 334 | style6: '1' 335 | style7: '1' 336 | style8: '1' 337 | style9: '1' 338 | tr_chan: '0' 339 | tr_delay: '0' 340 | tr_level: '0.0' 341 | tr_mode: qtgui.TRIG_MODE_FREE 342 | tr_slope: qtgui.TRIG_SLOPE_POS 343 | tr_tag: '""' 344 | type: float 345 | update_time: '0.10' 346 | width1: '1' 347 | width10: '1' 348 | width2: '1' 349 | width3: '1' 350 | width4: '1' 351 | width5: '1' 352 | width6: '1' 353 | width7: '1' 354 | width8: '1' 355 | width9: '1' 356 | ylabel: Amplitude 357 | ymax: '1' 358 | ymin: '-1' 359 | yunit: '""' 360 | states: 361 | bus_sink: false 362 | bus_source: false 363 | bus_structure: null 364 | coordinate: [670, 345] 365 | rotation: 0 366 | state: true 367 | 368 | connections: 369 | - [analog_const_source_x_0, '0', blocks_magphase_to_complex_0, '0'] 370 | - [analog_sig_source_x_0_0, '0', blocks_integrate_xx_0, '0'] 371 | - [analog_sig_source_x_0_0, '0', qtgui_time_sink_x_0, '0'] 372 | - [blocks_complex_to_arg_0, '0', low_pass_filter_1, '0'] 373 | - [blocks_conjugate_cc_0, '0', blocks_multiply_xx_0, '1'] 374 | - [blocks_delay_0, '0', blocks_multiply_xx_0, '0'] 375 | - [blocks_integrate_xx_0, '0', blocks_throttle_0, '0'] 376 | - [blocks_magphase_to_complex_0, '0', blocks_conjugate_cc_0, '0'] 377 | - [blocks_magphase_to_complex_0, '0', blocks_delay_0, '0'] 378 | - [blocks_multiply_const_vxx_0, '0', blocks_magphase_to_complex_0, '1'] 379 | - [blocks_multiply_xx_0, '0', blocks_complex_to_arg_0, '0'] 380 | - [blocks_throttle_0, '0', blocks_multiply_const_vxx_0, '0'] 381 | - [low_pass_filter_1, '0', qtgui_time_sink_x_0, '1'] 382 | 383 | metadata: 384 | file_format: 1 385 | -------------------------------------------------------------------------------- /Chapter5_FM/lab4_wfm_receiver.grc: -------------------------------------------------------------------------------- 1 | options: 2 | parameters: 3 | author: wcc 4 | category: '[GRC Hier Blocks]' 5 | cmake_opt: '' 6 | comment: '' 7 | copyright: '' 8 | description: '' 9 | gen_cmake: 'On' 10 | gen_linking: dynamic 11 | generate_options: qt_gui 12 | hier_block_src_path: '.:' 13 | id: lab4_wfm_receiver 14 | max_nouts: '0' 15 | output_language: python 16 | placement: (0,0) 17 | qt_qss_theme: '' 18 | realtime_scheduling: '' 19 | run: 'True' 20 | run_command: '{python} -u {filename}' 21 | run_options: prompt 22 | sizing_mode: fixed 23 | thread_safe_setters: '' 24 | title: lab4_wfm_receiver 25 | window_size: (1000,1000) 26 | states: 27 | bus_sink: false 28 | bus_source: false 29 | bus_structure: null 30 | coordinate: [8, 8] 31 | rotation: 0 32 | state: enabled 33 | 34 | blocks: 35 | - name: bband_samp_rate 36 | id: variable 37 | parameters: 38 | comment: '' 39 | value: '960000' 40 | states: 41 | bus_sink: false 42 | bus_source: false 43 | bus_structure: null 44 | coordinate: [284, 148] 45 | rotation: 0 46 | state: enabled 47 | - name: local_freq 48 | id: variable_qtgui_range 49 | parameters: 50 | comment: '' 51 | gui_hint: '' 52 | label: local_freq 53 | min_len: '200' 54 | orient: Qt.Horizontal 55 | rangeType: int 56 | start: '88000000' 57 | step: '100000' 58 | stop: '108000000' 59 | value: int(100.1e6) 60 | widget: counter_slider 61 | states: 62 | bus_sink: false 63 | bus_source: false 64 | bus_structure: null 65 | coordinate: [380, 11] 66 | rotation: 0 67 | state: true 68 | - name: rf_band_width 69 | id: variable 70 | parameters: 71 | comment: '' 72 | value: '300000' 73 | states: 74 | bus_sink: false 75 | bus_source: false 76 | bus_structure: null 77 | coordinate: [170, 16] 78 | rotation: 0 79 | state: enabled 80 | - name: samp_rate 81 | id: variable 82 | parameters: 83 | comment: '' 84 | value: '48000' 85 | states: 86 | bus_sink: false 87 | bus_source: false 88 | bus_structure: null 89 | coordinate: [288, 18] 90 | rotation: 0 91 | state: enabled 92 | - name: audio_sink_0 93 | id: audio_sink 94 | parameters: 95 | affinity: '' 96 | alias: '' 97 | comment: '' 98 | device_name: '' 99 | num_inputs: '1' 100 | ok_to_block: 'True' 101 | samp_rate: '48000' 102 | states: 103 | bus_sink: false 104 | bus_source: false 105 | bus_structure: null 106 | coordinate: [496, 473] 107 | rotation: 180 108 | state: true 109 | - name: blocks_complex_to_arg_0 110 | id: blocks_complex_to_arg 111 | parameters: 112 | affinity: '' 113 | alias: '' 114 | comment: '' 115 | maxoutbuf: '0' 116 | minoutbuf: '0' 117 | vlen: '1' 118 | states: 119 | bus_sink: false 120 | bus_source: false 121 | bus_structure: null 122 | coordinate: [552, 280.0] 123 | rotation: 0 124 | state: enabled 125 | - name: blocks_conjugate_cc_0 126 | id: blocks_conjugate_cc 127 | parameters: 128 | affinity: '' 129 | alias: '' 130 | comment: '' 131 | maxoutbuf: '0' 132 | minoutbuf: '0' 133 | states: 134 | bus_sink: false 135 | bus_source: false 136 | bus_structure: null 137 | coordinate: [251, 302] 138 | rotation: 0 139 | state: enabled 140 | - name: blocks_delay_0 141 | id: blocks_delay 142 | parameters: 143 | affinity: '' 144 | alias: '' 145 | comment: '' 146 | delay: '1' 147 | maxoutbuf: '0' 148 | minoutbuf: '0' 149 | num_ports: '1' 150 | type: complex 151 | vlen: '1' 152 | states: 153 | bus_sink: false 154 | bus_source: false 155 | bus_structure: null 156 | coordinate: [256, 228.0] 157 | rotation: 0 158 | state: enabled 159 | - name: blocks_multiply_xx_0 160 | id: blocks_multiply_xx 161 | parameters: 162 | affinity: '' 163 | alias: '' 164 | comment: '' 165 | maxoutbuf: '0' 166 | minoutbuf: '0' 167 | num_inputs: '2' 168 | type: complex 169 | vlen: '1' 170 | states: 171 | bus_sink: false 172 | bus_source: false 173 | bus_structure: null 174 | coordinate: [440, 264.0] 175 | rotation: 0 176 | state: enabled 177 | - name: iio_pluto_source_0 178 | id: iio_pluto_source 179 | parameters: 180 | affinity: '' 181 | alias: '' 182 | auto_filter: 'True' 183 | bandwidth: rf_band_width 184 | bbdc: 'True' 185 | buffer_size: '32768' 186 | comment: '' 187 | filter: '' 188 | frequency: local_freq-15 189 | gain1: '''fast_attack''' 190 | manual_gain1: '64' 191 | maxoutbuf: '0' 192 | minoutbuf: '0' 193 | quadrature: 'True' 194 | rfdc: 'True' 195 | samplerate: bband_samp_rate 196 | uri: uri 197 | states: 198 | bus_sink: false 199 | bus_source: false 200 | bus_structure: null 201 | coordinate: [8, 172.0] 202 | rotation: 0 203 | state: true 204 | - name: low_pass_filter_1 205 | id: low_pass_filter 206 | parameters: 207 | affinity: '' 208 | alias: '' 209 | beta: '6.76' 210 | comment: '' 211 | cutoff_freq: 20e3 212 | decim: '4' 213 | gain: '1' 214 | interp: '1' 215 | maxoutbuf: '0' 216 | minoutbuf: '0' 217 | samp_rate: samp_rate*20 218 | type: fir_filter_fff 219 | width: 1e3 220 | win: firdes.WIN_HAMMING 221 | states: 222 | bus_sink: false 223 | bus_source: false 224 | bus_structure: null 225 | coordinate: [722, 217] 226 | rotation: 0 227 | state: true 228 | - name: low_pass_filter_1_0 229 | id: low_pass_filter 230 | parameters: 231 | affinity: '' 232 | alias: '' 233 | beta: '6.76' 234 | comment: '' 235 | cutoff_freq: 20e3 236 | decim: '5' 237 | gain: '1' 238 | interp: '1' 239 | maxoutbuf: '0' 240 | minoutbuf: '0' 241 | samp_rate: samp_rate*5 242 | type: fir_filter_fff 243 | width: 1e3 244 | win: firdes.WIN_HAMMING 245 | states: 246 | bus_sink: false 247 | bus_source: false 248 | bus_structure: null 249 | coordinate: [720, 416] 250 | rotation: 180 251 | state: true 252 | - name: qtgui_sink_x_0 253 | id: qtgui_sink_x 254 | parameters: 255 | affinity: '' 256 | alias: '' 257 | bw: samp_rate*20 258 | comment: '' 259 | fc: '0' 260 | fftsize: '1024' 261 | gui_hint: '' 262 | maxoutbuf: '0' 263 | minoutbuf: '0' 264 | name: '"rx spectrum"' 265 | plotconst: 'True' 266 | plotfreq: 'True' 267 | plottime: 'True' 268 | plotwaterfall: 'True' 269 | rate: '10' 270 | showports: 'False' 271 | showrf: 'False' 272 | type: complex 273 | wintype: firdes.WIN_BLACKMAN_hARRIS 274 | states: 275 | bus_sink: false 276 | bus_source: false 277 | bus_structure: null 278 | coordinate: [254, 384] 279 | rotation: 0 280 | state: enabled 281 | - name: uri 282 | id: parameter 283 | parameters: 284 | alias: '' 285 | comment: '' 286 | hide: none 287 | label: URI 288 | short_id: '' 289 | type: str 290 | value: ip:192.168.1.10 291 | states: 292 | bus_sink: false 293 | bus_source: false 294 | bus_structure: null 295 | coordinate: [166, 109] 296 | rotation: 0 297 | state: true 298 | 299 | connections: 300 | - [blocks_complex_to_arg_0, '0', low_pass_filter_1, '0'] 301 | - [blocks_conjugate_cc_0, '0', blocks_multiply_xx_0, '1'] 302 | - [blocks_delay_0, '0', blocks_multiply_xx_0, '0'] 303 | - [blocks_multiply_xx_0, '0', blocks_complex_to_arg_0, '0'] 304 | - [iio_pluto_source_0, '0', blocks_conjugate_cc_0, '0'] 305 | - [iio_pluto_source_0, '0', blocks_delay_0, '0'] 306 | - [iio_pluto_source_0, '0', qtgui_sink_x_0, '0'] 307 | - [low_pass_filter_1, '0', low_pass_filter_1_0, '0'] 308 | - [low_pass_filter_1_0, '0', audio_sink_0, '0'] 309 | 310 | metadata: 311 | file_format: 1 312 | -------------------------------------------------------------------------------- /Chapter5_FM/lab5_fm_receiver.grc: -------------------------------------------------------------------------------- 1 | options: 2 | parameters: 3 | author: wcc 4 | category: '[GRC Hier Blocks]' 5 | cmake_opt: '' 6 | comment: '' 7 | copyright: '' 8 | description: '' 9 | gen_cmake: 'On' 10 | gen_linking: dynamic 11 | generate_options: qt_gui 12 | hier_block_src_path: '.:' 13 | id: fm_receiver 14 | max_nouts: '0' 15 | output_language: python 16 | placement: (0,0) 17 | qt_qss_theme: '' 18 | realtime_scheduling: '' 19 | run: 'True' 20 | run_command: '{python} -u {filename}' 21 | run_options: prompt 22 | sizing_mode: fixed 23 | thread_safe_setters: '' 24 | title: fm_receiver 25 | window_size: '' 26 | states: 27 | bus_sink: false 28 | bus_source: false 29 | bus_structure: null 30 | coordinate: [8, 8] 31 | rotation: 0 32 | state: enabled 33 | 34 | blocks: 35 | - name: bband_samp_rate 36 | id: variable 37 | parameters: 38 | comment: '' 39 | value: '960000' 40 | states: 41 | bus_sink: false 42 | bus_source: false 43 | bus_structure: null 44 | coordinate: [272, 72] 45 | rotation: 0 46 | state: enabled 47 | - name: local_freq 48 | id: variable 49 | parameters: 50 | comment: '' 51 | value: '1400000000' 52 | states: 53 | bus_sink: false 54 | bus_source: false 55 | bus_structure: null 56 | coordinate: [234, 5] 57 | rotation: 0 58 | state: enabled 59 | - name: rf_band_width 60 | id: variable 61 | parameters: 62 | comment: '' 63 | value: '300000' 64 | states: 65 | bus_sink: false 66 | bus_source: false 67 | bus_structure: null 68 | coordinate: [323, 5] 69 | rotation: 0 70 | state: enabled 71 | - name: samp_rate 72 | id: variable 73 | parameters: 74 | comment: '' 75 | value: '48000' 76 | states: 77 | bus_sink: false 78 | bus_source: false 79 | bus_structure: null 80 | coordinate: [153, 5] 81 | rotation: 0 82 | state: enabled 83 | - name: analog_const_source_x_0 84 | id: analog_const_source_x 85 | parameters: 86 | affinity: '' 87 | alias: '' 88 | comment: '' 89 | const: '1' 90 | maxoutbuf: '0' 91 | minoutbuf: '0' 92 | type: float 93 | states: 94 | bus_sink: false 95 | bus_source: false 96 | bus_structure: null 97 | coordinate: [546, 15] 98 | rotation: 0 99 | state: true 100 | - name: audio_sink_0 101 | id: audio_sink 102 | parameters: 103 | affinity: '' 104 | alias: '' 105 | comment: '' 106 | device_name: '' 107 | num_inputs: '1' 108 | ok_to_block: 'True' 109 | samp_rate: '48000' 110 | states: 111 | bus_sink: false 112 | bus_source: false 113 | bus_structure: null 114 | coordinate: [960, 388.0] 115 | rotation: 0 116 | state: true 117 | - name: blocks_complex_to_arg_0 118 | id: blocks_complex_to_arg 119 | parameters: 120 | affinity: '' 121 | alias: '' 122 | comment: '' 123 | maxoutbuf: '0' 124 | minoutbuf: '0' 125 | vlen: '1' 126 | states: 127 | bus_sink: false 128 | bus_source: false 129 | bus_structure: null 130 | coordinate: [592, 392.0] 131 | rotation: 0 132 | state: enabled 133 | - name: blocks_conjugate_cc_0 134 | id: blocks_conjugate_cc 135 | parameters: 136 | affinity: '' 137 | alias: '' 138 | comment: '' 139 | maxoutbuf: '0' 140 | minoutbuf: '0' 141 | states: 142 | bus_sink: false 143 | bus_source: false 144 | bus_structure: null 145 | coordinate: [272, 440.0] 146 | rotation: 0 147 | state: enabled 148 | - name: blocks_delay_0 149 | id: blocks_delay 150 | parameters: 151 | affinity: '' 152 | alias: '' 153 | comment: '' 154 | delay: '1' 155 | maxoutbuf: '0' 156 | minoutbuf: '0' 157 | num_ports: '1' 158 | type: complex 159 | vlen: '1' 160 | states: 161 | bus_sink: false 162 | bus_source: false 163 | bus_structure: null 164 | coordinate: [304, 364.0] 165 | rotation: 0 166 | state: enabled 167 | - name: blocks_integrate_xx_0 168 | id: blocks_integrate_xx 169 | parameters: 170 | affinity: '' 171 | alias: '' 172 | comment: '' 173 | decim: '1' 174 | maxoutbuf: '0' 175 | minoutbuf: '0' 176 | type: float 177 | vlen: '1' 178 | states: 179 | bus_sink: false 180 | bus_source: false 181 | bus_structure: null 182 | coordinate: [630, 198] 183 | rotation: 0 184 | state: true 185 | - name: blocks_magphase_to_complex_0 186 | id: blocks_magphase_to_complex 187 | parameters: 188 | affinity: '' 189 | alias: '' 190 | comment: '' 191 | maxoutbuf: '0' 192 | minoutbuf: '0' 193 | vlen: '1' 194 | states: 195 | bus_sink: false 196 | bus_source: false 197 | bus_structure: null 198 | coordinate: [743, 35] 199 | rotation: 0 200 | state: true 201 | - name: blocks_multiply_const_vxx_0 202 | id: blocks_multiply_const_vxx 203 | parameters: 204 | affinity: '' 205 | alias: '' 206 | comment: '' 207 | const: '10' 208 | maxoutbuf: '0' 209 | minoutbuf: '0' 210 | type: float 211 | vlen: '1' 212 | states: 213 | bus_sink: false 214 | bus_source: false 215 | bus_structure: null 216 | coordinate: [551, 72] 217 | rotation: 0 218 | state: true 219 | - name: blocks_multiply_xx_0 220 | id: blocks_multiply_xx 221 | parameters: 222 | affinity: '' 223 | alias: '' 224 | comment: '' 225 | maxoutbuf: '0' 226 | minoutbuf: '0' 227 | num_inputs: '2' 228 | type: complex 229 | vlen: '1' 230 | states: 231 | bus_sink: false 232 | bus_source: false 233 | bus_structure: null 234 | coordinate: [464, 376.0] 235 | rotation: 0 236 | state: enabled 237 | - name: blocks_wavfile_source_0 238 | id: blocks_wavfile_source 239 | parameters: 240 | affinity: '' 241 | alias: '' 242 | comment: '' 243 | file: ../audio/music1_mono48kHz.wav 244 | maxoutbuf: '0' 245 | minoutbuf: '0' 246 | nchan: '1' 247 | repeat: 'True' 248 | states: 249 | bus_sink: false 250 | bus_source: false 251 | bus_structure: null 252 | coordinate: [43, 190] 253 | rotation: 0 254 | state: true 255 | - name: iio_pluto_sink_0 256 | id: iio_pluto_sink 257 | parameters: 258 | affinity: '' 259 | alias: '' 260 | attenuation1: '10.0' 261 | auto_filter: 'True' 262 | bandwidth: rf_band_width 263 | buffer_size: '32768' 264 | comment: '' 265 | cyclic: 'False' 266 | filter: '' 267 | frequency: local_freq 268 | samplerate: bband_samp_rate 269 | uri: uri 270 | states: 271 | bus_sink: false 272 | bus_source: false 273 | bus_structure: null 274 | coordinate: [1018, 23] 275 | rotation: 0 276 | state: true 277 | - name: iio_pluto_source_0 278 | id: iio_pluto_source 279 | parameters: 280 | affinity: '' 281 | alias: '' 282 | auto_filter: 'True' 283 | bandwidth: rf_band_width 284 | bbdc: 'True' 285 | buffer_size: '32768' 286 | comment: '' 287 | filter: '' 288 | frequency: local_freq-15 289 | gain1: '''fast_attack''' 290 | manual_gain1: '64' 291 | maxoutbuf: '0' 292 | minoutbuf: '0' 293 | quadrature: 'True' 294 | rfdc: 'True' 295 | samplerate: bband_samp_rate 296 | uri: uri 297 | states: 298 | bus_sink: false 299 | bus_source: false 300 | bus_structure: null 301 | coordinate: [44, 281] 302 | rotation: 0 303 | state: true 304 | - name: low_pass_filter_0 305 | id: low_pass_filter 306 | parameters: 307 | affinity: '' 308 | alias: '' 309 | beta: '6.76' 310 | comment: '' 311 | cutoff_freq: 5e3 312 | decim: '1' 313 | gain: '1' 314 | interp: '5' 315 | maxoutbuf: '0' 316 | minoutbuf: '0' 317 | samp_rate: samp_rate 318 | type: interp_fir_filter_fff 319 | width: 1e3 320 | win: firdes.WIN_HAMMING 321 | states: 322 | bus_sink: false 323 | bus_source: false 324 | bus_structure: null 325 | coordinate: [264, 148.0] 326 | rotation: 0 327 | state: true 328 | - name: low_pass_filter_0_0 329 | id: low_pass_filter 330 | parameters: 331 | affinity: '' 332 | alias: '' 333 | beta: '6.76' 334 | comment: '' 335 | cutoff_freq: 15e3 336 | decim: '1' 337 | gain: '1' 338 | interp: '4' 339 | maxoutbuf: '0' 340 | minoutbuf: '0' 341 | samp_rate: samp_rate*5 342 | type: interp_fir_filter_fff 343 | width: 1e3 344 | win: firdes.WIN_HAMMING 345 | states: 346 | bus_sink: false 347 | bus_source: false 348 | bus_structure: null 349 | coordinate: [447, 142] 350 | rotation: 0 351 | state: true 352 | - name: low_pass_filter_1 353 | id: low_pass_filter 354 | parameters: 355 | affinity: '' 356 | alias: '' 357 | beta: '6.76' 358 | comment: '' 359 | cutoff_freq: 15e3 360 | decim: '20' 361 | gain: '100' 362 | interp: '1' 363 | maxoutbuf: '0' 364 | minoutbuf: '0' 365 | samp_rate: samp_rate*20 366 | type: fir_filter_fff 367 | width: 2e3 368 | win: firdes.WIN_HAMMING 369 | states: 370 | bus_sink: false 371 | bus_source: false 372 | bus_structure: null 373 | coordinate: [768, 340.0] 374 | rotation: 0 375 | state: true 376 | - name: qtgui_sink_x_0 377 | id: qtgui_sink_x 378 | parameters: 379 | affinity: '' 380 | alias: '' 381 | bw: samp_rate 382 | comment: '' 383 | fc: '0' 384 | fftsize: '1024' 385 | gui_hint: '' 386 | maxoutbuf: '0' 387 | minoutbuf: '0' 388 | name: '"rx spectrum"' 389 | plotconst: 'True' 390 | plotfreq: 'True' 391 | plottime: 'True' 392 | plotwaterfall: 'True' 393 | rate: '10' 394 | showports: 'False' 395 | showrf: 'False' 396 | type: float 397 | wintype: firdes.WIN_BLACKMAN_hARRIS 398 | states: 399 | bus_sink: false 400 | bus_source: false 401 | bus_structure: null 402 | coordinate: [928, 460.0] 403 | rotation: 0 404 | state: enabled 405 | - name: uri 406 | id: parameter 407 | parameters: 408 | alias: '' 409 | comment: '' 410 | hide: none 411 | label: URI 412 | short_id: '' 413 | type: str 414 | value: ip:192.168.1.10 415 | states: 416 | bus_sink: false 417 | bus_source: false 418 | bus_structure: null 419 | coordinate: [154, 72] 420 | rotation: 0 421 | state: true 422 | 423 | connections: 424 | - [analog_const_source_x_0, '0', blocks_magphase_to_complex_0, '0'] 425 | - [blocks_complex_to_arg_0, '0', low_pass_filter_1, '0'] 426 | - [blocks_conjugate_cc_0, '0', blocks_multiply_xx_0, '1'] 427 | - [blocks_delay_0, '0', blocks_multiply_xx_0, '0'] 428 | - [blocks_integrate_xx_0, '0', blocks_multiply_const_vxx_0, '0'] 429 | - [blocks_magphase_to_complex_0, '0', iio_pluto_sink_0, '0'] 430 | - [blocks_multiply_const_vxx_0, '0', blocks_magphase_to_complex_0, '1'] 431 | - [blocks_multiply_xx_0, '0', blocks_complex_to_arg_0, '0'] 432 | - [blocks_wavfile_source_0, '0', low_pass_filter_0, '0'] 433 | - [iio_pluto_source_0, '0', blocks_conjugate_cc_0, '0'] 434 | - [iio_pluto_source_0, '0', blocks_delay_0, '0'] 435 | - [low_pass_filter_0, '0', low_pass_filter_0_0, '0'] 436 | - [low_pass_filter_0_0, '0', blocks_integrate_xx_0, '0'] 437 | - [low_pass_filter_1, '0', audio_sink_0, '0'] 438 | - [low_pass_filter_1, '0', qtgui_sink_x_0, '0'] 439 | 440 | metadata: 441 | file_format: 1 442 | -------------------------------------------------------------------------------- /Chapter6_ASK/image_out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MicroPhase/gnu-radio-demo/d3b6d475158c4a42fd7102af88a4dbe0dc444a39/Chapter6_ASK/image_out.png -------------------------------------------------------------------------------- /Chapter6_ASK/image_src.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MicroPhase/gnu-radio-demo/d3b6d475158c4a42fd7102af88a4dbe0dc444a39/Chapter6_ASK/image_src.png -------------------------------------------------------------------------------- /Chapter6_ASK/lab1_ask_mod.grc: -------------------------------------------------------------------------------- 1 | options: 2 | parameters: 3 | author: wcc 4 | category: '[GRC Hier Blocks]' 5 | cmake_opt: '' 6 | comment: '' 7 | copyright: '' 8 | description: '' 9 | gen_cmake: 'On' 10 | gen_linking: dynamic 11 | generate_options: qt_gui 12 | hier_block_src_path: '.:' 13 | id: lab1_ask_mod 14 | max_nouts: '0' 15 | output_language: python 16 | placement: (0,0) 17 | qt_qss_theme: '' 18 | realtime_scheduling: '' 19 | run: 'True' 20 | run_command: '{python} -u {filename}' 21 | run_options: prompt 22 | sizing_mode: fixed 23 | thread_safe_setters: '' 24 | title: lab1_ask_mod 25 | window_size: '' 26 | states: 27 | bus_sink: false 28 | bus_source: false 29 | bus_structure: null 30 | coordinate: [8, 8] 31 | rotation: 0 32 | state: enabled 33 | 34 | blocks: 35 | - name: samp_rate 36 | id: variable 37 | parameters: 38 | comment: '' 39 | value: '200000' 40 | states: 41 | bus_sink: false 42 | bus_source: false 43 | bus_structure: null 44 | coordinate: [158, 11] 45 | rotation: 0 46 | state: enabled 47 | - name: analog_sig_source_x_0 48 | id: analog_sig_source_x 49 | parameters: 50 | affinity: '' 51 | alias: '' 52 | amp: '1' 53 | comment: '' 54 | freq: '10000' 55 | maxoutbuf: '0' 56 | minoutbuf: '0' 57 | offset: '0' 58 | phase: '0' 59 | samp_rate: samp_rate 60 | type: float 61 | waveform: analog.GR_COS_WAVE 62 | states: 63 | bus_sink: false 64 | bus_source: false 65 | bus_structure: null 66 | coordinate: [41, 167] 67 | rotation: 0 68 | state: true 69 | - name: analog_sig_source_x_1 70 | id: analog_sig_source_x 71 | parameters: 72 | affinity: '' 73 | alias: '' 74 | amp: '1' 75 | comment: '' 76 | freq: '1000' 77 | maxoutbuf: '0' 78 | minoutbuf: '0' 79 | offset: '0' 80 | phase: '0' 81 | samp_rate: samp_rate 82 | type: float 83 | waveform: analog.GR_SQR_WAVE 84 | states: 85 | bus_sink: false 86 | bus_source: false 87 | bus_structure: null 88 | coordinate: [42, 315] 89 | rotation: 0 90 | state: true 91 | - name: blocks_multiply_xx_0 92 | id: blocks_multiply_xx 93 | parameters: 94 | affinity: '' 95 | alias: '' 96 | comment: '' 97 | maxoutbuf: '0' 98 | minoutbuf: '0' 99 | num_inputs: '2' 100 | type: float 101 | vlen: '1' 102 | states: 103 | bus_sink: false 104 | bus_source: false 105 | bus_structure: null 106 | coordinate: [267, 267] 107 | rotation: 0 108 | state: true 109 | - name: blocks_throttle_0 110 | id: blocks_throttle 111 | parameters: 112 | affinity: '' 113 | alias: '' 114 | comment: '' 115 | ignoretag: 'True' 116 | maxoutbuf: '0' 117 | minoutbuf: '0' 118 | samples_per_second: samp_rate 119 | type: float 120 | vlen: '1' 121 | states: 122 | bus_sink: false 123 | bus_source: false 124 | bus_structure: null 125 | coordinate: [402, 275] 126 | rotation: 0 127 | state: true 128 | - name: qtgui_freq_sink_x_0 129 | id: qtgui_freq_sink_x 130 | parameters: 131 | affinity: '' 132 | alias: '' 133 | alpha1: '1.0' 134 | alpha10: '1.0' 135 | alpha2: '1.0' 136 | alpha3: '1.0' 137 | alpha4: '1.0' 138 | alpha5: '1.0' 139 | alpha6: '1.0' 140 | alpha7: '1.0' 141 | alpha8: '1.0' 142 | alpha9: '1.0' 143 | autoscale: 'False' 144 | average: '1.0' 145 | axislabels: 'True' 146 | bw: samp_rate 147 | color1: '"blue"' 148 | color10: '"dark blue"' 149 | color2: '"red"' 150 | color3: '"green"' 151 | color4: '"black"' 152 | color5: '"cyan"' 153 | color6: '"magenta"' 154 | color7: '"yellow"' 155 | color8: '"dark red"' 156 | color9: '"dark green"' 157 | comment: '' 158 | ctrlpanel: 'False' 159 | fc: '0' 160 | fftsize: '1024' 161 | freqhalf: 'True' 162 | grid: 'False' 163 | gui_hint: '' 164 | label: Relative Gain 165 | label1: '' 166 | label10: '''''' 167 | label2: '''''' 168 | label3: '''''' 169 | label4: '''''' 170 | label5: '''''' 171 | label6: '''''' 172 | label7: '''''' 173 | label8: '''''' 174 | label9: '''''' 175 | legend: 'True' 176 | maxoutbuf: '0' 177 | minoutbuf: '0' 178 | name: '""' 179 | nconnections: '1' 180 | showports: 'False' 181 | tr_chan: '0' 182 | tr_level: '0.0' 183 | tr_mode: qtgui.TRIG_MODE_FREE 184 | tr_tag: '""' 185 | type: float 186 | units: dB 187 | update_time: '0.10' 188 | width1: '1' 189 | width10: '1' 190 | width2: '1' 191 | width3: '1' 192 | width4: '1' 193 | width5: '1' 194 | width6: '1' 195 | width7: '1' 196 | width8: '1' 197 | width9: '1' 198 | wintype: firdes.WIN_BLACKMAN_hARRIS 199 | ymax: '10' 200 | ymin: '-140' 201 | states: 202 | bus_sink: false 203 | bus_source: false 204 | bus_structure: null 205 | coordinate: [587, 191] 206 | rotation: 0 207 | state: true 208 | - name: qtgui_time_sink_x_0 209 | id: qtgui_time_sink_x 210 | parameters: 211 | affinity: '' 212 | alias: '' 213 | alpha1: '1.0' 214 | alpha10: '1.0' 215 | alpha2: '1.0' 216 | alpha3: '1.0' 217 | alpha4: '1.0' 218 | alpha5: '1.0' 219 | alpha6: '1.0' 220 | alpha7: '1.0' 221 | alpha8: '1.0' 222 | alpha9: '1.0' 223 | autoscale: 'True' 224 | axislabels: 'True' 225 | color1: blue 226 | color10: dark blue 227 | color2: red 228 | color3: green 229 | color4: black 230 | color5: cyan 231 | color6: magenta 232 | color7: yellow 233 | color8: dark red 234 | color9: dark green 235 | comment: '' 236 | ctrlpanel: 'False' 237 | entags: 'True' 238 | grid: 'False' 239 | gui_hint: '' 240 | label1: Signal 1 241 | label10: Signal 10 242 | label2: Signal 2 243 | label3: Signal 3 244 | label4: Signal 4 245 | label5: Signal 5 246 | label6: Signal 6 247 | label7: Signal 7 248 | label8: Signal 8 249 | label9: Signal 9 250 | legend: 'True' 251 | marker1: '-1' 252 | marker10: '-1' 253 | marker2: '-1' 254 | marker3: '-1' 255 | marker4: '-1' 256 | marker5: '-1' 257 | marker6: '-1' 258 | marker7: '-1' 259 | marker8: '-1' 260 | marker9: '-1' 261 | name: OOK 262 | nconnections: '1' 263 | size: '1024' 264 | srate: samp_rate 265 | stemplot: 'False' 266 | style1: '1' 267 | style10: '1' 268 | style2: '1' 269 | style3: '1' 270 | style4: '1' 271 | style5: '1' 272 | style6: '1' 273 | style7: '1' 274 | style8: '1' 275 | style9: '1' 276 | tr_chan: '0' 277 | tr_delay: '0' 278 | tr_level: '0.0' 279 | tr_mode: qtgui.TRIG_MODE_FREE 280 | tr_slope: qtgui.TRIG_SLOPE_POS 281 | tr_tag: '""' 282 | type: float 283 | update_time: '0.10' 284 | width1: '1' 285 | width10: '1' 286 | width2: '1' 287 | width3: '1' 288 | width4: '1' 289 | width5: '1' 290 | width6: '1' 291 | width7: '1' 292 | width8: '1' 293 | width9: '1' 294 | ylabel: Amplitude 295 | ymax: '1' 296 | ymin: '-1' 297 | yunit: '""' 298 | states: 299 | bus_sink: false 300 | bus_source: false 301 | bus_structure: null 302 | coordinate: [578, 359] 303 | rotation: 0 304 | state: true 305 | 306 | connections: 307 | - [analog_sig_source_x_0, '0', blocks_multiply_xx_0, '0'] 308 | - [analog_sig_source_x_1, '0', blocks_multiply_xx_0, '1'] 309 | - [blocks_multiply_xx_0, '0', blocks_throttle_0, '0'] 310 | - [blocks_throttle_0, '0', qtgui_freq_sink_x_0, '0'] 311 | - [blocks_throttle_0, '0', qtgui_time_sink_x_0, '0'] 312 | 313 | metadata: 314 | file_format: 1 315 | -------------------------------------------------------------------------------- /Chapter6_ASK/lab2_ask_demod.grc: -------------------------------------------------------------------------------- 1 | options: 2 | parameters: 3 | author: wcc 4 | category: '[GRC Hier Blocks]' 5 | cmake_opt: '' 6 | comment: '' 7 | copyright: '' 8 | description: '' 9 | gen_cmake: 'On' 10 | gen_linking: dynamic 11 | generate_options: qt_gui 12 | hier_block_src_path: '.:' 13 | id: lab2_ask_demod 14 | max_nouts: '0' 15 | output_language: python 16 | placement: (0,0) 17 | qt_qss_theme: '' 18 | realtime_scheduling: '' 19 | run: 'True' 20 | run_command: '{python} -u {filename}' 21 | run_options: prompt 22 | sizing_mode: fixed 23 | thread_safe_setters: '' 24 | title: lab2_ask_demod 25 | window_size: '' 26 | states: 27 | bus_sink: false 28 | bus_source: false 29 | bus_structure: null 30 | coordinate: [8, 8] 31 | rotation: 0 32 | state: enabled 33 | 34 | blocks: 35 | - name: bband_freq 36 | id: variable_qtgui_range 37 | parameters: 38 | comment: '' 39 | gui_hint: '' 40 | label: bband_freq 41 | min_len: '200' 42 | orient: Qt.Horizontal 43 | rangeType: int 44 | start: '0' 45 | step: '1' 46 | stop: '1000' 47 | value: '300' 48 | widget: counter_slider 49 | states: 50 | bus_sink: false 51 | bus_source: false 52 | bus_structure: null 53 | coordinate: [267, 6] 54 | rotation: 0 55 | state: true 56 | - name: carrier_freq 57 | id: variable_qtgui_range 58 | parameters: 59 | comment: '' 60 | gui_hint: '' 61 | label: carrier_freq 62 | min_len: '200' 63 | orient: Qt.Horizontal 64 | rangeType: int 65 | start: '10000' 66 | step: '1' 67 | stop: '100000' 68 | value: '10000' 69 | widget: counter_slider 70 | states: 71 | bus_sink: false 72 | bus_source: false 73 | bus_structure: null 74 | coordinate: [374, 6] 75 | rotation: 0 76 | state: true 77 | - name: filter_taps 78 | id: variable 79 | parameters: 80 | comment: '' 81 | value: firdes.low_pass(1, samp_rate, carrier_freq, 25000, firdes.WIN_HAMMING, 82 | 6.76) 83 | states: 84 | bus_sink: false 85 | bus_source: false 86 | bus_structure: null 87 | coordinate: [271, 145] 88 | rotation: 0 89 | state: true 90 | - name: samp_rate 91 | id: variable 92 | parameters: 93 | comment: '' 94 | value: '512000' 95 | states: 96 | bus_sink: false 97 | bus_source: false 98 | bus_structure: null 99 | coordinate: [184, 12] 100 | rotation: 0 101 | state: enabled 102 | - name: analog_sig_source_x_0 103 | id: analog_sig_source_x 104 | parameters: 105 | affinity: '' 106 | alias: '' 107 | amp: '1' 108 | comment: '' 109 | freq: carrier_freq 110 | maxoutbuf: '0' 111 | minoutbuf: '0' 112 | offset: '0' 113 | phase: '0' 114 | samp_rate: samp_rate 115 | type: float 116 | waveform: analog.GR_COS_WAVE 117 | states: 118 | bus_sink: false 119 | bus_source: false 120 | bus_structure: null 121 | coordinate: [38, 154] 122 | rotation: 0 123 | state: true 124 | - name: analog_sig_source_x_1 125 | id: analog_sig_source_x 126 | parameters: 127 | affinity: '' 128 | alias: '' 129 | amp: '1' 130 | comment: '' 131 | freq: bband_freq 132 | maxoutbuf: '0' 133 | minoutbuf: '0' 134 | offset: '0' 135 | phase: '0' 136 | samp_rate: samp_rate 137 | type: float 138 | waveform: analog.GR_SQR_WAVE 139 | states: 140 | bus_sink: false 141 | bus_source: false 142 | bus_structure: null 143 | coordinate: [39, 302] 144 | rotation: 0 145 | state: true 146 | - name: blocks_complex_to_mag_squared_0 147 | id: blocks_complex_to_mag_squared 148 | parameters: 149 | affinity: '' 150 | alias: '' 151 | comment: '' 152 | maxoutbuf: '0' 153 | minoutbuf: '0' 154 | vlen: '1' 155 | states: 156 | bus_sink: false 157 | bus_source: false 158 | bus_structure: null 159 | coordinate: [801, 432] 160 | rotation: 180 161 | state: true 162 | - name: blocks_float_to_complex_0 163 | id: blocks_float_to_complex 164 | parameters: 165 | affinity: '' 166 | alias: '' 167 | comment: '' 168 | maxoutbuf: '0' 169 | minoutbuf: '0' 170 | vlen: '1' 171 | states: 172 | bus_sink: false 173 | bus_source: false 174 | bus_structure: null 175 | coordinate: [588, 270] 176 | rotation: 0 177 | state: true 178 | - name: blocks_multiply_xx_0 179 | id: blocks_multiply_xx 180 | parameters: 181 | affinity: '' 182 | alias: '' 183 | comment: '' 184 | maxoutbuf: '0' 185 | minoutbuf: '0' 186 | num_inputs: '2' 187 | type: float 188 | vlen: '1' 189 | states: 190 | bus_sink: false 191 | bus_source: false 192 | bus_structure: null 193 | coordinate: [264, 254] 194 | rotation: 0 195 | state: true 196 | - name: blocks_throttle_0 197 | id: blocks_throttle 198 | parameters: 199 | affinity: '' 200 | alias: '' 201 | comment: '' 202 | ignoretag: 'True' 203 | maxoutbuf: '0' 204 | minoutbuf: '0' 205 | samples_per_second: samp_rate 206 | type: float 207 | vlen: '1' 208 | states: 209 | bus_sink: false 210 | bus_source: false 211 | bus_structure: null 212 | coordinate: [399, 262] 213 | rotation: 0 214 | state: true 215 | - name: digital_clock_recovery_mm_xx_0 216 | id: digital_clock_recovery_mm_xx 217 | parameters: 218 | affinity: '' 219 | alias: '' 220 | comment: '' 221 | gain_mu: '0.175' 222 | gain_omega: 0.25*0.175*0.175 223 | maxoutbuf: '0' 224 | minoutbuf: '0' 225 | mu: '0.5' 226 | omega: '1' 227 | omega_relative_limit: '0.005' 228 | type: float 229 | states: 230 | bus_sink: false 231 | bus_source: false 232 | bus_structure: null 233 | coordinate: [509, 387] 234 | rotation: 180 235 | state: true 236 | - name: freq_xlating_fir_filter_xxx_0 237 | id: freq_xlating_fir_filter_xxx 238 | parameters: 239 | affinity: '' 240 | alias: '' 241 | center_freq: '0' 242 | comment: '' 243 | decim: '1' 244 | maxoutbuf: '0' 245 | minoutbuf: '0' 246 | samp_rate: samp_rate 247 | taps: filter_taps 248 | type: ccc 249 | states: 250 | bus_sink: false 251 | bus_source: false 252 | bus_structure: null 253 | coordinate: [779, 265] 254 | rotation: 0 255 | state: true 256 | - name: low_pass_filter_1 257 | id: low_pass_filter 258 | parameters: 259 | affinity: '' 260 | alias: '' 261 | beta: '6.76' 262 | comment: '' 263 | cutoff_freq: '1000' 264 | decim: '1' 265 | gain: '1' 266 | interp: '1' 267 | maxoutbuf: '0' 268 | minoutbuf: '0' 269 | samp_rate: samp_rate 270 | type: fir_filter_fff 271 | width: 1e3 272 | win: firdes.WIN_HAMMING 273 | states: 274 | bus_sink: false 275 | bus_source: false 276 | bus_structure: null 277 | coordinate: [283, 367] 278 | rotation: 180 279 | state: true 280 | - name: qtgui_time_sink_x_0 281 | id: qtgui_time_sink_x 282 | parameters: 283 | affinity: '' 284 | alias: '' 285 | alpha1: '1.0' 286 | alpha10: '1.0' 287 | alpha2: '1.0' 288 | alpha3: '1.0' 289 | alpha4: '1.0' 290 | alpha5: '1.0' 291 | alpha6: '1.0' 292 | alpha7: '1.0' 293 | alpha8: '1.0' 294 | alpha9: '1.0' 295 | autoscale: 'True' 296 | axislabels: 'True' 297 | color1: blue 298 | color10: dark blue 299 | color2: red 300 | color3: green 301 | color4: black 302 | color5: cyan 303 | color6: magenta 304 | color7: yellow 305 | color8: dark red 306 | color9: dark green 307 | comment: '' 308 | ctrlpanel: 'False' 309 | entags: 'True' 310 | grid: 'False' 311 | gui_hint: '' 312 | label1: Signal 1 313 | label10: Signal 10 314 | label2: Signal 2 315 | label3: Signal 3 316 | label4: Signal 4 317 | label5: Signal 5 318 | label6: Signal 6 319 | label7: Signal 7 320 | label8: Signal 8 321 | label9: Signal 9 322 | legend: 'True' 323 | marker1: '-1' 324 | marker10: '-1' 325 | marker2: '-1' 326 | marker3: '-1' 327 | marker4: '-1' 328 | marker5: '-1' 329 | marker6: '-1' 330 | marker7: '-1' 331 | marker8: '-1' 332 | marker9: '-1' 333 | name: after abs 334 | nconnections: '1' 335 | size: '4096' 336 | srate: samp_rate 337 | stemplot: 'False' 338 | style1: '1' 339 | style10: '1' 340 | style2: '1' 341 | style3: '1' 342 | style4: '1' 343 | style5: '1' 344 | style6: '1' 345 | style7: '1' 346 | style8: '1' 347 | style9: '1' 348 | tr_chan: '0' 349 | tr_delay: '0' 350 | tr_level: '0.0' 351 | tr_mode: qtgui.TRIG_MODE_FREE 352 | tr_slope: qtgui.TRIG_SLOPE_POS 353 | tr_tag: '""' 354 | type: float 355 | update_time: '0.10' 356 | width1: '1' 357 | width10: '1' 358 | width2: '1' 359 | width3: '1' 360 | width4: '1' 361 | width5: '1' 362 | width6: '1' 363 | width7: '1' 364 | width8: '1' 365 | width9: '1' 366 | ylabel: Amplitude 367 | ymax: '1' 368 | ymin: '-1' 369 | yunit: '""' 370 | states: 371 | bus_sink: false 372 | bus_source: false 373 | bus_structure: null 374 | coordinate: [800, 508] 375 | rotation: 0 376 | state: true 377 | - name: qtgui_time_sink_x_0_0 378 | id: qtgui_time_sink_x 379 | parameters: 380 | affinity: '' 381 | alias: '' 382 | alpha1: '1.0' 383 | alpha10: '1.0' 384 | alpha2: '1.0' 385 | alpha3: '1.0' 386 | alpha4: '1.0' 387 | alpha5: '1.0' 388 | alpha6: '1.0' 389 | alpha7: '1.0' 390 | alpha8: '1.0' 391 | alpha9: '1.0' 392 | autoscale: 'True' 393 | axislabels: 'True' 394 | color1: blue 395 | color10: dark blue 396 | color2: red 397 | color3: green 398 | color4: black 399 | color5: cyan 400 | color6: magenta 401 | color7: yellow 402 | color8: dark red 403 | color9: dark green 404 | comment: '' 405 | ctrlpanel: 'False' 406 | entags: 'True' 407 | grid: 'False' 408 | gui_hint: '' 409 | label1: Signal 1 410 | label10: Signal 10 411 | label2: Signal 2 412 | label3: Signal 3 413 | label4: Signal 4 414 | label5: Signal 5 415 | label6: Signal 6 416 | label7: Signal 7 417 | label8: Signal 8 418 | label9: Signal 9 419 | legend: 'True' 420 | marker1: '-1' 421 | marker10: '-1' 422 | marker2: '-1' 423 | marker3: '-1' 424 | marker4: '-1' 425 | marker5: '-1' 426 | marker6: '-1' 427 | marker7: '-1' 428 | marker8: '-1' 429 | marker9: '-1' 430 | name: after clock recover 431 | nconnections: '1' 432 | size: '4096' 433 | srate: samp_rate 434 | stemplot: 'False' 435 | style1: '1' 436 | style10: '1' 437 | style2: '1' 438 | style3: '1' 439 | style4: '1' 440 | style5: '1' 441 | style6: '1' 442 | style7: '1' 443 | style8: '1' 444 | style9: '1' 445 | tr_chan: '0' 446 | tr_delay: '0' 447 | tr_level: '0.0' 448 | tr_mode: qtgui.TRIG_MODE_FREE 449 | tr_slope: qtgui.TRIG_SLOPE_POS 450 | tr_tag: '""' 451 | type: float 452 | update_time: '0.10' 453 | width1: '1' 454 | width10: '1' 455 | width2: '1' 456 | width3: '1' 457 | width4: '1' 458 | width5: '1' 459 | width6: '1' 460 | width7: '1' 461 | width8: '1' 462 | width9: '1' 463 | ylabel: Amplitude 464 | ymax: '1' 465 | ymin: '-1' 466 | yunit: '""' 467 | states: 468 | bus_sink: false 469 | bus_source: false 470 | bus_structure: null 471 | coordinate: [271, 539] 472 | rotation: 0 473 | state: true 474 | 475 | connections: 476 | - [analog_sig_source_x_0, '0', blocks_multiply_xx_0, '0'] 477 | - [analog_sig_source_x_1, '0', blocks_multiply_xx_0, '1'] 478 | - [blocks_complex_to_mag_squared_0, '0', digital_clock_recovery_mm_xx_0, '0'] 479 | - [blocks_complex_to_mag_squared_0, '0', qtgui_time_sink_x_0, '0'] 480 | - [blocks_float_to_complex_0, '0', freq_xlating_fir_filter_xxx_0, '0'] 481 | - [blocks_multiply_xx_0, '0', blocks_throttle_0, '0'] 482 | - [blocks_throttle_0, '0', blocks_float_to_complex_0, '0'] 483 | - [digital_clock_recovery_mm_xx_0, '0', low_pass_filter_1, '0'] 484 | - [freq_xlating_fir_filter_xxx_0, '0', blocks_complex_to_mag_squared_0, '0'] 485 | - [low_pass_filter_1, '0', qtgui_time_sink_x_0_0, '0'] 486 | 487 | metadata: 488 | file_format: 1 489 | -------------------------------------------------------------------------------- /Chapter6_ASK/text.txt: -------------------------------------------------------------------------------- 1 | hello world 00 !!! 2 | hello world 01 !!! 3 | hello world 02 !!! 4 | hello world 03 !!! 5 | hello world 04 !!! 6 | hello world 05 !!! 7 | hello world 06 !!! 8 | hello world 07 !!! 9 | hello world 08 !!! 10 | hello world 09 !!! 11 | hello world 10 !!! 12 | hello world 11 !!! 13 | hello world 12 !!! 14 | hello world 13 !!! 15 | hello world 14 !!! 16 | hello world 15 !!! 17 | hello world 16 !!! 18 | hello world 17 !!! 19 | hello world 18 !!! 20 | hello world 19 !!! 21 | hello world 20 !!! 22 | hello world 21 !!! 23 | hello world 22 !!! 24 | hello world 23 !!! 25 | hello world 24 !!! 26 | hello world 25 !!! 27 | hello world 26 !!! 28 | hello world 27 !!! 29 | hello world 28 !!! 30 | hello world 29 !!! 31 | hello world 30 !!! 32 | hello world 31 !!! 33 | hello world 32 !!! 34 | hello world 33 !!! 35 | hello world 34 !!! 36 | hello world 35 !!! 37 | hello world 36 !!! 38 | hello world 37 !!! 39 | hello world 38 !!! 40 | hello world 39 !!! 41 | hello world 40 !!! 42 | hello world 41 !!! 43 | hello world 42 !!! 44 | hello world 43 !!! 45 | hello world 44 !!! 46 | hello world 45 !!! 47 | hello world 46 !!! 48 | hello world 47 !!! 49 | hello world 48 !!! 50 | hello world 49 !!! 51 | hello world 50 !!! 52 | hello world 51 !!! 53 | hello world 52 !!! 54 | hello world 53 !!! 55 | hello world 54 !!! 56 | hello world 55 !!! 57 | hello world 56 !!! 58 | hello world 57 !!! 59 | hello world 58 !!! 60 | hello world 59 !!! 61 | hello world 60 !!! 62 | hello world 61 !!! 63 | hello world 62 !!! 64 | hello world 63 !!! 65 | hello world 64 !!! 66 | hello world 65 !!! 67 | hello world 66 !!! 68 | hello world 67 !!! 69 | hello world 68 !!! 70 | hello world 69 !!! 71 | hello world 70 !!! 72 | hello world 71 !!! 73 | hello world 72 !!! 74 | hello world 73 !!! 75 | hello world 74 !!! 76 | hello world 75 !!! 77 | hello world 76 !!! 78 | hello world 77 !!! 79 | hello world 78 !!! 80 | hello world 79 !!! 81 | hello world 80 !!! 82 | hello world 81 !!! 83 | hello world 82 !!! 84 | hello world 83 !!! 85 | hello world 84 !!! 86 | hello world 85 !!! 87 | hello world 86 !!! 88 | hello world 87 !!! 89 | hello world 88 !!! 90 | hello world 89 !!! 91 | hello world 90 !!! 92 | hello world 91 !!! 93 | hello world 92 !!! 94 | hello world 93 !!! 95 | hello world 94 !!! 96 | hello world 95 !!! 97 | hello world 96 !!! 98 | hello world 97 !!! 99 | hello world 98 !!! 100 | hello world 99 !!! 101 | -------------------------------------------------------------------------------- /Chapter7_BPSK/lab1_bpsk_mod.grc: -------------------------------------------------------------------------------- 1 | options: 2 | parameters: 3 | author: wcc 4 | category: '[GRC Hier Blocks]' 5 | cmake_opt: '' 6 | comment: '' 7 | copyright: '' 8 | description: '' 9 | gen_cmake: 'On' 10 | gen_linking: dynamic 11 | generate_options: qt_gui 12 | hier_block_src_path: '.:' 13 | id: lab1_bpsk_mod 14 | max_nouts: '0' 15 | output_language: python 16 | placement: (0,0) 17 | qt_qss_theme: '' 18 | realtime_scheduling: '' 19 | run: 'True' 20 | run_command: '{python} -u {filename}' 21 | run_options: prompt 22 | sizing_mode: fixed 23 | thread_safe_setters: '' 24 | title: lab1_bpsk_mod 25 | window_size: '' 26 | states: 27 | bus_sink: false 28 | bus_source: false 29 | bus_structure: null 30 | coordinate: [8, 8] 31 | rotation: 0 32 | state: enabled 33 | 34 | blocks: 35 | - name: BPSK 36 | id: variable_constellation 37 | parameters: 38 | comment: '' 39 | const_points: '[-1, 1]' 40 | dims: '1' 41 | precision: '8' 42 | rot_sym: '4' 43 | soft_dec_lut: None 44 | sym_map: '[0, 1]' 45 | type: calcdist 46 | states: 47 | bus_sink: false 48 | bus_source: false 49 | bus_structure: null 50 | coordinate: [246, 11] 51 | rotation: 0 52 | state: enabled 53 | - name: samp_rate 54 | id: variable 55 | parameters: 56 | comment: '' 57 | value: '100000' 58 | states: 59 | bus_sink: false 60 | bus_source: false 61 | bus_structure: null 62 | coordinate: [151, 7] 63 | rotation: 0 64 | state: enabled 65 | - name: sps 66 | id: variable 67 | parameters: 68 | comment: '' 69 | value: '8' 70 | states: 71 | bus_sink: false 72 | bus_source: false 73 | bus_structure: null 74 | coordinate: [161, 81] 75 | rotation: 0 76 | state: enabled 77 | - name: blocks_throttle_0 78 | id: blocks_throttle 79 | parameters: 80 | affinity: '' 81 | alias: '' 82 | comment: '' 83 | ignoretag: 'True' 84 | maxoutbuf: '0' 85 | minoutbuf: '0' 86 | samples_per_second: samp_rate 87 | type: byte 88 | vlen: '1' 89 | states: 90 | bus_sink: false 91 | bus_source: false 92 | bus_structure: null 93 | coordinate: [350, 208] 94 | rotation: 0 95 | state: enabled 96 | - name: blocks_unpacked_to_packed_xx_0 97 | id: blocks_unpacked_to_packed_xx 98 | parameters: 99 | affinity: '' 100 | alias: '' 101 | bits_per_chunk: '1' 102 | comment: '' 103 | endianness: gr.GR_MSB_FIRST 104 | maxoutbuf: '0' 105 | minoutbuf: '0' 106 | num_ports: '1' 107 | type: byte 108 | states: 109 | bus_sink: false 110 | bus_source: false 111 | bus_structure: null 112 | coordinate: [169, 200] 113 | rotation: 0 114 | state: enabled 115 | - name: blocks_vector_source_x_0_0_0 116 | id: blocks_vector_source_x 117 | parameters: 118 | affinity: '' 119 | alias: '' 120 | comment: '' 121 | maxoutbuf: '0' 122 | minoutbuf: '0' 123 | repeat: 'True' 124 | tags: '[]' 125 | type: byte 126 | vector: '[1, 0, 1, 1,0]' 127 | vlen: '1' 128 | states: 129 | bus_sink: false 130 | bus_source: false 131 | bus_structure: null 132 | coordinate: [11, 188] 133 | rotation: 0 134 | state: enabled 135 | - name: digital_constellation_modulator_0 136 | id: digital_constellation_modulator 137 | parameters: 138 | affinity: '' 139 | alias: '' 140 | comment: '' 141 | constellation: BPSK 142 | differential: 'False' 143 | excess_bw: '0.35' 144 | log: 'False' 145 | maxoutbuf: '0' 146 | minoutbuf: '0' 147 | samples_per_symbol: sps 148 | verbose: 'False' 149 | states: 150 | bus_sink: false 151 | bus_source: false 152 | bus_structure: null 153 | coordinate: [514, 180] 154 | rotation: 0 155 | state: enabled 156 | - name: qtgui_const_sink_x_0 157 | id: qtgui_const_sink_x 158 | parameters: 159 | affinity: '' 160 | alias: '' 161 | alpha1: '1.0' 162 | alpha10: '1.0' 163 | alpha2: '1.0' 164 | alpha3: '1.0' 165 | alpha4: '1.0' 166 | alpha5: '1.0' 167 | alpha6: '1.0' 168 | alpha7: '1.0' 169 | alpha8: '1.0' 170 | alpha9: '1.0' 171 | autoscale: 'False' 172 | axislabels: 'True' 173 | color1: '"blue"' 174 | color10: '"red"' 175 | color2: '"red"' 176 | color3: '"red"' 177 | color4: '"red"' 178 | color5: '"red"' 179 | color6: '"red"' 180 | color7: '"red"' 181 | color8: '"red"' 182 | color9: '"red"' 183 | comment: '' 184 | grid: 'False' 185 | gui_hint: '' 186 | label1: '' 187 | label10: '' 188 | label2: '' 189 | label3: '' 190 | label4: '' 191 | label5: '' 192 | label6: '' 193 | label7: '' 194 | label8: '' 195 | label9: '' 196 | legend: 'True' 197 | marker1: '0' 198 | marker10: '0' 199 | marker2: '0' 200 | marker3: '0' 201 | marker4: '0' 202 | marker5: '0' 203 | marker6: '0' 204 | marker7: '0' 205 | marker8: '0' 206 | marker9: '0' 207 | name: '""' 208 | nconnections: '1' 209 | size: '1024' 210 | style1: '0' 211 | style10: '0' 212 | style2: '0' 213 | style3: '0' 214 | style4: '0' 215 | style5: '0' 216 | style6: '0' 217 | style7: '0' 218 | style8: '0' 219 | style9: '0' 220 | tr_chan: '0' 221 | tr_level: '0.0' 222 | tr_mode: qtgui.TRIG_MODE_FREE 223 | tr_slope: qtgui.TRIG_SLOPE_POS 224 | tr_tag: '""' 225 | type: complex 226 | update_time: '0.10' 227 | width1: '1' 228 | width10: '1' 229 | width2: '1' 230 | width3: '1' 231 | width4: '1' 232 | width5: '1' 233 | width6: '1' 234 | width7: '1' 235 | width8: '1' 236 | width9: '1' 237 | xmax: '2' 238 | xmin: '-2' 239 | ymax: '2' 240 | ymin: '-2' 241 | states: 242 | bus_sink: false 243 | bus_source: false 244 | bus_structure: null 245 | coordinate: [781, 202] 246 | rotation: 0 247 | state: true 248 | - name: qtgui_freq_sink_x_0 249 | id: qtgui_freq_sink_x 250 | parameters: 251 | affinity: '' 252 | alias: '' 253 | alpha1: '1.0' 254 | alpha10: '1.0' 255 | alpha2: '1.0' 256 | alpha3: '1.0' 257 | alpha4: '1.0' 258 | alpha5: '1.0' 259 | alpha6: '1.0' 260 | alpha7: '1.0' 261 | alpha8: '1.0' 262 | alpha9: '1.0' 263 | autoscale: 'False' 264 | average: '1.0' 265 | axislabels: 'True' 266 | bw: samp_rate 267 | color1: '"blue"' 268 | color10: '"dark blue"' 269 | color2: '"red"' 270 | color3: '"green"' 271 | color4: '"black"' 272 | color5: '"cyan"' 273 | color6: '"magenta"' 274 | color7: '"yellow"' 275 | color8: '"dark red"' 276 | color9: '"dark green"' 277 | comment: '' 278 | ctrlpanel: 'False' 279 | fc: '0' 280 | fftsize: '1024' 281 | freqhalf: 'True' 282 | grid: 'False' 283 | gui_hint: '' 284 | label: Relative Gain 285 | label1: '' 286 | label10: '''''' 287 | label2: '''''' 288 | label3: '''''' 289 | label4: '''''' 290 | label5: '''''' 291 | label6: '''''' 292 | label7: '''''' 293 | label8: '''''' 294 | label9: '''''' 295 | legend: 'True' 296 | maxoutbuf: '0' 297 | minoutbuf: '0' 298 | name: '""' 299 | nconnections: '1' 300 | showports: 'False' 301 | tr_chan: '0' 302 | tr_level: '0.0' 303 | tr_mode: qtgui.TRIG_MODE_FREE 304 | tr_tag: '""' 305 | type: complex 306 | units: dB 307 | update_time: '0.10' 308 | width1: '1' 309 | width10: '1' 310 | width2: '1' 311 | width3: '1' 312 | width4: '1' 313 | width5: '1' 314 | width6: '1' 315 | width7: '1' 316 | width8: '1' 317 | width9: '1' 318 | wintype: firdes.WIN_BLACKMAN_hARRIS 319 | ymax: '10' 320 | ymin: '-140' 321 | states: 322 | bus_sink: false 323 | bus_source: false 324 | bus_structure: null 325 | coordinate: [785, 77] 326 | rotation: 0 327 | state: true 328 | - name: qtgui_time_sink_x_1 329 | id: qtgui_time_sink_x 330 | parameters: 331 | affinity: '' 332 | alias: '' 333 | alpha1: '1.0' 334 | alpha10: '1.0' 335 | alpha2: '1.0' 336 | alpha3: '1.0' 337 | alpha4: '1.0' 338 | alpha5: '1.0' 339 | alpha6: '1.0' 340 | alpha7: '1.0' 341 | alpha8: '1.0' 342 | alpha9: '1.0' 343 | autoscale: 'True' 344 | axislabels: 'True' 345 | color1: blue 346 | color10: dark blue 347 | color2: red 348 | color3: green 349 | color4: black 350 | color5: cyan 351 | color6: magenta 352 | color7: yellow 353 | color8: dark red 354 | color9: dark green 355 | comment: '' 356 | ctrlpanel: 'False' 357 | entags: 'True' 358 | grid: 'False' 359 | gui_hint: '' 360 | label1: Signal 1 361 | label10: Signal 10 362 | label2: Signal 2 363 | label3: Signal 3 364 | label4: Signal 4 365 | label5: Signal 5 366 | label6: Signal 6 367 | label7: Signal 7 368 | label8: Signal 8 369 | label9: Signal 9 370 | legend: 'True' 371 | marker1: '-1' 372 | marker10: '-1' 373 | marker2: '-1' 374 | marker3: '-1' 375 | marker4: '-1' 376 | marker5: '-1' 377 | marker6: '-1' 378 | marker7: '-1' 379 | marker8: '-1' 380 | marker9: '-1' 381 | name: '""' 382 | nconnections: '1' 383 | size: '1024' 384 | srate: samp_rate 385 | stemplot: 'False' 386 | style1: '1' 387 | style10: '1' 388 | style2: '1' 389 | style3: '1' 390 | style4: '1' 391 | style5: '1' 392 | style6: '1' 393 | style7: '1' 394 | style8: '1' 395 | style9: '1' 396 | tr_chan: '0' 397 | tr_delay: '0' 398 | tr_level: '0.0' 399 | tr_mode: qtgui.TRIG_MODE_FREE 400 | tr_slope: qtgui.TRIG_SLOPE_POS 401 | tr_tag: '""' 402 | type: complex 403 | update_time: '0.10' 404 | width1: '1' 405 | width10: '1' 406 | width2: '1' 407 | width3: '1' 408 | width4: '1' 409 | width5: '1' 410 | width6: '1' 411 | width7: '1' 412 | width8: '1' 413 | width9: '1' 414 | ylabel: Amplitude 415 | ymax: '1' 416 | ymin: '-1' 417 | yunit: '""' 418 | states: 419 | bus_sink: false 420 | bus_source: false 421 | bus_structure: null 422 | coordinate: [783, 282] 423 | rotation: 0 424 | state: true 425 | 426 | connections: 427 | - [blocks_throttle_0, '0', digital_constellation_modulator_0, '0'] 428 | - [blocks_unpacked_to_packed_xx_0, '0', blocks_throttle_0, '0'] 429 | - [blocks_vector_source_x_0_0_0, '0', blocks_unpacked_to_packed_xx_0, '0'] 430 | - [digital_constellation_modulator_0, '0', qtgui_const_sink_x_0, '0'] 431 | - [digital_constellation_modulator_0, '0', qtgui_freq_sink_x_0, '0'] 432 | - [digital_constellation_modulator_0, '0', qtgui_time_sink_x_1, '0'] 433 | 434 | metadata: 435 | file_format: 1 436 | -------------------------------------------------------------------------------- /Chapter7_BPSK/lab2_bpsk_demod.grc: -------------------------------------------------------------------------------- 1 | options: 2 | parameters: 3 | author: wcc 4 | category: '[GRC Hier Blocks]' 5 | cmake_opt: '' 6 | comment: '' 7 | copyright: '' 8 | description: '' 9 | gen_cmake: 'On' 10 | gen_linking: dynamic 11 | generate_options: qt_gui 12 | hier_block_src_path: '.:' 13 | id: lab2_bpsk_demod 14 | max_nouts: '0' 15 | output_language: python 16 | placement: (0,0) 17 | qt_qss_theme: '' 18 | realtime_scheduling: '' 19 | run: 'True' 20 | run_command: '{python} -u {filename}' 21 | run_options: prompt 22 | sizing_mode: fixed 23 | thread_safe_setters: '' 24 | title: lab2_bpsk_demod 25 | window_size: '' 26 | states: 27 | bus_sink: false 28 | bus_source: false 29 | bus_structure: null 30 | coordinate: [8, 8] 31 | rotation: 0 32 | state: enabled 33 | 34 | blocks: 35 | - name: BPSK 36 | id: variable_constellation 37 | parameters: 38 | comment: '' 39 | const_points: '[-1, 1]' 40 | dims: '1' 41 | precision: '8' 42 | rot_sym: '4' 43 | soft_dec_lut: None 44 | sym_map: '[0, 1]' 45 | type: calcdist 46 | states: 47 | bus_sink: false 48 | bus_source: false 49 | bus_structure: null 50 | coordinate: [281, 6] 51 | rotation: 0 52 | state: enabled 53 | - name: freq_offset 54 | id: variable_qtgui_range 55 | parameters: 56 | comment: '' 57 | gui_hint: '' 58 | label: freq_offset 59 | min_len: '200' 60 | orient: Qt.Horizontal 61 | rangeType: float 62 | start: '-1000' 63 | step: '1' 64 | stop: '1000' 65 | value: '0' 66 | widget: counter_slider 67 | states: 68 | bus_sink: false 69 | bus_source: false 70 | bus_structure: null 71 | coordinate: [612, 6] 72 | rotation: 0 73 | state: true 74 | - name: nfilts 75 | id: variable 76 | parameters: 77 | comment: '' 78 | value: '128' 79 | states: 80 | bus_sink: false 81 | bus_source: false 82 | bus_structure: null 83 | coordinate: [150, 78] 84 | rotation: 0 85 | state: enabled 86 | - name: noise_voltage 87 | id: variable_qtgui_range 88 | parameters: 89 | comment: '' 90 | gui_hint: '' 91 | label: '' 92 | min_len: '200' 93 | orient: Qt.Horizontal 94 | rangeType: float 95 | start: '0.0' 96 | step: '.001' 97 | stop: '1' 98 | value: '.063' 99 | widget: counter_slider 100 | states: 101 | bus_sink: false 102 | bus_source: false 103 | bus_structure: null 104 | coordinate: [500, 6] 105 | rotation: 0 106 | state: enabled 107 | - name: rrc_taps 108 | id: variable 109 | parameters: 110 | comment: '' 111 | value: firdes.root_raised_cosine(nfilts, nfilts, 1.0/float(sps), 0.35, 45*nfilts) 112 | states: 113 | bus_sink: false 114 | bus_source: false 115 | bus_structure: null 116 | coordinate: [162, 149] 117 | rotation: 0 118 | state: enabled 119 | - name: samp_rate 120 | id: variable 121 | parameters: 122 | comment: '' 123 | value: '100000' 124 | states: 125 | bus_sink: false 126 | bus_source: false 127 | bus_structure: null 128 | coordinate: [149, 8] 129 | rotation: 0 130 | state: enabled 131 | - name: sps 132 | id: variable 133 | parameters: 134 | comment: '' 135 | value: '8' 136 | states: 137 | bus_sink: false 138 | bus_source: false 139 | bus_structure: null 140 | coordinate: [221, 78] 141 | rotation: 0 142 | state: enabled 143 | - name: timing_loop_bandwidth 144 | id: variable_qtgui_range 145 | parameters: 146 | comment: '' 147 | gui_hint: '' 148 | label: '' 149 | min_len: '200' 150 | orient: Qt.Horizontal 151 | rangeType: float 152 | start: '.001' 153 | step: '.001' 154 | stop: '.2' 155 | value: '.063' 156 | widget: counter_slider 157 | states: 158 | bus_sink: false 159 | bus_source: false 160 | bus_structure: null 161 | coordinate: [13, 147] 162 | rotation: 0 163 | state: enabled 164 | - name: blocks_char_to_float_0 165 | id: blocks_char_to_float 166 | parameters: 167 | affinity: '' 168 | alias: '' 169 | comment: '' 170 | maxoutbuf: '0' 171 | minoutbuf: '0' 172 | scale: '1' 173 | vlen: '1' 174 | states: 175 | bus_sink: false 176 | bus_source: false 177 | bus_structure: null 178 | coordinate: [244, 421] 179 | rotation: 180 180 | state: true 181 | - name: blocks_complex_to_real_0 182 | id: blocks_complex_to_real 183 | parameters: 184 | affinity: '' 185 | alias: '' 186 | comment: '' 187 | maxoutbuf: '0' 188 | minoutbuf: '0' 189 | vlen: '1' 190 | states: 191 | bus_sink: false 192 | bus_source: false 193 | bus_structure: null 194 | coordinate: [528, 429] 195 | rotation: 180 196 | state: enabled 197 | - name: blocks_throttle_0 198 | id: blocks_throttle 199 | parameters: 200 | affinity: '' 201 | alias: '' 202 | comment: '' 203 | ignoretag: 'True' 204 | maxoutbuf: '0' 205 | minoutbuf: '0' 206 | samples_per_second: samp_rate 207 | type: byte 208 | vlen: '1' 209 | states: 210 | bus_sink: false 211 | bus_source: false 212 | bus_structure: null 213 | coordinate: [357, 311] 214 | rotation: 0 215 | state: enabled 216 | - name: blocks_unpacked_to_packed_xx_0 217 | id: blocks_unpacked_to_packed_xx 218 | parameters: 219 | affinity: '' 220 | alias: '' 221 | bits_per_chunk: '1' 222 | comment: '' 223 | endianness: gr.GR_MSB_FIRST 224 | maxoutbuf: '0' 225 | minoutbuf: '0' 226 | num_ports: '1' 227 | type: byte 228 | states: 229 | bus_sink: false 230 | bus_source: false 231 | bus_structure: null 232 | coordinate: [176, 303] 233 | rotation: 0 234 | state: enabled 235 | - name: blocks_vector_source_x_0_0_0 236 | id: blocks_vector_source_x 237 | parameters: 238 | affinity: '' 239 | alias: '' 240 | comment: '' 241 | maxoutbuf: '0' 242 | minoutbuf: '0' 243 | repeat: 'True' 244 | tags: '[]' 245 | type: byte 246 | vector: '[1, 0, 1, 1,0]' 247 | vlen: '1' 248 | states: 249 | bus_sink: false 250 | bus_source: false 251 | bus_structure: null 252 | coordinate: [18, 291] 253 | rotation: 0 254 | state: enabled 255 | - name: channels_channel_model_0_0 256 | id: channels_channel_model 257 | parameters: 258 | affinity: '' 259 | alias: '' 260 | block_tags: 'False' 261 | comment: '' 262 | epsilon: '1.0' 263 | freq_offset: freq_offset/samp_rate 264 | maxoutbuf: '0' 265 | minoutbuf: '0' 266 | noise_voltage: noise_voltage 267 | seed: '0' 268 | taps: '1.0 ' 269 | states: 270 | bus_sink: false 271 | bus_source: false 272 | bus_structure: null 273 | coordinate: [734, 267] 274 | rotation: 0 275 | state: enabled 276 | - name: digital_binary_slicer_fb_0 277 | id: digital_binary_slicer_fb 278 | parameters: 279 | affinity: '' 280 | alias: '' 281 | comment: '' 282 | maxoutbuf: '0' 283 | minoutbuf: '0' 284 | states: 285 | bus_sink: false 286 | bus_source: false 287 | bus_structure: null 288 | coordinate: [395, 429] 289 | rotation: 180 290 | state: enabled 291 | - name: digital_constellation_modulator_0 292 | id: digital_constellation_modulator 293 | parameters: 294 | affinity: '' 295 | alias: '' 296 | comment: '' 297 | constellation: BPSK 298 | differential: 'False' 299 | excess_bw: '0.35' 300 | log: 'False' 301 | maxoutbuf: '0' 302 | minoutbuf: '0' 303 | samples_per_symbol: sps 304 | verbose: 'False' 305 | states: 306 | bus_sink: false 307 | bus_source: false 308 | bus_structure: null 309 | coordinate: [520, 282] 310 | rotation: 0 311 | state: enabled 312 | - name: digital_pfb_clock_sync_xxx_0 313 | id: digital_pfb_clock_sync_xxx 314 | parameters: 315 | affinity: '' 316 | alias: '' 317 | comment: '' 318 | filter_size: nfilts 319 | init_phase: nfilts/2 320 | loop_bw: timing_loop_bandwidth 321 | max_dev: '1.5' 322 | maxoutbuf: '0' 323 | minoutbuf: '0' 324 | osps: '1' 325 | sps: sps 326 | taps: rrc_taps 327 | type: ccf 328 | states: 329 | bus_sink: false 330 | bus_source: false 331 | bus_structure: null 332 | coordinate: [725, 413] 333 | rotation: 180 334 | state: enabled 335 | - name: qtgui_const_sink_x_0 336 | id: qtgui_const_sink_x 337 | parameters: 338 | affinity: '' 339 | alias: '' 340 | alpha1: '1.0' 341 | alpha10: '1.0' 342 | alpha2: '1.0' 343 | alpha3: '1.0' 344 | alpha4: '1.0' 345 | alpha5: '1.0' 346 | alpha6: '1.0' 347 | alpha7: '1.0' 348 | alpha8: '1.0' 349 | alpha9: '1.0' 350 | autoscale: 'False' 351 | axislabels: 'True' 352 | color1: '"blue"' 353 | color10: '"red"' 354 | color2: '"red"' 355 | color3: '"red"' 356 | color4: '"red"' 357 | color5: '"red"' 358 | color6: '"red"' 359 | color7: '"red"' 360 | color8: '"red"' 361 | color9: '"red"' 362 | comment: '' 363 | grid: 'False' 364 | gui_hint: '' 365 | label1: '' 366 | label10: '' 367 | label2: '' 368 | label3: '' 369 | label4: '' 370 | label5: '' 371 | label6: '' 372 | label7: '' 373 | label8: '' 374 | label9: '' 375 | legend: 'True' 376 | marker1: '0' 377 | marker10: '0' 378 | marker2: '0' 379 | marker3: '0' 380 | marker4: '0' 381 | marker5: '0' 382 | marker6: '0' 383 | marker7: '0' 384 | marker8: '0' 385 | marker9: '0' 386 | name: '""' 387 | nconnections: '1' 388 | size: '1024' 389 | style1: '0' 390 | style10: '0' 391 | style2: '0' 392 | style3: '0' 393 | style4: '0' 394 | style5: '0' 395 | style6: '0' 396 | style7: '0' 397 | style8: '0' 398 | style9: '0' 399 | tr_chan: '0' 400 | tr_level: '0.0' 401 | tr_mode: qtgui.TRIG_MODE_FREE 402 | tr_slope: qtgui.TRIG_SLOPE_POS 403 | tr_tag: '""' 404 | type: complex 405 | update_time: '0.10' 406 | width1: '1' 407 | width10: '1' 408 | width2: '1' 409 | width3: '1' 410 | width4: '1' 411 | width5: '1' 412 | width6: '1' 413 | width7: '1' 414 | width8: '1' 415 | width9: '1' 416 | xmax: '2' 417 | xmin: '-2' 418 | ymax: '2' 419 | ymin: '-2' 420 | states: 421 | bus_sink: false 422 | bus_source: false 423 | bus_structure: null 424 | coordinate: [479, 513] 425 | rotation: 180 426 | state: true 427 | - name: qtgui_time_sink_x_0 428 | id: qtgui_time_sink_x 429 | parameters: 430 | affinity: '' 431 | alias: '' 432 | alpha1: '1.0' 433 | alpha10: '1.0' 434 | alpha2: '1.0' 435 | alpha3: '1.0' 436 | alpha4: '1.0' 437 | alpha5: '1.0' 438 | alpha6: '1.0' 439 | alpha7: '1.0' 440 | alpha8: '1.0' 441 | alpha9: '1.0' 442 | autoscale: 'True' 443 | axislabels: 'True' 444 | color1: blue 445 | color10: dark blue 446 | color2: red 447 | color3: green 448 | color4: black 449 | color5: cyan 450 | color6: magenta 451 | color7: yellow 452 | color8: dark red 453 | color9: dark green 454 | comment: '' 455 | ctrlpanel: 'False' 456 | entags: 'True' 457 | grid: 'False' 458 | gui_hint: '' 459 | label1: Signal 1 460 | label10: Signal 10 461 | label2: Signal 2 462 | label3: Signal 3 463 | label4: Signal 4 464 | label5: Signal 5 465 | label6: Signal 6 466 | label7: Signal 7 467 | label8: Signal 8 468 | label9: Signal 9 469 | legend: 'True' 470 | marker1: '0' 471 | marker10: '-1' 472 | marker2: '-1' 473 | marker3: '-1' 474 | marker4: '-1' 475 | marker5: '-1' 476 | marker6: '-1' 477 | marker7: '-1' 478 | marker8: '-1' 479 | marker9: '-1' 480 | name: '""' 481 | nconnections: '1' 482 | size: '1024' 483 | srate: samp_rate 484 | stemplot: 'False' 485 | style1: '1' 486 | style10: '1' 487 | style2: '1' 488 | style3: '1' 489 | style4: '1' 490 | style5: '1' 491 | style6: '1' 492 | style7: '1' 493 | style8: '1' 494 | style9: '1' 495 | tr_chan: '0' 496 | tr_delay: '0' 497 | tr_level: '0.0' 498 | tr_mode: qtgui.TRIG_MODE_FREE 499 | tr_slope: qtgui.TRIG_SLOPE_POS 500 | tr_tag: '""' 501 | type: float 502 | update_time: '0.10' 503 | width1: '1' 504 | width10: '1' 505 | width2: '1' 506 | width3: '1' 507 | width4: '1' 508 | width5: '1' 509 | width6: '1' 510 | width7: '1' 511 | width8: '1' 512 | width9: '1' 513 | ylabel: Amplitude 514 | ymax: '1' 515 | ymin: '-1' 516 | yunit: '""' 517 | states: 518 | bus_sink: false 519 | bus_source: false 520 | bus_structure: null 521 | coordinate: [224, 505] 522 | rotation: 0 523 | state: true 524 | 525 | connections: 526 | - [blocks_char_to_float_0, '0', qtgui_time_sink_x_0, '0'] 527 | - [blocks_complex_to_real_0, '0', digital_binary_slicer_fb_0, '0'] 528 | - [blocks_throttle_0, '0', digital_constellation_modulator_0, '0'] 529 | - [blocks_unpacked_to_packed_xx_0, '0', blocks_throttle_0, '0'] 530 | - [blocks_vector_source_x_0_0_0, '0', blocks_unpacked_to_packed_xx_0, '0'] 531 | - [channels_channel_model_0_0, '0', digital_pfb_clock_sync_xxx_0, '0'] 532 | - [digital_binary_slicer_fb_0, '0', blocks_char_to_float_0, '0'] 533 | - [digital_constellation_modulator_0, '0', channels_channel_model_0_0, '0'] 534 | - [digital_pfb_clock_sync_xxx_0, '0', blocks_complex_to_real_0, '0'] 535 | - [digital_pfb_clock_sync_xxx_0, '0', qtgui_const_sink_x_0, '0'] 536 | 537 | metadata: 538 | file_format: 1 539 | -------------------------------------------------------------------------------- /Chapter7_BPSK/text.txt: -------------------------------------------------------------------------------- 1 | hello world 00 !!! 2 | hello world 01 !!! 3 | hello world 02 !!! 4 | hello world 03 !!! 5 | hello world 04 !!! 6 | hello world 05 !!! 7 | hello world 06 !!! 8 | hello world 07 !!! 9 | hello world 08 !!! 10 | hello world 09 !!! 11 | hello world 10 !!! 12 | hello world 11 !!! 13 | hello world 12 !!! 14 | hello world 13 !!! 15 | hello world 14 !!! 16 | hello world 15 !!! 17 | hello world 16 !!! 18 | hello world 17 !!! 19 | hello world 18 !!! 20 | hello world 19 !!! 21 | hello world 20 !!! 22 | hello world 21 !!! 23 | hello world 22 !!! 24 | hello world 23 !!! 25 | hello world 24 !!! 26 | hello world 25 !!! 27 | hello world 26 !!! 28 | hello world 27 !!! 29 | hello world 28 !!! 30 | hello world 29 !!! 31 | hello world 30 !!! 32 | hello world 31 !!! 33 | hello world 32 !!! 34 | hello world 33 !!! 35 | hello world 34 !!! 36 | hello world 35 !!! 37 | hello world 36 !!! 38 | hello world 37 !!! 39 | hello world 38 !!! 40 | hello world 39 !!! 41 | hello world 40 !!! 42 | hello world 41 !!! 43 | hello world 42 !!! 44 | hello world 43 !!! 45 | hello world 44 !!! 46 | hello world 45 !!! 47 | hello world 46 !!! 48 | hello world 47 !!! 49 | hello world 48 !!! 50 | hello world 49 !!! 51 | hello world 50 !!! 52 | hello world 51 !!! 53 | hello world 52 !!! 54 | hello world 53 !!! 55 | hello world 54 !!! 56 | hello world 55 !!! 57 | hello world 56 !!! 58 | hello world 57 !!! 59 | hello world 58 !!! 60 | hello world 59 !!! 61 | hello world 60 !!! 62 | hello world 61 !!! 63 | hello world 62 !!! 64 | hello world 63 !!! 65 | hello world 64 !!! 66 | hello world 65 !!! 67 | hello world 66 !!! 68 | hello world 67 !!! 69 | hello world 68 !!! 70 | hello world 69 !!! 71 | hello world 70 !!! 72 | hello world 71 !!! 73 | hello world 72 !!! 74 | hello world 73 !!! 75 | hello world 74 !!! 76 | hello world 75 !!! 77 | hello world 76 !!! 78 | hello world 77 !!! 79 | hello world 78 !!! 80 | hello world 79 !!! 81 | hello world 80 !!! 82 | hello world 81 !!! 83 | hello world 82 !!! 84 | hello world 83 !!! 85 | hello world 84 !!! 86 | hello world 85 !!! 87 | hello world 86 !!! 88 | hello world 87 !!! 89 | hello world 88 !!! 90 | hello world 89 !!! 91 | hello world 90 !!! 92 | hello world 91 !!! 93 | hello world 92 !!! 94 | hello world 93 !!! 95 | hello world 94 !!! 96 | hello world 95 !!! 97 | hello world 96 !!! 98 | hello world 97 !!! 99 | hello world 98 !!! 100 | hello world 99 !!! 101 | -------------------------------------------------------------------------------- /Chapter8_QPSK/text.txt: -------------------------------------------------------------------------------- 1 | hello world 00 !!! 2 | hello world 01 !!! 3 | hello world 02 !!! 4 | hello world 03 !!! 5 | hello world 04 !!! 6 | hello world 05 !!! 7 | hello world 06 !!! 8 | hello world 07 !!! 9 | hello world 08 !!! 10 | hello world 09 !!! 11 | hello world 10 !!! 12 | hello world 11 !!! 13 | hello world 12 !!! 14 | hello world 13 !!! 15 | hello world 14 !!! 16 | hello world 15 !!! 17 | hello world 16 !!! 18 | hello world 17 !!! 19 | hello world 18 !!! 20 | hello world 19 !!! 21 | hello world 20 !!! 22 | hello world 21 !!! 23 | hello world 22 !!! 24 | hello world 23 !!! 25 | hello world 24 !!! 26 | hello world 25 !!! 27 | hello world 26 !!! 28 | hello world 27 !!! 29 | hello world 28 !!! 30 | hello world 29 !!! 31 | hello world 30 !!! 32 | hello world 31 !!! 33 | hello world 32 !!! 34 | hello world 33 !!! 35 | hello world 34 !!! 36 | hello world 35 !!! 37 | hello world 36 !!! 38 | hello world 37 !!! 39 | hello world 38 !!! 40 | hello world 39 !!! 41 | hello world 40 !!! 42 | hello world 41 !!! 43 | hello world 42 !!! 44 | hello world 43 !!! 45 | hello world 44 !!! 46 | hello world 45 !!! 47 | hello world 46 !!! 48 | hello world 47 !!! 49 | hello world 48 !!! 50 | hello world 49 !!! 51 | hello world 50 !!! 52 | hello world 51 !!! 53 | hello world 52 !!! 54 | hello world 53 !!! 55 | hello world 54 !!! 56 | hello world 55 !!! 57 | hello world 56 !!! 58 | hello world 57 !!! 59 | hello world 58 !!! 60 | hello world 59 !!! 61 | hello world 60 !!! 62 | hello world 61 !!! 63 | hello world 62 !!! 64 | hello world 63 !!! 65 | hello world 64 !!! 66 | hello world 65 !!! 67 | hello world 66 !!! 68 | hello world 67 !!! 69 | hello world 68 !!! 70 | hello world 69 !!! 71 | hello world 70 !!! 72 | hello world 71 !!! 73 | hello world 72 !!! 74 | hello world 73 !!! 75 | hello world 74 !!! 76 | hello world 75 !!! 77 | hello world 76 !!! 78 | hello world 77 !!! 79 | hello world 78 !!! 80 | hello world 79 !!! 81 | hello world 80 !!! 82 | hello world 81 !!! 83 | hello world 82 !!! 84 | hello world 83 !!! 85 | hello world 84 !!! 86 | hello world 85 !!! 87 | hello world 86 !!! 88 | hello world 87 !!! 89 | hello world 88 !!! 90 | hello world 89 !!! 91 | hello world 90 !!! 92 | hello world 91 !!! 93 | hello world 92 !!! 94 | hello world 93 !!! 95 | hello world 94 !!! 96 | hello world 95 !!! 97 | hello world 96 !!! 98 | hello world 97 !!! 99 | hello world 98 !!! 100 | hello world 99 !!! 101 | -------------------------------------------------------------------------------- /Chapter9_FSK/lab1_fsk_mod.grc: -------------------------------------------------------------------------------- 1 | options: 2 | parameters: 3 | author: wcc 4 | category: '[GRC Hier Blocks]' 5 | cmake_opt: '' 6 | comment: '' 7 | copyright: '' 8 | description: '' 9 | gen_cmake: 'On' 10 | gen_linking: dynamic 11 | generate_options: qt_gui 12 | hier_block_src_path: '.:' 13 | id: lab1_fsk_mod_demod 14 | max_nouts: '0' 15 | output_language: python 16 | placement: (0,0) 17 | qt_qss_theme: '' 18 | realtime_scheduling: '' 19 | run: 'True' 20 | run_command: '{python} -u {filename}' 21 | run_options: prompt 22 | sizing_mode: fixed 23 | thread_safe_setters: '' 24 | title: lab1_fsk_mod_demod 25 | window_size: '' 26 | states: 27 | bus_sink: false 28 | bus_source: false 29 | bus_structure: null 30 | coordinate: [8, 8] 31 | rotation: 0 32 | state: enabled 33 | 34 | blocks: 35 | - name: fc 36 | id: variable_qtgui_range 37 | parameters: 38 | comment: '' 39 | gui_hint: '' 40 | label: carrier frequency 41 | min_len: '200' 42 | orient: Qt.Horizontal 43 | rangeType: float 44 | start: '1500' 45 | step: '1' 46 | stop: '2000' 47 | value: '1500' 48 | widget: counter_slider 49 | states: 50 | bus_sink: false 51 | bus_source: false 52 | bus_structure: null 53 | coordinate: [14, 119] 54 | rotation: 0 55 | state: true 56 | - name: fd 57 | id: variable_qtgui_range 58 | parameters: 59 | comment: '' 60 | gui_hint: '' 61 | label: delta freq 62 | min_len: '200' 63 | orient: Qt.Horizontal 64 | rangeType: float 65 | start: '200' 66 | step: '1' 67 | stop: '500' 68 | value: '200' 69 | widget: counter_slider 70 | states: 71 | bus_sink: false 72 | bus_source: false 73 | bus_structure: null 74 | coordinate: [153, 121] 75 | rotation: 0 76 | state: true 77 | - name: samp_rate 78 | id: variable 79 | parameters: 80 | comment: '' 81 | value: '32000' 82 | states: 83 | bus_sink: false 84 | bus_source: false 85 | bus_structure: null 86 | coordinate: [184, 11] 87 | rotation: 0 88 | state: enabled 89 | - name: analog_random_source_x_0 90 | id: analog_random_source_x 91 | parameters: 92 | affinity: '' 93 | alias: '' 94 | comment: '' 95 | max: '2' 96 | maxoutbuf: '0' 97 | min: '0' 98 | minoutbuf: '0' 99 | num_samps: '1000' 100 | repeat: 'True' 101 | type: byte 102 | states: 103 | bus_sink: false 104 | bus_source: false 105 | bus_structure: null 106 | coordinate: [17, 273] 107 | rotation: 0 108 | state: true 109 | - name: analog_sig_source_x_0 110 | id: analog_sig_source_x 111 | parameters: 112 | affinity: '' 113 | alias: '' 114 | amp: '1' 115 | comment: '' 116 | freq: fc+fd 117 | maxoutbuf: '0' 118 | minoutbuf: '0' 119 | offset: '0' 120 | phase: '0' 121 | samp_rate: samp_rate 122 | type: float 123 | waveform: analog.GR_COS_WAVE 124 | states: 125 | bus_sink: false 126 | bus_source: false 127 | bus_structure: null 128 | coordinate: [415, 159] 129 | rotation: 0 130 | state: true 131 | - name: analog_sig_source_x_0_0 132 | id: analog_sig_source_x 133 | parameters: 134 | affinity: '' 135 | alias: '' 136 | amp: '1' 137 | comment: '' 138 | freq: fc-fd 139 | maxoutbuf: '0' 140 | minoutbuf: '0' 141 | offset: '0' 142 | phase: '0' 143 | samp_rate: samp_rate 144 | type: float 145 | waveform: analog.GR_COS_WAVE 146 | states: 147 | bus_sink: false 148 | bus_source: false 149 | bus_structure: null 150 | coordinate: [428, 428] 151 | rotation: 0 152 | state: true 153 | - name: blocks_add_const_vxx_0 154 | id: blocks_add_const_vxx 155 | parameters: 156 | affinity: '' 157 | alias: '' 158 | comment: '' 159 | const: '-1' 160 | maxoutbuf: '0' 161 | minoutbuf: '0' 162 | type: float 163 | vlen: '1' 164 | states: 165 | bus_sink: false 166 | bus_source: false 167 | bus_structure: null 168 | coordinate: [620, 439] 169 | rotation: 0 170 | state: true 171 | - name: blocks_add_xx_0 172 | id: blocks_add_xx 173 | parameters: 174 | affinity: '' 175 | alias: '' 176 | comment: '' 177 | maxoutbuf: '0' 178 | minoutbuf: '0' 179 | num_inputs: '2' 180 | type: float 181 | vlen: '1' 182 | states: 183 | bus_sink: false 184 | bus_source: false 185 | bus_structure: null 186 | coordinate: [934, 345] 187 | rotation: 0 188 | state: true 189 | - name: blocks_char_to_float_0 190 | id: blocks_char_to_float 191 | parameters: 192 | affinity: '' 193 | alias: '' 194 | comment: '' 195 | maxoutbuf: '0' 196 | minoutbuf: '0' 197 | scale: '1' 198 | vlen: '1' 199 | states: 200 | bus_sink: false 201 | bus_source: false 202 | bus_structure: null 203 | coordinate: [501, 301] 204 | rotation: 0 205 | state: true 206 | - name: blocks_multiply_xx_0 207 | id: blocks_multiply_xx 208 | parameters: 209 | affinity: '' 210 | alias: '' 211 | comment: '' 212 | maxoutbuf: '0' 213 | minoutbuf: '0' 214 | num_inputs: '2' 215 | type: float 216 | vlen: '1' 217 | states: 218 | bus_sink: false 219 | bus_source: false 220 | bus_structure: null 221 | coordinate: [758, 221] 222 | rotation: 0 223 | state: true 224 | - name: blocks_multiply_xx_0_0 225 | id: blocks_multiply_xx 226 | parameters: 227 | affinity: '' 228 | alias: '' 229 | comment: '' 230 | maxoutbuf: '0' 231 | minoutbuf: '0' 232 | num_inputs: '2' 233 | type: float 234 | vlen: '1' 235 | states: 236 | bus_sink: false 237 | bus_source: false 238 | bus_structure: null 239 | coordinate: [764, 449] 240 | rotation: 0 241 | state: true 242 | - name: blocks_repeat_0 243 | id: blocks_repeat 244 | parameters: 245 | affinity: '' 246 | alias: '' 247 | comment: '' 248 | interp: '100' 249 | maxoutbuf: '0' 250 | minoutbuf: '0' 251 | type: byte 252 | vlen: '1' 253 | states: 254 | bus_sink: false 255 | bus_source: false 256 | bus_structure: null 257 | coordinate: [177, 301] 258 | rotation: 0 259 | state: true 260 | - name: blocks_throttle_0 261 | id: blocks_throttle 262 | parameters: 263 | affinity: '' 264 | alias: '' 265 | comment: '' 266 | ignoretag: 'True' 267 | maxoutbuf: '0' 268 | minoutbuf: '0' 269 | samples_per_second: samp_rate 270 | type: byte 271 | vlen: '1' 272 | states: 273 | bus_sink: false 274 | bus_source: false 275 | bus_structure: null 276 | coordinate: [335, 301] 277 | rotation: 0 278 | state: true 279 | - name: qtgui_freq_sink_x_0 280 | id: qtgui_freq_sink_x 281 | parameters: 282 | affinity: '' 283 | alias: '' 284 | alpha1: '1.0' 285 | alpha10: '1.0' 286 | alpha2: '1.0' 287 | alpha3: '1.0' 288 | alpha4: '1.0' 289 | alpha5: '1.0' 290 | alpha6: '1.0' 291 | alpha7: '1.0' 292 | alpha8: '1.0' 293 | alpha9: '1.0' 294 | autoscale: 'True' 295 | average: '1.0' 296 | axislabels: 'True' 297 | bw: samp_rate 298 | color1: '"blue"' 299 | color10: '"dark blue"' 300 | color2: '"red"' 301 | color3: '"green"' 302 | color4: '"black"' 303 | color5: '"cyan"' 304 | color6: '"magenta"' 305 | color7: '"yellow"' 306 | color8: '"dark red"' 307 | color9: '"dark green"' 308 | comment: '' 309 | ctrlpanel: 'False' 310 | fc: '0' 311 | fftsize: '1024' 312 | freqhalf: 'True' 313 | grid: 'False' 314 | gui_hint: '' 315 | label: Relative Gain 316 | label1: '' 317 | label10: '''''' 318 | label2: '''''' 319 | label3: '''''' 320 | label4: '''''' 321 | label5: '''''' 322 | label6: '''''' 323 | label7: '''''' 324 | label8: '''''' 325 | label9: '''''' 326 | legend: 'True' 327 | maxoutbuf: '0' 328 | minoutbuf: '0' 329 | name: '""' 330 | nconnections: '1' 331 | showports: 'False' 332 | tr_chan: '0' 333 | tr_level: '0.0' 334 | tr_mode: qtgui.TRIG_MODE_FREE 335 | tr_tag: '""' 336 | type: float 337 | units: dB 338 | update_time: '0.10' 339 | width1: '1' 340 | width10: '1' 341 | width2: '1' 342 | width3: '1' 343 | width4: '1' 344 | width5: '1' 345 | width6: '1' 346 | width7: '1' 347 | width8: '1' 348 | width9: '1' 349 | wintype: firdes.WIN_BLACKMAN_hARRIS 350 | ymax: '10' 351 | ymin: '-140' 352 | states: 353 | bus_sink: false 354 | bus_source: false 355 | bus_structure: null 356 | coordinate: [1081, 288] 357 | rotation: 0 358 | state: true 359 | - name: qtgui_time_sink_x_0 360 | id: qtgui_time_sink_x 361 | parameters: 362 | affinity: '' 363 | alias: '' 364 | alpha1: '1.0' 365 | alpha10: '1.0' 366 | alpha2: '1.0' 367 | alpha3: '1.0' 368 | alpha4: '1.0' 369 | alpha5: '1.0' 370 | alpha6: '1.0' 371 | alpha7: '1.0' 372 | alpha8: '1.0' 373 | alpha9: '1.0' 374 | autoscale: 'True' 375 | axislabels: 'True' 376 | color1: blue 377 | color10: dark blue 378 | color2: red 379 | color3: green 380 | color4: black 381 | color5: cyan 382 | color6: magenta 383 | color7: yellow 384 | color8: dark red 385 | color9: dark green 386 | comment: '' 387 | ctrlpanel: 'False' 388 | entags: 'True' 389 | grid: 'False' 390 | gui_hint: '' 391 | label1: bpsk 392 | label10: Signal 10 393 | label2: symbol 394 | label3: Signal 3 395 | label4: Signal 4 396 | label5: Signal 5 397 | label6: Signal 6 398 | label7: Signal 7 399 | label8: Signal 8 400 | label9: Signal 9 401 | legend: 'True' 402 | marker1: '-1' 403 | marker10: '-1' 404 | marker2: '-1' 405 | marker3: '-1' 406 | marker4: '-1' 407 | marker5: '-1' 408 | marker6: '-1' 409 | marker7: '-1' 410 | marker8: '-1' 411 | marker9: '-1' 412 | name: '""' 413 | nconnections: '2' 414 | size: '1024' 415 | srate: samp_rate 416 | stemplot: 'False' 417 | style1: '1' 418 | style10: '1' 419 | style2: '1' 420 | style3: '1' 421 | style4: '1' 422 | style5: '1' 423 | style6: '1' 424 | style7: '1' 425 | style8: '1' 426 | style9: '1' 427 | tr_chan: '0' 428 | tr_delay: '0' 429 | tr_level: '0.0' 430 | tr_mode: qtgui.TRIG_MODE_FREE 431 | tr_slope: qtgui.TRIG_SLOPE_POS 432 | tr_tag: '""' 433 | type: float 434 | update_time: '0.10' 435 | width1: '1' 436 | width10: '1' 437 | width2: '1' 438 | width3: '1' 439 | width4: '1' 440 | width5: '1' 441 | width6: '1' 442 | width7: '1' 443 | width8: '1' 444 | width9: '1' 445 | ylabel: Amplitude 446 | ymax: '1' 447 | ymin: '-1' 448 | yunit: '""' 449 | states: 450 | bus_sink: false 451 | bus_source: false 452 | bus_structure: null 453 | coordinate: [1079, 402] 454 | rotation: 0 455 | state: true 456 | 457 | connections: 458 | - [analog_random_source_x_0, '0', blocks_repeat_0, '0'] 459 | - [analog_sig_source_x_0, '0', blocks_multiply_xx_0, '0'] 460 | - [analog_sig_source_x_0_0, '0', blocks_multiply_xx_0_0, '1'] 461 | - [blocks_add_const_vxx_0, '0', blocks_multiply_xx_0_0, '0'] 462 | - [blocks_add_xx_0, '0', qtgui_freq_sink_x_0, '0'] 463 | - [blocks_add_xx_0, '0', qtgui_time_sink_x_0, '0'] 464 | - [blocks_char_to_float_0, '0', blocks_add_const_vxx_0, '0'] 465 | - [blocks_char_to_float_0, '0', blocks_multiply_xx_0, '1'] 466 | - [blocks_char_to_float_0, '0', qtgui_time_sink_x_0, '1'] 467 | - [blocks_multiply_xx_0, '0', blocks_add_xx_0, '0'] 468 | - [blocks_multiply_xx_0_0, '0', blocks_add_xx_0, '1'] 469 | - [blocks_repeat_0, '0', blocks_throttle_0, '0'] 470 | - [blocks_throttle_0, '0', blocks_char_to_float_0, '0'] 471 | 472 | metadata: 473 | file_format: 1 474 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # gnu-radio-demo 2 | some gnu radio demo for antsdr 3 | --------------------------------------------------------------------------------