Перейти к содержанию
    

Могу предложить нарисовать нужную Вам схему в графическом редакторе. Опираясь на нужные макросы. Соединить их между собой линиями. Сразу все станет понятно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в процессах по data_in в сенсорике стоит вся шина, хотя реально для этих процессов требуется только часть шины, поэтому у вас получится логическая избыточность и как следствие большие затраты ресурсов кристала и более высокое потребление.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в процессах по data_in в сенсорике стоит вся шина, хотя реально для этих процессов требуется только часть шины, поэтому у вас получится логическая избыточность и как следствие большие затраты ресурсов кристала и более высокое потребление.

Какие ресурсы кристалла? Какое потребление? Этот код даже если и будет нормально синтезироваться, в чем я очень сомневаюсь, работать не будет никогда. Плевал синтезатор на ваше описание сенсорики в процессах. При синтезе это просто игнорируется! Там надо добавлять клоки, пернаправление между процессами, управление памятью, трудно даже все перечислить.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Про синтезабельность и работоспособность кода я не говорю, т.к. если чесно было лень весь изучать. А некоторые моменты на которых в свое время сам обжигался сразу бросились в глаза.

К слову, в мультиплексорах при разрядности управляющего слова 9-10 лишний сигнал в сенсорике приводит к дополнительным 20-30 термам(по крайней мере в ISE синтезаторе, в Leonardo и т.д. не могу сказать, т.к. не приходилось сталкиваться), что при жестко заданном кристале бывает смертельно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Про синтезабельность и работоспособность кода я не говорю, т.к. если чесно было лень весь изучать. А некоторые моменты на которых в свое время сам обжигался сразу бросились в глаза.

К слову, в мультиплексорах при разрядности управляющего слова 9-10 лишний сигнал в сенсорике приводит к дополнительным 20-30 термам(по крайней мере в ISE синтезаторе, в Leonardo и т.д. не могу сказать, т.к. не приходилось сталкиваться), что при жестко заданном кристале бывает смертельно.

Подобного рода мультиплексоры стоит делать либо в комбинаторной логике, либо тактируемые в процессе.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

по словам сенсорики вы понимаете сигнал стоящий после слова process(сигнал )

тогда все процессы надо именить и в списке чувствительности написать clk

process(clk ) -- а раньше была data_in

begin

if i = 2**ADDR_WIDTH-1 then

i <= 0;

else

i <= i + 1;

end if;

ram1(i) <= run;

end process;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

по словам сенсорики вы понимаете сигнал стоящий после слова process(сигнал )

тогда все процессы надо именить и в списке чувствительности написать clk

process(clk ) -- а раньше была data_in

begin

if i = 2**ADDR_WIDTH-1 then

i <= 0;

else

i <= i + 1;

end if;

ram1(i) <= run;

end process;

:) Вообщет этим дело не ограничивается...

Надо еще все что у вас в процессе вставить в if по фронту или спаду вашего clk.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

:) Вообщет этим дело не ограничивается...

Надо еще все что у вас в процессе вставить в if по фронту или спаду вашего clk.

 

вы имеете в виду, что в каждый if надо дополнительно вставить clk'event and clk = '0' если по спаду, тк у меня все сигнал устанавливаються по спаду clk

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вы имеете в виду, что в каждый if надо дополнительно вставить clk'event and clk = '0' если по спаду, тк у меня все сигнал устанавливаються по спаду clk

Не в каждый if надо вставить, а все что в процессе надо вставить в еще один if, такой как описан.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не в каждый if надо вставить, а все что в процессе надо вставить в еще один if, такой как описан.

имеете в виду дополнительно поставить if

вот так :

 

process(clk )

begin

if clk'event and clk = '0' then

if i = 2**ADDR_WIDTH-1 then

i <= 0;

else

i <= i + 1;

end if;

end if;

ram1(i) <= run;

end process;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...