Documentation for architecture MGTEVB/MuxData/a0
VHDL Contents
1 architecture a0 of MuxData is
39
40 signal LastRNE : std_logic_vector(7 downto 0);
41 signal LastXNE : std_logic_vector(7 downto 0);
42
43 signal IntEBValid : std_logic;
44 signal IntLastW : std_logic;
45 signal IntLastX : std_logic;
46 signal RDPresent : std_logic;
47 signal XDPresent : std_logic;
48 signal ChanAct : std_logic_vector(7 downto 0); begin
51
52 LastW <= IntLastW; LastX <= IntLastX; EBValid <= IntEBValid; EValid <= '1' when (IntEBvalid = '1' or IntLastW = '1') else '0';
59
60 EvDataRdy <= '1' when (RDPresent = '1' and XDPresent = '1') else '0';
62
63 ChanAct <= ChanEn and ChanSts(7 downto 0); RDPresent <= '1' when
71 ( (ChanEn(7 downto 0) /= x"00")
72 and ((ChanEn(0) = '1' and RDE(0) = '0') xor ChanAct(0) = '0')
73 and ((ChanEn(1) = '1' and RDE(1) = '0') xor ChanAct(1) = '0')
74 and ((ChanEn(2) = '1' and RDE(2) = '0') xor ChanAct(2) = '0')
75 and ((ChanEn(3) = '1' and RDE(3) = '0') xor ChanAct(3) = '0')
76 and ((ChanEn(4) = '1' and RDE(4) = '0') xor ChanAct(4) = '0')
77 and ((ChanEn(5) = '1' and RDE(5) = '0') xor ChanAct(5) = '0')
78 and ((ChanEn(6) = '1' and RDE(6) = '0') xor ChanAct(6) = '0')
79 and ((ChanEn(7) = '1' and RDE(7) = '0') xor ChanAct(7) = '0')
80 ) else '0'; XDPresent <= '1' when
83 ( (ChanEn(7 downto 0) /= x"00")
84 and ((ChanEn(0) = '1' and XDE(0) = '0') xor ChanAct(0) = '0')
85 and ((ChanEn(1) = '1' and XDE(1) = '0') xor ChanAct(1) = '0')
86 and ((ChanEn(2) = '1' and XDE(2) = '0') xor ChanAct(2) = '0')
87 and ((ChanEn(3) = '1' and XDE(3) = '0') xor ChanAct(3) = '0')
88 and ((ChanEn(4) = '1' and XDE(4) = '0') xor ChanAct(4) = '0')
89 and ((ChanEn(5) = '1' and XDE(5) = '0') xor ChanAct(5) = '0')
90 and ((ChanEn(6) = '1' and XDE(6) = '0') xor ChanAct(6) = '0')
91 and ((ChanEn(7) = '1' and XDE(7) = '0') xor ChanAct(7) = '0')
92 ) else '0'; RqRD(0) <= '1' when ((ReqD = '1' and Channel = "0000") or ChanEn(0) = '0') else '0';
102 RqRD(1) <= '1' when ((ReqD = '1' and Channel = "0001") or ChanEn(1) = '0') else '0';
103 RqRD(2) <= '1' when ((ReqD = '1' and Channel = "0010") or ChanEn(2) = '0') else '0';
104 RqRD(3) <= '1' when ((ReqD = '1' and Channel = "0011") or ChanEn(3) = '0') else '0';
105 RqRD(4) <= '1' when ((ReqD = '1' and Channel = "0100") or ChanEn(4) = '0') else '0';
106 RqRD(5) <= '1' when ((ReqD = '1' and Channel = "0101") or ChanEn(5) = '0') else '0';
107 RqRD(6) <= '1' when ((ReqD = '1' and Channel = "0110") or ChanEn(6) = '0') else '0';
108 RqRD(7) <= '1' when ((ReqD = '1' and Channel = "0111") or ChanEn(7) = '0') else '0';
109
110 RqXD(0) <= '1' when ((ReqX = '1' and Channel = "0000") or ChanEn(0) = '0') else '0';
111 RqXD(1) <= '1' when ((ReqX = '1' and Channel = "0001") or ChanEn(1) = '0') else '0';
112 RqXD(2) <= '1' when ((ReqX = '1' and Channel = "0010") or ChanEn(2) = '0') else '0';
113 RqXD(3) <= '1' when ((ReqX = '1' and Channel = "0011") or ChanEn(3) = '0') else '0';
114 RqXD(4) <= '1' when ((ReqX = '1' and Channel = "0100") or ChanEn(4) = '0') else '0';
115 RqXD(5) <= '1' when ((ReqX = '1' and Channel = "0101") or ChanEn(5) = '0') else '0';
116 RqXD(6) <= '1' when ((ReqX = '1' and Channel = "0110") or ChanEn(6) = '0') else '0';
117 RqXD(7) <= '1' when ((ReqX = '1' and Channel = "0111") or ChanEn(7) = '0') else '0';
118
119 with Channel select EBData <=
121 LRD(0) when "0000",
122 LRD(1) when "0001",
123 LRD(2) when "0010",
124 LRD(3) when "0011",
125 LRD(4) when "0100",
126 LRD(5) when "0101",
127 LRD(6) when "0110",
128 LRD(7) when others;
129 with Channel select EXData <=
134 LRX(0) when "0000",
135 LRX(1) when "0001",
136 LRX(2) when "0010",
137 LRX(3) when "0011",
138 LRX(4) when "0100",
139 LRX(5) when "0101",
140 LRX(6) when "0110",
141 LRX(7) when others;
142 with Channel select EBEmpty <=
145 RDE(0) when "0000",
146 RDE(1) when "0001",
147 RDE(2) when "0010",
148 RDE(3) when "0011",
149 RDE(4) when "0100",
150 RDE(5) when "0101",
151 RDE(6) when "0110",
152 RDE(7) when "0111",
153 '0' when others;
154 with Channel select EXEmpty <=
157 XDE(0) when "0000",
158 XDE(1) when "0001",
159 XDE(2) when "0010",
160 XDE(3) when "0011",
161 XDE(4) when "0100",
162 XDE(5) when "0101",
163 XDE(6) when "0110",
164 XDE(7) when "0111",
165 '0' when others;
166 with Channel select IntEBValid <=
169 RDV(0) when "0000",
170 RDV(1) when "0001",
171 RDV(2) when "0010",
172 RDV(3) when "0011",
173 RDV(4) when "0100",
174 RDV(5) when "0101",
175 RDV(6) when "0110",
176 RDV(7) when "0111",
177 '0' when others;
178 with Channel select EXValid <=
181 XDV(0) when "0000",
182 XDV(1) when "0001",
183 XDV(2) when "0010",
184 XDV(3) when "0011",
185 XDV(4) when "0100",
186 XDV(5) when "0101",
187 XDV(6) when "0110",
188 XDV(7) when "0111",
189 '0' when others;
190 with Channel select IntLastW <=
193 LastRNE(0) when "0000",
194 LastRNE(1) when "0001",
195 LastRNE(2) when "0010",
196 LastRNE(3) when "0011",
197 LastRNE(4) when "0100",
198 LastRNE(5) when "0101",
199 LastRNE(6) when "0110",
200 LastRNE(7) when "0111",
201 '0' when others;
202 with Channel select IntLastX <=
205 LastXNE(0) when "0000",
206 LastXNE(1) when "0001",
207 LastXNE(2) when "0010",
208 LastXNE(3) when "0011",
209 LastXNE(4) when "0100",
210 LastXNE(5) when "0101",
211 LastXNE(6) when "0110",
212 LastXNE(7) when "0111",
213 '0' when others;
214 prFlags:
219 process (SClk, Rst_n)
220 begin
221 if (Rst_n = '0') then
222 LastRNE(7 downto 0) <= (others => '0');
223 LastXNE(7 downto 0) <= (others => '0');
224 elsif (rising_edge(SClk)) then
225 if (ReqD = '1') then
226 case Channel is
227 when "0000" =>
228 LastRNE(0) <= not RDE(0);
229 when "0001" =>
230 LastRNE(1) <= not RDE(1);
231 when "0010" =>
232 LastRNE(2) <= not RDE(2);
233 when "0011" =>
234 LastRNE(3) <= not RDE(3);
235 when "0100" =>
236 LastRNE(4) <= not RDE(4);
237 when "0101" =>
238 LastRNE(5) <= not RDE(5);
239 when "0110" =>
240 LastRNE(6) <= not RDE(6);
241 when "0111" =>
242 LastRNE(7) <= not RDE(7);
243 when others =>
244 null;
245 end case;
246 end if;
247 if (ReqX = '1') then
249 case Channel is
250 when "0000" =>
251 LastXNE(0) <= not XDE(0);
252 when "0001" =>
253 LastXNE(1) <= not XDE(1);
254 when "0010" =>
255 LastXNE(2) <= not XDE(2);
256 when "0011" =>
257 LastXNE(3) <= not XDE(3);
258 when "0100" =>
259 LastXNE(4) <= not XDE(4);
260 when "0101" =>
261 LastXNE(5) <= not XDE(5);
262 when "0110" =>
263 LastXNE(6) <= not XDE(6);
264 when "0111" =>
265 LastXNE(7) <= not XDE(7);
266 when others =>
267 null;
268 end case;
269 end if;
270 end if;
271 end process;
272
273 end architecture a0 ;