Well, here is the short story: RF Spectrum Analyzers display the result in dBm, whereas noise specifications are often given in nV/sqrt(Hz). So, all we need is a conversion between those units, right? If you just want the answer, here it is: RF Power Noise Density [dBm] [nV/sqrt(Hz)] -80 223 […]
Yearly archives: 2018
In a previous post, we added an AXI timer to create a periodic interrupt. In this tutorial we are going to add support for the OLED screen to the WAV player project. This makes it a fully self-contained application which can be used without a PC. In this tutorial we […]
In a previous post, we added GPIOs to our WAV player to enable a simple user interface. In that example we triggered an interrupt whenever a key was pressed. However, I found it hard to debounce the keypad as we would have to somehow disable new interrupts for a while […]
In the post ZYNQ: Read a WAV File from SD-Card and Play it on the Audio Codec we started using the SD card. Everything worked fine as long as I didn’t change the SD cards. I found that it is related to the fact that I was switching between a regular (ancient) […]
In a previous post, we made a simple WAV file player which feeds the DMA controller from an interrupt routine. Currently the player is controller through the terminal connected to the UART. The Zedboard has LEDs and buttons which we can use as user interface. So let’s create a simple […]
It happened to me a few times that the Xilinx SDK did not properly update the Board Support Package (BSP). In fact, I found that the BSP is corrupt in some way. But luckily, it is easy to rebuild it. The symptom xparameters.h does not contain the necessary macros for […]
In a previous post, we made a simple WAV file player which loads the WAV file completely into RAM and plays it from there. That is not ideal for a few reasons. First of all loading a 300MByte WAV file from SD card takes a few seconds. Furthermore, we are […]
It happened to me when I wanted to read from SD card while being in an interrupt handler. Whenever I read something from the SD card, the local variables of main() got destroyed. The root cause: There was a stack overflow of the IRQ Stack which then “leaked” into the […]
In a previous post, we made a simple WAV file player. That demo used a fixed sampling rate of 39kHz which resulted from simply dividing the 100MHz system clock. Now let’s use the standard audio sampling rates of 44.1kHz or 48kHz. In order to achieve this, we need to use […]
If you debug a standalone C- or C++ application, by default you can’t step into the Board Support Package (BSP) code. Here is how you enable debugging for the BSP sources: Turn optimizations off (-O0) and turn on the debug information (-g3). Right-click on the BSP project and click “Board […]
I often want to read a single character from the UART or stdin. By default getchar() buffers all input until a RETURN character occurs. Here are two ways to handle this: You can turn off the buffering on the stdin stream: Or you just don’t use getchar() at all. Use […]
Suppose, you wrote your C- or C++ standalone application using the Xilinx SDK. Now you want to write it to an SD-card and boot from the SD-card. Here is how it’s done: Make sure that your board-support package has the FAT File System drivers included: Create the First Level Bootloader […]
When exporting the hardware to the Xilinx SDK (I am using 2017.2), the SDK automatically updates the system wrapper. Unfortunately it messes up the UART settings most of the time. Sometimes it does not compile anymore, sometimes it compiles but there is no output in Tera Term. The solution is […]
I stumbled across Jerobeam Fenderson’s YouTube channel a while ago and I was fascinated by his work. He probably creating the field of “Oscilloscope Music”. Before, there were just Lissajous curves. In a nutshell, you connect the left and right channel of your audio source to an oscilloscope while playing it […]