Bạn có thể cho tôi biết nếu có cách nào tốt hơn để viết bộ mã hóa ưu tiên trong VHDL hơn là chỉ sử dụng câu lệnh if-else? Ý tôi là, tôi đã có mã này và nó hoạt động, nhưng nó có thể viết ngắn hơn không? Switch là một std_logic_vector.cách ngắn để viết bộ mã hóa ưu tiên VHDL
Cảm ơn sự giúp đỡ của bạn!
shifting : PROCESS(CLK_IN, new_length_ready, switch)
VARIABLE highest_switch : INTEGER RANGE 0 TO 15 := 15;
BEGIN
-- priority encoder, changes the length of the snake track
-- (i.e., number of leds for the snake to move)
IF switch(15) = '1' THEN
highest_switch := 15;
ELSIF switch(14) = '1' THEN
highest_switch := 14;
ELSIF switch(13) = '1' THEN
highest_switch := 13;
ELSIF switch(12) = '1' THEN
highest_switch := 12;
ELSIF switch(11) = '1' THEN
highest_switch := 11;
ELSIF switch(10) = '1' THEN
highest_switch := 10;
ELSIF switch(9) = '1' THEN
highest_switch := 9;
ELSIF switch(8) = '1' THEN
highest_switch := 8;
ELSIF switch(7) = '1' THEN
highest_switch := 7;
ELSIF switch(6) = '1' THEN
highest_switch := 6;
ELSIF switch(5) = '1' THEN
highest_switch := 5;
ELSIF switch(4) = '1' THEN
highest_switch := 4;
ELSIF switch(3) = '1' THEN
highest_switch := 3;
ELSIF switch(2) = '1' THEN
highest_switch := 2;
ELSIF switch(1) = '1' THEN
highest_switch := 1;
ELSIF switch(0) = '1' THEN
highest_switch := 0;
ELSE
highest_switch := 15;
END IF