160 likes | 261 Views
RF Triangulator: Indoor/Outdoor Location Finding 18-525 Architecture Proposal Giovanni Fonseca David Fu Amir Ghiti Stephen Roos Design Manager: Myron Kwai. Overall Project Objective: Design a Radio-Frequency indoor/outdoor navigation system, utilizing the existing wireless infrastructure.
E N D
RF Triangulator: Indoor/Outdoor Location Finding18-525 Architecture Proposal Giovanni FonsecaDavid FuAmir GhitiStephen RoosDesign Manager: Myron Kwai Overall Project Objective: Design a Radio-Frequency indoor/outdoor navigation system, utilizing the existing wireless infrastructure. Design Stage Objective: Implement functional (behavioral) Verilog description
New Design Proposal • Using existing 802.11 wireless signals it is possible to calculate one’s location without the use of GPS. • The RF Triangulator will use current infrastructures to act as an indoor/outdoor local positioning system • By acquiring signal data from 3 or more wireless access points it will be possible to determine one’s coordinates to within 1 meter.
Triangulation Process • Our chip will solve for the simultaneous solution of 3 circle equations.
RF Triangulator Applications: • Our chip can be integrated into handheld computers, watches, or shopping carts for locations ranging from large theme parks to office buildings. • It will be able to quickly provide your current location as well as provide a distance and heading to a future location for path-finding purposes.
Current Project Status: • Finish debugging the behavioral description of the RF Triangulator chip • Starting preparations for structural Verilog • Deciding how many arithmetic units we need and comparing performance vs. size • Optimizing main algorithms • Deciding on timing/pipelining implementation
Design Decisions: • We conceived a completely new and better design than the RF-ID credit card. • We decided that the RF-ID credit card was mostly encryption based and lacked originality • The 16-bit floating point precision is sufficiently precise for our application.
Design Decisions: • Memory and caching is implemented to keep the 3 strongest signals readily available for position calculation. • An SRAM lookup table stores individual access point data including: MAC address, X and Y coordinated, originating signal/noise ratio. • A queue stores 4 more recently acquired signals, and allows for migration between the top 3 signals and the queue.
Functionality: • It has the ability to write new map data into the ~1K SRAM lookup table • After acquiring at least 3 signals it will output your current X and Y coordinates • Has the ability to calculate the distance and heading (angle) to a given location.
Major Functional Components: • Top 3 / Queue module Gives priority to the top 3 signals based on their Signal-to-Noise Ratios • Lookup Table Module Hard coded data of MAC addresses, x and y coordinates as well as Signal-to-Noise Ratios (SNR). • Calc Module Given the coordinates of 3 Access Points and their distance, it will calculate the current position.
Major Functional Components: • Floating-point unit (FPU) • Performs the addition, subtraction, multiplication and division of floating-point numbers. • Waypoint Calculator • Calculates distance and angle to requested destination • Relies on a trig lookup table
Underlying Assumptions: • Map data will be available for the current location. • An RF antenna with A/D converter will provide a signal with data from wireless access points. • Access points will broadcast their MAC address. • The user will not be moving quickly and/or moving out of map range.
Underlying Assumptions: • The available signal quality will allow for good distance approximation. • The power and location of the sending signal is included in the map data. • No more than 16 bits of floating point precision are necessary for our calculations.
Calc Module: Triangulation Formula assign sqrt = q; assign Xr1 = (-b+sqrt)/(2*a); assign Xr2 = (-b-sqrt)/(2*a); assign Yr1 = A - B*Xr1; assign Yr2 = A - B*Xr2; assign result1 = (Xr1-rxC)*(Xr1-rxC)+(Yr1-ryC)*(Yr1-ryC)-dC; assign result2 = (Xr2-rxC)*(Xr2-rxC)+(Yr2-ryC)*(Yr2-ryC)-dC; if(result1 < 0) assign result1 = -result1; if(result2 < 0) assign result2 = -result2; if(result1 < result2) begin assign xPos = $realtobits(Xr1); assign yPos = $realtobits(Yr1); end else begin assign xPos = $realtobits(Xr2); assign yPos = $realtobits(Yr2); end assign dA = rsnoA/rsniA; assign dB = rsnoB/rsniB; assign dC = rsnoC/rsniC; assign A = (dA-dB+rxB*rxB-rxA*rxA)/(2*(ryB-ryA))+(ryB+ryA)/2; assign B = (rxB-rxA)/(ryB-ryA); assign a = a+B*B; assign b = 2*(ryA*B-rxA-A*B); assign c = rxA*rxA+ryA*ryA+A*A-2*ryA*A-dA; assign delta = b*b-4*a*c; //square root function q = 0; y = 2; for(i=0;i<14;i=i+1) begin q = delta/y; y = (y+q)/2; end
Questions/Concerns • Transistor Count – Highly dependant on how many transistors we need for floating point calculations • Speed – Will take >50 cycles to achieve a position calculation.