[an error occurred while processing this directive]
|
есть шесть входов, три выхода.
надо посчитать количество единиц на входах и передать число единиц на выход.
самое аппаратурно компактное, что у меня получилось, это вот такое на комбинационной логике:)
Y1 <= ((X1 xor X2) xor (X3 xor X4)) XOR (X6 xor X5);
Y2 <= ( ( (X1 xor X2) Xor (X3 xor X4) ) ANd (X5 xor X6) ) XOR ( ((X1 xor X2) And (X3 xor X4)) XOr ( ((X1 and X2) Xor (X3 and X4)) Xor (X5 and X6) ) );
Y3 <= (( ( (X1 xor X2) Xor (X3 xor X4) ) ANd (X5 xor X6) ) ANd ( ((X1 xor X2) And (X3 xor X4)) XOr ( ((X1 and X2) Xor (X3 and X4)) Xor (X5 and X6) ) )) or (((X1 xor X2) And (X3 xor X4)) ANd ( ((X1 and X2) Xor (X3 and X4)) Xor (X5 and X6) )) or ((((X1 and X2) Xor (X3 and X4)) and (X5 and X6) )) or ((X1 and X2) and (X3 and X4));
было придумано в виде схемы, а потом списано со схемы на vhdl, поэтому получилось так страшно и геморно.
написать что-нибудь более-менее элегантное не удалось
что-нибудь типа sum <= sum + x(0) + x(1) + x(2) + x(3) + x(4) + x(5); не заработало. а то, что заработало, при синтезе раздувалось до огроменных размеров.
надеюсь на совет старших коллег)
E-mail: info@telesys.ru