OpenCores
URL https://opencores.org/ocsvn/numbert_sort_device/numbert_sort_device/trunk

Subversion Repositories numbert_sort_device

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /numbert_sort_device/trunk
    from Rev 4 to Rev 5
    Reverse comparison

Rev 4 → Rev 5

/main/dynamic_tree.sv
27,88 → 27,90
//bit [1] com;
//bit [15:0] dat;
//} CDT_port;
//
//module Cell_Dyna_Tree ( clk, glob_com, stageGlb, is_input, in_prev, in_next, out );
//
//parameter HBIT= 15;
//
//
//input clk;
//input glob_com;
//
//input stageGlb[3:0];
//input candidateActive[3:0];
//
//input parentPtr[3:0];
//input [HBIT:0] pntInQuestMsg [3:0];
//input [HBIT:0] cldInQuestMsg [3:0];
//output active = |parentPtr;
//output [HBIT:0] message;
//
//output bit leftPtr [3:0];
//output bit rightPtr[3:0];
//
//wire leftRq; // have left subtree
//wire rightRq; // have right subtree
//
////wire parentMsg= pntInQuestMsg[];
//
//Cell_DT_Inner #( HBIT ) inner ( clk, glob_com, parentMsg, leftMsg, rightMsg, message );
//
//always@(posedge clk )
//begin
// if ( leftRq )
// begin
// if ( leftPtr==0 ) // new child required
// begin
// if ( stageGlb & ~candidateActive )
// begin
// leftPtr<= stageGlb;
// end
// end
// end
// else
// begin
// leftPtr<= 0;
// end
// if (~hold)
// begin
// higher <= ( cand_h > cand_l ) ? cand_h : cand_l;
// lower <= ( cand_h > cand_l ) ? cand_l : cand_h;
// end
//end
//endmodule
//
//
//module Cell_DT_Inner ( clk, glob_com, parentMsg, leftMsg, rightMsg, message );
//parameter HBIT= 15;
//
//input clk;
//input [1:0]glob_com;
//
//input [HBIT:0] parentMsg;
//input [HBIT:0] leftMsg;
//input [HBIT:0] rightMsg;
//output [HBIT:0] message;
//
//reg [HBIT:0] store;
//reg [HBIT:0] tmp;
//
//always@(posedge clk )
//begin
// case( glob_com )
// 2'h0: ;
// 2'h1: ;
// 2'h2:
// begin
// higher <= ( cand_h > cand_l ) ? cand_h : cand_l;
// lower <= ( cand_h > cand_l ) ? cand_l : cand_h;
// end
// 2'h3: ;
// endcase
//end
//
//endmodule
//
//
//
 
module Dyna_Tree ( clk, glob_com, dataIn, dataOut );
 
parameter HBIT= 7;
parameter TREE_LEVEL= 4;
 
input clk;
input [1:0] glob_com;
 
input [HBIT:0] dataIn;
output [HBIT:0] dataOut;
 
wire [HBIT:0] toLeft;
wire [HBIT:0] toRight;
wire [HBIT:0] fromLeft;
wire [HBIT:0] fromRight;
 
Cell_DT_Inner #( HBIT ) inner ( clk, glob_com, dataIn, fromLeft, fromRight, dataOut, toLeft, toRight );
 
generate
if ( TREE_LEVEL >0 )
begin
Dyna_Tree #( HBIT, TREE_LEVEL-1 ) leftSubTree ( clk, glob_com, toLeft, fromLeft );
Dyna_Tree #( HBIT, TREE_LEVEL-1 ) rightSubTree ( clk, glob_com, toRight, fromRight );
end
else
begin
assign fromLeft =1;
assign fromRight=1;
end
endgenerate
 
 
endmodule
 
 
typedef enum { VMS_NOMESSAGE=0,
VMS_WRITE,
VMS_READ
} VMeta;
 
module Cell_DT_Inner ( clk, glob_com, fromParent, fromLeft, fromRight, toParent, toLeft, toRight );
parameter HBIT= 7;
 
input clk;
input [1:0] glob_com;
 
input [HBIT:0] fromParent;
input [HBIT:0] fromLeft;
input [HBIT:0] fromRight;
 
output [HBIT:0] toParent;
output [HBIT:0] toLeft;
output [HBIT:0] toRight;
 
reg [HBIT:0] value;
reg [HBIT:0] message;
VMeta state;
 
assign toParent= value + message;
assign toLeft= message;
assign toRight= value;
 
always@(posedge clk )
begin
case( state )
VMS_NOMESSAGE: ;
VMS_WRITE:
begin
value <= fromParent +1;
message <= fromParent;
end
VMS_READ:
begin
value <= fromLeft;
message <= fromRight;
end
2'h3: ;
default: ;
endcase
state <= VMeta'(glob_com);
end
 
endmodule
 
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.