You are on page 1of 3

module carrier_IIDPWM_state(input clk,input start2,input [11:0]state,input countflag,

output G,output J,output K,output L,


output [11:0]CC_a,output [11:0]CC_b,output [11:0]CC_c,output[11:0]S_C);

reg g;
reg dommy;
reg j,k,l = 1;

wire [11:0]state_change;
reg [11:0]carrier_counter_a;
reg [11:0]carrier_counter_b;
reg [11:0]carrier_counter_c;

assign J = j;
assign K = k;
assign L = l;
assign G = g;
assign S_C = state_change;

assign CC_a = carrier_counter_a;


assign CC_b = carrier_counter_b;
assign CC_c = carrier_counter_c;

DFF D1(state,clk,state_change);
module DFF (input [11:0]in,
input clk,
output reg [11:0]out
);

always@(posedge clk)begin
out <= in;
end
endmodule
always@(posedge clk)
begin
if (start2 == 1)begin
if(state != state_change)
begin
if(state == 0) begin
carrier_counter_a <= 0;
carrier_counter_b <= 0;
carrier_counter_c <= 4000;
g = 1;
end
else if(state == 1)begin
carrier_counter_a <= 4000;
carrier_counter_b <= 0;
carrier_counter_c <= 4000;
g = 0;
end
else if(state == 2)begin
carrier_counter_a <= 4000;
carrier_counter_b <= 0;
carrier_counter_c <= 0;
g = 1;
end
else if(state == 3)begin
carrier_counter_a <= 4000;
carrier_counter_b <= 4000;
carrier_counter_c <= 0;
g = 0;
end
else if(state == 4)begin
carrier_counter_a <= 0;
carrier_counter_b <= 4000;
carrier_counter_c <= 0;
g = 1;
end
else if(state == 5)begin
carrier_counter_a <= 0;
carrier_counter_b <= 4000;
carrier_counter_c <= 4000;
g = 0;
end
end
else
begin
//Carrier_A
if (carrier_counter_a == 0) // set a state of counter up ro counter down
j = 1;
else if (carrier_counter_a == 4000)
j = 0;
if(j == 1) //j=1 mean pos-slope
carrier_counter_a = carrier_counter_a + 8;
else // j !=1 mean neg-slope
carrier_counter_a = carrier_counter_a - 8;

// Carrier_B
if (carrier_counter_b == 0) // set a state of counter up ro counter down
k = 1;
else if (carrier_counter_b == 4000)
k = 0;
if(k == 1)// k=1 mean pos-slope
carrier_counter_b = carrier_counter_b + 8;
else // k !=1 mean neg-slope
carrier_counter_b = carrier_counter_b - 8;

// Carrier_C
if (carrier_counter_c == 0) // set a state of counter up ro counter down
l = 1;
else if (carrier_counter_c == 4000)
l = 0;
if(l == 1)// l=1 mean pos-slope
carrier_counter_c = carrier_counter_c + 8;
else //l !=1 mean neg-slope
carrier_counter_c = carrier_counter_c - 8;

end
end
end
endmodule

You might also like