Design and implementation of an embedded high-speed image acquisition and storage system based on ARM and FPGA

Publisher:PeacefulOasisLatest update time:2012-01-16 Keywords:ARM Reading articles on mobile phones Scan QR code
Read articles on your mobile phone anytime, anywhere

Modern production and scientific research have increasingly higher requirements for image acquisition systems. Traditional image acquisition systems are mostly based on PCs, but in some special occasions, especially when real-time requirements are high, ordinary PCs obviously cannot meet application requirements. It mainly includes image acquisition modules, image processing modules, and image storage modules.

1 System structure and working principle

The structural model of this system is shown in Figure 1. The image acquisition module is responsible for acquiring the original image and sending the original image data to the FPGA. The programmable video input processor SAA7113H is used. After a frame of image acquisition is completed, ARM takes out the image data through the FPGA, performs necessary processing, and forms an image file and stores it in the CF card. This system uses Philips' LPC2214.

The image acquisition chip transmits the original image data to FPGA, which temporarily stores the original image data in SRAM1. After one frame of image is stored, the next frame of image data is stored in SRAM2. At the same time, the data in SRAM1 is sent to ARM, which stores the image data in the form of a picture file in the CF card after necessary processing of the original image. In this way, the embedded high-speed image acquisition and storage function is realized, and users can easily upload the pictures on the CF card to the PC for further analysis and processing.

2 System Hardware Design

2.1 Image acquisition module

The programmable video input processor SAA7113H is used to process video signals. SAA7113H integrates powerful image chrominance and brightness processing functions and multiple output modes; it has 32 working registers, which must be initialized through the I2C bus when the system is reset. This system uses grayscale images and does not use chrominance signals, so the data line is 8 bits. The interface between SAA7113H and FPGA is shown in Figure 2.

Image Capture Card, also known as image capture card, is a hardware device that can obtain digital video image information, store it and play it out. Many image capture cards can obtain accompanying sound while capturing video information, so that the audio part and the video part can be saved and played synchronously during digitization.

The function of the image acquisition card is to collect image signals into the computer and save them on the hard disk in the form of data files. It is an essential hardware device for image processing. Through it, we can transfer the video signals shot by the camera from the video tape to the computer, and use relevant video editing software to perform post-editing processing on the digital video signals, such as cutting pictures, adding filters, subtitles and sound effects, setting transition effects, and adding various video special effects, etc. Finally, the edited video signals are converted into standard VCD, DVD and popular online media formats for easy dissemination.

2.2 FPGA Module

The main function of FPGA is to temporarily store the original image data transmitted by the image acquisition chip in two SRAMs in a ping-pong operation. When FPGA starts to receive the first frame of image, it stores the frame of image in SRAM1 according to the address generated inside FPGA. After receiving a frame of image, it is transmitted to ARM. At the same time, the next frame of image is temporarily stored in SRAM2 and then transmitted to ARM, and the cycle is repeated. In this way, high-speed image acquisition can be achieved. This system uses Alter's EPlK30TCl44-3, which uses EECMOS technology, 144-pin TQFP package, capacity of 100,000 gates, and has the characteristics of high density, low cost and low power consumption. The internal structure of FPGA includes clock drive module, SAA7113H control module, SRAM control module, ARM data exchange module, etc. In this system, it is mainly aimed at the acquisition and storage of 640×480 grayscale images, so ISSI's IS6lIN25616AL is selected. It is a high-speed, low-power 256 kB×16 CMOS static random access memory that can meet the actual requirements of the system. The internal structure block diagram of the SRAM control module is shown in Figure 3.

2.3 ARM module

[page]

The main function of the ARM module is to take out the original image data from the SRAM, perform necessary processing, and then store it on a large-capacity CF card, so that users can perform necessary processing operations on the image on the PC. After receiving a frame of image, FPGA sends an interrupt request to ARM. After receiving the request, ARM reads the data in SRAM through FP-GA. After a frame of data is sent, FPGA sends a signal that the sending is completed. After ARM performs necessary processing on the received data, it stores the data on a large-capacity CF card. The interface circuits of ARM, FPGA and CF card are shown in Figures 4 and 5 respectively.


