It bothered me that the random source wasn't working. So I took at it again last night and discovered I needed to unpack a bit from the random source stream.
Using the random source, the following work: BPSK QPSK 8PSK 16QAM using the pull down menu. There is, however, one caveat: for 8PSK you have to enable the complex Multiply Const by -1 block after the Chunks to Symbols block. Alternatively, you could change Chunks to Symbols from -1,1 to 1,-1 - but that's many more key strokes then just enabling and disabling the Multiply Const block. They all work with the GLFSR source too and with the same caveat. And you were right you don't need the PSK symbol table - you can use Chunks to Symbols -1,1 (except for 8PKS.) Also, I had to add a unpack k=1 block after the decoder - otherwise for DPSK, 8PSK and 16QAM there was a vertical offset and BER sky rockets. The unpack k=1 is not needed for BPSK and QPSK - but it doesn't create any problems so I left it enabled. You just need to add the complex noise source Have fun with QT. Actually, there is already a QT menu - the properties of Constellation Object. You might want to look at the source - just figure what you need to do to keep it open. -- Cinaed
<?xml version='1.0' encoding='utf-8'?> <?grc format='1' created='3.7.13'?> <flow_graph> <timestamp>Wed Jan 23 13:59:42 2019</timestamp> <block> <key>options</key> <param> <key>author</key> <value></value> </param> <param> <key>window_size</key> <value></value> </param> <param> <key>category</key> <value>[GRC Hier Blocks]</value> </param> <param> <key>comment</key> <value></value> </param> <param> <key>description</key> <value></value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> <key>_coordinate</key> <value>(8, 8)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> <param> <key>generate_options</key> <value>qt_gui</value> </param> <param> <key>hier_block_src_path</key> <value>.:</value> </param> <param> <key>id</key> <value>top_block</value> </param> <param> <key>max_nouts</key> <value>0</value> </param> <param> <key>qt_qss_theme</key> <value></value> </param> <param> <key>realtime_scheduling</key> <value></value> </param> <param> <key>run_command</key> <value>{python} -u {filename}</value> </param> <param> <key>run_options</key> <value>prompt</value> </param> <param> <key>run</key> <value>True</value> </param> <param> <key>sizing_mode</key> <value>fixed</value> </param> <param> <key>thread_safe_setters</key> <value></value> </param> <param> <key>title</key> <value></value> </param> <param> <key>placement</key> <value>(0,0)</value> </param> </block> <block> <key>variable_constellation</key> <param> <key>comment</key> <value></value> </param> <param> <key>const_points</key> <value>digital.psk_2()[0]</value> </param> <param> <key>type</key> <value>16qam</value> </param> <param> <key>dims</key> <value>digital.bpsk_constellation().dimensionality()</value> </param> <param> <key>_enabled</key> <value>1</value> </param> <param> <key>_coordinate</key> <value>(16, 492)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> <param> <key>id</key> <value>constel</value> </param> <param> <key>rot_sym</key> <value>digital.bpsk_constellation().rotational_symmetry()</value> </param> <param> <key>soft_dec_lut</key> <value>'auto'</value> </param> <param> <key>precision</key> <value>0</value> </param> <param> <key>sym_map</key> <value>digital.psk_2()[1]</value> </param> </block> <block> <key>variable</key> <param> <key>comment</key> <value></value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> <key>_coordinate</key> <value>(16, 76)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> <param> <key>id</key> <value>samp_rate</value> </param> <param> <key>value</key> <value>32000</value> </param> </block> <block> <key>analog_random_source_x</key> <param> <key>alias</key> <value></value> </param> <param> <key>comment</key> <value></value> </param> <param> <key>affinity</key> <value></value> </param> <param> <key>_enabled</key> <value>1</value> </param> <param> <key>_coordinate</key> <value>(184, 40)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> <param> <key>id</key> <value>analog_random_source_x_0</value> </param> <param> <key>maxoutbuf</key> <value>0</value> </param> <param> <key>max</key> <value>255</value> </param> <param> <key>minoutbuf</key> <value>0</value> </param> <param> <key>min</key> <value>0</value> </param> <param> <key>num_samps</key> <value>1000</value> </param> <param> <key>type</key> <value>byte</value> </param> <param> <key>repeat</key> <value>True</value> </param> </block> <block> <key>blocks_char_to_float</key> <param> <key>alias</key> <value></value> </param> <param> <key>comment</key> <value></value> </param> <param> <key>affinity</key> <value></value> </param> <param> <key>_enabled</key> <value>1</value> </param> <param> <key>_coordinate</key> <value>(488, 524)</value> </param> <param> <key>_rotation</key> <value>180</value> </param> <param> <key>id</key> <value>blocks_char_to_float_0</value> </param> <param> <key>maxoutbuf</key> <value>0</value> </param> <param> <key>minoutbuf</key> <value>0</value> </param> <param> <key>scale</key> <value>1</value> </param> <param> <key>vlen</key> <value>1</value> </param> </block> <block> <key>blocks_char_to_float</key> <param> <key>alias</key> <value></value> </param> <param> <key>comment</key> <value></value> </param> <param> <key>affinity</key> <value></value> </param> <param> <key>_enabled</key> <value>1</value> </param> <param> <key>_coordinate</key> <value>(536, 372)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> <param> <key>id</key> <value>blocks_char_to_float_1</value> </param> <param> <key>maxoutbuf</key> <value>0</value> </param> <param> <key>minoutbuf</key> <value>0</value> </param> <param> <key>scale</key> <value>1</value> </param> <param> <key>vlen</key> <value>1</value> </param> </block> <block> <key>blocks_multiply_const_vxx</key> <param> <key>alias</key> <value></value> </param> <param> <key>comment</key> <value>Enable Multiply Const block for 8PSK only. Otherwise, set Multiply Const block to Bypass.</value> </param> <param> <key>const</key> <value>-1</value> </param> <param> <key>affinity</key> <value></value> </param> <param> <key>_enabled</key> <value>2</value> </param> <param> <key>_coordinate</key> <value>(192, 388)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> <param> <key>id</key> <value>blocks_multiply_const_vxx_0</value> </param> <param> <key>type</key> <value>complex</value> </param> <param> <key>maxoutbuf</key> <value>0</value> </param> <param> <key>minoutbuf</key> <value>0</value> </param> <param> <key>vlen</key> <value>1</value> </param> </block> <block> <key>blocks_throttle</key> <param> <key>alias</key> <value></value> </param> <param> <key>comment</key> <value></value> </param> <param> <key>affinity</key> <value></value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> <key>_coordinate</key> <value>(272, 188)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> <param> <key>id</key> <value>blocks_throttle_0</value> </param> <param> <key>ignoretag</key> <value>True</value> </param> <param> <key>maxoutbuf</key> <value>0</value> </param> <param> <key>minoutbuf</key> <value>0</value> </param> <param> <key>samples_per_second</key> <value>samp_rate</value> </param> <param> <key>type</key> <value>byte</value> </param> <param> <key>vlen</key> <value>1</value> </param> </block> <block> <key>blocks_unpack_k_bits_bb</key> <param> <key>alias</key> <value></value> </param> <param> <key>comment</key> <value></value> </param> <param> <key>affinity</key> <value></value> </param> <param> <key>_enabled</key> <value>1</value> </param> <param> <key>_coordinate</key> <value>(488, 308)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> <param> <key>id</key> <value>blocks_unpack_k_bits_bb_0</value> </param> <param> <key>k</key> <value>1</value> </param> <param> <key>maxoutbuf</key> <value>0</value> </param> <param> <key>minoutbuf</key> <value>0</value> </param> </block> <block> <key>blocks_unpack_k_bits_bb</key> <param> <key>alias</key> <value></value> </param> <param> <key>comment</key> <value></value> </param> <param> <key>affinity</key> <value></value> </param> <param> <key>_enabled</key> <value>1</value> </param> <param> <key>_coordinate</key> <value>(112, 188)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> <param> <key>id</key> <value>blocks_unpack_k_bits_bb_0_0</value> </param> <param> <key>k</key> <value>1</value> </param> <param> <key>maxoutbuf</key> <value>0</value> </param> <param> <key>minoutbuf</key> <value>0</value> </param> </block> <block> <key>digital_chunks_to_symbols_xx</key> <param> <key>alias</key> <value></value> </param> <param> <key>comment</key> <value></value> </param> <param> <key>affinity</key> <value></value> </param> <param> <key>dimension</key> <value>1</value> </param> <param> <key>_enabled</key> <value>1</value> </param> <param> <key>_coordinate</key> <value>(48, 300)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> <param> <key>id</key> <value>digital_chunks_to_symbols_xx_0</value> </param> <param> <key>in_type</key> <value>byte</value> </param> <param> <key>maxoutbuf</key> <value>0</value> </param> <param> <key>minoutbuf</key> <value>0</value> </param> <param> <key>num_ports</key> <value>1</value> </param> <param> <key>out_type</key> <value>complex</value> </param> <param> <key>symbol_table</key> <value>-1,1</value> </param> </block> <block> <key>digital_constellation_decoder_cb</key> <param> <key>alias</key> <value></value> </param> <param> <key>comment</key> <value></value> </param> <param> <key>constellation</key> <value>constel</value> </param> <param> <key>affinity</key> <value></value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> <key>_coordinate</key> <value>(256, 308)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> <param> <key>id</key> <value>digital_constellation_decoder_cb_0</value> </param> <param> <key>maxoutbuf</key> <value>0</value> </param> <param> <key>minoutbuf</key> <value>0</value> </param> </block> <block> <key>fec_ber_bf</key> <param> <key>berlimit</key> <value>-7.0</value> </param> <param> <key>berminerrors</key> <value>100</value> </param> <param> <key>alias</key> <value></value> </param> <param> <key>comment</key> <value></value> </param> <param> <key>affinity</key> <value></value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> <key>_coordinate</key> <value>(504, 192)</value> </param> <param> <key>_rotation</key> <value>0</value> </param> <param> <key>id</key> <value>fec_ber_bf_0</value> </param> <param> <key>maxoutbuf</key> <value>0</value> </param> <param> <key>minoutbuf</key> <value>0</value> </param> <param> <key>test_mode</key> <value>False</value> </param> </block> <block> <key>qtgui_number_sink</key> <param> <key>autoscale</key> <value>True</value> </param> <param> <key>avg</key> <value>0</value> </param> <param> <key>alias</key> <value></value> </param> <param> <key>comment</key> <value></value> </param> <param> <key>affinity</key> <value></value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> <key>_coordinate</key> <value>(464, 68)</value> </param> <param> <key>gui_hint</key> <value>1,0,1,1</value> </param> <param> <key>_rotation</key> <value>180</value> </param> <param> <key>graph_type</key> <value>qtgui.NUM_GRAPH_NONE</value> </param> <param> <key>id</key> <value>qtgui_number_sink_0</value> </param> <param> <key>type</key> <value>float</value> </param> <param> <key>color1</key> <value>("black", "black")</value> </param> <param> <key>factor1</key> <value>1e6</value> </param> <param> <key>label1</key> <value>BER</value> </param> <param> <key>unit1</key> <value>x10^-6</value> </param> <param> <key>color10</key> <value>("black", "black")</value> </param> <param> <key>factor10</key> <value>1</value> </param> <param> <key>label10</key> <value></value> </param> <param> <key>unit10</key> <value></value> </param> <param> <key>color2</key> <value>("black", "black")</value> </param> <param> <key>factor2</key> <value>1</value> </param> <param> <key>label2</key> <value></value> </param> <param> <key>unit2</key> <value></value> </param> <param> <key>color3</key> <value>("black", "black")</value> </param> <param> <key>factor3</key> <value>1</value> </param> <param> <key>label3</key> <value></value> </param> <param> <key>unit3</key> <value></value> </param> <param> <key>color4</key> <value>("black", "black")</value> </param> <param> <key>factor4</key> <value>1</value> </param> <param> <key>label4</key> <value></value> </param> <param> <key>unit4</key> <value></value> </param> <param> <key>color5</key> <value>("black", "black")</value> </param> <param> <key>factor5</key> <value>1</value> </param> <param> <key>label5</key> <value></value> </param> <param> <key>unit5</key> <value></value> </param> <param> <key>color6</key> <value>("black", "black")</value> </param> <param> <key>factor6</key> <value>1</value> </param> <param> <key>label6</key> <value></value> </param> <param> <key>unit6</key> <value></value> </param> <param> <key>color7</key> <value>("black", "black")</value> </param> <param> <key>factor7</key> <value>1</value> </param> <param> <key>label7</key> <value></value> </param> <param> <key>unit7</key> <value></value> </param> <param> <key>color8</key> <value>("black", "black")</value> </param> <param> <key>factor8</key> <value>1</value> </param> <param> <key>label8</key> <value></value> </param> <param> <key>unit8</key> <value></value> </param> <param> <key>color9</key> <value>("black", "black")</value> </param> <param> <key>factor9</key> <value>1</value> </param> <param> <key>label9</key> <value></value> </param> <param> <key>unit9</key> <value></value> </param> <param> <key>max</key> <value>2</value> </param> <param> <key>min</key> <value>0</value> </param> <param> <key>name</key> <value>""</value> </param> <param> <key>nconnections</key> <value>1</value> </param> <param> <key>update_time</key> <value>0.10</value> </param> </block> <block> <key>qtgui_time_sink_x</key> <param> <key>autoscale</key> <value>False</value> </param> <param> <key>axislabels</key> <value>True</value> </param> <param> <key>alias</key> <value></value> </param> <param> <key>comment</key> <value></value> </param> <param> <key>ctrlpanel</key> <value>False</value> </param> <param> <key>affinity</key> <value></value> </param> <param> <key>entags</key> <value>True</value> </param> <param> <key>_enabled</key> <value>True</value> </param> <param> <key>_coordinate</key> <value>(280, 492)</value> </param> <param> <key>gui_hint</key> <value></value> </param> <param> <key>_rotation</key> <value>180</value> </param> <param> <key>grid</key> <value>False</value> </param> <param> <key>id</key> <value>qtgui_time_sink_x_0</value> </param> <param> <key>legend</key> <value>True</value> </param> <param> <key>alpha1</key> <value>1.0</value> </param> <param> <key>color1</key> <value>"blue"</value> </param> <param> <key>label1</key> <value>demod random</value> </param> <param> <key>marker1</key> <value>-1</value> </param> <param> <key>style1</key> <value>1</value> </param> <param> <key>width1</key> <value>1</value> </param> <param> <key>alpha10</key> <value>1.0</value> </param> <param> <key>color10</key> <value>"blue"</value> </param> <param> <key>label10</key> <value></value> </param> <param> <key>marker10</key> <value>-1</value> </param> <param> <key>style10</key> <value>1</value> </param> <param> <key>width10</key> <value>1</value> </param> <param> <key>alpha2</key> <value>1.0</value> </param> <param> <key>color2</key> <value>"red"</value> </param> <param> <key>label2</key> <value>random</value> </param> <param> <key>marker2</key> <value>-1</value> </param> <param> <key>style2</key> <value>1</value> </param> <param> <key>width2</key> <value>1</value> </param> <param> <key>alpha3</key> <value>1.0</value> </param> <param> <key>color3</key> <value>"green"</value> </param> <param> <key>label3</key> <value></value> </param> <param> <key>marker3</key> <value>-1</value> </param> <param> <key>style3</key> <value>1</value> </param> <param> <key>width3</key> <value>1</value> </param> <param> <key>alpha4</key> <value>1.0</value> </param> <param> <key>color4</key> <value>"black"</value> </param> <param> <key>label4</key> <value></value> </param> <param> <key>marker4</key> <value>-1</value> </param> <param> <key>style4</key> <value>1</value> </param> <param> <key>width4</key> <value>1</value> </param> <param> <key>alpha5</key> <value>1.0</value> </param> <param> <key>color5</key> <value>"cyan"</value> </param> <param> <key>label5</key> <value></value> </param> <param> <key>marker5</key> <value>-1</value> </param> <param> <key>style5</key> <value>1</value> </param> <param> <key>width5</key> <value>1</value> </param> <param> <key>alpha6</key> <value>1.0</value> </param> <param> <key>color6</key> <value>"magenta"</value> </param> <param> <key>label6</key> <value></value> </param> <param> <key>marker6</key> <value>-1</value> </param> <param> <key>style6</key> <value>1</value> </param> <param> <key>width6</key> <value>1</value> </param> <param> <key>alpha7</key> <value>1.0</value> </param> <param> <key>color7</key> <value>"yellow"</value> </param> <param> <key>label7</key> <value></value> </param> <param> <key>marker7</key> <value>-1</value> </param> <param> <key>style7</key> <value>1</value> </param> <param> <key>width7</key> <value>1</value> </param> <param> <key>alpha8</key> <value>1.0</value> </param> <param> <key>color8</key> <value>"dark red"</value> </param> <param> <key>label8</key> <value></value> </param> <param> <key>marker8</key> <value>-1</value> </param> <param> <key>style8</key> <value>1</value> </param> <param> <key>width8</key> <value>1</value> </param> <param> <key>alpha9</key> <value>1.0</value> </param> <param> <key>color9</key> <value>"dark green"</value> </param> <param> <key>label9</key> <value></value> </param> <param> <key>marker9</key> <value>-1</value> </param> <param> <key>style9</key> <value>1</value> </param> <param> <key>width9</key> <value>1</value> </param> <param> <key>name</key> <value>""</value> </param> <param> <key>nconnections</key> <value>2</value> </param> <param> <key>size</key> <value>250</value> </param> <param> <key>srate</key> <value>samp_rate</value> </param> <param> <key>stemplot</key> <value>False</value> </param> <param> <key>tr_chan</key> <value>0</value> </param> <param> <key>tr_delay</key> <value>0</value> </param> <param> <key>tr_level</key> <value>0.0</value> </param> <param> <key>tr_mode</key> <value>qtgui.TRIG_MODE_FREE</value> </param> <param> <key>tr_slope</key> <value>qtgui.TRIG_SLOPE_POS</value> </param> <param> <key>tr_tag</key> <value>""</value> </param> <param> <key>type</key> <value>float</value> </param> <param> <key>update_time</key> <value>0.10</value> </param> <param> <key>ylabel</key> <value>Amplitude</value> </param> <param> <key>yunit</key> <value>""</value> </param> <param> <key>ymax</key> <value>6</value> </param> <param> <key>ymin</key> <value>-1</value> </param> </block> <connection> <source_block_id>analog_random_source_x_0</source_block_id> <sink_block_id>blocks_unpack_k_bits_bb_0_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> <source_block_id>blocks_char_to_float_0</source_block_id> <sink_block_id>qtgui_time_sink_x_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> <source_block_id>blocks_char_to_float_1</source_block_id> <sink_block_id>qtgui_time_sink_x_0</sink_block_id> <source_key>0</source_key> <sink_key>1</sink_key> </connection> <connection> <source_block_id>blocks_multiply_const_vxx_0</source_block_id> <sink_block_id>digital_constellation_decoder_cb_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> <source_block_id>blocks_throttle_0</source_block_id> <sink_block_id>blocks_char_to_float_1</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> <source_block_id>blocks_throttle_0</source_block_id> <sink_block_id>digital_chunks_to_symbols_xx_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> <source_block_id>blocks_throttle_0</source_block_id> <sink_block_id>fec_ber_bf_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> <source_block_id>blocks_unpack_k_bits_bb_0</source_block_id> <sink_block_id>blocks_char_to_float_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> <source_block_id>blocks_unpack_k_bits_bb_0</source_block_id> <sink_block_id>fec_ber_bf_0</sink_block_id> <source_key>0</source_key> <sink_key>1</sink_key> </connection> <connection> <source_block_id>blocks_unpack_k_bits_bb_0_0</source_block_id> <sink_block_id>blocks_throttle_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> <source_block_id>digital_chunks_to_symbols_xx_0</source_block_id> <sink_block_id>blocks_multiply_const_vxx_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> <source_block_id>digital_constellation_decoder_cb_0</source_block_id> <sink_block_id>blocks_unpack_k_bits_bb_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> <connection> <source_block_id>fec_ber_bf_0</source_block_id> <sink_block_id>qtgui_number_sink_0</sink_block_id> <source_key>0</source_key> <sink_key>0</sink_key> </connection> </flow_graph>
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio