Title: Developing a multi-thread product -- Introduction
1Developing a multi-thread product -- Introduction
- M. Smith
- Electrical Engineering, University of Calgary
- Smithmr _at_ ucalgary.ca
2References
- Understanding GPS Principles and Applications,
1996, Elliott D. Kaplan - Digital Signal Processing A Practical Approach,
1993, Emmanuel C. Ifeachor, Barrie W. Jervis - ADSP-TS101 TigerSHARC and Blackfin Processor
Programming References, Analog Devices - Articles submitted to Circuit Cellar magazine by
M. Smith, March 2004
3Introduction
- GPS traditionally done with ASIC/Processor
combination - Looking at FPGA/DSP combination for low end GPS
receivers - Technological interest in software radio
- Cheaper, quicker development cycle.
- Customizations for special applications
- From a talk by Darrell Anklovitch for ENEL619.23
4What is GPS?
Global Positioning System
24 satellite (SV) constellation
Orbiting 20,000 km from the surface of the Earth
in 12 hour cycles
Orbits are set-up to give global coverage 24
hours a day
Need at least 4 satellites in view to calculate a
position
(1)
5GPS Positioning Concepts
(1)
- For now make 2 assumptions
- We know the distance to each satellite
- We know where each satellite is
- Require 3 satellites for a 3-D position in this
ideal scenario - Requires 4 satellites to account for local
receiver clock drift.
6GPS Signal Structure
- Each satellite transmits 2 carrier frequencies
referred to as L1 (1575 MHz) and L2 (1227 MHz) - Each carrier frequency is BPSK modulated with a
unique PRN (pseudo random number) code - The PRN code on L1 is called CA code (coarse
acquisition), The PRN code on L2 is called P code
(precise) - CA code takes 1 ms for full PRN transmission at
1MHz chip (bit) rate. P code takes 1.5 s for full
PRN transmission at 10MHz chip rate - Also modulated on each carrier is 50 Hz data that
includes the current position of the satellite
7Determining Time
(1)
- Use the PRN code to determine time
- Use time to determine distance to the satellite
distance speed of light time
8Algorithms to Find PRN Phase
- Time-domain Cross correlation 1/N ? x1 (n)
x2(n) - Coding equivalent to FIR filter, but need to
filter N sets of data, each shifted by one data
point looks like a final exam question to me. - Correlation of perfectly matching signals gives a
maximum value - Correlation of 2 random data sequences tends to 0
- PRN code from different satellites are designed
to correlate to 0. - Frequency domain correlation 1/N F-1X1(k)X2(k)
where F-1 is the inverse Discrete Fourier
Transform and the Xs are the Discrete Fourier
Transforms of two sequences
D
9Timing
- Frequency Domain 1/N F-1X1(k)X2(k)
- 1024 point FFT (2 NLOG2N)
- 1024 MULTS (N)
- 1024 point INV FFT (NLOG2N)
- Time Domain 1/N ? x1 (n) x2(n)
-
n 0 - 1024 MACs (N)
- 1024 Phases (N)
30,000 Complex operations
N-1
1,048,576 operations
(N2)
10TigerSHARC -- TS101 and TS201
TS101
TS201
Low-cost version 45 / chip Evaluation boards
950 eacheducational price
11Implementing a multi-thread systemworking on
batch data
Collect N pts _at_44 kHz ? array1 Collect N pts _at_44 kHz ? array2 Collect N pts _at_44 kHz ? array3 Collect N pts _at_44 kHz ? array1 Collect N pts _at_44 kHz ? array2 Process array1 Process array2 Process array3 Process array4 Transmit N pts _at_44 kHz ? array1 Transmit N pts _at_44 kHz ? array2 Transmit N pts _at_44 kHz ? array3
12Implementing a multi-thread system-- Laboratory
5 concepts
Collect N pts _at_44 kHz ? array1 Collect N pts _at_44 kHz ? array2 Collect N pts _at_44 kHz ? array3 Collect N pts _at_44 kHz ? array1 Collect N pts _at_44 kHz ? array2 Move array1 ? array4SimulateComplex Move array2 ? array5SimulateComplex Move array3 ? array6SimulateComplex Move array1 ? array4SimulateComplex Transmit N pts _at_44 kHz ? array4 Transmit N pts _at_44 kHz ? array5 Transmit N pts _at_44 kHz ? array6
13Essentially
- Take an audio Talk-through program
- for loop
- Read_a_sample Perform operation
Write_a_sample -
- Turn into 5-threads running under interrupts
- Idle thread
- Initialization thread sets up system, when
ready launches the other threads then
activates the first thread - ReadValueThread,
- ProcessValueThread with simulated Complex
Algorithm - WriteValueThread
14Initialization Thread Lab. 5 early
15Main Threads example Lab. 5 early
16Need to investigate and understand system
behaviour and limitations
Concept of task priority
17Lab. 5 using real-time audio-test
18VDK Status History
19Laboratory 5 Done in C and C
- Stage 1 30
- Develop and investigate a multi-tasking system
where the threads are free-running. Thread tasks
are Sleep(time_task) - Develop and investigate a multi-tasking system
where the threads communicate through semaphores
to control order of operation - Stage 2 55
- Demonstrate and investigate turning an audio
talk-through program into a multi-threaded
system one point processed per interrupt - Stage 3 15
- Demonstrate a batch processing system as a
multi-threaded system - Options
- Use SHARC ADSP-21061 boards (40 MHz) existing
audio-libraries have not attempted - Use Blackfin ADSP-BF533 boards (600 MHz)
existing audio-libraries have been successful
at home, but not here - Use Blackfin ADSP-BF533 boards (600 MHz) using
very simple, no frills, audio-talk though library
surprising simple with 1 to 32 points being
processed. Fails with 33 points. Code logic
issue, not a timing issue as I can waste 25000
cycles per block at 32 points
20Where to start?
21Adding the Initialization thread
22Making the InitializationThread a Boot Thread
23Add the thread programming control
24 Avoid the free-running code
25Then add semaphores to control flow
26Tackled today
- GPS basic concepts
- Algorithm can be implemented in either
time-domain or frequency domain - Big time advantages in frequency domain for the
GPS algorithm (unless add special instructions) - Need to batch data for input, output and
processing - VDK is an Analog Devices VisualDSPTool for
automatically generating the code for a
multi-threaded system - Laboratory 5 First part 30
- Implement a simple multi-threaded system where
the threads mainly sleep, and either free run, or
communicate through semaphores to control program
flow