Process of searching the highest priority of pending interrupts.
00041 process(IPRI_ARR ) is
00042 | variable highest_pri : (t_pri_width_range ); --! highest priority (HPRI) value
00043 | variable highest_pos : (t_int_width_range ); --! HPRI interrupt index
00044 | begin
00045 | highest_pri := (OTHERS => ' 1 '); --! init to the lowest (' 1 ... 1 ') priority value
00046 | highest_pos := (OTHERS => ' 0 '); --! reset index
00047 | for i in t_int_range loop
00048 | if(IPRI_ARR (i) < highest_pri) then --! new HPRI found
00049 | highest_pri := IPRI_ARR (i); --! store the HPRI value
00050 | highest_pos := (TO_UNSIGNED(i, INT_WIDTH )); --! store the HPRI interrupt index
00051 | end if;
00052 | end loop;
00053 |
00054 | SIG_IPRIHIGH <= highest_pri;
00055 | SIG_IPRIPOS <= highest_pos;
00056 | end process;
| process(IPRI_ARR ) is
00061 | variable i: ;
00062 | variable j: ;
00063 | begin
00064 | j := ' 0 ';
00065 | for i in t_pri_width_range loop
00066 | j := (j or (not SIG_IPRIHIGH (i))); -- index is valid if there is at least one ' 0 ' in the HPRI field
00067 | end loop;
00068 | SIG_IPRIPOSVALID <= j;
00069 | end process;
Process of SIG_IPRIPOSVALID adjustment.
Definition at line 74 of file ipri_highest.vhd.
00074 | process(IPRI_ARR ) is
00075 | variable i: ;
00076 | begin
00077 | i := TO_INTEGER((SIG_IPRIPOS ));
00078 |
00079 | FOR idx IN t_int_range LOOP
00080 | if(idx = i) then
00081 | IPRI_ADEC (idx) <= (' 1 ' and SIG_IPRIPOSVALID ); --! make select-line active only if the HPRI index is valid
00082 | else
00083 | IPRI_ADEC (idx) <= ' 0 ';
00084 | end if;
00085 | end LOOP;
00086 | end process;
The documentation for this class was generated from the following file:
© 2013 Josef Strnadel (email,
web),
Faculty of Information Technology, Brno University of Technology
(web)
|