Exercitii
module lpar_att(
input [5:0]i,
output reg [7:0]pi);
wire p, im;
assign im = ^i;
assign p = ~im;
always @(*)
begin
if (~(i[5]^i[4]) || ~(i[4]^i[3]) || ~(i[3]^i[2]) || ~(i[2]^i[1]) || ~(i[1]^i[0])) //verifica daca exista 2 biti alaturati identici
if (i[5]+i[4]+i[3]+i[2]+i[1]+i[0] == 4)
pi <= {im, i, p};
else
pi <= {i, p, im};
else
if (i[5]+i[4]+i[3]+i[2]+i[1]+i[0] == 4)
pi <= {im, p, i};
else
pi <= {p, i, im};
end
endmodule
module boolean_function(
input [3:0]i,
output [1:0]o);
assign o[1] = ~i[3]&~i[2]&~i[1]&~i[0]|~i[3]&~i[2]&i[1]&i[0]|~i[3]&i[2]&~i[1]&~i[0]|~i[3]&i[2]&i[1]&i[0]|i[3]&~i[2]&~i[1]&~i[0];
assign o[0] = ~i[3]&~i[2]&~i[1]&~i[0]|~i[3]&~i[2]&i[1]&~i[0]|~i[3]&i[2]&~i[1]&~i[0]|~i[3]&i[2]&i[1]&~i[0]|i[3]&~i[2]&~i[1]&~i[0];
endmodule
module minimization(
input [3:0]i,
output [1:0]o);
assign o[1] = i[1]&i[0]|~i[1]&~i[0];
assign o[0] = ~i[0];
endmodule