x393  1.0
FPGAcodeforElphelNC393camera
condition_mux.v
Go to the documentation of this file.
1 
9 
10 `timescale 1ns/1ps
11 
12 module condition_mux (
13  input clk,
14  input ce, // enable recording all conditions
15  input [ 7:0] sel,
16  output condition,
17  input ST_NB_ND,
20  input PCTI_XCZ,
21  input NST_D2HR,
22  input NPD_NCA,
23  input CHW_DMAA,
28  input NPCMD_FRE,
29  input FIS_OK,
30  input FIS_ERR,
31  input FIS_FERR,
32  input FIS_EXTRA,
34  input FR_D2HR,
35  input FIS_DATA,
36  input FIS_ANY,
38  input D2HR,
39  input SDB,
40  input DMA_ACT,
41  input DMA_SETUP,
42  input BIST_ACT_FE,
43  input BIST_ACT,
44  input PIO_SETUP,
45  input NB_ND,
46  input TFD_STS_ERR,
47  input FIS_I,
48  input PIO_I,
49  input NPD,
50  input PIOX,
51  input XFER0,
52  input PIOX_XFER0,
53  input CTBAA_CTBAP,
54  input CTBAP,
55  input CTBA_B,
56  input CTBA_C,
57  input TX_ERR,
58  input SYNCESC_ERR,
61 
62  wire [44:0] masked;
63  reg [43:0] registered;
64  reg [ 5:0] cond_r;
65 
66  assign condition = |cond_r;
67 
68  assign masked[ 0] = registered[ 0] && sel[ 2] && sel[ 1] && sel[ 0];
69  assign masked[ 1] = registered[ 1] && sel[ 3] && sel[ 1] && sel[ 0];
70  assign masked[ 2] = registered[ 2] && sel[ 4] && sel[ 1] && sel[ 0];
71  assign masked[ 3] = registered[ 3] && sel[ 5] && sel[ 1] && sel[ 0];
72  assign masked[ 4] = registered[ 4] && sel[ 6] && sel[ 1] && sel[ 0];
73  assign masked[ 5] = registered[ 5] && sel[ 7] && sel[ 1] && sel[ 0];
74  assign masked[ 6] = registered[ 6] && sel[ 3] && sel[ 2] && sel[ 0];
75  assign masked[ 7] = registered[ 7] && sel[ 4] && sel[ 2] && sel[ 0];
76  assign masked[ 8] = registered[ 8] && sel[ 5] && sel[ 2] && sel[ 0];
77  assign masked[ 9] = registered[ 9] && sel[ 6] && sel[ 2] && sel[ 0];
78  assign masked[10] = registered[10] && sel[ 7] && sel[ 2] && sel[ 0];
79  assign masked[11] = registered[11] && sel[ 4] && sel[ 3] && sel[ 0];
80  assign masked[12] = registered[12] && sel[ 5] && sel[ 3] && sel[ 0];
81  assign masked[13] = registered[13] && sel[ 6] && sel[ 3] && sel[ 0];
82  assign masked[14] = registered[14] && sel[ 7] && sel[ 3] && sel[ 0];
83  assign masked[15] = registered[15] && sel[ 5] && sel[ 4] && sel[ 0];
84  assign masked[16] = registered[16] && sel[ 6] && sel[ 4] && sel[ 0];
85  assign masked[17] = registered[17] && sel[ 7] && sel[ 4] && sel[ 0];
86  assign masked[18] = registered[18] && sel[ 6] && sel[ 5] && sel[ 0];
87  assign masked[19] = registered[19] && sel[ 7] && sel[ 5] && sel[ 0];
88  assign masked[20] = registered[20] && sel[ 7] && sel[ 6] && sel[ 0];
89  assign masked[21] = registered[21] && sel[ 3] && sel[ 2] && sel[ 1];
90  assign masked[22] = registered[22] && sel[ 4] && sel[ 2] && sel[ 1];
91  assign masked[23] = registered[23] && sel[ 5] && sel[ 2] && sel[ 1];
92  assign masked[24] = registered[24] && sel[ 6] && sel[ 2] && sel[ 1];
93  assign masked[25] = registered[25] && sel[ 7] && sel[ 2] && sel[ 1];
94  assign masked[26] = registered[26] && sel[ 4] && sel[ 3] && sel[ 1];
95  assign masked[27] = registered[27] && sel[ 5] && sel[ 3] && sel[ 1];
96  assign masked[28] = registered[28] && sel[ 6] && sel[ 3] && sel[ 1];
97  assign masked[29] = registered[29] && sel[ 7] && sel[ 3] && sel[ 1];
98  assign masked[30] = registered[30] && sel[ 5] && sel[ 4] && sel[ 1];
99  assign masked[31] = registered[31] && sel[ 6] && sel[ 4] && sel[ 1];
100  assign masked[32] = registered[32] && sel[ 7] && sel[ 4] && sel[ 1];
101  assign masked[33] = registered[33] && sel[ 6] && sel[ 5] && sel[ 1];
102  assign masked[34] = registered[34] && sel[ 7] && sel[ 5] && sel[ 1];
103  assign masked[35] = registered[35] && sel[ 7] && sel[ 6] && sel[ 1];
104  assign masked[36] = registered[36] && sel[ 4] && sel[ 3] && sel[ 2];
105  assign masked[37] = registered[37] && sel[ 5] && sel[ 3] && sel[ 2];
106  assign masked[38] = registered[38] && sel[ 6] && sel[ 3] && sel[ 2];
107  assign masked[39] = registered[39] && sel[ 7] && sel[ 3] && sel[ 2];
108  assign masked[40] = registered[40] && sel[ 5] && sel[ 4] && sel[ 2];
109  assign masked[41] = registered[41] && sel[ 6] && sel[ 4] && sel[ 2];
110  assign masked[42] = registered[42] && sel[ 7] && sel[ 4] && sel[ 2];
111  assign masked[43] = registered[43] && sel[ 6] && sel[ 5] && sel[ 2];
112  assign masked[44] = !(|sel); // always TRUE condition (sel ==0)
113 
114  always @(posedge clk) begin
115  if (ce) begin
116  registered[ 0] <= ST_NB_ND;
118  registered[ 2] <= PCTI_CTBAR_XCZ;
119  registered[ 3] <= PCTI_XCZ;
120  registered[ 4] <= NST_D2HR;
121  registered[ 5] <= NPD_NCA;
122  registered[ 6] <= CHW_DMAA;
127  registered[11] <= NPCMD_FRE;
128  registered[12] <= FIS_OK;
129  registered[13] <= FIS_ERR;
130  registered[14] <= FIS_FERR;
131  registered[15] <= FIS_EXTRA;
133  registered[17] <= FR_D2HR;
134  registered[18] <= FIS_DATA;
135  registered[19] <= FIS_ANY;
136  registered[20] <= NB_ND_D2HR_PIO;
137  registered[21] <= D2HR;
138  registered[22] <= SDB;
139  registered[23] <= DMA_ACT;
140  registered[24] <= DMA_SETUP;
141  registered[25] <= BIST_ACT_FE;
142  registered[26] <= BIST_ACT;
143  registered[27] <= PIO_SETUP;
144  registered[28] <= NB_ND;
145  registered[29] <= TFD_STS_ERR;
146  registered[30] <= FIS_I;
147  registered[31] <= PIO_I;
148  registered[32] <= NPD;
149  registered[33] <= PIOX;
150  registered[34] <= XFER0;
151  registered[35] <= PIOX_XFER0;
152  registered[36] <= CTBAA_CTBAP;
153  registered[37] <= CTBAP;
154  registered[38] <= CTBA_B;
155  registered[39] <= CTBA_C;
156  registered[40] <= TX_ERR;
157  registered[41] <= SYNCESC_ERR;
160  end
161  cond_r[ 0] <= |masked[ 7: 0];
162  cond_r[ 1] <= |masked[15: 8];
163  cond_r[ 2] <= |masked[23:16];
164  cond_r[ 3] <= |masked[31:24];
165  cond_r[ 4] <= |masked[39:32];
166  cond_r[ 5] <= |masked[44:40];
167  end
168 endmodule
[ 7:0] 14564sel
Definition: condition_mux.v:15
14612cond_rreg[5:0]
Definition: condition_mux.v:64
14610maskedwire[44:0]
Definition: condition_mux.v:62
14611registeredreg[43:0]
Definition: condition_mux.v:63