Codorul de prioritate se foloseste pentru a selecta unul dintre mai multe evenimente. De exemplu sistemele de calcul stabilesc prioritatea intreruperilor hardware cu ajutorul unui codor de prioritate.
Sa consideram un codor de prioritate cu 8 intrari. Acest decodor va avea o magistrala de iesire de latimea de 5 biti. Daca nici-un semnal de intrare nu este 1 atunci iesirea este 0. Daca primul semnal este activ, atunci indiferent de restul intrarilor, iesirea va fi 1. Daca primul semnal este inactiv si al doilea este activ, atunci iesirea codorului va fi 2, indiferent de restul semnalelor. Si asa mai departe.
In urma #3 se astepata ca se obtin implementari la nivel de porti a codoarelor de la 8 pana la 32 de biti intr-o tehnologie tinta . Se cere verificarea implementarilor prin simulare VHDL. Se sugereaza:
Conceperea unui testbench in care sunt instantiate la rand codoare de 8 pana la 32 de biti
comparatia implementarilor cu urmatoarea descriere comportamentala:
entity pe_Nbits is
Generic ( N: natural := 4
);
Port (
bi : in STD_LOGIC_VECTOR (N-1 downto 0);
bo : out STD_LOGIC_VECTOR (log2(N)-1 downto 0);
);
end pe_Nbits;
architecture Behavioral of pe_Nbits is
signal highest_bit : natural := N-1;
function log2 (n : natural) return integer is
variable m, p : integer;
begin
m := 0;
p := 1;
for i in 0 to n loop
if p < n then
m := m + 1;
p := p * 2;
end if;
end loop;
return m;
end log2;
begin
shifting : PROCESS(bi)
variable i: natural;
begin
for i in 0 to N-1 loop
if bi(i) = '1' then
highest_bit <= i;
end if;
end loop;
end process;
bo <= std_logic_vector(to_unsigned(highest_bit, log2(N)));
Codorul de prioritate se foloseste pentru a selecta unul dintre mai multe evenimente. De exemplu sistemele de calcul stabilesc prioritatea intreruperilor hardware cu ajutorul unui codor de prioritate.
Sa consideram un codor de prioritate cu 8 intrari. Acest decodor va avea o magistrala de iesire de latimea de 5 biti. Daca nici-un semnal de intrare nu este 1 atunci iesirea este 0. Daca primul semnal este activ, atunci indiferent de restul intrarilor, iesirea va fi 1. Daca primul semnal este inactiv si al doilea este activ, atunci iesirea codorului va fi 2, indiferent de restul semnalelor. Si asa mai departe.
In urma #3 se astepata ca se obtin implementari la nivel de porti a codoarelor de la 8 pana la 32 de biti intr-o tehnologie tinta . Se cere verificarea implementarilor prin simulare VHDL. Se sugereaza:
architecture Behavioral of pe_Nbits is
signal highest_bit : natural := N-1;
end log2;
begin
shifting : PROCESS(bi) variable i: natural; begin for i in 0 to N-1 loop if bi(i) = '1' then highest_bit <= i; end if; end loop; end process;
bo <= std_logic_vector(to_unsigned(highest_bit, log2(N)));
end Behavioral;