क्या आप मुझे बता सकते हैं कि अगर वीएचडीएल में प्राथमिकता एन्कोडर लिखने का बेहतर तरीका है तो बस-और कथन का उपयोग करने के बजाय? मेरा मतलब है, मुझे यह कोड मिला है और यह काम करता है, लेकिन क्या इसे छोटा लिखा जा सकता है? स्विच एक std_logic_vector है।वीएचडीएल प्राथमिकता एन्कोडर लिखने का संक्षिप्त तरीका
आपकी मदद के लिए धन्यवाद!
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