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

Subversion Repositories numbert_sort_device

[/] [numbert_sort_device/] [trunk/] [main/] [dynamic_tree.sv] - Blame information for rev 5

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 leshabiruk
//
2
//
3
//module Dynamic_Tree ( clk, glob_com, data_in, data_out );
4
//
5
//parameter HBIT= 15;
6
//
7
//parameter X_SZ= 8;
8
//parameter Y_SZ= 8;
9
//
10
//input clk;
11
//input [1:0]glob_com;
12
//
13
//input [HBIT:0] data_in;
14
//output [HBIT:0] data_out;
15
//
16
//wire [HBIT:0] in_prev;
17
//wire [HBIT:0] in_next;
18
//wire [HBIT:0] out;
19
//
20
//
21
//
22
//endmodule
23
//
24
//
25
//
26
//typedef struct {
27
//bit [1] com;
28
//bit [15:0] dat;
29
//} CDT_port;
30 5 leshabiruk
 
31
module Dyna_Tree ( clk, glob_com, dataIn, dataOut );
32
 
33
parameter HBIT= 7;
34
parameter TREE_LEVEL= 4;
35
 
36
input clk;
37
input [1:0] glob_com;
38
 
39
input  [HBIT:0] dataIn;
40
output [HBIT:0] dataOut;
41
 
42
wire [HBIT:0] toLeft;
43
wire [HBIT:0] toRight;
44
wire [HBIT:0] fromLeft;
45
wire [HBIT:0] fromRight;
46
 
47
Cell_DT_Inner #( HBIT ) inner ( clk, glob_com, dataIn, fromLeft, fromRight, dataOut, toLeft, toRight );
48
 
49
generate
50
if ( TREE_LEVEL >0 )
51
begin
52
        Dyna_Tree #( HBIT, TREE_LEVEL-1 ) leftSubTree  ( clk, glob_com, toLeft, fromLeft );
53
        Dyna_Tree #( HBIT, TREE_LEVEL-1 ) rightSubTree ( clk, glob_com, toRight, fromRight );
54
end
55
else
56
begin
57
        assign fromLeft =1;
58
        assign fromRight=1;
59
end
60
endgenerate
61
 
62
 
63
endmodule
64
 
65
 
66
typedef enum {  VMS_NOMESSAGE=0,
67
                                                VMS_WRITE,
68
                                                VMS_READ
69
                } VMeta;
70
 
71
module Cell_DT_Inner ( clk, glob_com, fromParent, fromLeft, fromRight, toParent, toLeft, toRight );
72
parameter HBIT= 7;
73
 
74
input clk;
75
input [1:0] glob_com;
76
 
77
input  [HBIT:0] fromParent;
78
input  [HBIT:0] fromLeft;
79
input  [HBIT:0] fromRight;
80
 
81
output [HBIT:0] toParent;
82
output [HBIT:0] toLeft;
83
output [HBIT:0] toRight;
84
 
85
reg [HBIT:0] value;
86
reg [HBIT:0] message;
87
VMeta        state;
88
 
89
assign toParent= value + message;
90
assign toLeft= message;
91
assign toRight= value;
92
 
93
always@(posedge clk )
94
begin
95
        case( state )
96
        VMS_NOMESSAGE: ;
97
        VMS_WRITE:
98
                begin
99
                        value    <= fromParent +1;
100
                        message  <= fromParent;
101
                end
102
        VMS_READ:
103
                begin
104
                        value    <= fromLeft;
105
                        message  <= fromRight;
106
                end
107
        2'h3:   ;
108
        default:        ;
109
        endcase
110
        state    <= VMeta'(glob_com);
111
end
112
 
113
endmodule
114
 
115
 
116
 

powered by: WebSVN 2.1.0

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