3. Working principle and implementation of the system

3.1 FPGA image acquisition and temporary storage implementation

After the system is powered on, the FPGA first initializes the video acquisition module (SAA7113H) through the I2C bus to determine its working mode. After the initialization is completed, it waits for the image acquisition command. When the image acquisition command issued by the FPGA is received, the video acquisition module starts working, and the FPGA relies on the pixel clock and the line field synchronization signal to acquire the grayscale image. Since the grayscale image output by the SAA7113H is 8 bits, and the external SRAM is 16 bits, the acquired grayscale image must be processed in the FPGA, and the two bytes of data are combined and output together to the external SRAM. After a frame of image acquisition is completed, the SAA7113H stops image acquisition and waits for the next acquisition command.

3.2 Data Exchange between FPGA and ARM

In order to realize the real-time acquisition and processing of image data, the acquisition of image data and the reading of external image data should be carried out simultaneously. Therefore, this system adopts a dual SRAM cache structure. In this way, at the same time, one piece can be used to store image data, and the other piece can be used for external ARM to read image data. The two SRAM storage areas are switched in a ping-pong manner. When the image data fills up SRAM1, FPGA sends an interrupt signal to ARM, then ARM responds to the interrupt and reads the image data in SRAM1, and writes it to the CF card at the same time. The image data will be written to SRAM2. When the image data fills up SRAM2, FPGA also sends an interrupt signal to ARM.

3.3 Storage of image data on CF card

The internal controller of the CF card is designed to completely simulate the hard disk, using the standard ATA/IDE interface, and can be connected to the computer through the IDE interface. It has long been designed without a driver, and is very convenient to use. In this system, the image data is stored in the CF card through ARM, so it is necessary to implement ARM's configuration, read and write control of the CF card and other operations. The interface function of ARM to the CF card driver consists of hardware interface functions and user functions. The hardware interface function is a set of functions related to the system hardware. It mainly includes hardware reset function, ATA register operation function and ATA device detection function; user functions include ATA device driver initialization function, ATA interface device search function, sector read function, sector write function, device information acquisition, device immediate standby state and device immediate idle state.

The full name of CF card is "Compact Flash" card, which means "standard flash memory card" in Chinese. CF card is the earliest memory card product, which was successfully developed in 1994 by SANDISK, one of the largest FLASH MEMORY manufacturers in the United States.

CF card is the most widely used memory card at present. Since it does not have a drive and other moving parts, it rarely has mechanical failures, making the stored image data safer. The service life of CF card is also very long. Even if it is used for more than 100 years, the data can be guaranteed to be intact. In addition, CF card consumes little power, only 5% of ordinary hard disk. Compared with other memory cards, large capacity is another advantage of CF card. At present, mainstream products have reached 512Mb and 1Gb standards. In addition, it also has the advantages of fast speed and low price. The main disadvantage of CF card is that CF module is not interchangeable between equipment and installation program, and the program cannot be run directly. It consumes a lot of power, which will inevitably affect the battery life.

4 Conclusion

This paper introduces the design of an embedded real-time image acquisition and storage system implemented by ARM and FPGA. The operating temperature of this system is 0~60℃, and it can realize the grayscale image acquisition and storage of video streams at 20~30 frames per second, which can meet the application requirements of embedded real-time image acquisition and storage. The continuous working time of the system depends on the storage capacity of the CF card. In this system, the image acquisition and storage are separated from the PC, so that the image acquisition and storage can truly meet the requirements of real-time and embedded. This system can be used in military shooting evaluation, industrial product quality inspection, medical and biological fields.

Keywords:ARM Reference address:Design and implementation of an embedded high-speed image acquisition and storage system based on ARM and FPGA

Previous article:The use of hard disk interface and file management system based on ARM system
Next article:A distributed pipeline leakage monitoring system based on ARM-Linux

Recommended ReadingLatest update time:2024-11-17 00:17

