Download presentation
Presentation is loading. Please wait.
Published byLenard Powell Modified over 9 years ago
1
Project 4 A Simple Taximeter Design Yuqi Wang & Suhuai Song
2
Introduction This taximeter should be able to calculate the “Fare” and “EXTRA” and then sum them to find out the total cost at the end. There are three modes: Sleep mode Mile charge mode Time charge mode
3
Requirements INPUTS: CLK: makes the code start working VACANT: when this button on, the meter is off and all the display will be off. HIRED: when this button on, the meter is working. TIME: when time is on, the time charge will be start. SET_RATE+: set the rate higher manually. SET_RATE-: set the rate lower manually. TOTAL: when the button is on, allows the meter to calculate the total fees the customer has to pay. Then assign the total fees value into “FARE” and at the same time “EXTRA” return to zero.
4
Requirements OUTPUTS (7 Segment Display Number): RATE(7 bits): the fee of per miles. The default value is $3. FARE_2, FARE_1, FARE_0, FARE_d, FARE_dd (7 bits): the value of total miles fee. When the “TOTAL” button is on, the “FARE” should be showing total fee the customer should pay. EXTRA_2, EXTRA_d, EXTRA_dd: the value of total times charge. The default value is $1 per minutes.
5
Code Structure Module Taximeter(input, output); Input; Output; Always (posedge CLK) begin If (HIRED && ~VACANT) begin If (miles <= 20 && SET_RATE+ == 0 && SET_RATE- == 0) begin // Condition 1 …. End If (miles > 20 && SET_RATE+ == 0 && SET_RATE- == 0) begin // Condition 2 …. End If (SET_RATE+ == 1 && SET_RATE- == 0) begin // Condition 3 …. End If (SET_RATE+ == 0 && SET_RATE- == 1) begin // Condition 4 …. End If (~HIRED && VACANT) begin … End
6
Code Structure In each condition: If (TOTAL == 0) begin // calculate the fare of total miles fee End If (TIME == 1) begin // calculate the extra of total times fee End If (TOTAL == 1) begin // calculate the fare of sum of the miles fee and times fee and reset the all the extra value to 0. End
7
Code Stucture 7 Segment Decoder case(RATE) 4'b0000: rate = 7'b1111110; 4'b0001: rate = 7'b0110000; 4'b0010: rate = 7'b1101101; 4'b0011: rate = 7'b1111001; 4'b0100: rate = 7'b0110011; 4'b0101: rate = 7'b1011011; 4'b0110: rate = 7'b1011111; 4'b0111: rate = 7'b1110000; 4'b1000: rate = 7'b1111111; 4'b1001: rate = 7'b1111011; endcase
8
Simulation Results HIRE = 0, VACANT = 1
9
Simulation Results HIRED = 1, VACANT = 0, TIME = 1, SET_RATE+ = 0, SET_RATE- = 0, TOTAL = 0, miles = 15, times = 8
10
Simulation Results HIRED = 1, VACANT = 0, TIME = 1, SET_RATE+ = 0, SET_RATE- = 0, TOTAL = 1, miles = 50, times = 8
11
Simulation Results HIRED = 1, VACANT = 0, TIME = 1, SET_RATE+ = 1, SET_RATE- = 0, TOTAL = 1, miles = 50, times = 8
12
Simulation Result HIRED = 1, VACANT = 0, TIME = 1, SET_RATE+ = 0, SET_RATE- = 1, TOTAL = 0, miles = 30, times = 5
13
Layout
14
Questions?
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.