sazh 9 November 7, 2006 Posted November 7, 2006 · Report post Все что было реализовано на 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 Quote Share this post Link to post Share on other sites More sharing options...
SAAl 0 November 8, 2006 Posted November 8, 2006 · Report post Обойти входные регистры M4K можно, если на входы подавать не выход счетчика, а вход регистра счетчика. ;) Да об этом я и говорил в абзаце "мол обойти можно но ресурсоемко и задержки огромадные". Я делал так на вход защелки адреса М4 сумматор "предсказывающий" следующий адрес :) Иначе задача декремента/инкеремента не решается. Или у Вас другой способ?! Quote Share this post Link to post Share on other sites More sharing options...
SAAl 0 November 8, 2006 Posted November 8, 2006 (edited) · Report post Канэчна это все муторно.. но по виду САМЫЙ обычный реверсивный шотчык.. а если это так то не морочте то чито бабушки на пасху красят а возьмите мануал на любой синтезатор (да хоть и на тот же квартус) и посмотрите в нем как нада ентого зверя описывать. С каждым синтезером идет дока с описанием КАК реализовывать типовые узлы так читобы он понял. Я делал на 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 November 8, 2006 by SAAl Quote Share this post Link to post Share on other sites More sharing options...
SAAl 0 November 8, 2006 Posted November 8, 2006 · Report post ////wire iclock = load? ~clock : clock; А сам load формируется по фронту или по спаду clock? Я думаю что относительно фронта load будет запаздывать, но формирование load начнется по фронту. Quote Share this post Link to post Share on other sites More sharing options...
SAAl 0 November 8, 2006 Posted November 8, 2006 · Report post Все что было реализовано на jk триггерах врядли будет работать. Потому что есть load, который может формироваться только из клока. Да потом еще и замешен с этим клоком. Значит обязательно счетчик адреса будет "тормозить". Все это эквивалентно асинхронной загрузки в счетчик при работе по одному фронту клока. Да я уже думал что асинхронной загрузки не избежать. Но Ваш то код просто организует все по фронту и +/- и загрузку. Обойти входные регистры M4K можно, если на входы подавать не выход счетчика, а вход регистра счетчика. Спасибо за науку, это ж очевидно было, я баран. Quote Share this post Link to post Share on other sites More sharing options...
sazh 9 November 8, 2006 Posted November 8, 2006 · Report post Да я уже думал что асинхронной загрузки не избежать. Но Ваш то код просто организует все по фронту и +/- и загрузку. (vetal @ Nov 7 2006, 17:58) Обойти входные регистры M4K можно, если на входы подавать не выход счетчика, а вход регистра счетчика. ///////////////////////// Загрузка организуется по уровню в этом коде. Quote Share this post Link to post Share on other sites More sharing options...