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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [orpsocv2/] [boards/] [actel/] [ordb1a3pe1500/] [rtl/] [verilog/] [versatile_mem_ctrl/] [rtl/] [verilog/] [codec.v] - Blame information for rev 408

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 408 julius
`timescale 1ns/1ns
2
module encode (
3
    fifo_empty_0, fifo_empty_1, fifo_empty_2, fifo_empty_3,
4
    fifo_sel, fifo_sel_domain
5
);
6
 
7
input  [0:15] fifo_empty_0, fifo_empty_1, fifo_empty_2, fifo_empty_3;
8
output [0:15] fifo_sel;
9
output [1:0]  fifo_sel_domain;
10
 
11
function [0:15] encode;
12
input [0:15] a;
13
input [0:15] b;
14
input [0:15] c;
15
input [0:15] d;
16
integer i;
17
begin
18
    if (!(&d))
19
        casex (d)
20
        16'b0xxxxxxxxxxxxxxx: encode = 16'b1000000000000000;
21
        16'b10xxxxxxxxxxxxxx: encode = 16'b0100000000000000;
22
        16'b110xxxxxxxxxxxxx: encode = 16'b0010000000000000;
23
        16'b1110xxxxxxxxxxxx: encode = 16'b0001000000000000;
24
        16'b11110xxxxxxxxxxx: encode = 16'b0000100000000000;
25
        16'b111110xxxxxxxxxx: encode = 16'b0000010000000000;
26
        16'b1111110xxxxxxxxx: encode = 16'b0000001000000000;
27
        16'b11111110xxxxxxxx: encode = 16'b0000000100000000;
28
        16'b111111110xxxxxxx: encode = 16'b0000000010000000;
29
        16'b1111111110xxxxxx: encode = 16'b0000000001000000;
30
        16'b11111111110xxxxx: encode = 16'b0000000000100000;
31
        16'b111111111110xxxx: encode = 16'b0000000000010000;
32
        16'b1111111111110xxx: encode = 16'b0000000000001000;
33
        16'b11111111111110xx: encode = 16'b0000000000000100;
34
        16'b111111111111110x: encode = 16'b0000000000000010;
35
        16'b1111111111111110: encode = 16'b0000000000000001;
36
        default:              encode = 16'b0000000000000000;
37
        endcase
38
    else if (!(&c))
39
        casex (c)
40
        16'b0xxxxxxxxxxxxxxx: encode = 16'b1000000000000000;
41
        16'b10xxxxxxxxxxxxxx: encode = 16'b0100000000000000;
42
        16'b110xxxxxxxxxxxxx: encode = 16'b0010000000000000;
43
        16'b1110xxxxxxxxxxxx: encode = 16'b0001000000000000;
44
        16'b11110xxxxxxxxxxx: encode = 16'b0000100000000000;
45
        16'b111110xxxxxxxxxx: encode = 16'b0000010000000000;
46
        16'b1111110xxxxxxxxx: encode = 16'b0000001000000000;
47
        16'b11111110xxxxxxxx: encode = 16'b0000000100000000;
48
        16'b111111110xxxxxxx: encode = 16'b0000000010000000;
49
        16'b1111111110xxxxxx: encode = 16'b0000000001000000;
50
        16'b11111111110xxxxx: encode = 16'b0000000000100000;
51
        16'b111111111110xxxx: encode = 16'b0000000000010000;
52
        16'b1111111111110xxx: encode = 16'b0000000000001000;
53
        16'b11111111111110xx: encode = 16'b0000000000000100;
54
        16'b111111111111110x: encode = 16'b0000000000000010;
55
        16'b1111111111111110: encode = 16'b0000000000000001;
56
        default:              encode = 16'b0000000000000000;
57
        endcase
58
    else if (!(&b))
59
        casex (b)
60
        16'b0xxxxxxxxxxxxxxx: encode = 16'b1000000000000000;
61
        16'b10xxxxxxxxxxxxxx: encode = 16'b0100000000000000;
62
        16'b110xxxxxxxxxxxxx: encode = 16'b0010000000000000;
63
        16'b1110xxxxxxxxxxxx: encode = 16'b0001000000000000;
64
        16'b11110xxxxxxxxxxx: encode = 16'b0000100000000000;
65
        16'b111110xxxxxxxxxx: encode = 16'b0000010000000000;
66
        16'b1111110xxxxxxxxx: encode = 16'b0000001000000000;
67
        16'b11111110xxxxxxxx: encode = 16'b0000000100000000;
68
        16'b111111110xxxxxxx: encode = 16'b0000000010000000;
69
        16'b1111111110xxxxxx: encode = 16'b0000000001000000;
70
        16'b11111111110xxxxx: encode = 16'b0000000000100000;
71
        16'b111111111110xxxx: encode = 16'b0000000000010000;
72
        16'b1111111111110xxx: encode = 16'b0000000000001000;
73
        16'b11111111111110xx: encode = 16'b0000000000000100;
74
        16'b111111111111110x: encode = 16'b0000000000000010;
75
        16'b1111111111111110: encode = 16'b0000000000000001;
76
        default:              encode = 16'b0000000000000000;
77
        endcase
78
    else
79
        casex (a)
80
        16'b0xxxxxxxxxxxxxxx: encode = 16'b1000000000000000;
81
        16'b10xxxxxxxxxxxxxx: encode = 16'b0100000000000000;
82
        16'b110xxxxxxxxxxxxx: encode = 16'b0010000000000000;
83
        16'b1110xxxxxxxxxxxx: encode = 16'b0001000000000000;
84
        16'b11110xxxxxxxxxxx: encode = 16'b0000100000000000;
85
        16'b111110xxxxxxxxxx: encode = 16'b0000010000000000;
86
        16'b1111110xxxxxxxxx: encode = 16'b0000001000000000;
87
        16'b11111110xxxxxxxx: encode = 16'b0000000100000000;
88
        16'b111111110xxxxxxx: encode = 16'b0000000010000000;
89
        16'b1111111110xxxxxx: encode = 16'b0000000001000000;
90
        16'b11111111110xxxxx: encode = 16'b0000000000100000;
91
        16'b111111111110xxxx: encode = 16'b0000000000010000;
92
        16'b1111111111110xxx: encode = 16'b0000000000001000;
93
        16'b11111111111110xx: encode = 16'b0000000000000100;
94
        16'b111111111111110x: encode = 16'b0000000000000010;
95
        16'b1111111111111110: encode = 16'b0000000000000001;
96
        default:              encode = 16'b0000000000000000;
97
        endcase
98
end
99
endfunction
100
 
101
assign fifo_sel = encode( fifo_empty_0, fifo_empty_1, fifo_empty_2, fifo_empty_3);
102
assign fifo_sel_domain = (!(&fifo_empty_3)) ? 2'b11 :
103
                         (!(&fifo_empty_2)) ? 2'b10 :
104
                         (!(&fifo_empty_1)) ? 2'b01 :
105
                         2'b00;
106
 
107
endmodule
108
 
109
`timescale 1ns/1ns
110
module decode (
111
    fifo_sel, fifo_sel_domain,
112
    fifo_we_0, fifo_we_1, fifo_we_2, fifo_we_3
113
);
114
 
115
input  [0:15] fifo_sel;
116
input  [1:0]  fifo_sel_domain;
117
output [0:15] fifo_we_0, fifo_we_1, fifo_we_2, fifo_we_3;
118
 
119
assign fifo_we_0 = (fifo_sel_domain == 2'b00) ? fifo_sel : {16{1'b0}};
120
assign fifo_we_1 = (fifo_sel_domain == 2'b01) ? fifo_sel : {16{1'b0}};
121
assign fifo_we_2 = (fifo_sel_domain == 2'b10) ? fifo_sel : {16{1'b0}};
122
assign fifo_we_3 = (fifo_sel_domain == 2'b11) ? fifo_sel : {16{1'b0}};
123
 
124
endmodule

powered by: WebSVN 2.1.0

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