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

Subversion Repositories nova

[/] [nova/] [tags/] [Start/] [src/] [BitStream_buffer.v] - Blame information for rev 11

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 eexuke
//--------------------------------------------------------------------------------------------------
2
// Design    : nova
3
// Author(s) : Ke Xu
4
// Email           : eexuke@yahoo.com
5
// File      : BitStream_buffer.v
6
// Generated : May 16,2005
7
// Copyright (C) 2008 Ke Xu                
8
//-------------------------------------------------------------------------------------------------
9
// Description 
10
// Circular buffer,interfacing between Beha_Bitstream_ram and the decoder
11
//-------------------------------------------------------------------------------------------------
12
 
13
// synopsys translate_off
14
`include "timescale.v"
15
// synopsys translate_on
16
`include "nova_defines.v"
17
 
18
module BitStream_buffer (clk,reset_n,BitStream_buffer_input,pc,
19
        BitStream_ram_ren,BitStream_buffer_valid_n,BitStream_buffer_output,BitStream_ram_addr);
20
        input clk,reset_n;
21
        input [15:0] BitStream_buffer_input;
22
        input [6:0] pc;
23
 
24
        output BitStream_ram_ren;
25
        output BitStream_buffer_valid_n;
26
        output [15:0] BitStream_buffer_output;
27
        output [16:0]BitStream_ram_addr;
28
 
29
        reg BitStream_ram_ren;
30
        reg BitStream_buffer_valid_n;
31
        reg [15:0] BitStream_buffer_output;
32
        reg [16:0]BitStream_ram_addr;
33
 
34
        reg [0:127]BS_buffer;
35
        reg [6:0] pc_previous;
36
        reg [3:0] reset_counter;
37
        reg [2:0] half_fill_counter;
38
        reg [6:0] buffer_index; //for buffer write 
39
 
40
        /*
41
        // synopsys translate_off
42
        integer pc_statistical;
43
        initial
44
                begin
45
                        pc_statistical = $fopen("pc_statistical.txt");
46
                end
47
        always @ (posedge clk)
48
                $fdisplay (pc_statistical,"%d",pc);
49
        // synopsys translate_on
50
        */
51
        always @ (posedge clk)
