Presentation is loading. Please wait.

Presentation is loading. Please wait.

M3 Overall Project Objective: To design a chip for a SCUBA diver that does real-time calculations to warn the diver of safety concerns including decompressions.

Similar presentations


Presentation on theme: "M3 Overall Project Objective: To design a chip for a SCUBA diver that does real-time calculations to warn the diver of safety concerns including decompressions."— Presentation transcript:

1 M3 Overall Project Objective: To design a chip for a SCUBA diver that does real-time calculations to warn the diver of safety concerns including decompressions sickness and lung overexpansion. Stage : 26 Jan 04 Architecture Proposal ProDiver 525 Kavita Arora (M3-1) Lisa Gentry (M3-2) *Steven Wasik (M3-3) Karolina Werner (M3-4) Design Manager: Steven Beigelmacher

2 M3: ProDiver 525 Status Specification definition (done) Specification definition (done) Architecture Architecture –Matlab Simulation (done) –Verilog Simulation (done) –Hardware diagrams (done) –Verification of Verilog (just about done) Totally Gate Level Verilog (somewhat) Totally Gate Level Verilog (somewhat) Floorplanning (next week’s project) Floorplanning (next week’s project) Still have a long way to go… Still have a long way to go…

3 M3: ProDiver 525 Design Decisions Lookup tables for time to flight and time left (logarithms) Lookup tables for time to flight and time left (logarithms) –With some math, but we’re not computing log Condense roms, redundant logic Condense roms, redundant logic –Less transistors, but more control logic Multiplier in PressureCalculator Multiplier in PressureCalculator –Fixed point

4 M3: ProDiver 525 Results: module architecture

5 M3: ProDiver 525 Some modules up close Time left Get Max Pressure/ Depth

6 M3: ProDiver 525 Results: Matlab code function dive2(maxdepth, dive_min, rest_min) clear depthvector; clear bodyvector; clear out; %maxdepth=60; dive_min=42; rest_min=45; depthvector = [maxdepth*ones(1,60*dive_min) 0*ones(1,60*rest_min)]; %Pressure Calculator [bodyvector,pres_out]=pressurecalculator(depthvector); figure, plot(1:1:length(bodyvector),bodyvector,'r'); hold on plot(1:1:length(depthvector),depthvector,'x'); %Ascention Watcher asc_out=ascentionwatcher(depthvector); figure, plot(1:1:length(asc_out),asc_out,'x'); %GetMax [max_d,bla] = getmax(depthvector); [max_p,t_since] = getmax(bodyvector); %Time to Flight time_flight = timetoflight(max_p,t_since); %Time Left for i=1:length(depthvector) time_left(i) = timeleft(bodyvector(i),depthvector(i),31); end

7 M3: ProDiver 525 Matlab Example Internal and external pressure Ascension watcher : 1 = too fast Diver goes at 75 feet for 40 minutes Rests at the surface for 50 minutes Time to flight = 1390 minutes

8 M3: ProDiver 525 Matlab Example Time left at depth Diver goes at 75 feet for 40 minutes Rests at the surface for 50 minutes

9 M3: ProDiver 525 Results: Verilog code //top level module module top(clk,rst,depth, kchoice,saftyOut,AscOut,time2fly,timeleft,timeL,btime); input clk, rst; input clk, rst; input [8:0] depth; input [8:0] depth; input [2:0] kchoice; input [2:0] kchoice; output [11:0] time2fly; output [11:0] time2fly; output [11:0] timeleft; output [11:0] timeleft; output AscOut; output AscOut; output [1:0] saftyOut; output [1:0] saftyOut; output [11:0] btime; output [11:0] btime; wire [1:0] k; wire [1:0] k; wire [8:0] maxD,maxP,currPress; //maximum depth the diver has gone wire [8:0] maxD,maxP,currPress; //maximum depth the diver has gone wire [8:0] totalTime; //total time since diver reached max deptth wire [8:0] totalTime; //total time since diver reached max deptth wire [8:0] timeL; //time left before rest stop wire [8:0] timeL; //time left before rest stop wire [1:0] k; wire [1:0] k; getK k1(k,kchoice);//this outputs the k values [y,x] getK k1(k,kchoice);//this outputs the k values [y,x] maxPressDep p1(clk,rst.maxP,currPress,totalTime,maxD, depth) maxPressDep p1(clk,rst.maxP,currPress,totalTime,maxD, depth) timeTofly t1(clk,rst,time2fly,maxP,totalTime); timeTofly t1(clk,rst,time2fly,maxP,totalTime); bottomTime b1(clk, rst, depth); bottomTime b1(clk, rst, depth); timeLeft t2(clk,rst,timeL,depth,currPress); timeLeft t2(clk,rst,timeL,depth,currPress); pressureCalc p1(clk,rst,k,depth); pressureCalc p1(clk,rst,k,depth); saftywatch s1(saftyOut,currPress); saftywatch s1(saftyOut,currPress); ascensionWatch a1(clk,rst,depth,AscOut); ascensionWatch a1(clk,rst,depth,AscOut);endmodule

10 M3: ProDiver 525 Transistor Estimates (old) Get K = ~200 Get K = ~200 Pressure Calculator = ~4000 Pressure Calculator = ~4000 Ascension Watcher = ~400 Ascension Watcher = ~400 Time to Flight = ~3000 Time to Flight = ~3000 2 Get Max = 600 * 2 = ~1200 2 Get Max = 600 * 2 = ~1200 Time Left = ~4000? Time Left = ~4000? Overhead Control Logic = ~400 Overhead Control Logic = ~400 TOTAL = ~13200 TOTAL = ~13200

11 M3: ProDiver 525 Transistor Estimates (new) Get K = ~80 Get K = ~80 Pressure Calculator = ~5000 Pressure Calculator = ~5000 Ascension Watcher = ~200 Ascension Watcher = ~200 Time to Flight = ~1500 Time to Flight = ~1500 1 Get Max = 800 1 Get Max = 800 Time Left = ~2500 Time Left = ~2500 Bottom Time = ~1000 Bottom Time = ~1000 Overhead Control Logic = ~1500 Overhead Control Logic = ~1500 TOTAL = ~12580 TOTAL = ~12580

12 M3: ProDiver 525 Problems & Concerns Still need to fully verify Still need to fully verify Time to fly has a problem Time to fly has a problem –Need to redo logic here


Download ppt "M3 Overall Project Objective: To design a chip for a SCUBA diver that does real-time calculations to warn the diver of safety concerns including decompressions."

Similar presentations


Ads by Google