Я изменяю множитель, и у меня возникают проблемы с его запуском на FPGA. В Modelsim симуляция правильна. У меня есть следующее, что дает неправильный результат на FPGA: Вне заявления процесса, у меня есть следующий параллельный операторVHDL, назначение параллельного сигнала неверно на FPGA, но прямо в Modelsim
(я опущенные заявления сигнала)
architecture behavioral of multiplier is
...
...
begin
a_argument <= a1_neg when booth = "110"
else a2_plus when booth = "011";
Значение a1_neg и a2_plus которые предварительно вычислены в процессе заявлении при входе в состоянии умножения:
when MULT_SIGNED_MULT =>
a1_plus(33 downto 0) <= a(31) & a(31) & a;
a1_neg(33 downto 0) <= not a(31) & not a(31) &bv_negate(a);
a2_plus(33 downto 0) <= a(31) & a & "0";
a2_neg(33 downto 0)<= not a(31) &bv_negate(a) & "0";
И тогда он входит этап, на котором множитель вычисляет новые значения будки которые влияют на a_argument сигнала
С другой стороны, когда я не предвычислением значения и непосредственно ввести все в параллельный оператор следующим образом:
a_argument <= not a(31) & not a(31) &bv_negate(a) when booth = "110"
else not a(31) &bv_negate(a) & "0" when booth = "011";
ПЛИС будет производить правильный результат. Кроме того, Modelsim даст правильный результат независимо от разницы между этими двумя.
Мне было интересно, почему один вариант дает правильный результат на FPGA, а другой нет.
Всех видов возможных причин , Возможно, гонка. Как «ModelSim дает правильный результат»? Как работает этот процесс? Комбинаторные? Clocked? Что находится в списке чувствительности? – EML
'a_argument' является защелкой, потому что вы не предоставили условие« когда другие ». Вы должны исследовать, как это синтезируется на вашем целевом устройстве. Вам нужно всего лишь 2-к-1 mux, чтобы вы могли просто заменить 'when booth =" 011 "' '' when others'. –
Посмотрите на свой список чувствительности к процессу, особенно если вы считаете, что синтезированная реализация верна и ваша симуляция неверна. Ваши фрагменты кода не являются [минимальным, полным и проверяемым примером] (http://stackoverflow.com/help/mcve). – user1155120