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

Subversion Repositories async_sdm_noc

[/] [async_sdm_noc/] [trunk/] [vc/] [src/] [vcdmux.v] - Blame information for rev 47

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

Line No. Rev Author Line
1 39 wsong0210
/*
2
 Asynchronous SDM NoC
3
 (C)2011 Wei Song
4
 Advanced Processor Technologies Group
5
 Computer Science, the Univ. of Manchester, UK
6
 
7
 Authors:
8
 Wei Song     wsong83@gmail.com
9
 
10
 License: LGPL 3.0 or later
11
 
12
 Demux for a VC buffer stage.
13
 
14
 History:
15
 31/03/2010  Initial version. <wsong83@gmail.com>
16
 02/06/2011  Clean up for opensource. <wsong83@gmail.com>
17
 
18
*/
19
 
20
module vcdmux ( /*AUTOARG*/
21
   // Outputs
22
   dia, do0, do1, do2, do3, dot,
23
   // Inputs
24
   di0, di1, di2, di3, dit, divc, doa
25
   );
26
   parameter VCN = 2;           // number of output VCs
27
   parameter DW = 32;           // data width of the input
28
   parameter SCN = DW/2;
29
 
30
   input [SCN-1:0]  di0, di1, di2, di3;
31
   input [2:0]       dit;
32
   input [VCN-1:0]  divc;
33
   output           dia;
34
 
35
   output [VCN-1:0][SCN-1:0] do0, do1, do2, do3;
36
   output [VCN-1:0][2:0]     dot;
37
   input  [VCN-1:0]           doa;
38
 
39
   genvar                     i,j;
40
 
41
   /*
42
   generate
43
      for (i=0; i<VCN; i++) begin: VCD
44
         for(j=0; j<SCN; j++) begin: D
45
            c2 C0 (.a0(di0[j]), .a1(divc[i]), .q(do0[i][j]));
46
            c2 C1 (.a0(di1[j]), .a1(divc[i]), .q(do1[i][j]));
47
            c2 C2 (.a0(di2[j]), .a1(divc[i]), .q(do2[i][j]));
48
            c2 C3 (.a0(di3[j]), .a1(divc[i]), .q(do3[i][j]));
49
         end
50
 
51
         for(j=0; j<3; j++) begin: T
52
            c2 C0 (.a0(dit[j]), .a1(divc[i]), .q(dot[i][j]));
53
         end
54
      end
55
   endgenerate
56
    */
57
 
58
   generate
59
      for (i=0; i<VCN; i++) begin: VCD
60
         assign do0[i] = divc[i] ? di0 : 0;
61
         assign do1[i] = divc[i] ? di1 : 0;
62
         assign do2[i] = divc[i] ? di2 : 0;
63
         assign do3[i] = divc[i] ? di3 : 0;
64
         assign dot[i] = divc[i] ? dit : 0;
65
      end
66
   endgenerate
67
 
68
   assign dia = |doa;
69
 
70
endmodule // vcdmux
71
 

powered by: WebSVN 2.1.0

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