Brainer: Reducer til et VHDL statement

tors jun 12, 2008 (Anders Enggaard)

Test dig selv på den her! Baggrunden er en case fra et kundeprojekt, hvor der var behov for genskrivning af et større VHDL kompleks. En lille sektion af koden er gengivet herunder – udfordringen er at omskrive det til et (og kun et) VHDL statement.

process(input, cnt)
  variable temp : std_logic_vector(15 downto 0);
begin
  temp(15 downto 8)   := "00000000";
  temp(7 downto 0)    := input;
  if cnt  = "01" then
    for  i in 15  downto 4 loop
      temp(i)        := temp(i-4);
    end  loop;
    temp(3 downto 0) := "0000";
  elsif  cnt = "10" then
    for  i in 15  downto 8 loop
      temp(i)        := temp(i-8);
    end  loop;
    temp(7 downto 0) := "00000000";
  else
    temp             := temp;
  end  if;
  result <= temp;
end  process;

Der er flere mulige løsninger – og derfor er der kun æren på højkant. Den første som kommer med et korrekt svar får selvfølgelig hædrende omtale næste gang!

Har du lyst til at lære mere VHDL, så overvej vores “Intensiv VHDL Intro” kursus.

Hvad mener du?