A FPGA design (in Verilog) for the DE10-Nano to read 12-bit samples from the on-board ADC and send them to UART0 (the mini USB socket wired to the UART-USB).
In summary, it does the following all within the FPGA fabric:
- Repeatedly reads ADC sample from channel 0 from the ADC LTC2308 chip (over SPI serial communication) at 2Hz (2Sps, slow enough for viewing from a UART terminal)
- A loop sends a read (when ready) to the existing HPS UART0 (UART-USB) which is wired to the HPS side
Note, the Terasic DE10-Nano CD (zip file) already contains an ADC demo but it uses the NIOS II FPGA softcore processor (instead of the hardware ARM) with a custom memory mapped ADC IP. My version is plain Verilog module perhaps more useful to a beginner.
Requires OpenOCD and Quartus lite or Quartus programmer to be installed and in search paths. Search paths are set in the scripts folder.
- Eject SD card if there is one in the slot
- Connect USB Blaster II cable
- Connect a USB cable between the UART-USB connector on the DE10-Nano and your computer
- Start a serial terminal program such as PuTTY and set it to use the correct serial port, with settings 115200 baud, 8 data bits, 1 stop bit, no parity, no control flow
- On Windows run the script rundemo-win.bat, or on linux run rundemo-linux.sh
- Wait for U-Boot to boot up and quartus to program the FPGA. You should see a bunch of U-Boot messages in the serial terminal program
- The 12-bit sample reads are displayed in hex format
- Write the sdcard_de10nano.img to a micro SD card. Use any of these:
- Win32 Disk Imager (https://sourceforge.net/projects/win32diskimager/)
- Rufus (https://rufus.ie/en/)
- balenaEtcher (https://www.balena.io/etcher/)
- Connect a USB cable between the UART-USB connector on the DE10-Nano and your computer
- Start a serial terminal program such as PuTTY and set it to use the correct serial port, with settings 115200 baud, 8 data bits, 1 stop bit, no parity, no control flow
- Insert the micro SD card into the DE10-Nano and turn on the 5V power supply
- Wait for U-Boot to boot up. You should see a bunch of U-Boot messages and then stop with a console prompt
- The 12-bit sample reads are displayed in hex format
Note, I've configured U-Boot to boot only to the console prompt.
A Quartus Prime Lite Verilog HDL project:
| File | Description |
|---|---|
| Release/sd-out/adc_f2h_uart.sd.img | A prebuilt SD card image |
| adc_f2h_uart.qpf | Quartus Prime Lite project file |
| adc_f2h_uart.qsf | Quartus Prime Lite settings file |
| top.v | Top level Verilog file |
| adc_ltc2308.v | ADC LTC2308 module |
| uart_dev.v | HPS UART module |
| rd_axi.v | Basic read axi helper module |
| wr_axi.v | Basic write axi helper module |
- Ubuntu 22.04.1 LTS 64bit
- Quartus Prime 22.1 Lite Edition for Linux
- U-Boot source v2022.10
- xPack GNU Arm Embedded Toolchain 13.2.1-1.1