Back to Blog

Software Design of a Seismic Data Acquisition System Based on STM32+FPGA, Supporting RK3568+FPGA Platform

#fpga开发#arm开发

0 Introduction

Seismic observation is a key focus of geophysical observation and forms the foundation for the development of seismology and geophysics [1]. The primary function of a seismic data acquisition system is to convert analog seismic signals collected by seismometers into digital signals for recording or transmission [2], providing a large volume of fundamental data for seismology. This paper will introduce the software design of a seismic data acquisition system based on FPGA+ARM.

1 Research Background

System Architecture. This design uses STM32MP157 as the main control unit, running in a Linux environment. The ADC acquisition module converts the three-component analog seismic signals generated by the seismometer into digital signals through sampling. The FPGA is primarily responsible for data acquisition, data transmission, and ADC parameter control, collecting IRIG-B codes received by the GPS module, forwarding PPS second pulses for timing to the ARM, and facilitating data interaction between the FPGA and ARM via an SPI bus. Linux drivers and the application layer both run on the ARM, mainly handling data reception, data processing, data storage, and data transmission. External EMMC is used for data storage, and an Ethernet port connects to a remote client. A serial port is used to assist developers in debugging the development board, and a DS18b20 acquires the ambient temperature. The overall system design block diagram is shown in Figure 1.

2 Linux Platform Construction

This design adopts a virtual machine Linux system for development, installing the Ubuntu 18.04 operating system. Driver and Linux application code are written in VS Code, a cross-compiler is built, U-boot is ported, the official Linux kernel is trimmed, and Buildroot is used to construct the root file system. The STM32MP157 is ported with Linux operating system version 5.4.31. During development and testing, the board is connected to a PC via a serial port for debugging with MobaXterm. U-boot parameters are configured to load the device tree and kernel image via TFTP, and the root file system is loaded from Ubuntu's NFS shared directory in the PC's virtual machine.