Homework Due Wednesday 11/15/00 Before Class
The purpose of this assignment is to start thinking about a problem that is complex enough to have interesting trade-offs and design issues to consider. We will use this example for two closely related purposes: (1) to make process decomposition decisions and (2) figure out how these processes must communicate, which will lead us into a discussion of embedded networking. This is an example of a closely coupled distributed control applications that you might find in a small power plant, in your car (which is a small power plant), a robot, or even in something as simple as a cell phone.
Problem Statement
Because of very short product lifecycles, it is imperative that your company begin writing the software for its products before the hardware design is finalized. This means that you don't know, as a programmer, how the tasks in your system will eventually be divided up among the processors on the circuit board. The idea is that you should be able to write and test your software before final partitioning decisions are made.
Here is a block diagram for the fuel cell power plant system that we discussed in class. That thing with the cross-hatched pattern is a H2 sensor. Though I'm showing two-wire connections to all of the sensors, you can think of them as single wire analog values that you can read with on-chip analog to digital converters (very common).
The system must be in one of the following modes at any time:
This mode transition diagram is like a state transition diagram in logic design, except that each of the modes represents mode-dependent activities rather than state dependent outputs as in logic.. Your first job is to decompose this system into a set of logical tasks that sense, control, and maintain state. Here are some of the rules that must be satisfied.
Turn in a set of task definitions (things that you thing should be grouped together) and make sure to clearly identify communication that must occur between the tasks that you have defined. Your task definitions and communications should make no assumptions about which tasks are running on the same or different processors. Your definitions can be written in pseudo-code or in English. You must partition the system into at least four separate tasks.