Martin,

Bingo! That worked.

Can you put those two numbers, 4 and 8 into words. I'm still having a heck
of a time understanding what is going on with this block.

v/r,
Rich

On Wed, Mar 18, 2015 at 9:54 AM, Martin Braun <martin.br...@ettus.com>
wrote:

> On 17.03.2015 14:46, Richard Bell wrote:
>
>> Each byte going into the HPD is an unpacked byte. There is only 1 bit
>> represented per byte. Receiving the full payload of 1024 bits requires
>> 1024 bytes of input. What does this imply for the HPD parameters?
>>
>> By setting it up with
>> header_length = 1 (symbol)
>> items per symbol = 32 (the header length)
>>
>
> Try this:
>
> Make the header_length 4 and items per symbol 8. Then, the message from
> the parser will match the number of items.
>
> "Items per symbol" is something that would be mainly useful for non-atomic
> modulations, such as OFDM. It might do the trick here, too.
>
> M
>
>
>
>> It produces the correct number of samples at the header output. Is it
>> possible for this to be working if the parameters were not set
>> correctly? I'm so confused.
>>
>> Yes I've spit the messages out with a message debug port. The packet
>> length it reads is 128.
>>
>> On Tue, Mar 17, 2015 at 2:21 PM, Martin Braun <martin.br...@ettus.com
>> <mailto:martin.br...@ettus.com>> wrote:
>>
>>     On 17.03.2015 14:14, Richard Bell wrote:
>>
>>         Martin,
>>
>>         Thanks for your detailed response. I need some clarification on
>>         a few
>>         points. I also need to clarify something.
>>
>>         I am using the HPD on demodulated detected data. There are no
>>         floats at
>>         this point. Everything is binary. The data type of all blocks is
>>         byte.
>>
>>
>>     My bad,
>>
>>     my mind colour-mapped the type wrongly to floats.
>>
>>         I am adding artificial zeros in myself, after I form the packets,
>> to
>>         simulate a burst transmission. I send a packet, dead time (0's),
>>         I send
>>         another packet, so on. That is the source of the zeros coming
>>         out of the
>>         payload port.
>>
>>         OK, with that in mind, if my packet is setup accordingly:
>>
>>         packet_structure: [32 bit header | 128 byte = 1024 bit payload]
>>
>>         what are you calling an item here?
>>
>>
>>     'Item' is GNU Radio nomenclature here. In your case, one item is one
>>     byte from the input buffer.
>>
>>     Question is, how many bits are in one byte in your input buffer? Is
>>     your 1024 bit payload really 128 bytes long on the input buffer?
>>
>>     Also, have you used the message debug block to see what your parser
>>     returns?
>>
>>     M
>>
>>         I am looking for the unit tests your mentioned. I was not aware
>>         of them.
>>
>>         v/r,
>>         Rich
>>
>>         On Tue, Mar 17, 2015 at 1:52 PM, Martin Braun
>>         <martin.br...@ettus.com <mailto:martin.br...@ettus.com>
>>         <mailto:martin.br...@ettus.com
>>
>>         <mailto:martin.br...@ettus.com>__>> wrote:
>>
>>              On 17.03.2015 11:48, Richard Bell wrote:
>>
>>                    [...]
>>                  My issue might stem from a misunderstanding of the HPD
>>                  parameters. This
>>                  block seems to have been written for OFDM, but I'm
>>         using it for
>>                  single
>>                  carrier QPSK. If someone wouldn't mind looking over my
>>                  parameters with
>>                  singe carrier in mind to confirm I've set it up
>>         correct, I would be
>>                  grateful. My header is 32 bits long and the payload is
>>         160 bytes
>>                  or 1280
>>                  bits long. The documentation for this block is not very
>>         clear on
>>                  how the
>>                  parameters relate to the system.
>>
>>
>>              Richard,
>>
>>              the block has some added features to handle OFDM, but it
>> wasn't
>>              written specifically for it. If you haven't read the unit
>>         tests for
>>              this code, you should definitely go there for some input.
>>              (The reason OFDM was considered as a special case is
>>         because this
>>              makes a CP remover block unnecessary, but that's another
>>         story).
>>
>>                  The output of the header port is perfect. It is the
>>         exactly what I
>>                  expect. I'm showing 3 headers worth of samples in the
>>         sink plot,
>>                  and we
>>                  see exactly 3 headers with tags on the first sample of
>> each
>>                  header. In
>>                  the payload length portion of the header, the value 160
>>         exists
>>                  for the
>>                  payload length. My second question is, when generating
>> the
>>                  header using
>>                  packet_header_default, is the payload represented in
>>         bytes or bits?
>>
>>
>>              Whatever your payload parser generates should be the number
>> of
>>              *items* read through the HPD. What are bits, bytes? The HPD
>>         doesn't
>>              know any of this. It can only relate to the item size
>>         you've given it.
>>
>>                  Now if you look at the payload out sink plot, you will
>>         see payloads
>>                  separated by zeros. Each payload portion (the non-zero
>>         portion)
>>                  is the
>>                  exact length as my payload should be, 160 bytes or 1280
>>         bits.
>>                  But you
>>                  can see zeros are allowed through after the 1280th bit
>>         and a second
>>                  payload shows up without a tag. This leads me to
>>         believe the HPD
>>                  block
>>                  is interpreting the payload length to be 4 times larger
>>         then I
>>                  intend it
>>                  to be. What parameters am I mixing up to create this?
>>
>>
>>              Yeah, I can see how that's happening. Your payload is being
>>              (probably correctly) interpreted as 160 bytes, then the HPD
>>         is given
>>              the number 160 as a payload length. However, the HPD needs
>>         to know
>>              the number of *items* per payload. 4 == sizeof(float),
>>         which you are
>>              using.
>>
>>              The reason the OFDM code has no issues here is because it
>>         uses its
>>              own packet header parser, which returns the number of OFDM
>>         symbols.
>>              That really was the intention of the packet header parser
>>         architecture.
>>
>>              Now, how come the packet header parser is reporting 160? Is
>>         that
>>              actually correct? It seems that if your payload is 40
>>         floats, 160
>>              bytes seems a lot. You'd be storing 4 bytes per float, when
>>              typically, you have 1 or 2 bits.
>>
>>              However, as a quick hack, edit the packet_header_default to
>>         add a
>>              scaling factor (or just divide by 4 before sending the
>>         packet). That
>>              should fix it temporarily. A more long-term solution would
>>         be to add
>>              a scaling factor to the packet_header_default for these
>>         cases --
>>              maybe you want to write and upstream this?
>>
>>                  I've played with the ofdm_tx/rx.grc example and
>>         confirmed that
>>                  it will
>>                  keep the zeros from showing up at the payload out port.
>>         This
>>                  confirms my
>>                  misuse of the block. The hard part is porting the OFDM
>>         example
>>                  parameters to a single carrier use. Am I correct in
>> setting
>>                  symbol to 1
>>                  since there are no OFDM symbols?
>>
>>
>>              Here's what should work:
>>
>>              header length: Whatever you have now
>>              items per symbol:
>>              gi: 0
>>              output format: items
>>
>>              Now make sure the header_parser tells the HPD the number of
>>         floats
>>              it needs to consume per payload.
>>
>>              The value reported by the payload is the same unit as the
>>         header length.
>>
>>              M
>>
>>              PS: The reason you see zeros between packets is because the
>>              ringbuffers get initialized with zeros to start with.
>>         Eventually,
>>              you might see residue from other packets.
>>
>>              ___________________________________________________
>>              Discuss-gnuradio mailing list
>>         Discuss-gnuradio@gnu.org <mailto:Discuss-gnuradio@gnu.org>
>>         <mailto:Discuss-gnuradio@gnu.__org
>>         <mailto:Discuss-gnuradio@gnu.org>>
>>         https://lists.gnu.org/mailman/____listinfo/discuss-gnuradio
>>         <https://lists.gnu.org/mailman/__listinfo/discuss-gnuradio>
>>
>>         <https://lists.gnu.org/__mailman/listinfo/discuss-__gnuradio
>>         <https://lists.gnu.org/mailman/listinfo/discuss-gnuradio>>
>>
>>
>>
>>
>>
>
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
https://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to