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.