Перейти к содержанию
    

Чудеса быстродействия 18-разрядного счетчика.

Добрый день, корифеи!

Ничто не предвещало проблем...

Писал, как обычно, очередной  автомат чтения памяти с 18-ти разрядной шиной адреса и после функциональной отладки и сборки TQ оценил недостаточность резвости.

Провел обычную оптимизацию дизайна, чтобы сократить количество состояний и связей. Улучшение получил, но не достаточное.

Далее психанул и применил обычный примитив LPM_COUNTER, надеясь на отшлифованное решение на самой Альтере еще с давних времен.  НО!

Каково же было мое удивление, когда итоговый результат был ХУЖЕ  рукописного...Что это?   

Ну и напоследок... Подскажите, как взбодрить дизайн?  Может примеры кто покажет в ссылках?

Спасибо за любой вариант !

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Мур said:

Писал, как обычно, очередной  автомат чтения памяти с 18-ти разрядной шиной адреса и после функциональной отладки и сборки TQ оценил недостаточность резвости.

Как обычно, не хватает подробностей. :)

1. Что за кристалл?
2. Какой у него Speed Grade?

3. Какая в итоге получилась частота?

4. Что за память?
5. Почему её нельзя читать burst'ами?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы бы озвучили частоту и ПЛИС. 

 

Существуют специальные схемы быстродействующих счётчиков, где ценой ресурсов достигается быстродействие. Например, carry-select counter, эта идея была реализована аппаратно в Altera Cyclone (первом). Идея очень простая: старшие разряды счётчика дублируются и каждая группа вычисляет результат для своего значения входящего (с младших разрядов) переноса. Сигнал переноса по сути управляет мультиплексором, который коммутирует на выход счётчика ту или иную группу. Несколько другой вариант - prescaled counter, даже применял ещё на FLEX8000. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

13 hours ago, blackfin said:

1. Что за кристалл?
2. Какой у него Speed Grade?

3. Какая в итоге получилась частота?

4. Что за память?
5. Почему её нельзя читать burst'ами?

Это общий вопрос. В независимости от типа, грейда...

Но отвечу  CYCLONE V EX  С8   86МГц.  Память двухпортовая внутри FPGA  192k слов

13 hours ago, dxp said:

Существуют специальные схемы быстродействующих счётчиков, где ценой ресурсов достигается быстродействие. Например, carry-select counter, эта идея была реализована аппаратно в Altera Cyclone (первом). Идея очень простая: старшие разряды счётчика дублируются и каждая группа вычисляет результат для своего значения входящего (с младших разрядов) переноса. Сигнал переноса по сути управляет мультиплексором, который коммутирует на выход счётчика ту или иную группу. Несколько другой вариант - prescaled counter, даже применял ещё на FLEX8000. 

Это любопытно... Спасибо.  Буду искать

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 minutes ago, Мур said:

 CYCLONE V EX  С8   86МГц.

Какая-то нереально низкая частота. А кто сказал что дело в счётчике? Напишите только его и проверьте.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

13 minutes ago, Мур said:

Это общий вопрос. В независимости от типа, грейда...

На  общий  вопрос "Что это" будет общий ответ - "Это фигня какая-то" :biggrin:

А на более конкретный можно предположить  что  если вы такой счетчик используете для адресации памяти (а память у вас не маленькая)  то у Qu  возникают проблемы при роутинге адресных линий к блокам памяти.  LPM счетчик и самописный может при P&R давать разные результаты так как размещение элементов последнего  может быть  более "гибким" чем жесткая структура LPM. Например  LPM  выстраивает регистры строго по  вертикали,   а  самописный  может блоки по 10 регистров  расположить и по горизонтали.    

Удачи! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 minutes ago, Dr.Alex said:

Какая-то нереально низкая частота. А кто сказал что дело в счётчике? Напишите только его и проверьте.

Сам дизайн выслать не могу. На работе осталось.  Не понятно почему примитив такой тормозной...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 minutes ago, Мур said:

Не понятно почему примитив такой тормозной...

Да не в счётчике дело. Забудьте ваш "дизайн", сделайте с нуля прожект с одним счётчиком (пара строчек на HDL), и убедитесь что частота раза в 3 выше будет.. А потом уж думайте, что не так с вашим дизайном.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, RobFPGA said:

Приветствую!

На  общий  вопрос "Что это" будет общий ответ - "Это фигня какая-то" :biggrin:

А на более конкретный можно предположить  что  если вы такой счетчик используете для адресации памяти (а память у вас не маленькая)  то у Qu  возникают проблемы при роутинге адресных линий к блокам памяти.  LPM счетчик и самописный может при P&R давать разные результаты так как размещение элементов последнего  может быть  более "гибким" чем жесткая структура LPM. Например  LPM  выстраивает регистры строго по  вертикали,   а  самописный  может блоки по 10 регистров  расположить и по горизонтали.    

Удачи! Rob.

Это я видел, потому ставил дополнительный регистр по шине адреса. Благо не было срочности в доставке данных... (потом убрал из экономии, когда громил громоздкие решения)

Спасибо за суть стратегии в обоих вариантах!  Признателен. 

