Jump to content
    

posedge и negadge обработка тригера

Все что было реализовано на jk триггерах врядли будет работать. Потому что есть load, который может формироваться только из клока. Да потом еще и замешен с этим клоком. Значит обязательно счетчик адреса будет "тормозить". Все это эквивалентно асинхронной загрузки в счетчик при работе по одному фронту клока.

module ct

(

input clk,

input rst,

input load,

input updown,

input [7:0] data,

output [7:0] out

);

 

reg [7:0] ct;

 

always @(posedge clk or posedge rst or posedge load)

begin

if (rst) ct <= 8'd0;

else if (load) ct <= data;

else ct <= updown ? ct + 1'b1 : ct - 1'b1;

end

 

assign out = ct;

 

endmodule

Share this post


Link to post
Share on other sites

Обойти входные регистры M4K можно, если на входы подавать не выход счетчика, а вход регистра счетчика.

 

;) Да об этом я и говорил в абзаце "мол обойти можно но ресурсоемко и задержки огромадные". Я делал так на вход защелки адреса М4 сумматор "предсказывающий" следующий адрес :) Иначе задача декремента/инкеремента не решается.

 

Или у Вас другой способ?!

Share this post


Link to post
Share on other sites

Канэчна это все муторно.. но по виду САМЫЙ обычный реверсивный шотчык..

а если это так то не морочте то чито бабушки на пасху красят а возьмите мануал на любой синтезатор (да хоть и на тот же квартус) и посмотрите в нем как нада ентого зверя описывать. С каждым синтезером идет дока с описанием КАК реализовывать типовые узлы так читобы он понял.

 

Я делал на lpm_counter, но он синхронен относительно фронта, т.е. и счет и загрузка идет по фронту. А мне в силу синхронности блока М4 (вот что главная причина таких извращений) необходимо сделать инкремент/декремент счетчика раньше защелкивания адреса в М4 (а это по фронту клока). Прямая загрузка по load конечно будет идти сразу и в защелку адреса M4 и в реверсивный счетчик, поэтому она то должна проходить честно по фронту ;)

 

 

Если это учебная/ресерчная задача - могут спасти два регистра DO_0[7:0] и DO_1[7:0].

В первый по заднему фронту грузить данные , во второй, по переднему, перегружать.

 

Ну скажем да, это то что получится при честном posedge и negedege раздельном always, в которых передача значений идет в разные reg (скажем x,y), а те в свою очередь потом собираются в Q по скажем

assign Q = load? X : Y;

 

Я это делал, возмущает что ;) да то что таких указателей не один и 22 LEs (требования скорости, поэтому счетчик полностью параллелен на все 8 разрядов) уйдут на реализацию каждого (а их больше десятка).

 

Чем опасен gate на входе в клок такого реверсивного счетчика? Только тем что я "проморгаю" настоящее значение задержки по клоку? И выберу не верную тактовую?

 

если смысл задуманного удвоить частоту - PLL по вам плачет

 

удачи..

 

Можно сказать и так. Но настоящий смысл добиться, в некотором роде, асинхронности М4 по входу. Причины а) не охота конвеерезироваться б) (решение похожее на удвоить частоту) формировать специальный клок на нкремент (с другой скважностью [3:1] и удвоенной частотой).

 

Спасибо за пожелание удачи.

Edited by SAAl

Share this post


Link to post
Share on other sites

////wire iclock = load? ~clock : clock;

А сам load формируется по фронту или по спаду clock?

 

Я думаю что относительно фронта load будет запаздывать, но формирование load начнется по фронту.

Share this post


Link to post
Share on other sites

Все что было реализовано на jk триггерах врядли будет работать. Потому что есть load, который может формироваться только из клока. Да потом еще и замешен с этим клоком. Значит обязательно счетчик адреса будет "тормозить". Все это эквивалентно асинхронной загрузки в счетчик при работе по одному фронту клока.

Да я уже думал что асинхронной загрузки не избежать. Но Ваш то код просто организует все по фронту и +/- и загрузку.

 

 

Обойти входные регистры M4K можно, если на входы подавать не выход счетчика, а вход регистра счетчика.

 

Спасибо за науку, это ж очевидно было, я баран.

Share this post


Link to post
Share on other sites

Да я уже думал что асинхронной загрузки не избежать. Но Ваш то код просто организует все по фронту и +/- и загрузку.

(vetal @ Nov 7 2006, 17:58)

 

Обойти входные регистры M4K можно, если на входы подавать не выход счетчика, а вход регистра счетчика.

/////////////////////////

Загрузка организуется по уровню в этом коде.

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...