Shop OBEX P1 Docs P2 Docs Learn Events
How to digitally record a 10ms pulse then stretch it out into audio in real time? - Page 2 — Parallax Forums

How to digitally record a 10ms pulse then stretch it out into audio in real time?

2»

Comments

  • kwinnkwinn Posts: 8,697
    edited 2013-01-18 21:25
    The simplest approach to this is to have the data output from the ADC connect directly to the input of the memory and have the propeller set up the data transfer and possibly provide the control signals. We did something similar with a 4 MHz Z80, 10 bit ADC, and some logic gates. Managed to get 100K samples a second which was the limit of the ADC.

    With an 8 or 12 bit ADC and 2 or 3 Quad SPI ram chips respectively it may be possible to do the same with a minimum of external parts. Stress on the may.
  • ElectricAyeElectricAye Posts: 4,561
    edited 2013-01-18 21:42
    kwinn wrote: »
    The simplest approach to this is to have the data output from the ADC connect directly to the input of the memory and have the propeller set up the data transfer and possibly provide the control signals. ....

    kwinn,

    you must be psychic or something - I was just wondering about this. And so the Prop could then "merely" act as the manager of data streaming in, and then also perform the DAC for the audio going out? Any idea what memory chips would be ideal for this sample rate? Could the SPI SRAMs work in this fashion, maybe?
  • kwinnkwinn Posts: 8,697
    edited 2013-01-18 22:56
    I was actually thinking of the Microchip 23LC1024 Quad SPI SRAM chip which is listed for $2.16 at Microchip Direct in 1 to 25 quantities. A quick look at the data sheet shows 1Mbit ram, max 20MHz clock rate, Quad SPI, and a sequential mode that should allow the data from the ADC to be stored sequentially by providing only the chip select and clock pulses once the chip is set up.

    With 3 1Mbit chips in parallel you could store 256K x 12 bit samples which is considerably more than your initial requirement. It looks like the chip could be set up to do a sequential write (or read), and then only needs for the select to be low and to be clocked to perform the write (or read).

    Of course this is an initial impression from the data sheet. You would need to look more carefully at the data sheet and timing requirements before making a decision.
  • ctwardellctwardell Posts: 1,716
    edited 2013-01-19 06:07
    Can we get some more details on the signal?

    For example:

    Does it consist of multiple frequencies?

    What is the range of frequencies?

    Is any give 10ms burst a varying signal or constant?

    What I'm getting at is do you need to record the entire burst and/or could it be sample below Fmax / 2 and take advantage of aliasing to lower frequencies.

    C.W.
  • ElectricAyeElectricAye Posts: 4,561
    edited 2013-01-19 06:45
    kwinn wrote: »
    I was actually thinking of the Microchip 23LC1024 Quad SPI SRAM chip.... You would need to look more carefully at the data sheet and timing requirements before making a decision.

    kwinn, thank you. Intriguing stuff.

    ctwardell wrote: »
    Can we get some more details on the signal?...

    Yes, here's a recording of the type of signals. The real-time recording of what I'm after starts at 3:00 on the recording. Examples of the recordings stretched out start at 3:50. As an exercise, I considered also altering the pitch of the narrator so he sounds like a chipmunk, but perhaps that can wait for later...

    http://radiojove.gsfc.nasa.gov/audio/ufsamples.mp3
  • jmgjmg Posts: 15,173
    edited 2013-01-19 12:47
    It is not quite available yet, but this series looks to continue a trend of uC making reasonably serious ADCs

    http://www.infineon.com/cms/en/corporate/press/news/releases/2013/INFATV201301-022.html

    If we ignore the 'free other core' for a moment, this XMC1100 Entry series devices offer (in TSSOP 16, 28, 38 pins.)

    * Six 12-bit A/D converter channels, which operate up to 1.88 mega samples/second
    * Four 16-bit timers in a capture/compare unit 4 (CCU4)
    * Broad voltage tolerance, between 1.8V and 5.5V.
    * 16kB of RAM

    They sound cheap(ish), or at least similar in price to > 1Msps, 12 bit ADCs, and that RAM is about enough to store your burst.
    A TSSOP16 package can fit in almost anywhere
  • kwinnkwinn Posts: 8,697
    edited 2013-01-21 20:59
    I was intrigued by the idea of connecting 3 SPI chips together and having the propeller provide only the initialization and control signals for the data transfers. When I had a few minutes to spare I looked up the data sheets for some ADC's and a DAC that seemed suitable for this project. After looking at the data sheets for a bit I can not see any reason this is not feasible.

    The chips:

    Analog Devices: ADC - AD7276_7277_7278 and AD9629, DAC - AD5601/AD5611/AD5621

    Maxim: ADC - MAX11102-MAX11117 and MAX11108

    TI: ADC - ADS7888

    Microchip SPI SRAM 23LC1024

    Both ADC,s can be set up for 16 clock pulses per conversion so the data can be clocked directly from the ADC to the 23LC1024 and stored in 2 bytes using sequential mode. If an 8 bit ADC like the TI ADS7888 were used you could store twice as many samples although the timing would be trickier.

    For data acquisition it should be possible to use the video generator to produce the timing signals.

    Output to the DAC could be done in a similar manner but the data rate is so much slower the propeller could do that directly.
  • ElectricAyeElectricAye Posts: 4,561
    edited 2013-01-21 21:57
    kwinn wrote: »
    I was intrigued by the idea of connecting 3 SPI chips together and having the propeller provide only the initialization and control signals for the data transfers. ....

    Cool stuff. Tonight we were listening to some signals at 20.1 MHz and got some bleeps that sounded very cool but no way to know what they were since, in audio, it all happens too fast and our regular recorder only records them as a spike. So, along with making the listening more interesting, I could see where a device like this would also help people weed out some potential noise sources, etc. in real time via tuning, filters, or antenna adjustments, etc. Thanks for educating me about the potential methods for approaching this. I now wonder if it's the kind of thing that can be done entirely in SPIN or if it's essential to know assembly to get the timing just right.
  • kwinnkwinn Posts: 8,697
    edited 2013-01-21 22:18
    I'm pretty sure (almost positive) some assembly will be required. Of course having said that some smart alec may just come along and do it in Spin or C or Basic.
Sign In or Register to comment.