////////////////////////////////////////////////////////////////////////////////
///
/// Solution to LSU EE 3755 Fall 2001 Homework 1
///
/// Name: David M. Koppelman
/// Instructions:
//
// Copy this to a file named hw01sol.v to directory ~/hw in your
// class account. (~ is your home directory.) Use this
// file for your solution. Your entire solution should be in
// this file.
//
// Do not rename the modules in this file and be sure to use the
// directory and filename given above.
// Assignment: http://www.ee.lsu.edu/ee3755/2001f/hw01.pdf
////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
/// Problem 1
///
module hello();
initial begin
$display("Hello, world!");
end
endmodule
////////////////////////////////////////////////////////////////////////////////
/// Problem 2
///
module eq_slice_es(eo,a,b,ei);
input a, b, ei;
output eo;
wire aneb, aeqb;
xor x1(aneb,a,b);
not n1(aeqb,aneb);
and a1(eo,aeqb,ei);
endmodule
////////////////////////////////////////////////////////////////////////////////
/// Problem 3
///
module eq_slice(eo,a,b,ei);
input a, b, ei;
output eo;
assign eo = ( a == b ) && ei;
endmodule
////////////////////////////////////////////////////////////////////////////////
/// Problem 4
///
module equal(eq,a,b);
input [3:0] a, b;
output eq;
wire e1, e2, e3;
eq_slice es3(e3,a[3],b[3],1'b1);
eq_slice es2(e2,a[2],b[2],e3);
eq_slice es1(e1,a[1],b[1],e2);
eq_slice es0(eq,a[0],b[0],e1);
endmodule
////////////////////////////////////////////////////////////////////////////////
/// Test Bench
///
// Do not remove comment below.
// exemplar translate-off
module test();
reg abit, bbit, ei;
wire eoe, eoi, eq;
reg [3:0] a, b;
eq_slice_es ees(eoe,abit,bbit,ei);
eq_slice eis(eoi,abit,bbit,ei);
equal eqaul1(eq,a,b);
integer i, es_probs, ei_probs, eq_probs;
reg shadow_eo, shadow_eq;
initial
begin
es_probs = 0;
ei_probs = 0;
eq_probs = 0;
for(i=0; i<8; i=i+1)
begin
{abit,bbit,ei} = i[2:0];
shadow_eo = ( abit == bbit ) && ei;
#1;
if( shadow_eo !== eoe )
begin
if( !es_probs )
$display("Problem with eq_slice_es at a = %d, b = %d, ei = %d",
abit, bbit, ei);
es_probs = es_probs + 1;
end
if( shadow_eo !== eoi )
begin
if( !ei_probs )
$display("Problem with eq_slice at a = %d, b = %d, ei = %d",
abit, bbit, ei);
ei_probs = ei_probs + 1;
end
end
for(i=0; i<256; i=i+1)
begin
{a,b} = i[7:0];
shadow_eq = a == b;
#1;
if( shadow_eq !== eq )
begin
if( !ei_probs )
$display("Problem with equal at a = %d, b = %d", a, b);
eq_probs = eq_probs + 1;
end
end
$display("Done with tests.");
if( eq_probs + es_probs + ei_probs == 0 ) $display("No problems found.");
end
endmodule