Я пишу очень очень простой процессор на VHDL, который работает с 8-битным потоком.Я хочу включить инструкцию умножения в мой ALU, но умножить только те числа, которые меньше 15, поскольку умножение двух 8-битных чисел приведет к 16-битному числу.Так, например, если бы я хотел умножить 4 и 7, у меня было бы 0000 0100 x 0000 0111, и результат был бы 00011000.
Поэтому я написал следующее:
result <= std_logic_vector(unsigned(x)*unsigned(y));
Но так как я работаю в 8-битной системе, мой сигнал результата представляет собой 8-битный стандартный логический вектор, и ISE выдает мне сообщение об ошибке, когда я пытаюсь выполнить это назначение.Так как я просто хочу 8 младших значащих битов числа, я попытался
result <= std_logic_vector(unsigned(x)*unsigned(y))(7 downto 0);
Но тогда он говорит, что я не могу индексировать результат преобразования типа, который кажется ясным, но это не такНе указывайте какой-либо другой способ сделать это.
Есть ли способ выбрать младшие значащие биты умножения без необходимости создания отдельного сигнала?
Заранее спасибо.