- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
I have reading a lot of posts that they are talking about shift registers, but always they are refered to a fix data, not to PRBS. What I would like to get is from a PRBS generator (can be the qsys block or created in quartus), delay one bit the PRBS sequence and after that add the two sequences (PRBS + PRBS shifted). As an example, if the original sequence is 1010, I would shift one bit right: 0101 and finally I would sum both sequences (1010 + 0101). Is it possible to do this for a PRBS code? I have though in some options, but I don't know if they will work or if there is a faster option: 1. Store the original PRBS in a RAM and then work from there. 2. Connect the PRBS generator to a shift register (Megawizard). Any help will be appreciate it. Thanks!!!Link Copied
9 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
--- Quote Start --- Hello, I have reading a lot of posts that they are talking about shift registers, but always they are refered to a fix data, not to PRBS. What I would like to get is from a PRBS generator (can be the qsys block or created in quartus), delay one bit the PRBS sequence and after that add the two sequences (PRBS + PRBS shifted). As an example, if the original sequence is 1010, I would shift one bit right: 0101 and finally I would sum both sequences (1010 + 0101). Is it possible to do this for a PRBS code? I have though in some options, but I don't know if they will work or if there is a faster option: 1. Store the original PRBS in a RAM and then work from there. 2. Connect the PRBS generator to a shift register (Megawizard). Any help will be appreciate it. Thanks!!! --- Quote End --- if I understood you:
--clocked process
if reset then
shift1 <= "1010";
elsif rising_edge(clk) then
shift1 <= shift1(0) & shift(3 downto 1);
shift1_d <= shift1;
result <= std_logic_vector(signed(shift1) + signed(shift1_d));
end if;
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
That was an example with a fix data, but my real data come from a PRBS sequence, that means a random sequence that comes from an alghoritm: This is my problem... Any idea???
By the way, thank you very much for your quick answer ;)- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It can come from anywhere. same applies.
get your prbs data then assign it to shift1 per update (instead of reset) and go from there. The update needs to be slower if you want to shift shift1 all around.- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Read this tutorial on LFSRs and PRBSs
http://www.ovro.caltech.edu/~dwh/correlator/pdf/lfsr_tutorial.pdf http://www.ovro.caltech.edu/~dwh/correlator/pdf/lfsr_tutorial_src.zip and use the code. I'm not sure why you would want to shift-and-add PRBS sequences. Perhaps you can explain your requirements? Or perhaps after reading this tutorial you will have a better idea of what it is you really want. Cheers, Dave- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you very much for the replies,
I need to do this in order to get duobinary modulations from the signal transmit from transceivers. In this case I would need transmit the sequence achieved after the sum of PRBS sequence + PRBS shifted. Cheers- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
--- Quote Start --- I need to do this in order to get duobinary modulations from the signal transmit from transceivers. In this case I would need transmit the sequence achieved after the sum of PRBS sequence + PRBS shifted. --- Quote End --- Are you using actual *transceivers*? In that case, you cannot perform the shift-and-add in the time domain of the transceiver, you have to perform it in the parallel domain of the FPGA fabric. If you read the tutorial at the link I posted, it shows how to create multiple bits out of a PRBS in one FPGA fabric clock period. You would use that, along with your shift-and-add logic, and then send the result to the transceiver. Cheers, Dave
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Exactly Dave, I am using transceivers! I am reading the tutorial right now.
Thank you for your help! ;)- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
--- Quote Start --- Exactly Dave, I am using transceivers! I am reading the tutorial right now. --- Quote End --- Ok, so am I, but I am using the PRBS to modulate signals across an AC-link. See the details here: http://www.ovro.caltech.edu/~dwh/wbsddc/hittite_adc_hw.pdf --- Quote Start --- Thank you for your help! ;) --- Quote End --- You're welcome. Good luck! Cheers, Dave
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
What PRBS pattern you wish to use?

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page