2015-04-08 3 views
0

ОК, ребята, мне это нужно для моей работы в лаборатории. В рамках проекта, я должен сделать это:Умножение с переменной в VHDL

M * (2^Е) где т M2 M1 M0 3-разрядное число и е E1 E0 2 разрядное число

Я знаю, что мы добавьте нули в конец числа при умножении на 2, но число «E» не является постоянным.

Я просто хочу знать, как сделать это

Язык: VHDL * Я не разрешено использовать Слово «поведенческий» архитектуры

Спасибо!

+0

Подумайте, что на самом деле делает '2^E' ... есть оператор/функция VHDL, которая реализует это даже для переменных (непостоянных) значений. –

+0

Поскольку «поведенческий» запрещен, и я не уверен, что этот оператор разрешен, это может быть достигнуто с помощью простой таблицы поиска, поскольку имеется только 5 входных битов. –

ответ

2

Я не дам вам полное решение, так как это противоречило бы цели лаборатории ...

Вы знаете, что добавить ноль в конце числа при умножении на 2, I» м, что вы также можете выяснить, сколько нулей добавить в E1E0 идет от 0 до 3. так как есть только 4 случая, было бы легко просто перечислить все случаи:

with e select 
    output <= "000" & m when "00", 
       something when "01", 
       something when "10", 
       something when others; 

вы можете или не может видели этот синтаксис в ваших классах. Это происходит в вашем театре архитектуры вне процесса. Внутри процесса вместо этого вы должны использовать оператор case.

Смежные вопросы