1 minute ago, Dr.Alex said:

Да не в счётчике дело. Забудьте ваш "дизайн", сделайте с нуля прожект с одним счётчиком (пара строчек на HDL), и убедитесь что частота раза в 3 выше будет..

TQ упрямо показывал именно место от счетчика по шине адреса до самой памяти...

То что придется переписывать, я уже понял.  Только это логически завязано на автомат, который обеспечивает параллельную загрузку и моменты инкрементирования, а также выявление упора по завершению адресного пространства.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Мур said:

CYCLONE V EX  С8   86МГц.

Что-то не так в консерватории.

Вот отчет STA для 18-ти битного счетчика со сбросом и сигналом разрешения счета:

Flow Summary report for cntr18b
+-----------------------------------------------------------------------------------+
; Flow Summary                                                                      ;
+---------------------------------+-------------------------------------------------+
; Flow Status                     ; Successful - Sun Jul 25 19:12:00 2021           ;
; Top-level Entity Name           ; cntr18b                                         ;
; Family                          ; Cyclone V                                       ;
; Device                          ; 5CEBA5U19C8                                     ;
; Timing Models                   ; Final                                           ;
; Logic utilization (in ALMs)     ; 20 / 29,080 ( < 1 % )                           ;
; Total registers                 ; 18                                              ;
; Total pins                      ; 1 / 224 ( < 1 % )                               ;
; Total virtual pins              ; 20                                              ;
+---------------------------------+-------------------------------------------------+

+--------------------------------------------------+
; Slow 1100mV 0C Model Fmax Summary                ;
+------------+-----------------+------------+------+
; Fmax       ; Restricted Fmax ; Clock Name ; Note ;
+------------+-----------------+------------+------+
; 318.78 MHz ; 318.78 MHz      ; clk        ;      ;
+------------+-----------------+------------+------+

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

17 minutes ago, Мур said:

Это я видел, потому ставил дополнительный регистр по шине адреса. Благо не было срочности в доставке данных... (потом убрал из экономии, когда громил громоздкие решения)

Увы просто поставить  регистр в таком случае бывает недостаточно. Так как большой fanout от этого регистра к памяти никуда не денется. Qu бывает непредсказуем в поведении автоматического  fanout регистров. Нужны  соответствующие  атрибуты/assignments на требуемые цепи. И нужно обязательно убедится  что Qu что реально сделал физ.  распараллеливание  этому  регистру чтобы уменьшить fanout на каждый  выход.

  

Удачи! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

9 minutes ago, RobFPGA said:

Приветствую!   Увы просто поставить  регистр в таком случае бывает недостаточно. Так как большой fanout от этого регистра к памяти никуда не денется. Qu бывает непредсказуем в поведении автоматического  fanout регистров. Нужны  соответствующие  атрибуты/assignments на требуемые цепи. И нужно обязательно убедится  что Qu что реально сделал физ.  распараллеливание  этому  регистру чтобы уменьшить fanout на каждый  выход.

  Удачи! Rob.

Да. Я применял атрибуты, когда работал с хилыми. Удобно и быстро.

Тут Альтера и потому иной подход. Кстати, как можно прописать необходимость распараллеливания для облегчения fanout?

14 minutes ago, blackfin said:

Что-то не так в консерватории.
 

Верю. CYCLONE V мощная машина!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 minutes ago, Мур said:

Кстати, как можно прописать необходимость распараллеливания для облегчения fanout?

MAX_FANOUT в Assignment Editor:

MAX_FANOUT.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

14 hours ago, blackfin said:

MAX_FANOUT в Assignment Editor:

MAX_FANOUT.jpg

С этими установками проблема. (Some assignments have problems - see massege in the System tab of the Massege window for details. Do you want to continue to save anyway)

Я понял так, что все хорошо, если описывается внешний мир, но когда моя сущность внутри дизайна, то следует описать шину сначала виртуальными пинами, а затем Fan-Out. Что я и попытался  сделать, однако эти установки не запомнились(!) и в итоге на быстродействие это никак не повлияло! Есть подозрение, что обозначать F-O  можно было на этапе построения дизайна, а когда он уже собран,- среда брыкается и запомнить установку адресной шины на максимальную нагрузочную способность не получается!

Тут тот самый автомат(я их разбил на 3шт) и повесил  ему в управление LPM_COUNTER(2шт).

...продолжаю  копать далее

 

avt_mem_ea.vhd counter18.vhd

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Опа!  С 10го захода QII таки запомнил мою просьбу! Не понятно когда я уломал QII...  Обычно тупо все сбрасывала.

image.thumb.png.f60d57c2658460e731762b798abfd5e8.png

В .qsf   точно есть...

set_instance_assignment -name VIRTUAL_PIN ON -to addr_mem_b
set_instance_assignment -name MAX_FANOUT 500 -to addr_mem_b
 

только никаких подвижек не вижу

image.thumb.png.57b591924f94936fe4099ff3cd1028c9.png

 

И почему в перечне нет 15го адреса?  Казалось-бы,- самый старший...

image.thumb.png.6344ac26f992653e088b71dad741cc39.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...