2013-03-25 2 views
0

Просто имея такой код:присвоение переменной и синтезируемый код

if(rising_edge(clk)) then 
    temp(0):="001"; 
    temp(1):="011"; 
    temp(2):="101"; 
    temp(3):="000"; 
    temp(0):=temp(3)xor temp(5); 
end if 

Для примера выше всего этого присваивания значения переменной будет сделано в 1 тактовый цикл, который является довольно непрактичным. В поведенческом моделировании он отлично работает, но в пост-синтезе он перепутался. Могу ли я добавить как задержку или sth как ожидание (wait statement несинтезируемый), чтобы заставить его ждать, использует переменную, получает ее значение, прежде чем перейти к следующей строке?

+1

Что вы подразумеваете под «перепутали»? как выглядят результаты? где temp (5) исходит из вашего опубликованного кода? – baldyHDL

ответ

0

Выполнение всех этих операций за один такт. Аппаратное обеспечение чрезвычайно быстрое, а тактовые частоты FPGA не так высоки относительно процессоров.

Поскольку вы используете переменные, промежуточные результаты используются немедленно. Если вы хотите более явную задержку, вы можете использовать сигнал. Вышеприведенный код с сигналами будет использовать temp(3) от предыдущего восходящего фронта.

0

для синтеза вы не можете делать задержки, как ждать. четко определенные контролируемые задержки синтеза могут быть сделаны только с конвейерной обработкой (тактовые импульсы как блоки задержки).

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