|
помогите со схемой, прыгает частота |
|
|
|
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
|
|
|
|
|
 |
Ответов
(45 - 55)
|
Nov 13 2010, 07:53
|
Местный
  
Группа: Свой
Сообщений: 351
Регистрация: 17-09-05
Из: Москва
Пользователь №: 8 660

|
Пользоваться Physical synthesis optimization и всеми остальными настройками, конечно, можно. Если эта настройка включена, компилятор на этапе разводки старается пересинтезировать логику так, чтобы длинные пути проходили через меньшее количество логических элементов. Вот проект в приложении. Сходу, без настроек, без временных требований, тот же 9.1SP2 - почти 160МГц. Что я делаю не так? P.S. Я начал было подозревать, что Вы MAXIIZ используете, но версии Z объемом 1270 не бывает, да и 6.0 версии Z почти наверняка еще нет. Так что ничего не понимаю. А в чем проблема поставить одну из последних версий Quartus? Версию 10 не посоветую, а 9.1SP2 - в самый раз.
|
|
|
|
|
Nov 13 2010, 08:38
|
Участник

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

|
по ТЗ немного изменились требования к проекту - максимальная частота должна быть 170 МГц. ПЛИС такая же как и была EPM1270T144C5 У меня путь проектирования следующий: FPGA Advantage -> Precision Syntesys -> Quartus. Специально выделил цепь, на которую ругается Квартус и пошел по всему пути проектирования. А цепочка следующая: 8-битный входной порт -> 2-тактный сумматор (по методу DmitryR) -> Выходной 16-битный порт. Синтезирую в Precision Syntesys. Он мне пишет, что максимальная частота проекта = 152 МГц и пишет, что долгая цепь это суммирование в 2-тактном сумматоре. Кидаю этот проект Квартусу и он поднимает частоту до 182 МГц. Так как в "большом" проекте цепочка 8-битный входной порт -> 2-тактный сумматор (по методу DmitryR) -> Выходной 16-битный порт, то добавляю еще одну. Синтезирую в Precision Syntesys. Он также пишет, что максимальная частота проекта = 152 МГц и пишет, что долгая цепь это суммирование в 2-тактном сумматоре. Но теперь Квартус выдает максимальную частоту = 166 МГц... - не вытянул Если воспользуюсь Physical synthesis optimization, то может быть достигну нужной мне частоты...
|
|
|
|
|
Nov 13 2010, 09:11
|
Местный
  
Группа: Свой
Сообщений: 351
Регистрация: 17-09-05
Из: Москва
Пользователь №: 8 660

|
Цитата(ViKo @ Nov 13 2010, 11:34)  Когда задал в Q9.1SP2 Fitter Effort - Standard Fit, для кода Sergey'F из сообщения №43 получилась частота 159.92 MHz. (До этого у меня стояла - Auto Fit, и частота была 127.88 MHz. Вроде, по-умолчанию так стоит) Когда задал Default required fmax - 150 MHz, частота выросла до 175.72 MHz. и все-то Quartus нужно "подпихивать"  Auto Fit прекращает оптимизации для сокращения времени компиляции, как только выполнит временные требования. Так как временных требований сначала не было, то он и не старался. Цитата(essev @ Nov 13 2010, 11:38)  по ТЗ немного изменились требования к проекту - максимальная частота должна быть 170 МГц. ПЛИС такая же как и была EPM1270T144C5
У меня путь проектирования следующий:
FPGA Advantage -> Precision Syntesys -> Quartus. Получите, распишитесь. Без конвейеризации переноса на Вашем устройстве 174МГц. Может, выкинуть, простите, нахрен, Precision в данном случае из маршрута проектирования???
|
|
|
|
|
Nov 13 2010, 11:24
|
Участник

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

|
снаружи
|
|
|
|
|
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)- можно сделать быстрый счетчик. Потому что там не нужно учитывать предыдущие переносы. Только считать будет "абы что".
|
|
|
|
|
Nov 15 2010, 10:50
|
Участник

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

|
Цитата(DmitryR @ Nov 12 2010, 10:05)  Код module sum( input clk, input rstn, input [ 7:0] din, input dvin, output [23:0] dout );
reg [ 8:0] lsb; reg [15:0] msb; reg [ 7:0] lsb_d;
always @(posedge clk or negedge rstn) if(!rstn) begin lsb<=0; lsb_d<=0; msb<=0; end else begin if(dvin) lsb<={1'b0,lsb[7:0]}+{1'b0,din}; if(lsb[8]) msb<=msb+1; lsb_d<=lsb[7:0]; end
assign dout={msb,lsb_d};
endmodule Это для беззнакового сложения. Если надо со знаком - додумайте. посимулировал код DmitryR.... Мне кажется, там ошибка, если, снимать сигнал разрешения счета dvin, т.к. lsb[8] останется равным 1 и это будет вызывать зацикливание старших разрядов всего сумматора. Ну, например, подать 252, затем 9 при dvin = 1, а потом снять dvin...
Сообщение отредактировал essev - Nov 15 2010, 11:29
|
|
|
|
|
Nov 15 2010, 16:39
|
Участник

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

|
немного офтоп
у кого-нить есть лицензия для квартус 9.0 чтобы семейство поддерживалось? У меня пишет - not installed и прихидится в 8.0 компилить
Может квартус 9.1
Спасибо
|
|
|
|
|
Nov 16 2010, 05:04
|
Участник

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

|
надо поглядеть ))) а то я думал, что лицуха не полная ))
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|