An Example: A Data Acquisition System

An Example: A Data Acquisition System

Suppose we have a device that outputs data in periodic intervals. This output data is needed to be processed and analyzed by a Data Acquisition System (DAQS). The requirement is to design and implement this data acquisition system. There are questions that need to be answered before we are able to complete this design.

• What is the period of data preparation by the device? This specifies the worst-case delay of DAQS.

• What is the maximum budget for developing this system? This leads to the type of hardware we want to use in implementing DAQS.

• What are the main functions (operations) in this system? This is the most important implementation-related question.

• What is the system’s memory limitation? This gives us an estimate of the size of our system’s buffer and the number of registers and memory blocks.

Suppose that the data-sending rate is F, which means that the worst-case delay of DAQS is T (=1/F). Also assume that the maximum budget for the DAQS project is B. The functions that DAQS must perform

in a reasonable time include:

FindMin: finds the minimum value of data it has received at any point in time.

FindMax: finds the maximum value of data it has received at any point in time.

FindVariance: finds the variance of the data it has received at any point in time.

FindDifference: calculates the difference between two consecutive data.

CheckRange: compares the received data with the low and high thresholds. It will display an error message if the data is out of range.

FindAverage: calculates the average of the received data at any point in time.

FindMean: calculates the mean of a number of most recent data. The accuracy of the result of this task depends on the number of recently stored data.

Display: displays the received data, the result of each operation, and the probable error messages. Figure 86.46 shows a schematic view of DAQS.

System Level Design Languages-0231We can implement each operation by a separate function. For example, the FindMin function is implemented and shown in Figure 86.47.

After implementing all functions, we are ready to put all these functions together in the main() function. These functions can be placed one after another, or be executed in different processes.

When this model is completed we need to evaluate it. This can be done by applying large amounts of data to the DAQS C++ model and studying timing and memory usage of each of its functions. Alternatively, we can perform this analysis by performance analysis tools.

After analyzing the time and memory consumed for each part, and comparing them with T (time limit) and B (budget limit), we can decide and answer the following questions:

• What type of communication we should put between the device and DAQS?

• Can we implement DAQS on a general-purpose PC (fully software-based) or should we manufacture a special board for it (implement a few or all parts in hardware)?

• If we should construct a special-purpose board for DAQS (due to time or budget limitations), which parts can still be implemented in software?

• If we have a special-purpose board and we also have software parts, what processor should we use for our software parts? What existing CPU meets our requirements and limitations?

• Which parts should be executed in parallel and which parts can be executed sequentially?

• How much memory should we use for a required exactness in our calculations? How much memory can we use in DAQS?

After answering all of the above questions, if our specification still does not meet our requirements, we have to refine our system or change our limitations. By performance analysis, a set of questions and a set of critical decisions in the system design can be answered which could not be answered without a large amount of implementations being done. In the performance analysis process, high-level languages like C and C++ play a very important role to decrease the design time and increase the speed of defining a design specification and functional verification.

Our Coverage of C/C++

In this section, we discussed an overview of two high-level programming languages (C and C++). These two high-level languages are useful for developing an early prototype of a design from its model. This prototype is useful for performance analysis and partitioning of the design. The next step in a system level design can be adding more details to hardware parts defined in this step, and developing them in a more hardware-related language. The language used for this purpose can be SystemC that is discussed in the next section.

Comments

Popular posts from this blog

SRAM:Decoder and Word-Line Decoding Circuit [10–13].

ASIC and Custom IC Cell Information Representation:GDS2

Timing Description Languages:SDF