|
помогите со схемой, прыгает частота |
|
|
|
Nov 11 2010, 20:54
|
Участник

Группа: Участник
Сообщений: 72
Регистрация: 16-05-07
Пользователь №: 27 757

|
Всем привет.
Нарисовал схему для альтера epm1270. Развожу в квартусе....
у меня 8-битная входная шина данных (data_in). с этой 8-битной шины данные идут на 24-битный сумматор, работающий за 1 такт. сумматор суммируется сам с собой (аля sum = sum + data_in).
логикой работы сумматора управляет "синхронная логика" - т.е. глубоких комбинационных схем нет
частота нужна 150 МГц.
Если ставлю регистр по входу (data_in), то частота начинает занижаться на 20 МГц - квартус дает 130 МГц, убираю 150 МГц.
При занижении ругается на критичный путь от входного регистра до выхода сумматора...
сделал сумматор 2-х тактным, а также убрал логику разрешения работы сумматора (всегда разрешен) - ситуация вообще не улучшилась
Подскажите, в чем беда? может буз входного регистра можно обойтись?
спасибо
Сообщение отредактировал essev - Nov 11 2010, 21:38
|
|
|
|
|
 |
Ответов
|
Nov 12 2010, 14:14
|

Lazy
     
Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76

|
Цитата(ViKo @ Nov 12 2010, 17:53)  Как это? А распространение переносов по всем разрядам счетчика? Например 0xffffffffffffffff + 1 Распространение переноса надо уметь готовить и счетчик колоть на части. Вот покопался и нашел проектик 2003 года (MAX+PLUS II/AHDL/GDF), просинтезил Вот результаты: - synchronous 64-bit loadable, down counter, asynch. reset 205,75 MHz для EPM1270F256A5 по Classic Timing Analyzer (Quartus 9.0) P.S. TimeQuest показал 300.03 MHz. Кому верить не знаю - Altera давно не занимаюсь.
--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
|
|
|
|
|
Nov 12 2010, 14:30
|

Lazy
     
Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76

|
Цитата(ViKo @ Nov 12 2010, 18:28)  Правильно, так можно и на 1024 разряда сделать счетчик. С конвейером. С латентностью. Автор темы хотел за такт получать результат. Как пример, можно обычных микросхем - счетчиков соединить друг за другом, выход предыдущего - на клок следующего. И - никаких проблем с быстродействием. Весь счетчик будет считать на максимальной рабочей частоте, как для одной микросхемы. " выход предыдущего на клок следующего" и не будет синхронного счетчика - со всеми вытекающими....
--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
|
|
|
|
|
Nov 12 2010, 14:56
|

Lazy
     
Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76

|
Цитата(ViKo @ Nov 12 2010, 17:33)  А с остальными доводами - согласны? Цитата Правильно, так можно и на 1024 разряда сделать счетчик. С конвейером. С этим согласен. С конвеером для переноса. При чем тут латентность не понял... TOPICSTARTER-у Интересная ссылка http://www.aoki.ecei.tohoku.ac.jp/arith/mg/index.htmlСгенерите себе, что Вам больше подходит. Ну и промоделировать не мешает, конечно...
--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
|
|
|
|
|
Nov 12 2010, 15:03
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(Victor® @ Nov 12 2010, 16:56)  При чем тут латентность не понял... Ну как же - результат счета появляется с задержкой. (вообще, здесь о сумматоре речь идет, мы уже на счетчик перескочили). Цитата(sazh @ Nov 12 2010, 16:58)  Может промоделируете, а потом уж советы? Да, у вас это уже сделано. Проглядел. Ну и через сколько тактов появится результат для конкретного входного сигнала?
|
|
|
|
|
Nov 12 2010, 15:23
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(sazh @ Nov 12 2010, 17:10)  В реальной жизни этих тактов навалом. Это вы топикстартеру скажите. Цитата(Victor® @ Nov 12 2010, 17:12)  Если Вы имеете в виду задержку на какое-то число тактов - то в счетчиках на основе CLA , о котором я пишу результат счета появляется в том-же такте. Можете поподробнее - что это, CLA? А, нашел, в ссылке. Carry LookAhead - как же, говорили об этом на форуме, совсем недавно. Там тоже есть ограничения по быстродействию. 64 разряда - фантастически выглядит. Не зря там дальше идет RCLA
|
|
|
|
|
Nov 12 2010, 15:32
|

