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.

can you anybody give me the solution for this threat?

Status
Not open for further replies.

chella2

Newbie level 3
Joined
Jun 7, 2012
Messages
4
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Location
chennai
Activity points
1,331
hi, here i have wrote the program for make ascending order of given 5 no... i don't know is it write? but i wrote this in my concept.. and it doesn't enter into the(FSM) loop.. and also what problem in this? help me please........


`timescale 1ns / 1ps

module ascending_test_fsm( input [39:0]in,output reg [39:0]out );

wire [7:0]tmp[4:0];
reg [7:0]a[4:0];
reg [7:0]t1;
reg [7:0]t2;
reg [7:0]t3;
reg [7:0]t4;
reg [7:0]t5;
//reg i;
//reg j;

assign tmp[0] = in[7:0];
assign tmp[1] = in[15:8];
assign tmp[2] = in[23:16];
assign tmp[3] = in[31:24];
assign tmp[4] = in[39:32];

parameter FIRST = 4'b0000;
parameter SECOND = 4'b0001;
parameter THIRD = 4'b0010;
parameter FOURTH = 4'b0011;
parameter FIFTH = 4'b0100;
parameter SIXTH = 4'b0101;
parameter SEVENTH = 4'b0110;
parameter FIRST_1 = 4'b0111;
parameter SECOND_2 = 4'b1001;
parameter THIRD_3 = 4'b1010;
parameter FOURTH_4 = 4'b1011;
parameter FIFTH_5 = 4'b1100;
parameter SIXTH_6 = 4'b1101;
parameter SEVENTH_7 = 4'b1110;
parameter FINAL = 4'b1111;

reg [2:0]STATE = 3'b000;
reg [2:0]NEXT_STATE = 3'b001;
parameter FINAL_6 = 3'b010;

/*genvar i;
generate
//always@(tmp[0] or tmp[1] or tmp[2] or tmp[3] or tmp[4] or a[0] or a[1] or a[2] or a[3] or a[4])
for(i = 0; i<6 ; i = i+1)
begin: ASSIGN
a[7:0] = tmp[7:0];
end
end
endgenerate*/

always@(*)
begin
a[0] = tmp[0];
a[1] = tmp[1];
a[2] = tmp[2];
a[3] = tmp[3];
a[4] = tmp[4];
end


always@(STATE)
begin
case(STATE)
FIRST:

if(a[0]>a[1])
begin
t1 = a[0];
a[0] = a[1];
a[1] = t1;

NEXT_STATE = SECOND_2;

end
else if(a[0]>a[2])
begin
t1 = a[0];
a[0] = a[2];
a[2] = t1;

NEXT_STATE <= SECOND_2;
end
else if(a[0]>a[3])
begin
t1 = a[0];
a[0] = a[3];
a[3] = t1;

NEXT_STATE <= SECOND_2;

end
else if(a[0]>a[4])
begin

t1 = a[0];
a[0] = a[4];
a[4] = t1;
NEXT_STATE = SECOND_2;

end
else begin
NEXT_STATE = SECOND_2;
end


SECOND:

if(a[1]>a[0])
begin

t2 = a[1];
a[1] = a[0];
a[0] = t2;
NEXT_STATE = THIRD_3;

end
else if(a[1]>a[2])
begin

t2 = a[1];
a[1] = a[2];
a[2] = t2;
NEXT_STATE = THIRD_3;

end
else if(a[1]>a[3])
begin

t2 = a[1];
a[1] = a[3];
a[3] = t2;
NEXT_STATE = THIRD_3;

end
else if(a[1]>a[4])
begin

t2 = a[1];
a[1] = a[4];
a[4] = t2;
NEXT_STATE = THIRD_3;

end
else begin
NEXT_STATE = THIRD_3;
end

THIRD:

if(a[2]>a[0])
begin

t3 = a[2];
a[2] = a[0];
a[0] = t3;
NEXT_STATE = FOURTH_4;

end
else if(a[2]>a[1])
begin

t3 = a[2];
a[2] = a[1];
a[1] = t3;
NEXT_STATE = FOURTH_4;

end
else if(a[2]>a[3])
begin

t3 = a[3];
a[3] = a[0];
a[0] = t3;
NEXT_STATE = FOURTH_4;

end
else if(a[2]>a[4])
begin

t3 = a[2];
a[2] = a[4];
a[4] = t3;
NEXT_STATE = FOURTH_4;

end
else begin
NEXT_STATE = FOURTH_4;
end

FOURTH:

if(a[3]>a[0])
begin

t4 = a[3];
a[3] = a[0];
a[0] = t4;
NEXT_STATE = FIFTH_5;

end
else if(a[3]>a[1])
begin

t4 = a[3];
a[3] = a[1];
a[1] = t4;
NEXT_STATE = FIFTH_5;

end
else if(a[3]>a[2])
begin

t4 = a[3];
a[3] = a[2];
a[2] = t4;
NEXT_STATE = FIFTH_5;

end
else if(a[3]>a[4])
begin

t4 = a[3];
a[3] = a[4];
a[4] = t4;
NEXT_STATE = FIFTH_5;

end
else begin
NEXT_STATE = FIFTH_5;
end

FIFTH:

if(a[4]>a[0])
begin

t5 = a[4];
a[4] = a[0];
a[0] = t5;
NEXT_STATE = FIFTH_5;

end
else if(a[4]>a[1])
begin

t5 = a[4];
a[4] = a[1];
a[1] = t5;
NEXT_STATE = FIFTH_5;

end
else if(a[4]>a[2])
begin

t5 = a[4];
a[4] = a[2];
a[2] = t5;
NEXT_STATE = FIFTH_5;

end
else if(a[4]>a[3])
begin

t5 = a[4];
a[4] = a[3];
a[3] = t5;
NEXT_STATE = FIFTH_5;

end
else begin
NEXT_STATE = FINAL_6;
end

FINAL:
begin

out = {t5,t4,t3,t2,t1};
end
endcase
end



////////////////////////////////////////////////////////

always@(NEXT_STATE)
begin
case(NEXT_STATE)

SECOND_2:

STATE = SECOND;

THIRD_3:

STATE = THIRD;

FOURTH_4:

STATE = FOURTH;

FIFTH_5:

STATE = FIFTH;

FINAL_6:

STATE = FINAL;

endcase
end
//end
endmodule
 

hey bro cud u give me a small hint of what logic u trying to implement so i can help u on it otherwise its difficult to begin with..
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top