40use ieee.std_logic_1164.
all;
41use ieee.numeric_std.
all;
101 end record regr_type;
165 G2B_WW :
gray2bin_gen -- gray->bin
for waddr
on write side
166 generic map (DWIDTH =>
AWIDTH)
168 G2B_WR :
gray2bin_gen -- gray->bin
for waddr
on read side
169 generic map (DWIDTH =>
AWIDTH)
171 G2B_RR :
gray2bin_gen -- gray->bin
for raddr
on read side
172 generic map (DWIDTH =>
AWIDTH)
174 G2B_RW :
gray2bin_gen -- gray->bin
for raddr
on write side
175 generic map (DWIDTH =>
AWIDTH)
183 if rising_edge(CLKW) then
186 end process proc_regw;
193 variable ibusy : slbit := '0';
194 variable igcw_ce : slbit := '0';
195 variable igcw_rst : slbit := '0';
196 variable isizew : slv(AWIDTH-1 downto 0) := (others=>'0');
207 if unsigned(isizew) = 0 then
211 if ENA='1' and r.busy='0' then
213 if unsigned(isizew) = 1 then
220 elsif r.rstw_ss = '1' then
224 if r.rstw='1' and r.rstw_ss='1' then
227 if r.rstr_s = '1' then
231 if RESETW='1' or r.rstw='1' or r.rstw_ss='1' or r.rstr_s='1'
234 isizew := (others=>'1');
241 n.raddr_s := r.raddr_c;
242 n.rstw_sc := R_REGR.rstw_s;
243 n.rstw_ss := r.rstw_sc;
245 n.rstr_s := r.rstr_c;
254 end process proc_nextw;
261 if rising_edge(CLKR) then
264 end process proc_regr;
271 variable ival : slbit := '0';
272 variable igcr_ce : slbit := '0';
273 variable igcr_rst : slbit := '0';
274 variable isizer : slv(AWIDTH-1 downto 0) := (others=>'0');
286 if unsigned(isizer) = 0 then
290 if r.val='1' and HOLD='0' then
292 if unsigned(isizer) = 1 then
299 elsif r.rstr_ss = '1' then
303 if r.rstr='1' and r.rstr_ss='1' then
306 if r.rstw_s = '1' then
310 if RESETR='1' or r.rstr='1' or r.rstr_ss='1' or r.rstw_s='1'
313 isizer := (others=>'0');
320 n.waddr_s := r.waddr_c;
321 n.rstr_sc := R_REGW.rstr_s;
322 n.rstr_ss := r.rstr_sc;
324 n.rstw_s := r.rstw_c;
333 end process proc_nextr;
slv( AWIDTH- 1 downto 0) :=( others => '0') WADDR
slv( AWIDTH- 1 downto 0) :=( others => '0') RADDR_S_BIN
regr_type := regr_init R_REGR
regr_type :=( slv( to_unsigned( 0, AWIDTH) ), slv( to_unsigned( 0, AWIDTH) ), slv( to_unsigned( 0, AWIDTH) ), '0', '0', '0', '0', '0', '0') regr_init
regw_type := regw_init R_REGW
slv( AWIDTH- 1 downto 0) :=( others => '0') RADDR_BIN
regw_type := regw_init N_REGW
slv( AWIDTH- 1 downto 0) :=( others => '0') RADDR
slv( AWIDTH- 1 downto 0) :=( others => '0') WADDR_S_BIN
regw_type :=( slv( to_unsigned( 0, AWIDTH) ), slv( to_unsigned( 0, AWIDTH) ), slv( to_unsigned( 0, AWIDTH) ), '0', '0', '0', '0', '0', '0') regw_init
slv( AWIDTH- 1 downto 0) :=( others => '0') WADDR_BIN
regr_type := regr_init N_REGR
out DO slv( DWIDTH- 1 downto 0)
in DI slv( DWIDTH- 1 downto 0)
out SIZER slv( AWIDTH- 1 downto 0)
out SIZEW slv( AWIDTH- 1 downto 0)