From 6170d72e0821c99822c3871ea992788eaeff0d93 Mon Sep 17 00:00:00 2001 From: rdiverdi Date: Sat, 23 Sep 2017 19:12:23 -0400 Subject: [PATCH] completed homework 2 --- adder.t.v | 33 +++++++++++++++++++++++++++++++-- adder.v | 21 ++++++++++++++++++++- adderTest.png | Bin 0 -> 11916 bytes adderWave.png | Bin 0 -> 7706 bytes decoder.t.v | 6 ++++-- decoder.v | 11 ++++++++++- decoderTest.png | Bin 0 -> 13441 bytes decoderWave.png | Bin 0 -> 10677 bytes multiplexer.t.v | 44 +++++++++++++++++++++++++++++++++++++++++++- multiplexer.v | 14 +++++++++++++- multiplexerTest.png | Bin 0 -> 14362 bytes multiplexerWave.png | Bin 0 -> 8359 bytes writeup.md | 38 ++++++++++++++++++++++++++++++++++++++ 13 files changed, 159 insertions(+), 8 deletions(-) create mode 100644 adderTest.png create mode 100644 adderWave.png create mode 100644 decoderTest.png create mode 100644 decoderWave.png create mode 100644 multiplexerTest.png create mode 100644 multiplexerWave.png create mode 100644 writeup.md diff --git a/adder.t.v b/adder.t.v index 76109ed..3424c10 100644 --- a/adder.t.v +++ b/adder.t.v @@ -6,9 +6,38 @@ module testFullAdder(); reg a, b, carryin; wire sum, carryout; - behavioralFullAdder adder (sum, carryout, a, b, carryin); + structuralFullAdder adder (sum, carryout, a, b, carryin); initial begin - // Your test code here + $dumpfile("adder.vcd"); + $dumpvars(); + + $display("| input ||expected|| actual |"); + $display("| a | b |cin||sum|cout||sum|cout|"); + a=0; b=0; carryin=0; #1000 + $display("| %b | %b | %b || 0 | 0 || %b | %b |", + a, b, carryin, sum, carryout); + a=1; b=0; carryin=0; #1000 + $display("| %b | %b | %b || 1 | 0 || %b | %b |", + a, b, carryin, sum, carryout); + a=0; b=1; carryin=0; #1000 + $display("| %b | %b | %b || 1 | 0 || %b | %b |", + a, b, carryin, sum, carryout); + a=1; b=1; carryin=0; #1000 + $display("| %b | %b | %b || 0 | 1 || %b | %b |", + a, b, carryin, sum, carryout); + + a=0; b=0; carryin=1; #1000 + $display("| %b | %b | %b || 1 | 0 || %b | %b |", + a, b, carryin, sum, carryout); + a=1; b=0; carryin=1; #1000 + $display("| %b | %b | %b || 0 | 1 || %b | %b |", + a, b, carryin, sum, carryout); + a=0; b=1; carryin=1; #1000 + $display("| %b | %b | %b || 0 | 1 || %b | %b |", + a, b, carryin, sum, carryout); + a=1; b=1; carryin=1; #1000 + $display("| %b | %b | %b || 1 | 1 || %b | %b |", + a, b, carryin, sum, carryout); end endmodule diff --git a/adder.v b/adder.v index d21f7e4..4c600ad 100644 --- a/adder.v +++ b/adder.v @@ -1,4 +1,8 @@ // Adder circuit +`define AND and #50 +`define OR or #50 +`define NOT not #50 +`define XOR xor #50 module behavioralFullAdder ( @@ -20,5 +24,20 @@ module structuralFullAdder input b, input carryin ); - // Your adder code here + //wire axorb; + wire ab; + //`XOR aXORb(axorb, a, b); + `AND aANDb(ab, a, b); + //wire axorbc; + //`AND aXORbc(axorbc, axorb, carryin); + //`XOR aXORbXORc(sum, axorb, carryin); + //`OR abORaXORbc(carryout, ab, axorbc); + wire bc; + wire ac; + `AND bANDc(bc, b, carryin); + `AND aANDc(ac, a, carryin); + + `OR cout(carryout, ab, bc, ac); + `XOR sumout(sum, a, b, carryin); + endmodule diff --git a/adderTest.png b/adderTest.png new file mode 100644 index 0000000000000000000000000000000000000000..66761b6ab8232156c26a447b519446218f0b05ab GIT binary patch literal 11916 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 VCvw&xhn4|AT2fx3OibVJe*nBw$2R}~ literal 0 HcmV?d00001 diff --git a/adderWave.png b/adderWave.png new file mode 100644 index 0000000000000000000000000000000000000000..ea2179e29f4c8e740a965459847680d320e7a2bb GIT binary patch literal 7706 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 literal 0 HcmV?d00001 diff --git a/decoder.t.v b/decoder.t.v index e0e925f..925b969 100644 --- a/decoder.t.v +++ b/decoder.t.v @@ -2,15 +2,17 @@ `timescale 1 ns / 1 ps `include "decoder.v" -module testDecoder (); +module testDecoder (); reg addr0, addr1; reg enable; wire out0,out1,out2,out3; - behavioralDecoder decoder (out0,out1,out2,out3,addr0,addr1,enable); + structuralDecoder decoder (out0,out1,out2,out3,addr0,addr1,enable); //structuralDecoder decoder (out0,out1,out2,out3,addr0,addr1,enable); // Swap after testing initial begin + $dumpfile("decoder.vcd"); + $dumpvars(); $display("En A0 A1| O0 O1 O2 O3 | Expected Output"); enable=0;addr0=0;addr1=0; #1000 $display("%b %b %b | %b %b %b %b | All false", enable, addr0, addr1, out0, out1, out2, out3); diff --git a/decoder.v b/decoder.v index 17836e0..ef19f30 100644 --- a/decoder.v +++ b/decoder.v @@ -1,4 +1,6 @@ // Decoder circuit +`define AND and #50 +`define NOT not #50 module behavioralDecoder ( @@ -17,6 +19,13 @@ module structuralDecoder input address0, address1, input enable ); - // Your decoder code here +wire nA0, nA1; +`NOT notA0(nA0, address0); +`NOT notA1(nA1, address1); +`AND outzero(out0, nA1, nA0, enable); +`AND outzero(out1, nA1, address0, enable); +`AND outzero(out2, address1, nA0, enable); +`AND outzero(out3, address1, address0, enable); + endmodule diff --git a/decoderTest.png b/decoderTest.png new file mode 100644 index 0000000000000000000000000000000000000000..b7d8f0091e4547ad256048d0a947bb589d722e14 GIT binary patch literal 13441 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 VSw0Q{lQyW`rVAU|7;=jM08j#w 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 NB;U!3m5Y1~_+JBL7}Ed% literal 0 HcmV?d00001 diff --git a/writeup.md b/writeup.md new file mode 100644 index 0000000..347550b --- /dev/null +++ b/writeup.md @@ -0,0 +1,38 @@ +# Homework 2 Writeup +Rocco DiVerdi + +### Adder + +The adder has three inputs (a0, a1, and cin) and two outputs (sum and cout). The output for sum is the ones digit of the sum of a, b, and cin, and the output for s is the "tens" digit of the sum. The test shown below demonstrates my working verilog code through a truth table. + +![adder truth table](adderTest.png) + +The gate propogation delays are shown here: + +![adder wave propogation](adderWave.png) + +The adder reaches its final state after a maximum of two gate delays (100 ns). + +### Multiplexer + +The functionality of the four input multiplexer is shown in the truth table below: + +![multiplexer truth table](multiplexerTest.png) + +The gate propogation delays are shown here: + +![multiplexer wave propogation](multiplexerWave.png) + +The multiplexer reaches its final state after a maximum of two gate delays (150 ns). + +### Decoder + +The four output enabled decoder test is shown below + +![decoder truth table](decoderTest.png) + +The gate propogation delays are shown here: + +![decoder wave propogation](decoderWave.png) + +The decoder reaches its final state after two gate delays (100 ns).