I'm using a PCB that I designed with an ARM chip, codec, and SD card for logging, as my data capture platform. Feeding that is a QSD (Tayloe) front end that I designed, specifically for the 630m ham band, converting down to 1kHz differential I and Q signals to the codec, which has a 105dB SNR. The front end appears to have a 90dB linear dynamic range so far as I can measure with my equipment. I'll improve that if I can. Once I capture to SD, then I can pull the SD and process on the PC to develop weak signal detection.
On Fri, Mar 18, 2022 at 12:12 PM Marcus Müller <mmuel...@gnuradio.org> wrote: > Hey :) > > CSV might or might not be convenient, but if C or assembler is your tool: > The things that > the GNU Radio file source reads or the file sink writes is exactly what > you get when you > take a buffer of samples and do an `fwrite` on that :) Just a dump of the > raw memory to a > file. 32 bit unsigned should be directly digestible by GNU Radio (even if > there were > endianness issues – you can just read as bytes and reshuffle as needed :)). > > I didn't fully get how you're currently interfacing your hardware. Care to > explain in a > bit more breadth? What are the components of your system, and how does the > computer > running GNU Radio relate? > > Best and slightly excited regards, > Marcus > > On 18.03.22 18:37, david vanhorn wrote: > > Hi! > > > > I'm trying to interface some radio hardware I built to GnuRadio by way > of data captured to > > SD cards. > > I have two channels (I and Q) of 32 bit unsigned data internally, and I > originally assumed > > CSV would be the easy path, but now I see it's not. > > Coming in through the PC sound card is not an option for me, I'm using a > particular codec > > selected for the application, and my goal is to develop signal > processing algorithms to > > then be implemented back on my processor in C or ASM. > > > > I suppose it would be easiest if I rework my hardware to log data as if > it were the > > "Signal Source" block with complex output. > > Where can I see what that looks like at the level of raw data? > > > > > > > > > > On Fri, Mar 18, 2022 at 4:59 AM Marcus Müller <mmuel...@gnuradio.org > > <mailto:mmuel...@gnuradio.org>> wrote: > > > > Hi David, > > > > you could write a quick python block that just reads values from the > CSV file and outputs > > them. That'd be a very nice, basic exercise, and I think our freshly > overhauled > > tutorials[1] should bring you there very quickly! > > If you want help with that, hit us up in this mailing list (ideally > after reading the > > tutorials up to the point of roughly understanding how to write > (embedded) Python > > blocks), > > and tell us more about the data in your CSV files. > > > > Alternatively, you could also write a converter of CSV to a format > that GNU Radio by > > itself already has a reader for – and the main candidate here would > probably just be > > plain > > raw data files (as e.g. numpy's `ndarray.tofile("filename")` does) – > the File Source > > could > > directly read that. But with our freshly rewrite Wavfile sink and > source blocks, we can > > write and read most audio files, just as well. > > > > Then your flow graph could do the signal processing you want – e.g > frequency translation, > > low-pass filtering… and finally output it to any device that you > have a GNU Radio > > interface to (e.g., your sound card). The hardware runs at a sample > rate – GNU Radio > > itself just tries to feed it as fast as possible. So, the signal > processing in GNU Radio > > itself isn't concerned with rate at all! > > > > Hope this helps, > > Marcus > > > > [1] https://tutorials.gnuradio.org <https://tutorials.gnuradio.org> > > > > PS: you'll often find me online, recommending not to use CSV as a > sample storage format. > > I'll do the same to you here, but not because I think it's in any > way invalid to have > > data > > in CSV files; I just want to point out it might be worth thinking > about using something > > else. So take this with a "I think it's pretty cool you're doing > this!". > > > > That has the reasons that > > a) unless you're more restricted than "CSV" says, you don't know how > many bits are there > > per sample, as numbers might be represented in different lengths, so > seeking exactly only > > works by reading and understanding the whole file up to the point > you seek to, > > b) conversion of floating point numbers to human-readable form > incurs rounding errors, > > and > > that can really wreck your day if you need to rerun *exactly* the > same experiment twice, > > c) printing numbers as text is really inefficient, both storage-wise > as well as compute > > wise (which will only matter at higher sampling rates) and > sometimes, but only sometimes, > > ( d) people say that CSV is good because it's human-readable, but I > challenge anyone to > > read a text file with only 10000 values and be happier about that > than if he used a tool > > that displayed the values graphically, zoomably, and then allows for > inspection of single > > values once zoomed sufficiently in.) > > > > > > On 18.03.22 04:55, david vanhorn wrote: > > > I've done a little with Gnuradio a couple years ago, but I'd now > like to apply it to a > > > serious problem. > > > > > > I have a design I'm working on that will output raw data that > could be interpreted > > as an > > > audio stream centered on 1kHz. I'd like to work on extracting CW > signals that are > > rather > > > slow, from a rather narrow bandwidth, and see how far down into > the noise I can > > actually > > > extract the signals. > > > > > > Is there a block that can bring in CSV data from a file at a > specific rate, and > > serve as > > > the input to my CW detection system? > > > > > > > > > -- > > > K1FZY (WA4TPW) SK 9/29/37-4/13/15 > > > > > > > > -- > > K1FZY (WA4TPW) SK 9/29/37-4/13/15 > -- K1FZY (WA4TPW) SK 9/29/37-4/13/15