IEEE© 1997 IEEE. Personal use of this material is permitted. However, permission to reprint/republish this material for advertising or promotional purposes or for creating new collective works for resale or redistribution to servers or lists, or to reuse any copyrighted component of this work in other works must be obtained from the IEEE. By choosing to view this document, you agree to all provisions of the copyright laws protecting it.

[ Index | Introduction | Expositive | Demonstrative | Interactive | Practical | Conclusion | References ]

The Practical Methodology

        Continuing the methodological classification of learning tools, that represents the skeleton of this paper, it is now time to make clear what we mean with the term "practical" applied to a pedagogical methodology and which are the tools that apply such methodology [23]. The learning tools presented so far are targeted to foster the understanding of concept or to acquire some operational capability. They process, therefore, contents that their developers have built within the tools themselves. The tools belonging to our practical methodology, instead, are designed to process, within a specific field, data that the learner has entered [24].
        In a course of digital electronics, beyond the ability of understanding concepts, methodologies and existing implementations, it is necessary to acquire design capabilities. Conceiving circuits and systems is generally more difficult than understanding and analyzing them and it requires different and complementary skills. It is also difficult to teach, because the solution to a design problem is not unique, and consequently the presentation of just one possible solution is somewhat misleading, while a thorough investigation of many different design alternatives is too time-consuming when carried out only with paper and pencil [18].
        The situation demands the services of a kind of tools that allow the students to process their own data with the final target of designing and testing a system [3]. The use of professional simulators for this process is not recommended because students cannot have the skills and the frame of mind of the accomplished digital designer, for whom the professional tools are made.
        We have developed a set of tools to support this approach. They are divided in two groups: local tools and general purpose tools. To the first group belong simple software applications with a limited scope: typical examples are the code-converters, the memory maps generator, tools for Boolean function synthesis and minimization and so on. Local tools are usually developed using the hypertext authoring environment. The second group is composed of three general purpose simulators (digital networks, state machines and microprocessor). They are custom-built applications with approximately the same characteristics of professional CAD tools for electronics, except that their design has been carried out with a strong pedagogical orientation [25]. Their construction has required different software instruments and programming skills.

Local Tools

        A typical local tool (Fig. 16) performs the conversion from a digital number to the corresponding binary. In the automatic mode it works as a tool: when the user needs a conversion, may do so by typing the number in the input box (white in the figure) and clicking on the proper button. In the manual mode the tool assumes a pedagogical value (interactive methodology) because all the calculations necessary for the conversion must be executed by the learner, under the control of the tool (working example).
        Another local tool (Fig. 17) has been designed to help the students practicing in the field of memory systems. It provides, as output, the memory map, the chip connections and the decoding circuit of a microcomputer memory system. It takes, as input, the amount and type of the required memory and the size of available chips (working example).

General-Purpose Tools

        In this paragraph we provide a short description of the three simulators. Given their relative complexity, it is beyond the purpose of this paper to allow the reader to play with working examples, as we did with the learning tools presented before. We plan to do so in another paper, dedicated specifically to the general-purpose tools.

General-purpose Digital Simulator

        The Digital Circuit Simulator (DCS) appears to the user as a digital circuits editor (Fig.18), with the possibility of choosing components from a function library and to interconnect them with wires. DCS does not reproduce, as many commercial educational simulators do, the "laboratory metaphor". Real laboratory instruments are too complicated and distracting for a beginner student. It is simpler to show a waveform as a timing diagram instead of reproducing the screen of an oscilloscope to be controlled by a virtual panel full of knobs [26]. A novel feature of the tool is the provision to operate at different levels of user competence. As an example, the number and complexity of the available components are functions of the level chosen.
        The student interacts with the circuit under simulation by flipping the input switches, running the clock generators and observing the resulting changes. An output window shows the timing diagrams of input, output and clock signals. The simulator has two modes of operation: "run" and "step". In the "run" mode the signals are visualized as flowing timing waveforms. In the "step" mode the simulation proceeds by events, to observe in details the circuit behavior. Such mode of operation is especially useful for troubleshooting a network just designed. The digital networks, and the waveforms obtained by simulation, can be stored and used for future sessions, or printed.
        In the case of anomalous circuit behavior (such as iteration of unknown states or uncertainty of the final state) the simulator warns the user with messages whose content is function of the competence level described above.

