Transcript Document
GPS Waypoint Navigation
Team M-2:
Charles Norman (M2-1)
Julio Segundo (M2-2)
Nan Li (M2-3)
Shanshan Ma (M2-4)
Design Manager: Zack Menegakis
Presentation 2: Architecture Proposal
January 30, 2006
Overall Project Objective:
Design a chip that navigates an aircraft to pre-determined
waypoints.
Status
Design Proposal
Project chosen
Architecture Proposal
MATLAB simulated
Behavioral Verilog written
Behavioral Verilog simulated
Floorplan
Schematic Design
Layout
Simulations
Application Description
We are designing a GPS based waypoint navigation
system for use in an aircraft.
The system will be able to autopilot the craft through a
series of user specified GPS coordinates in 3 dimensions.
Why Use a Chip?
Our system would be perfect for an Unmanned Aerial Vehicle (UAV)
due to its light weight, low power consumption, low cost, and specific
capabilities
The system is designed to do exactly what UAVs are best at: flying
over an area in order to observe it. The UAV has many military and
civilian applications.
System Flow
Inputs will consist of GPS waypoint coordinates for the
vehicle itself taken from a satellite or given by a user.
The system will continually sample the position of the
aircraft while holding the previous and current positions in
memory
Calculate and output the course corrections that must be
made in order to proceed toward the next destination.
– Angle needed to hit next waypoint within 1 second (~106 feet)
– Difference in current and destination altitudes needs to be within 15
feet.
– Maximum speed must always be achieved.
Block Description
FSM Controller – Controls state flow in system
– Setup mode
– Navigation mode
– Arrival mode
SRAM – Stores up to 5 GPS waypoint coordinate sets
Waypoint Reached Comparator – Decides whether the aircraft is
sufficiently close to the next waypoint
Altitude Comparator – Compares current altitude to next
waypoint’s altitude
Speed Comparator – Compares current speed to max speed
Speed Calculator – Calculates current speed at which the
aircraft is traveling
Distance Calculator – Calculates distance between current
position and next waypoint
Sexagesimal Degrees to Decimal Degrees Converter – Converts
Degrees/Minutes/Seconds to Decimal Degrees
“Black Box” – Used to calculate arctan’s and squares for angle
and speed calculations
Block Level System Diagram
Behavioral Verilog
module FSM
(output reg control, output reg [2:0] counter,
input [1:0] rw, input range, clk);
reg [1:0] state, nextState;
parameter A = 2'b00, //Navigate/read
B = 2'b01, //Setup/write
C = 2'b10, //No Op
D = 2'b11; //Reset
module Distance_cal
(output [11:0] result,
input [5:0] lat, lon);
result = lat*lat+lon*lon;
endmodule // Distance_cal
always @ * begin
case (state)
A: begin
nextState = rw;
if (range == 0) //not within range
control = 1; //turn on all functions
else //within range
control = 0; //turn off all functions
end
B: begin
nextState = rw;
control = 0; //turn off all functions
counter = counter + 1;
end
C: begin
nextState = rw;
end
D: begin
nextState = rw;
control = 0; //turn off all functions
counter = 0;
end
default: nextState = D;
endcase // case(state)
end
module wp_comp
( output result , [22:0] lon_dif , [22:0] lat_dif,
input [22:0] curlon, [22:0] curlat, [22:0] lat2, [22:0] lon2);
[22:14] lat_dif = [22:14] lat2 - [22:14] curlat;
[13:7] lat_dif = [13:7] lat2 - [13:7] curlat;
[6:0] lat_dif = [6:0] lat2 - [6:0] curlat;
[22:14] lon_dif = [22:14] lon2 - [22:14] curlon;
[13:7] lon_dif = [13:7] lon2 - [13:7] curlon;
[6:0] lon_dif = [6:0] lon2 - [6:0] curlon;
if ( ([21:14] lat_dif == 0) && ([12:7] lat_dif == 0) && ([21:14] lon_dif ==
0) && ([12:7] lon_dif == 0) )
result = 1;
else
result = 0;
endmodule // wp_comp
always @(posedge clk)
state <= nextState;
endmodule // FSM
Inputs / Outputs
Inputs
– Latitude & Longitude Coordinates : 46 bits
Latitude : -180˚ to 180˚, Longitude : -90˚ to 90˚
Degrees : 9-bit 2's complement
Minutes : 7-bit 2's complement
Seconds : 7-bit 2's complement
– Speed :10-bit signed magnitude
– Altitude : 15-bit unsigned
– Mode : 2-bit unsigned
Outputs
– Angle Correction : 9-bit signed magnitude
– Speed Correction : 11-bit signed magnitude
– Altitude Correction : 16-bit signed magnitude
Total
– 109 bits
Rough Transistor Estimate
Component
FSM
SRAM
Number of Transistors
100
3550
Registers
Comparators (Waypoint
Reached, Altitude, Speed)
2500
2375
Heading Calculator
Angle Calculator
Distance Calculator
Speed Calculator
1280
300
2650
950
Sexagesimal/Second
Converter
Total
3000
16,705
Design Decisions
Merge groups M2 & M3 since 3 people in each group left
Use a “black box” for the arctan and square functions
– Each of these functions are projects by themselves
– Increased accuracy
Implement speed and altitude calculator
Decrease number of GPS waypoint coordinate inputs from
10 to 5 to reduce SRAM by a factor of approximately 2
Use 2’s Complement for representation for coordinates &
Signed Magnitude for everything else
Sample current position every one second which allows for
up to 16.99 seconds (distance) of change
Assumptions
Latitude & Longitude are always constant
– In reality, longitude is not constant (ranges from 0 – 69 miles per
degree) while latitude is usually 69 miles per degree
– This is really not a factor anyway because, we usually doing
computations on the seconds aspect of the coordinates
Altitude is independent of speed
– The speed we are calculating refers to latitude and longitudinal
directions
– The plane will rise by a proportional amount determined by avionics
Achieve maximum speed at all times
Alternate Projects Considered
Parking garage management system
Guitar tuner/effects processor
Swimming pool monitor
Smart sensor system
Smart Refrigerator
PID Controller
Smart Watch
What’s Next…
Here’s what’s on our agenda for next week…
Complete Verilog simulations
Decide types of adders, subtractors, etc. would be best for
our design
Better estimate the size of our project and decide if we are
able implement one or both of the operations of the “black
box”
Implement countdown until arrival at next waypoint?
Additional functionality?
Structural Verilog & Initial Floorplan
Questions???