Lazy
     
Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76

|
Цитата(ViKo @ Nov 12 2010, 18:23)  Это вы топикстартеру скажите.
Можете поподробнее - что это, CLA? Carry-look-ahead Вот из таких блоков собирается большей разрядности (писалось давненько - потому привожу как есть - на AHDL). Каскадируется соединением c_out с ena. Код SUBDESIGN 4bit_cnt ( clk :INPUT; res/ :INPUT; ena :INPUT; d[3..0] :INPUT; load :INPUT; q[3..0] :OUTPUT; c_out :OUTPUT; ) VARIABLE flip[3..0] :DFFE; BEGIN flip[].clk = clk; flip[].prn = res/; flip[].ena = ena # load;
IF load THEN flip[].d = d[]; ELSE flip[].d = flip[].q - 1; END IF; q[] = flip[]; c_out = DFF((flip[] == 1), clk, res/, ); END;
--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
|
|
|
|
|
Nov 12 2010, 18:00
|

Lazy
     
Группа: Свой
Сообщений: 2 070
Регистрация: 21-06-04
Из: Ukraine
Пользователь №: 76

|
Цитата(ViKo @ Nov 12 2010, 18:53)  Потому что следующий счетчик считает не сразу после того, как предыдущий был в состоянии 1111, а в следующем такте. Что-то Вы сами запутались и меня путаете.... О чем, собственно спор? Счетчик работает на вычитание, перенос должен быть когда его значение будет "0000". Но делается на такт раньше (когда его значение "1111") и задерживается (пайплайнинг или конвейер, если угодно). и разрешает следующей ступени в каскаде переключиться. Возьмите код, что я привел - промоделируйте и посмотрите.
--------------------
"Everything should be made as simple as possible, but not simpler." - Albert Einstein
|
|
|
|
|
Nov 13 2010, 20:30
|

Универсальный солдатик
     
Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362