Design of a simple digital clock based on FPGA using VHDL language
As a newbie, I am willing to share some of the little things I made. I remember it was a few days less than a year ago. Looking at the records, it was May 19, 2009. The scene where I used the 51 single-chip microcomputer to make a digital clock. At that time, I used assembly language and was very anxious. I wor
[Microcontroller]
Design of a simple digital clock based on FPGA using VHDL language
Introduction to ARM Assembly Language (V)
Part 5: Loading and storing multiple values Sometimes you want to be more efficient and load (or store) multiple values ​​at once. To do this we can use the LDM (load multiple) and STM (store multiple) instructions. There are various variations of these instructions, which basically only differ in how the initial addr
[Microcontroller]
ARM LCD and LCD controller
Since we mentioned LCD, the first thing we must understand is its types. CD (liquid crystal display) is a display that uses liquid crystal to control transmittance counting to achieve color. Compared with traditional CRT displays, it has many advantages: light and thin, low energy consumption, low radiation, etc., and
[Microcontroller]
ARM LCD and LCD controller
Microsoft may develop its own ARM chips for Surface and servers
Apple's M1 chip may have become the impetus for many tech companies to invest and start developing their own ARM-based chips. According to the latest report, Microsoft is one of them, and its custom chip will be found in the company's future Surface series and its servers. Many of Microsoft's Surface models are powe
[Mobile phone portable]
Design of Embedded Motion Controller Based on ARM and DSP
introduction Motion control systems are widely used in the field of industrial control, but the application of embedded technology in the field of industrial control is not yet mature. In recent years, industrial control has placed higher and higher requirements on motion control systems. In order to meet the v
[Microcontroller]
Design of Embedded Motion Controller Based on ARM and DSP
arm-linux-gcc common parameters explain how to use the gcc compiler
We need to compile code that runs on the ARM platform, and the cross compiler used is arm-linux-gcc. The following introduces some common command parameters of the arm-linux-gcc compiler tool. Before that, let's first introduce the working process of the compiler. When using GCC to compile a program, the compilation
[Microcontroller]
Eclipse debugging arm bare metal program
1. Integrated Development Environment Software: eclipse, GDB Server, Jlink software Hardware part: Jlink hardware Preparation 1: Boot from SD/NOR Flash and format nand flash Preparation 2: Hardware Connection 1. Jlink connection 2. Serial port connection 3. NAND startup 2. Install GDB S
[Microcontroller]
Eclipse debugging arm bare metal program
11. Simple operation of assembly code
The reason for using assembly is very simple, that is, the efficiency of assembly code. When the machine starts, the efficiency of assembly is used to initialize the hardware and provide conditions for loading the kernel. There are currently two commonly used ARM assembly instructions: *
[Microcontroller]
11. Simple operation of assembly code
Latest Microcontroller Articles
  • Download from the Internet--ARM Getting Started Notes
    A brief introduction: From today on, the ARM notebook of the rookie is open, and it can be regarded as a place to store these notes. Why publish it? Maybe you are interested in it. In fact, the reason for these notes is ...
  • Learn ARM development(22)
    Turning off and on interrupts Interrupts are an efficient dialogue mechanism, but sometimes you don't want to interrupt the program while it is running. For example, when you are printing something, the program suddenly interrupts and another ...
  • Learn ARM development(21)
    First, declare the task pointer, because it will be used later. Task pointer volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • Learn ARM development(20)
    With the previous Tick interrupt, the basic task switching conditions are ready. However, this "easterly" is also difficult to understand. Only through continuous practice can we understand it. ...
  • Learn ARM development(19)
    After many days of hard work, I finally got the interrupt working. But in order to allow RTOS to use timer interrupts, what kind of interrupts can be implemented in S3C44B0? There are two methods in S3C44B0. ...
  • Learn ARM development(14)
  • Learn ARM development(15)
  • Learn ARM development(16)
  • Learn ARM development(17)
Change More Related Popular Components

EEWorld
subscription
account

EEWorld
service
account

Automotive
development
circle

About Us Customer Service Contact Information Datasheet Sitemap LatestNews


Room 1530, 15th Floor, Building B, No.18 Zhongguancun Street, Haidian District, Beijing, Postal Code: 100190 China Telephone: 008610 8235 0740

Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号