Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Xst:528 - Multi-source error while synthesising using ISE

Status
Not open for further replies.

prasad1

Newbie level 4
Newbie level 4
Joined
Jan 4, 2008
Messages
7
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,349
ERROR:Xst:528 - Multi-source in Unit <sin_wave2> on signal <i<3>>
ERROR:Xst:528 - Multi-source in Unit <sin_wave2> on signal <i<2>>
ERROR:Xst:528 - Multi-source in Unit <sin_wave2> on signal <i<1>>
ERROR:Xst:528 - Multi-source in Unit <sin_wave2> on signal <i<0>>

this is my code:

module sin_waveq (clk,rst,I,sine1);
input I,clk,rst;
output [7:0] sine1;
reg [7:0] index;
wire [7:0] value;
reg [7:0] sine1;
reg [1:0] i;
wire clk_4;
wire clk1;
reg en;
initial
begin
i=2'bZZ;
index=8'hzz;

end
assign clk1= clk;
always@(posedge clk)
begin
if (rst==1'b1)
begin
index=8'hzz;
en=0;
end
else
begin
index=8'Hff;

if(I==0)
i=2'b10;
else if (I==1'b1)
i=2'b00;
end
en=1'b1;
end

clock_4 clk123 (en,clk_4);

always @ (posedge clk_4)
begin
case (i)
2'b00 :begin index = index +8'd1;sine1=value;if (index ==8'd124) i= 2'b01; end
2'b01 : begin index = index -8'd1;sine1=value;if (index == 8'd0 ) i= 2'b00;end
2'b10 :begin index = index +8'd1;sine1=-value;if (index ==8'd124) i= 2'b11;end
2'b11 : begin index = index -8'd1;sine1=-value;if (index == 8'd0) i= 2'b10;end
//default :begin sine2=8'bzzzzzzzz; index1=@Q 8'b0; end
endcase
end

luk_sin2 aaa2 (index,value);

endmodule
 

Remove your "initial" block and move the "i" assignment to the reset if block where you already reset "index".
 

always@(posedge clk)begin // This is instances- 1
if (rst==1'b1)
begin
index=8'hzz;
en=0;
end
else
begin
index=8'Hff;

if(I==0)
i=2'b10;
else if (I==1'b1)
i=2'b00;
end
en=1'b1;
end

always @ (posedge clk_4)begin // This is instances- 2
case (i)
2'b00 :begin index = index +8'd1;sine1=value;if (index ==8'd124) i= 2'b01; end
2'b01 : begin index = index -8'd1;sine1=value;if (index == 8'd0 ) i= 2'b00;end
2'b10 :begin index = index +8'd1;sine1=-value;if (index ==8'd124) i= 2'b11;end
2'b11 : begin index = index -8'd1;sine1=-value;if (index == 8'd0) i= 2'b10;end
//default :begin sine2=8'bzzzzzzzz; index1=@Q 8'b0; end
endcase
end


If possible try to bring all "i" assignments into single instances you can resolve the error

Please post in proper category of forum for good response
 
Last edited:
Missed that in the formatting of the code. Sudarsan is certainly right.
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top