/// Solution to LSU EE 4702-1 Spring 2001 Homework 1 module priority_encoder_1_b(grant,found_out,request,found_in); output grant, found_out; input request, found_in; wire request, found_in; reg grant, found_out; always @( request or found_in ) begin found_out = found_in | request; grant = !found_in & request; end endmodule module priority_encoder_1_es(grant,found_out,request,found_in); output grant, found_out; input request, found_in; wire grant, found_out; wire request, found_in; or o1(found_out, found_in, request); and a1(grant, not_found_in, request); not n1(not_found_in, found_in); endmodule module priority_encoder_1_is(grant, found_out, request, found_in); input request, found_in; output grant, found_out; wire found_out = found_in | request; wire grant = !found_in & request; endmodule module test_pe(done, okay_b, okay_is, okay_es); output done, okay_b, okay_is, okay_es; reg done, okay_b, okay_is, okay_es; reg request, found_in; wire grant_b, found_out_b; wire grant_is, found_out_is; wire grant_es, found_out_es; priority_encoder_1_b peb(grant_b,found_out_b,request,found_in); priority_encoder_1_es pees(grant_es,found_out_es,request,found_in); priority_encoder_1_is peis(grant_is,found_out_is,request,found_in); reg [1:0] answers [0:3]; integer i; initial begin done = 0; okay_b = 1; okay_es = 1; okay_is = 1; answers[2'b00] = 2'b00; answers[2'b01] = 2'b01; answers[2'b10] = 2'b11; answers[2'b11] = 2'b01; for(i=0; i<4; i=i+1) begin {request, found_in } = i; #1; if( {grant_b,found_out_b} !== answers[i] ) okay_b = 0; if( {grant_is,found_out_is} !== answers[i] ) okay_is = 0; if( {grant_es,found_out_es} !== answers[i] ) okay_es = 0; end // for (i=0; i<4; i=i+1) done = 1; end // initial begin endmodule // test_pe