|
Цитата(Victor® @ Nov 12 2010, 20:00)  Что-то Вы сами запутались и меня путаете... Давайте внесем ясность. Просто так с одной ступени на следующую перенос не передается. Ведь те переносы, что формируются внутри каждой ступени, имеют разную длительность. Их нужно объединять по И - все предыдущие, для формирования разрешения счета для следующей ступени. На этом объединении быстродействие счетчика и ограничивается. Если на одном LUT можно объединить 4 таких переноса, значит, максимально быстродействующий счетчик может быть 4*4 + 4 = 20 разрядов (каждая ступень - 4-разрядная, всего их 4 для формирования переноса и еще одна 4-разрядная ступень, использующая этот перенос). Дальше потребуется несколько логических элементов, чтобы выработать разрешение счета. Можно и последовательно передавать перенос-разрешение из ступени в ступень, что, естественно, будет еще медленнее. В-общем, 64-разрядный счетчик с быстродействием 2-разрядного регистра сдвига - не получится. P.S. а так, как я описал в сообщении №28 (и как ошибочно предположил, было сделано у вас в сообщении №35)- можно сделать быстрый счетчик. Потому что там не нужно учитывать предыдущие переносы. Только считать будет "абы что".
|
|
|
|
Сообщений в этой теме
essev помогите со схемой Nov 11 2010, 20:54 Sergey'F И какие у Вас tsu/th без этого регистра на входе п... Nov 11 2010, 21:41 essev tsu = 7.764 ns
tco = 9.01 ns
th = -1.269 ns Nov 11 2010, 21:58 des00 Цитата(essev @ Nov 11 2010, 14:54) Подска... Nov 12 2010, 04:15 DmitryR Кодmodule sum(
input clk,
input rstn... Nov 12 2010, 07:05 essev уменьшил разрядность сумматора до 16-ти частота со... Nov 12 2010, 06:53 des00 Цитата(essev @ Nov 12 2010, 00:53) не пон... Nov 12 2010, 07:00 sazh Цитата(essev @ Nov 12 2010, 09:53) не пон... Nov 12 2010, 07:13 essev так, что мегафункция может медленно работать? нужн... Nov 12 2010, 07:58 DmitryR Уважаемый, я двумя постами выше вам уже все написа... Nov 12 2010, 08:18 essev сделал по коду Sergey'F. Квартус 6.0 результат... Nov 12 2010, 10:09 DmitryR Цитата(essev @ Nov 12 2010, 13:09) Dmitry... Nov 12 2010, 11:06 sazh Цитата(essev @ Nov 12 2010, 13:09) Dmitry... Nov 12 2010, 11:26 essev DmitryR, вы уж не обессудьте меня - долбаюсь с это... Nov 12 2010, 11:37 sazh Цитата(essev @ Nov 12 2010, 14:37) с этой... Nov 12 2010, 12:05 DmitryR Вот именно что вы долбаетесь - а вы проанализируйт... Nov 12 2010, 12:07                ViKo Цитата(Victor® @ Nov 12 2010, 20:00) О че... Nov 12 2010, 19:08                 sazh Цитата(ViKo @ Nov 12 2010, 22:08) Если бы... Nov 12 2010, 19:53           Victor® Цитата(ViKo @ Nov 12 2010, 18:03) Ну как ... Nov 12 2010, 15:12   sazh Цитата(ViKo @ Nov 12 2010, 16:31) но за д... Nov 12 2010, 14:05    ViKo Цитата(sazh @ Nov 12 2010, 16:05) За один... Nov 12 2010, 14:12     sazh Цитата(ViKo @ Nov 12 2010, 17:12) Чтобы и... Nov 12 2010, 14:58 ViKo Похоже, это предел работы для MAX. Если показывает... Nov 12 2010, 12:34 essev спасибо всем за ответы
только что сделал сумматор... Nov 12 2010, 19:46 Sergey'F Цитата(essev @ Nov 12 2010, 22:46) Почему... Nov 12 2010, 20:36 ViKo 2 sazh
Пока я читаю ваш код, сходите по приведенн... Nov 12 2010, 20:09 sazh Цитата(ViKo @ Nov 12 2010, 23:09) И проко... Nov 12 2010, 20:25 ViKo 2 sazh
Разобрался в вашем коде. Вот это меня, дейс... Nov 12 2010, 20:48 essev сделал в 8.0.
частота проекта стала равной нужной... Nov 13 2010, 04:34 Sergey'F Пользоваться Physical synthesis optimization и все... Nov 13 2010, 07:53 ViKo Когда задал в Q9.1SP2 Fitter Effort - Standard Fit... Nov 13 2010, 08:34 essev по ТЗ немного изменились требования к проекту - ма... Nov 13 2010, 08:38 sazh Цитата(essev @ Nov 13 2010, 11:38) по ТЗ ... Nov 13 2010, 10:55 Sergey'F Цитата(ViKo @ Nov 13 2010, 11:34) Когда з... Nov 13 2010, 09:11 essev снаружи Nov 13 2010, 11:24 essev Цитата(DmitryR @ Nov 12 2010, 10:05) Кодm... Nov 15 2010, 10:50 essev немного офтоп
у кого-нить есть лицензия для кварт... Nov 15 2010, 16:39 des00 Цитата(essev @ Nov 15 2010, 10:39) у кого... Nov 15 2010, 18:04 essev надо поглядеть ))) а то я думал, что лицуха не пол... Nov 16 2010, 05:04
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|