52
                if (reset_n == 1'b0)
53
                        pc_previous <= 0;
54
                else
55
                        pc_previous <= pc;
56
 
57
        always @ (posedge clk)
58
                if (reset_n == 1'b0)
59
                        reset_counter <= 0;
60
                else if (reset_counter < 10)
61
                        reset_counter <= reset_counter + 1;
62
 
63
        always @ (posedge clk)
64
                if (reset_n == 1'b0)
65
                        half_fill_counter <= 0;
66
                else if (reset_counter == 10)
67
                        begin
68
                                if (((pc > 63 && pc_previous <= 63) || (pc <63 && pc_previous >=63)) && half_fill_counter == 0)
69
                                        half_fill_counter <= 1;
70
                                else if (pc > 63 && half_fill_counter == 0 && buffer_index == 0)
71
                                        half_fill_counter <= 1;
72
                                else if (pc < 63 && half_fill_counter == 0 && buffer_index == 64)
73
                                        half_fill_counter <= 1;
74
                                else if (half_fill_counter > 0 && half_fill_counter < 5)
75
                                        half_fill_counter <= half_fill_counter + 1;
76
                                else if (half_fill_counter == 5)
77
                                        half_fill_counter <= 0;
78
                        end
79
 
80
        always @ (posedge clk)
81
                if (reset_n == 1'b0)
82
                        buffer_index <= 0;
83
                else if (reset_counter > 1 && reset_counter < 10)
84
                        buffer_index <= buffer_index + 16;
85
                else if (half_fill_counter > 1 && half_fill_counter <= 5)
86
                        buffer_index <= buffer_index + 16;
87
 
88
        always @ (posedge clk)
89
                if (reset_n == 1'b0)
90
                        BitStream_buffer_valid_n <= 1'b1;
91
                else if (reset_counter == 10)
92
                        BitStream_buffer_valid_n <= 1'b0;
93
 
94
        always @ (posedge clk)
95
                if (reset_n == 1'b0)
96
                        BitStream_ram_ren <= 1'b0;
97
                else if (reset_counter < 9)
98
                        BitStream_ram_ren <= 1'b0;
99
                else if (reset_counter == 9)
100
                        BitStream_ram_ren <= 1'b1;
101
                else
102
                        begin
103
                                if (((pc > 63 && pc_previous <= 63) || (pc <63 && pc_previous >=63)) && half_fill_counter == 0)
104
                                        BitStream_ram_ren <= 0;
105
                                else if (half_fill_counter > 0 && half_fill_counter < 5)
106
                                        BitStream_ram_ren <= 0;
107
                                else
108
                                        BitStream_ram_ren <= 1;
109
                        end
110
 
111
        always @ (posedge clk)
112
                if (reset_n == 1'b0)
113
                        BitStream_ram_addr <= 0;
114
                else if (reset_counter > 0 && reset_counter < 9)
115
                        BitStream_ram_addr <= BitStream_ram_addr + 1;
116
                else if (half_fill_counter > 0 && half_fill_counter < 5 && BitStream_ram_addr != 17'd131071) //no wrap around
117
                        BitStream_ram_addr <= BitStream_ram_addr + 1;
118
 
119
        integer i;
120
        always @ (posedge clk)
121
                if (reset_n == 1'b0)
122
                        BS_buffer <= 0;
123
                else if ((reset_counter > 1 && reset_counter < 10) || (half_fill_counter > 1 && half_fill_counter <= 5))
124
                        case (buffer_index[6:4])
125
                                3'b000:
126
                                for (i=0;i<16;i=i+1)
127
                                        BS_buffer[i] <= BitStream_buffer_input[15-i];
128
                                3'b001:
129
                                for (i=0;i<16;i=i+1)
130
                                        BS_buffer[16+i] <= BitStream_buffer_input[15-i];
131
                                3'b010:
132
                                for (i=0;i<16;i=i+1)
133
                                        BS_buffer[32+i] <= BitStream_buffer_input[15-i];
134
                                3'b011:
135
                                for (i=0;i<16;i=i+1)
136
                                        BS_buffer[48+i] <= BitStream_buffer_input[15-i];
137
                                3'b100:
138
                                for (i=0;i<16;i=i+1)
139
                                        BS_buffer[64+i] <= BitStream_buffer_input[15-i];
140
                                3'b101:
141
                                for (i=0;i<16;i=i+1)
142
                                        BS_buffer[80+i] <= BitStream_buffer_input[15-i];
143
                                3'b110:
144
                                for (i=0;i<16;i=i+1)
145
                                        BS_buffer[96+i] <= BitStream_buffer_input[15-i];
146
                                3'b111:
147
                                for (i=0;i<16;i=i+1)
148
                                        BS_buffer[112+i] <= BitStream_buffer_input[15-i];
149
                        endcase
150
 
151
        always @ (posedge clk)
152
        //always @ (reset_n or BitStream_buffer_valid_n or pc)
153
                if (reset_n == 1'b0)
154
                        BitStream_buffer_output <= 0;
155
                else if (BitStream_buffer_valid_n == 0)
156
                        case (pc)
157
 
158
                                1  :BitStream_buffer_output <= BS_buffer[1:16];
159
                                2  :BitStream_buffer_output <= BS_buffer[2:17];
160
                                3  :BitStream_buffer_output <= BS_buffer[3:18];
161
                                4  :BitStream_buffer_output <= BS_buffer[4:19];
162
                                5  :BitStream_buffer_output <= BS_buffer[5:20];
163
                                6  :BitStream_buffer_output <= BS_buffer[6:21];
164
                                7  :BitStream_buffer_output <= BS_buffer[7:22];
165
                                8  :BitStream_buffer_output <= BS_buffer[8:23];
166
                                9  :BitStream_buffer_output <= BS_buffer[9:24];
167
                                10 :BitStream_buffer_output <= BS_buffer[10:25];
168
                                11 :BitStream_buffer_output <= BS_buffer[11:26];
169
                                12 :BitStream_buffer_output <= BS_buffer[12:27];
170
                                13 :BitStream_buffer_output <= BS_buffer[13:28];
171
                                14 :BitStream_buffer_output <= BS_buffer[14:29];
172
                                15 :BitStream_buffer_output <= BS_buffer[15:30];
173
                                16 :BitStream_buffer_output <= BS_buffer[16:31];
174
                                17 :BitStream_buffer_output <= BS_buffer[17:32];
175
                                18 :BitStream_buffer_output <= BS_buffer[18:33];
176
                                19 :BitStream_buffer_output <= BS_buffer[19:34];
177
                                20 :BitStream_buffer_output <= BS_buffer[20:35];
178
                                21 :BitStream_buffer_output <= BS_buffer[21:36];
179
                                22 :BitStream_buffer_output <= BS_buffer[22:37];
180
                                23 :BitStream_buffer_output <= BS_buffer[23:38];
181
                                24 :BitStream_buffer_output <= BS_buffer[24:39];
182
                                25 :BitStream_buffer_output <= BS_buffer[25:40];
183
                                26 :BitStream_buffer_output <= BS_buffer[26:41];
184
                                27 :BitStream_buffer_output <= BS_buffer[27:42];
185
                                28 :BitStream_buffer_output <= BS_buffer[28:43];
186
                                29 :BitStream_buffer_output <= BS_buffer[29:44];
187
                                30 :BitStream_buffer_output <= BS_buffer[30:45];
188
                                31 :BitStream_buffer_output <= BS_buffer[31:46];
189
                                32 :BitStream_buffer_output <= BS_buffer[32:47];
190
                                33 :BitStream_buffer_output <= BS_buffer[33:48];
191
                                34 :BitStream_buffer_output <= BS_buffer[34:49];
192
                                35 :BitStream_buffer_output <= BS_buffer[35:50];
193
                                36 :BitStream_buffer_output <= BS_buffer[36:51];
194
                                37 :BitStream_buffer_output <= BS_buffer[37:52];
195
                                38 :BitStream_buffer_output <= BS_buffer[38:53];
196
                                39 :BitStream_buffer_output <= BS_buffer[39:54];
197
                                40 :BitStream_buffer_output <= BS_buffer[40:55];
198
                                41 :BitStream_buffer_output <= BS_buffer[41:56];
199
                                42 :BitStream_buffer_output <= BS_buffer[42:57];
200
                                43 :BitStream_buffer_output <= BS_buffer[43:58];
201
                                44 :BitStream_buffer_output <= BS_buffer[44:59];
202
                                45 :BitStream_buffer_output <= BS_buffer[45:60];
203
                                46 :BitStream_buffer_output <= BS_buffer[46:61];
204
                                47 :BitStream_buffer_output <= BS_buffer[47:62];
205
                                48 :BitStream_buffer_output <= BS_buffer[48:63];
206
                                49 :BitStream_buffer_output <= BS_buffer[49:64];
207
                                50 :BitStream_buffer_output <= BS_buffer[50:65];
208
                                51 :BitStream_buffer_output <= BS_buffer[51:66];
209
                                52 :BitStream_buffer_output <= BS_buffer[52:67];
210
                                53 :BitStream_buffer_output <= BS_buffer[53:68];
211
                                54 :BitStream_buffer_output <= BS_buffer[54:69];
212
                                55 :BitStream_buffer_output <= BS_buffer[55:70];
213
                                56 :BitStream_buffer_output <= BS_buffer[56:71];
214
                                57 :BitStream_buffer_output <= BS_buffer[57:72];
215
                                58 :BitStream_buffer_output <= BS_buffer[58:73];
216
                                59 :BitStream_buffer_output <= BS_buffer[59:74];
217
                                60 :BitStream_buffer_output <= BS_buffer[60:75];
218
                                61 :BitStream_buffer_output <= BS_buffer[61:76];
219
                                62 :BitStream_buffer_output <= BS_buffer[62:77];
220
                                63 :BitStream_buffer_output <= BS_buffer[63:78];
221
                                64 :BitStream_buffer_output <= BS_buffer[64:79];
222
                                65 :BitStream_buffer_output <= BS_buffer[65:80];
223
                                66 :BitStream_buffer_output <= BS_buffer[66:81];
224
                                67 :BitStream_buffer_output <= BS_buffer[67:82];
225
                                68 :BitStream_buffer_output <= BS_buffer[68:83];
226
                                69 :BitStream_buffer_output <= BS_buffer[69:84];
227
                                70 :BitStream_buffer_output <= BS_buffer[70:85];
228
                                71 :BitStream_buffer_output <= BS_buffer[71:86];
229
                                72 :BitStream_buffer_output <= BS_buffer[72:87];
230
                                73 :BitStream_buffer_output <= BS_buffer[73:88];
231
                                74 :BitStream_buffer_output <= BS_buffer[74:89];
232
                                75 :BitStream_buffer_output <= BS_buffer[75:90];
233
                                76 :BitStream_buffer_output <= BS_buffer[76:91];
234
                                77 :BitStream_buffer_output <= BS_buffer[77:92];
235
                                78 :BitStream_buffer_output <= BS_buffer[78:93];
236
                                79 :BitStream_buffer_output <= BS_buffer[79:94];
237
                                80 :BitStream_buffer_output <= BS_buffer[80:95];
238
                                81 :BitStream_buffer_output <= BS_buffer[81:96];
239
                                82 :BitStream_buffer_output <= BS_buffer[82:97];
240
                                83 :BitStream_buffer_output <= BS_buffer[83:98];
241
                                84 :BitStream_buffer_output <= BS_buffer[84:99];
242
                                85 :BitStream_buffer_output <= BS_buffer[85:100];
243
                                86 :BitStream_buffer_output <= BS_buffer[86:101];
244
                                87 :BitStream_buffer_output <= BS_buffer[87:102];
245
                                88 :BitStream_buffer_output <= BS_buffer[88:103];
246
                                89 :BitStream_buffer_output <= BS_buffer[89:104];
247
                                90 :BitStream_buffer_output <= BS_buffer[90:105];
248
                                91 :BitStream_buffer_output <= BS_buffer[91:106];
249
                                92 :BitStream_buffer_output <= BS_buffer[92:107];
250
                                93 :BitStream_buffer_output <= BS_buffer[93:108];
251
                                94 :BitStream_buffer_output <= BS_buffer[94:109];
252
                                95 :BitStream_buffer_output <= BS_buffer[95:110];
253
                                96 :BitStream_buffer_output <= BS_buffer[96:111];
254
                                97 :BitStream_buffer_output <= BS_buffer[97:112];
255
                                98 :BitStream_buffer_output <= BS_buffer[98:113];
256
                                99 :BitStream_buffer_output <= BS_buffer[99:114];
257
                                100:BitStream_buffer_output <= BS_buffer[100:115];
258
                                101:BitStream_buffer_output <= BS_buffer[101:116];
259
                                102:BitStream_buffer_output <= BS_buffer[102:117];
260
                                103:BitStream_buffer_output <= BS_buffer[103:118];
261
                                104:BitStream_buffer_output <= BS_buffer[104:119];
262
                                105:BitStream_buffer_output <= BS_buffer[105:120];
263
                                106:BitStream_buffer_output <= BS_buffer[106:121];
264
                                107:BitStream_buffer_output <= BS_buffer[107:122];
265
                                108:BitStream_buffer_output <= BS_buffer[108:123];
266
                                109:BitStream_buffer_output <= BS_buffer[109:124];
267
                                110:BitStream_buffer_output <= BS_buffer[110:125];
268
                                111:BitStream_buffer_output <= BS_buffer[111:126];
269
                                112:BitStream_buffer_output <= BS_buffer[112:127];
270
                                113:BitStream_buffer_output <= {BS_buffer[113:127],BS_buffer[0]};
271
                                114:BitStream_buffer_output <= {BS_buffer[114:127],BS_buffer[0:1]};
272
                                115:BitStream_buffer_output <= {BS_buffer[115:127],BS_buffer[0:2]};
273
                                116:BitStream_buffer_output <= {BS_buffer[116:127],BS_buffer[0:3]};
274
                                117:BitStream_buffer_output <= {BS_buffer[117:127],BS_buffer[0:4]};
275
                                118:BitStream_buffer_output <= {BS_buffer[118:127],BS_buffer[0:5]};
276
                                119:BitStream_buffer_output <= {BS_buffer[119:127],BS_buffer[0:6]};
277
                                120:BitStream_buffer_output <= {BS_buffer[120:127],BS_buffer[0:7]};
278
                                121:BitStream_buffer_output <= {BS_buffer[121:127],BS_buffer[0:8]};
279
                                122:BitStream_buffer_output <= {BS_buffer[122:127],BS_buffer[0:9]};
280
                                123:BitStream_buffer_output <= {BS_buffer[123:127],BS_buffer[0:10]};
281
                                124:BitStream_buffer_output <= {BS_buffer[124:127],BS_buffer[0:11]};
282
                                125:BitStream_buffer_output <= {BS_buffer[125:127],BS_buffer[0:12]};
283
                                126:BitStream_buffer_output <= {BS_buffer[126:127],BS_buffer[0:13]};
284
                                127:BitStream_buffer_output <= {BS_buffer[127],BS_buffer[0:14]};
285
                        endcase
286
endmodule
287
 
288
 

powered by: WebSVN 2.1.0

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