[Solved] C-Project a logic circuit

$25

File Name: C-Project_a_logic_circuit.zip
File Size: 235.5 KB

SKU: [Solved] C-Project a logic circuit Category: Tag:
5/5 - (1 vote)

For this assignment, you are expected to write a program which simulates a logic circuit for a set of given inputs. In this assignment, you are going to use structure and dynamic memory allocation.

Be careful with file names. You wont given a chance to correct any mistakes.

  • Your program reads two files:
    • txt
    • txt
  • Your program creates a text file:
    • txt
  • According to content in txt, the program dynamically creates necessary structures for a logic circuit and evaluates the cases listed in input.txt.
  • Your program prints the output to txt. Each output step should be on a separate line. circuit.txt
  • Each line starts with a keyword. Possible keywords:

INPUT

AND

OR

NOT

FLIPFLOP

  • The first line specifies input labels. Labels are separated by spaces. Example:

INPUT a input2 c3 k

  • Here there are 4 inputs are defined. Each has an identifier. a, input2, c3, k.
  • AND keyword specifies that there is an and gate defined. AND keyword follows the identifier for the gate and two other identifiers for the inputs. Example:

AND gate_A c3 another_id

  • Here the and gate is identified by the string gate_A. Its inputs are identified c3 and another_id. These identifiers can be input identifiers or identifiers for other gates.
  • OR keyword specifies that there is an or gate defined. OR keyword follows the identifier for the gate and two other identifiers for the inputs. Example:

OR gate_B ck id3

  • Here the or gate is identified by the string gate_B. Its inputs are identified ck and id3. These identifiers can be input identifiers or identifiers for other gates.
  • NOT keyword specifies that there is an not gate defined. NOT keyword follows the identifier for the gate and one other identifier for its input. Example:

NOT gate_C c5

  • Here the not gate is identified by the string gate_C. It has only one input an it is identified by the string c5.
  • FLIPFLOP keyword specifies that there is an flip-flop gate defined. FLIPFLOP keyword follows the identifier

for the gate and one other identifier for its input. Example:

FLIPFLOP gate_F c6

  • Here the flip-flop gate is identified by the string gate_F. Its input is identified by c6. txt
  • Each line is a list of 1 and 0. Example:

1 0 1 1

0 1 1 1

  • 0 1 0
  • 0 0 1

Example:

  • Suppose that txt is has the following content:

INPUT a b c d AND and1 a b

OR or1 and1 c

NOT n1 d

FLIPFLOP f1 n1

AND a2 or1 f1

  • txt has the following content:

1 1 0 1

1 0 1 0

1 1 1 0

  • Assume that initially former-out of any FLIPFLOP is 0.
  • Any FLIPFLOPs should preserve the state throughout the evaluation of the whole txt.
  • Each line in txt is assigned to identifiers a, b, c, d, defined in circuit.txt. According to the truth tables, outputs of gates are calculated.
  • For the input.txt given, the contents of output.txt should be:

0

1

0

Remarks

  • Output is not defined explicitly. It is your job to figure out the output pin. There will always going to be one output pin.
  • Each identifier is unique. Max length of each identifier is 10
  • Assume there wont be multiple spaces separating the identifiers, keywords or data. Tokenize it according to this assumption.
  • There wont be any errors in the files.
  • You have to use dynamical memory allocation and struct. You have to use struct in order to represent the gates of the circuit.
  • Do not submit your code without testing it with several different scenarios. Try cases with multiple gates of the same type. Try cases with single gate. Try txt with thousands of lines. Try cases with many gates. Try cases where there are many inputs.
  • You can use c structs, unions, arrays, c strings, pointers, recursion.
  • Write comments in your code.
  • Do not print anything to stdout and stderr.
  • Do not submit any of the files you used for testing.
  • Do not submit your output file.

Truth Tables:

  • AND
a b out
0 0 0
0 1 0
1 0 0
1 1 1
a b out
0 0 0
0 1 1
1 0 1
1 1 1
  • OR
  • NOT
a out
0 1
1 0
  • FLIPFLOP
a former_out out
0 0 0
0 1 1
1 0 1
1 1 0

Reviews

There are no reviews yet.

Only logged in customers who have purchased this product may leave a review.

Shopping Cart
[Solved] C-Project a logic circuit
$25