реклама на сайте
подробности

 
 
> Подскажите по оптимизации, нужно выжать максимум
v1vas
сообщение Mar 23 2015, 20:59
Сообщение #1





Группа: Участник
Сообщений: 12
Регистрация: 5-01-07
Пользователь №: 24 120



Дано: Virtex-6 XC6VLX240T
Центральный модуль, включающий себя UART и подготовку данных.
Есть вычислительные модули, которые коннектятся к центральному, их интерфейс:
Код
(
        clock              : in std_logic;
        reset              : in std_logic;
        
        data_input         : in std_logic_vector(31 downto 0);
        data_flag          : in std_logic;

        done                  : out std_logic;
        data_ready         : out std_logic
)


С точки зрения использования ресурсов в плис влезает около 230 таких модулей + центральный.

При 64 модулях все это хорошо живет на 200Мгц, данная частота и является целью. При 128 модулях синтезатор уже выдаёт максимальную частоту 140MHz, что не устраивает.
Причем, PlanAhead показывает, что критические пути - это линии соединения вычислительных модулей с центральным.
Попробовал добавить регистры в эти линии:
Код
signal reset_corebuf              : std_logic_vector(NCORES - 1 downto 0);
signal data_input_corebuf         : std_logic_vector((NCORES * 32) - 1 downto 0);
signal data_flag_corebuf          : std_logic_vector(NCORES - 1 downto 0);
signal done_corebuf                 : std_logic_vector(NCORES - 1 downto 0);
signal data_ready_corebuf         : std_logic_vector(NCORES - 1 downto 0);

    process (clk)
    begin
        if (rising_edge(clk)) then
            for i in 0 to NCORES - 1 loop
                reset_corebuf(i) <= reset;
                data_input_corebuf((i + 1) * 32 - 1 downto i * 32) <= core_data;
                data_flag_corebuf(i) <= data_core_flag(i);
                
                core_done(i) <= done_corebuf(i);
                data_core_ready(i) <= data_ready_corebuf(i);
            end loop;
        end if;
    end process;

И вот эти промежуточные сигналы уже законнектил к вычислительным модулям. Лучше не стало, хотя по логике - должно.

Подскажите пожалуйста, что я делаю не так и куда копать)

Сообщение отредактировал v1vas - Mar 23 2015, 21:04
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
iosifk
сообщение Mar 24 2015, 14:16
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(v1vas @ Mar 23 2015, 23:59) *
Дано: Virtex-6 XC6VLX240T
Центральный модуль, включающий себя UART и подготовку данных.

С точки зрения использования ресурсов в плис влезает около 230 таких модулей + центральный.

Подскажите пожалуйста, что я делаю не так и куда копать)

Если не вдаваться в детали, то дело выглядит удивительно...
Есть один медленный UART и не понятно кто делает протокол передачи байтов в хост.
Дальше еще удивительней. 230 модулей должны работать ОДНОВРЕМЕННО??? Тогда сколько же длится "Обработка в модуле", если ее результат передается не понятно по какому протоколу через медленный UART.
Почему-то мне кажется, что если сделать многопоточную обработку одним модулем да еще и на 200Мгц, то он вполне справится за то время, пока UART передает-получает данные в хост. Ну, если уж не один модуль, то десятка вполне хватит...
И при таком подходе обнаружится, что кристалл будет заполнен на 10%...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 21:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.01409 секунд с 7
ELECTRONIX ©2004-2016