I want to play a steady note into the microphone on my NEXYS 4 board, and display what note that is on the SSEG display. Using SystemVerilog in Vivado, I have been stuck on trying to determine frequency from the microphone's PDM output for quite some time now. I have slowly been working through first converting this PDM signal to PCM, and then was planning on performing an FFT on this PCM data. My PDM->PCM conversion is being handled by a CIC Decimation Filter. Is there an easier way to do this? I recently found that I could potentially FFT a PWM converted signal from the PDM data, but I have spent so much time going the PCM route that I am afraid to switch paths now. I have mostly been working from this example: PDM Microphone to PCM Decimation for converting to PCM data, and these GitHub's: Nexys4FFTDemo, Freeform Production of Gorgeous Audio for performing an FFT on the PCM data. I have not found the Nexys 4 GPIO Demo to be much help, as I wish to store the mic data, and not immediately output it. I am afraid I still don't know enough about Digital Signal Processing to accomplish what I am trying to do.
Once past the frequency determining part, I am building off of my already-made system from the book FPGA Prototyping by SystemVerilog Examples by Pong Chu to handle the note calculation and SSEG display on Vitis in C++.
If the PDM->PCM->FFT route is the best way to go, here is a waveform I have generated to test my pdm_2_pcm module, but I don't think the PCM output is correct. Any help on what the PCM signal should look like would be appreciated.
Question
JhnWstbrk
I want to play a steady note into the microphone on my NEXYS 4 board, and display what note that is on the SSEG display. Using SystemVerilog in Vivado, I have been stuck on trying to determine frequency from the microphone's PDM output for quite some time now. I have slowly been working through first converting this PDM signal to PCM, and then was planning on performing an FFT on this PCM data. My PDM->PCM conversion is being handled by a CIC Decimation Filter. Is there an easier way to do this? I recently found that I could potentially FFT a PWM converted signal from the PDM data, but I have spent so much time going the PCM route that I am afraid to switch paths now. I have mostly been working from this example: PDM Microphone to PCM Decimation for converting to PCM data, and these GitHub's: Nexys4FFTDemo, Freeform Production of Gorgeous Audio for performing an FFT on the PCM data. I have not found the Nexys 4 GPIO Demo to be much help, as I wish to store the mic data, and not immediately output it. I am afraid I still don't know enough about Digital Signal Processing to accomplish what I am trying to do.
Once past the frequency determining part, I am building off of my already-made system from the book FPGA Prototyping by SystemVerilog Examples by Pong Chu to handle the note calculation and SSEG display on Vitis in C++.
If the PDM->PCM->FFT route is the best way to go, here is a waveform I have generated to test my pdm_2_pcm module, but I don't think the PCM output is correct. Any help on what the PCM signal should look like would be appreciated.
Link to comment
Share on other sites
2 answers to this question
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now