SLIDE 5 Ø 5
addsub.v
module addsub (a, b, addnsub, result); parameter SIZE = 8; // default word size is 8 input [SIZE-1:0] a, b; // two SIZE-bit input input addnsub; // Control bit: 1 = add, 0 = sub
- utput reg [SIZE:0] result; // SIZE+1 bit result
always @(a, b, addnsub) begin if (addnsub) result = a + b; else result = a – b; end endmodule
addsub_dc.v
module addsub ( a, b, addnsub, result ); input [7:0] a; input [7:0] b;
input addnsub; wire n8, n9, n10, n11, n12, n13, n14, n15, n16, n17, n18, n19, n20, n21, n22, n23, n24, n25, n26, n27, n28, n29, n30, n31, n32, n33, n34, n35, n36, n37, n38, n39, n40, n41, n42, n43, n44, n45, n46, n47, n48, n49, n50, n51, n52, n53, n54, n55, n56; XNOR2X2 U4 ( .A(addnsub), .B(n8), .Y(result[8]) ); AOI21X2 U5 ( .A(n9), .B(n10), .C(n11), .Y(n8) ); AOI21X2 U6 ( .A(n12), .B(n13), .C(a[7]), .Y(n11) ); … INVX1 U60 ( .A(a[0]), .Y(n52) ); XNOR2X2 U61 ( .A(b[0]), .B(addnsub), .Y(n54) ); endmodule
58 cells used