Finite State Machine Simulator

        The Finite State Machine simulator speeds up considerably the process of verifying the design of an ASM-based FSM. Three main integrated modules compose the FSM simulator: the graphic editor, the logic simulator and the map synthesizer [27].
        The editor allows the graphical construction of the FSM diagram, according to the rules of the ASM method. In this phase the student is assisted by a toolbox containing the drawing tools, and a window showing the properties of the selected objects. ASM charts are constructed by using the mouse and toolbox’s buttons to insert and to interconnect the appropriate blocks, captions and comments. The properties of the objects inserted in the diagram are defined, examined and modified by a window which content is context-sensitive. A syntactic and semantic corrector identifies the most common mistakes, such as diagram inconsistency, duplication of names and codes, and insufficient number of state variables.
        The logic simulator generates the timing waveforms of the FSM state and output variables directly from the analysis of the ASM chart. Time tracing of input, state and output variables takes places in a dedicated window. In this window the student can interact, step by step, with the FSM time evolution by clicking on buttons corresponding to the machine inputs. At the same time, the student can observe the current state involved and the path to the next one, highlighted in the window containing the ASM chart. The resulting effect is of a visual animation of the machine. It is worth to note that this tool, allowing the preliminary simulation of the ASM chart before going to the synthesis, presents the logic of the state sequence without the complication of the network synthesis, as it would be the case using a professional digital simulator.
        The last module, the logic synthesizer, provides automatically the next state and output Karnaugh maps from the FSM diagrams. Fig. 19 presents three windows of the Finite State Machine simulator: the state diagram editor with its toolbar (left), the simulation presented as a timing diagram (bottom-right) and the synthesis (top-right).

Microprocessor Emulator

        The microprocessor emulator (EMUZ80) is a tool to write and run programs for the Z80 microprocessor (the one presented in the course) [14]. The emulator places itself between an assembly Z80 program and the computer under which it runs, by translating the assembly language program into a code executable by the host computer and running it. For the sake of simplicity, the microprocessor is initially presented to the learner in a reduced form (only a subset of its architecture is used) and the emulator can be successively configured to represent the complete microprocessor structure using a menu command. Another pedagogical aspect is the emulation of the memory, that allows students to use properly ROM (Read Only Memory) and RAM (Random Access Memory) present in the system. In a professional emulator (as well as in a real system!), programming or memory allocation errors usually produce system crashes that cannot be easily understood by the beginner student. Our emulator provides a protection from most of this kind of errors by inhibiting programs to produce the operations that would be fatal in a real system: it supplies warning and information when such errors occur. For example, unlike professional emulators, the emulator warns the learner when attempting to read a RAM memory location that has not been previously initialized.
        The emulator provides the following functions: program editing, assembling of mnemonic instructions into machine code, code loading in the emulated memory, execution of the code. Because only the first and the last function must be controlled by the user, the intermediate phases are carried out by the emulator in a transparent mode. Program execution may be continuos or step-by-step, with the possibility of setting breakpoints and inputting manually the contents of registers and memory locations (Fig. 20). A complete hypertextual on-line help completes the emulator.

Figure 16

Fig. 16. A decimal-to-binary conversion tool.

Figure 17

Fig. 17. A screen-shot of a tool to build memory systems.

Figure 18

Fig.18. The Digital Circuit Simulator (DCS) with a circuit under simulation and the output window.

Figure 19

Fig. 19. The Finite State Machine simulator: the state diagram editor and its toolbar (left),
the simulation (bottom-right) and the synthesis (top-right).

Figure 20

Fig. 20. The emulator, executing a program in Z80 Assembler, has reached a breakpoint.

Working Examples