I am trying to add some functionalities to the existing FPGA in USRP.
I went through the mailing list and figured out that the current
Verilog/VHDL code implementation occupies 90% of FPGA’s resources.
However,
there were some mails that pointed that reducing some reveiver
functionalities could free some FPGA resources.
Any help as to how I can proceed with this i.e. reducing receiver
functionality and freeing up FPGA resources? Also if I should try
implementing some easy additonal functionalities in the FPGA,(so as to
not
damage the USRP board) then which one should I go ahead with?
Are there any C++ blocks that I can try implementing in VHDL/Verilog
code in
FPGA and improve performance?
I would be grateful if some of you could help me / point in the right
directions with the above questions.
There’s a header file:
GNU_Radio\usrp\fpga\toplevel\usrp_std\config.vh
That header controls the build configuration and is now functional.
Modify it to use the file:
GNU_Radio\usrp\fpga\toplevel\include\common_config_1rxhb_1tx.vh
This is how:
// Uncomment this for 1 rx channel (w/ halfband) & 1 transmit channel
`include “…/include/common_config_1rxhb_1tx.vh”
This will free up alot of space on the fpga for experimentation!
Lee Studley
Embedded SW/HW Eng.
Kutta Consulting, Inc.
At 03:02 PM 9/5/2007, S Mande wrote:
functionality and freeing up FPGA resources? Also if I should try
An interesting consequence of doing this is that your TX bandwidth
goes significantly down since you don’t have to pump 16-bit I/Q values
over the bus, just your raw data rate. This allows for a USRP setup
to both TX and RX to have more USB bandwidth dedicated to the real
processing (RX) and not just some LUTS (TX).
Brian
I have been tracking this topic for sometime now. I am working on a
similar
problem.
Something you may want to try to do is focus on the TX side of things.
RX is generally the harder part of radio communications, and probably
wouldn’t work out too well inside of an FPGA that is already pretty
full. TX on the other hand is all just simple permutations, look up
tables, and maybe some filtering to stay within band.
You can probably write a decent M-QAM mapper, convolutional encoder,
interleaver, etc and not have it take up too much room other than some
registers and block rams. If you wanted to get more complex, a GMSK
mapper might also be interesting.
An interesting consequence of doing this is that your TX bandwidth
goes significantly down since you don’t have to pump 16-bit I/Q values
over the bus, just your raw data rate. This allows for a USRP setup
to both TX and RX to have more USB bandwidth dedicated to the real
processing (RX) and not just some LUTS (TX).
Brian
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.