VLSI Design Project 2024/2025 - Design Phase

Specification of a Simple Sports Altimeter


Overview

A sports altimeter is required which provides the following information to the user:

The altimeter is based around a single CMOS chip (to be designed by you). The chip receives information from a pressure sensor module via an I2C (Inter-Integrated Circuit) bus. Two buttons are provided for the user. These are labelled Mode and Trip. The chip must drive an 8-character L.C.D. display for the indication of pressure, altitude, vertical speed or time. The chip is clocked synchronously at 32.768 kHz.

Modes of operation

A fully configured sports altimeter will include a barometer unit which records atmospheric pressure, an altimeter unit which records height above sea level, a variometer which records the current vertical speed and a timer unit which records trip duration.

After system reset or power on, the altimeter will show atmospheric pressure on the 8-character display. Pressing the Mode button causes the altimeter to cycle through the following modes:

Barometer

The barometer is required to display the atmospheric pressure derived from the pressure sensor module.

The units of measurement for atmospheric pressure should be millibars (mb).

The following figure shows the expected output on the 8-character display for a atmospheric pressure of 1013mb.

Altimeter

The altimeter displays the current height above sea level.

The units of measurement altitude should be metres (m).

The following figure shows the expected output on the seven-segment display for a height of 8849m above sea level.

Trip Timer

The trip timer is required to display the cumulative time for a journey.

The trip timer will be zeroed at power on by an RC circuit which will operate the system reset. The trip timer will also be zeroed whenever the Trip button is pressed. (N.B. This causes a SYNCHRONOUS resetting of this unit and is totally separate from the nReset input that causes an ASYNCHRONOUS reset of all registers).

The units of measurement for time should be hours, minutes and seconds.

The following figure shows the expected output on the seven-segment display for a trip time of 1 hour, 59 minutes and 30 seconds.

Note that the trip timer and the trip button are most useful when they support the display of additional measurements related to a trip.

Variometer (VSI)

The variometer displays the current vertical speed. The algorithm chosen for the calculation of vertical speed can make a big difference to the user experience. While some algorithms give values that oscillate significantly about the correct speed, others give obviously incorrect values. A sophisticated algorithm will give relatively stable results both at high vertical speed and at low vertical speed.

The units of measurement for vertical speed should be metres per second (m/s).

The following figure shows the expected output on the seven-segment display for a vertical speed of -0.08m/s (note that a negative value here indicates descent rather than ascent)

Typically aerial sports (e.g. skydiving) require a larger range of vertical speed than mountain sports (e.g. skiing or hill walking). Aerial sports also involve much greater acceleration and hence require more rapid update of the display. On the other hand, mountain sports require a higher resolution and a stable display. An altimeter designed both for aerial sports and mountain sports will need to seemlessly support all of these the requirements.

Altitude Calculation

At power on, the sports altimeter should assume that the atmospheric pressure at sea level is 1013.25mb. With knowledge of the atmospheric pressure at sea level and the atmospheric pressure at the current location, it is possible to perform a calculation to estimate the altitude.

Note that many embedded systems will avoid the use of complex calculations using floating point numbers because these need a lot of resources and are slow. Instead, integer calculations are preferred along with the use of approximation techniques such as look-up tables and interpolation.

Sea Level Pressure Initialisation

A fully configured sports altimeter will include the ability to set the atmospheric pressure at sea level. Sea level pressure initialisation is achieved by pressing the Trip and Mode buttons simultaneously in the atmospheric pressure display mode. There are six sub-states withinthis mode:

In each state the Trip button is used to change the value of the chosen digit until it is correct, pressing the Mode button will advance to the next state. After four presses of the Mode button, the system should return to atmospheric pressure display mode. Note that this allows the atmospheric pressure at sea level to be set with a resolution of 0.01mb although the current atmospheric pressure will normally be displayed with a resolution of 1mb.

Altitude Initialisation

A fully configured sports altimeter will include the ability to set the current altitude (this offers an alternative method of calibrating the system to take account of changes in the atmospheric pressure at sea level). The altitude initialisation is achieved by pressing the Trip and Mode buttons simultaneously in the altitude display mode. There are four sub-states withinthis mode:

In each state the Trip button is used to change the value of the chosen digit until it is correct, pressing the Mode button will advance to the next state. After four presses of the Mode button, the system should return to altimeter display mode.

Range, Resolution and Accuracy

For each of the sports altimeter modes, you should choose suitable values for range, resolution and accuracy.

In particular, a proper estimation of the accuracy of your altimeter demonstrates that you have a good understanding of its limitations and is essential if you are to get a good mark for the design exercise.

Further Technical Information

Buttons

Normally open, wired between ground and chip input. The input protection pad must have integral pull up resistor.

When designing a system to detect the buttons being pressed, you should be aware that the time that a button will be held down is unpredicable and that the switch may bounce when it is pressed and/or when it is released. You may assume that the switch bounce does not last for more than 25ms.

I2C Altimeter Sensor

While operation with a BMP 390 Digital Pressure Sensor via its I2C (Inter-Integrated Circuit) connection would be ideal, it is recognised that this device is difficult to use. For this reason, it is suggested that all teams start by targetting a simplified I2C pressure sensor which also uses an I2C connection. While the former module supports a number of different commands and returns results of varying lengths, the simplified slave supports just one 8-bit command (0x00) which causes it to return a 24-bit integer value representing the current atmospheric pressure in Pascals (100 Pascals = 1 millibars).

8x1 LCD Display

The display will be a NHD-0108BZ-RN-YBW type (or a 3.3v version of the same).

I/O information

For the sake of common test vectors you must use the signal names given below in your design.

Inputs

        Clock       (32.768 kHz with active rising edge)
        nReset      (Active Low)
        Test        (Active High)
        SDI         (Active High)
        nMode       (Active Low)
        nTrip       (Active Low)

Outputs

        SDO         (Active High)
        RS          (Active High)
        RnW         (Active High)
        E           (Active High)
        SCL         (Active High)

Bidirectional

        DB[7:0]     (Active High)
        SDA         (Active High Open Drain with Pull-Up Resistor)

Pad Placement

The arrangement of pads is provided below.


Iain McNally

28-1-2025 (v1.0)