lab6
This commit is contained in:
56
iverilog/tobb/lab6/bibp.v
Normal file
56
iverilog/tobb/lab6/bibp.v
Normal file
@ -0,0 +1,56 @@
|
||||
module bibp #(parameter N = 3) (
|
||||
input [(N*2)+2:0] buyruk,
|
||||
output reg [N:0] sonuc
|
||||
);
|
||||
integer i, a, b, c, count;
|
||||
|
||||
always @(buyruk) begin
|
||||
case (buyruk[(N*2)+2:N*2])
|
||||
default: sonuc = {(N+1){1'b0}};
|
||||
|
||||
3'b000: sonuc = buyruk[(N*2)-1:(N*2)-3] + buyruk[(N*2)-4:0];
|
||||
3'b001: sonuc = buyruk[(N*2)-1:(N*2)-3] - buyruk[(N*2)-4:0];
|
||||
3'b010: sonuc = buyruk[(N*2)-1:(N*2)-3] & buyruk[(N*2)-4:0];
|
||||
3'b011: sonuc = buyruk[(N*2)-1:(N*2)-3] | buyruk[(N*2)-4:0];
|
||||
|
||||
3'b100: begin
|
||||
for (i = 0; i <= (N*2)-2; i++)
|
||||
if (buyruk[i] == buyruk[i+1])
|
||||
sonuc = {(N+1){1'b1}};
|
||||
else
|
||||
sonuc = {(N+1){1'b0}};
|
||||
end
|
||||
3'b101: begin
|
||||
sonuc = {(N+1){1'b0}};
|
||||
for (a = 0; a < (N*2); a++) begin
|
||||
if (buyruk[a] == 1)
|
||||
sonuc = {(N+1){1'b1}};
|
||||
end
|
||||
end
|
||||
|
||||
3'b110: begin
|
||||
count = 0;
|
||||
for (b = 0; b < (N*2); b++) begin
|
||||
if (buyruk[b] == 1)
|
||||
count = count + 1;
|
||||
end
|
||||
if (count % 2 == 0)
|
||||
sonuc = {(N+1){1'b1}};
|
||||
else
|
||||
sonuc = {(N+1){1'b0}};
|
||||
end
|
||||
|
||||
3'b111: begin
|
||||
count = 0;
|
||||
for (c = 0; c < (N*2); c++) begin
|
||||
if (buyruk[c] == 1)
|
||||
count = count + 1;
|
||||
end
|
||||
if (count % 2 == 0)
|
||||
sonuc = {(N+1){1'b0}};
|
||||
else
|
||||
sonuc = {(N+1){1'b1}};
|
||||
end
|
||||
endcase
|
||||
end
|
||||
endmodule
|
Reference in New Issue
Block a user