Preface
· You will need Logisim to complete this project assignment. Further information about LogiSim is at http://www.cburch.com/logisim/. If you have not done so already, download and install Logisim 2.7.1 from http://sourceforge.net/projects/circuit/.
1. Introduction
The objective of this project is to reinforce your understanding of binary codes, combinational logic design, and logic simulation. You must: (i) design a combinational logic circuit that displays the hexadecimal value of a gray code input according to the specifications given below; (ii) debug and test your design by simulating it using the Logisim simulator; and (iii) document your work in a short report.
2. Gray Codes
Consider a system where a value is changed by being incremented or decremented by one. The value is encoded by n binary signals. As a specific example, consider a value, represented with 4 bits, being incremented from 3 to 4. In a traditional weighted binary encoding, 3 is represented as 0011 and 4 is represented as 0100. For the change from 3 to 4, three bits must change. Since the time of the transitions in the actual signals will always be different if examined at a sufficiently fine scale, the value will not change instantaneously from 3 to 4. As an example, the transition could occur as follows, where the transitions to value 7 and then value 5 are transient in nature.
0011 (3) 0111 (7) 0101 (5) 0100 (4)
The physical reality of such signal transitions can create problems for applications including mechanical encoders and asynchronous (clock-free) systems. This problem can be overcome using Gray codes, which are non-weighted codes that can be used to represent values. Gray codes have the special property that any two adjacent values differ in just one bit. For example, the standard four-bit Gray code for 3 is 0010 and the code for 4 is 0110. These two codes differ in just one bit, the second bit from the left. So, only a single signal needs to change from 0 to 1 (or 1 to 0 for other values) to represent an adjacent value. You can read more about Gray codes at http://en.wikipedia.org/wiki/Gray_code.
For this project we consider a special type of Gray code called a Balanced Gray code. In a Balanced Gray code, the number of transitions for each bit position is the same when counting through the values. For example, a four-bit Balanced Gray code can be used to count from 0 to 15 (hexadecimal F). There are 16 transitions as the count goes from 0 to 1 to 2 and so on to 15 and then back to 0. For a Balanced Gray code, there are four bit transitions for each of the four bit positions during the 16 total transitions. This property is useful in some applications.
Table I below shows the encoding of hexadecimal values 0 through F using a 4-bit Balanced Gray code.
Table I. Hexadecimal Values and Associated 4-bit Balanced Gray Code and Binary Code
Hexadecimal Value
Balanced Gray Code (X3 X2 X1 X0)
Binary Code (Y3 Y2 Y1 Y0)
0
0 0 0 0
0 0 0 0
1
1 0 0 0
0 0 0 1
2
1 1 0 0
0 0 1 0
3
1 1 0 1
0 0 1 1
4
1 1 1 1
0 1 0 0
5
1 1 1 0
0 1 0 1
6
1 0 1 0
0 1 1 0
7
0 0 1 0
0 1 1 1
8
0 1 1 0
1 0 0 0
9
0 1 0 0
1 0 0 1
A
0 1 0 1
1 0 1 0
B
0 1 1 1
1 0 1 1
C
0 0 1 1
1 1 0 0
D
1 0 1 1
1 1 0 1
E
1 0 0 1
1 1 1 0
F
0 0 0 1
1 1 1 1
3. Design Specification
You are to design a combinational logic circuit that accepts a four-bit Balanced Gray code (X3 X2 X1 X0) as its input and creates a four-bit output (Y3 Y2 Y1 Y0) that uses standard binary encoding to represent the same hexadecimal value. In other words, the circuit translates between the Balanced Gray code input and the binary code output as indicated in Table I. Figure 1 provides a block diagram of the function. You do not need to minimize the logic function or associated circuit, but you may choose to do so.
Note that Table I is not a true truth table in that it is not ordered by in