Juliana

Members
  • Content Count

    5
  • Joined

  • Last visited

Posts posted by Juliana


  1. Hi all,

    I'm using pmodMic 3 and Basys 3 for acoustic signal read in and analyses, so far I've been using terminal software on PC to read the data in. However, my professor purchased a audio analyzer for our lab lately, therefore I got a chance to feed the acoustic signal in directly from my mic (+board) to the analyzer. The analyzer we're using is Audio Precission apx555. There's a PDM module on the box, I'm aware that pmodMic 3 is not PDM but I'm assuming it could achieve the result of PDM by interpolation (?). I'm just wondering if there's any approach to make coummunication between my basys 3 board and the PDM module interface on the analyzer? I attached a pic of the PMD module interface on the box.

     

    image.thumb.png.24eb0190ebae01e458436bd00f567a64.png

     

     

    Not sure if I made myself clear.. Thank you in advance!

     

    Regards,

    J


  2. On 7/11/2019 at 11:25 AM, jpeyron said:

    Hi @Juliana,

    Here is a forum thread that discusses how to interpret the ADC output as well as needing to use an FFT to get the frequency.  The first step for testing to see if a PmodMIC3 is not working correctly would be switching the 2 PmodMIC3's and see if you get the same result or not. Powering the FPGA and PmodMIC's through the USB should be fine. 

    best regards,

    Jon

    Hi Jon,

    Thank you so much!!

    Just one more question: Is there any Digilent data acquisition/ analysis  tool (or any software you would recommend) I can use to read and analysis the data I got from pmodMic3? I'm using Basys3 FPGA board. I did notice Wavevision form Texas Instruments, but seems it is only adaptable for one specific board, not for Basys3.

     

    Thanks,

    J


  3. Hello all,

    I'm using Basys3 board and two pomdMic3 devices to read and analyze sound data. I played sound source of specific frequencies (generated by Matlab) to these two pmodMic3. The SCLK of pmodMic3 were set as 5MHz, and one sample(for each mic) of data would be sent to PC every 400ns. Then I exported the captured data and converted to decimal, and I got the following results:

    Test 0: In this test, I played a sound source of 1kHz, first 75dB for 4s, then 110dB for 4s, then 75dB for 10s, and I got the result (simply converted binary data captured from pmodMic3 directly to decimal): 

    image.png.ab46202e40802cc51e4d4c001ceda3cc.png

    Test 1: In this test, I was still playing a sound source of 1kHz, first at 110 dB, then 75dB, then 110dB again, then 75dB:

    image.png.cac3359c606ba18bc7b5d1c4bb1a826a.png

     

    Test 2: In this test, I played sound source at 90dB, first 500 Hz, then 1KHz, then 3KHz:

    image.png.ff7a12f75d96ebf9e28906ad85fc5bf3.png

    So basically my questions are:

    1. Why do these two pmodMic3 devices give such different results? I already adjusted the potentiometer to the same position, and I did notice one of them was not responding properly (while the other one performed as expected) when I test on board. 

    2. When I tried different volume of the sound source, the absolute decimal value does not change accordingly. Since I referred the following transfer characteristic of the ADC used for pmodMic3:

    image.png.c089528f4647511912df18e9da48e363.png

    I was expecting higher volume would result in higher analog input, and therefore larger ADC code. So how do I supposed to tell the volume information from the exported ADC code?  

     

    3. Can I also get the frequency information of the sound source from the ADC code or do I have to do FFT (or such) to further process the data?

    4. I'm just using PC as the power supply of the board for now, and I'm not too sure how stable is it, would using external power supply help getting more accurate results?

     

    Thanks in advance!!

     

    Regards,

    J

     

     

     

     

     

     

     

     


  4. @[email protected]

    Hi Dan,

    Thanks so much for the detailed explanation !! 

    I've been trying working on it and seems I *kind of* got what I expected from behavioral simulation (According to datasheet, the 12 bits of digital data are sent to the system board in 16 clock cycles with the first four bits as leading zeroes and the remaining 12 bits representing the 12 bits of data, my top module reads sample in every other 16 clock cycles to allow time to transfer). My simulation result shows:

    image.png.91eea0f4483944bf20ce5a8671d47965.pngimage.png.63d12c4a4acee0087ca331da17949c50.png

     

    Then I tried it on board, I tried sending the data to PC through UART, and used Realterm  to read the data received, however it either gives me all 0 or something obviously not correct (since each sample is supposed to start with four leading zeros, which doesn't agree with the data I received from Realterm).

    I attached my code here, I'm completely new to FPGA and  verilog coding, and this is my first project. I've been stuck for quite a while and I'm just wondering if I'm on the correct direction at all. Could you help take a look at my code please? I just want to make sure what I'm trying here is not totally insane... 😢 I'm using Digilent Basys 3 and Vivado 2018.3.

    Thank you very much !!

     

    Regards,

    J

    Jun_9th.zip