Jump to content
    

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

Share this post


Link to post
Share on other sites

если вам не сложно, то нарисуйте

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

по словам сенсорики вы понимаете сигнал стоящий после слова 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;

Share this post


Link to post
Share on other sites

по словам сенсорики вы понимаете сигнал стоящий после слова 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.

Share this post


Link to post
Share on other sites

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

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

 

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Не в каждый 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;

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...