lamination 0 24 января, 2007 Опубликовано 24 января, 2007 · Жалоба Реально ли сделать на ПЛИС обработку изображений(изображение поступает непостоянным потоком порядка 5МГц).Написал предварительный алгоритм - моделируется как надо, вот с синтезом проблемы. Некоторый операции(деление) заменил пока для простоты на сложение. Синтез в FPGA Express (Xilinx 4.2 Edition) выдает ошибку памяти, и на этом останавливается. Xilinx 7.1 пытался просинтезировать алгоритм больше суток, в итоге так и ничего не получилось. Собственно вопросы - 1)Как можно сделать чтобы правильно записывать в регистр REGW значения? Если писать в разных процессах, то при моделировании записываются неопределенные состояния.Писать для всего регистра разрешающую функцию? Или есть более простые решения для этого? Проблема в if (signal1'event and signal1 = 1) ...... elsif (signal2'event and signal2 = 1) .... Все сигналы меняются в разные моменты времени, поэтому паралельный доступ к регистру не нужен. На данном этапе не особо важно во что синтезируется эта конструкция, оптимизация будет потом. type zv_mem_type is array (1 to 25) of STD_LOGIC_VECTOR (33 downto 0); type reg_mem_type is array (1 to 16) of zv_mem_type; signal REGW: reg_mem_type; ------------ EDIT_REG : process(create, add, delete) variable tem3, tem4: integer; begin tem3 := CONV_INTEGER(REGST(p)(4 downto 0)) + 1; tem4 := CONV_INTEGER(LINEI) - CONV_INTEGER(REGW(p)(1)(10 downto 0)); if (create'event and create = '1') then for i in 1 to 16 loop if zv_reg_sost(i)= 0 then zv_reg_sost(i) <= 1; REGW(zv_reg(i))(1) <= DATAI & COLUMNI & LINEI; exit; end if; end loop; elsif (add'event and add = '1') then REGW(p)(tem3) <= DATAI & COLUMNI & LINEI; elsif (delete'event and delete = '1') then for ir in 1 to 25 loop REGW(pras)(ir) <= "0000000000000000000000000000000000"; end loop; zv_reg_sost(pras)<= 0; end if; end process; 2) Есть ли смысл писать тяжелые алгоритмы на ПЛИС вообще, или неоправданная потеря времени? Примерный код в файле, если нужно нарисую схему самого алгоритма ЗЫ: Не бейте очень сильно)Хотя чуствую стеба будет много.На vhdl пишу недавно совсем. ver1.txt Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
denisys 0 25 января, 2007 Опубликовано 25 января, 2007 · Жалоба Обработку изображений на ПЛИС сделать реально, выбрав соответствующий тип кристала. На мой взгляд такие вещи как фильтрация сами просяться быть уложенными в ПЛИС, при этом на основной проц при необходимости можно возложить лишь функции управления коэффициентами. Примеры обработки можно найти, к примеру, в Xilinx System Generator для матлаба. Процесс EDIT_REG приведенный в приложенном Вами файле описан несомненно правильней и, если не вдаваться в подробности алгоритма, должен работать с REGW нормально. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 25 января, 2007 Опубликовано 25 января, 2007 · Жалоба Процесс EDIT_REG приведенный в приложенном Вами файле описан несомненно правильней и, если не вдаваться в подробности алгоритма, должен работать с REGW нормально. Не будет. Описаны трехклоковые триггеры. Таких в FPGA нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lamination 0 25 января, 2007 Опубликовано 25 января, 2007 · Жалоба Обработку изображений на ПЛИС сделать реально, выбрав соответствующий тип кристала. На мой взгляд такие вещи как фильтрация сами просяться быть уложенными в ПЛИС, при этом на основной проц при необходимости можно возложить лишь функции управления коэффициентами. Примеры обработки можно найти, к примеру, в Xilinx System Generator для матлаба. Спасибо, обязательно расмотрю такой вариант Не будет. Описаны трехклоковые триггеры. Таких в FPGA нет. Тогда не скажете, каким способом можно правильно работать с REGW, без написания разрешающей функции? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 25 января, 2007 Опубликовано 25 января, 2007 · Жалоба Не будет. Описаны трехклоковые триггеры. Таких в FPGA нет. Тогда не скажете, каким способом можно правильно работать с REGW, без написания разрешающей функции? Вопрос о записи в регистр по фронтам двух (а вот теперь и трех) разных сигналов всплывает постоянно. Поискав, вы наверняка найдете несколько подобных тем. Надо использовать высокочастотный клок, а сигналы, по которым изменяется состояние регистра, использовать как разрешающие (clock enаble). Примерно так: process(Reset, Clk) begin if (Reset = '1') then ... elsif (rising_edge(Clk)) then if (create = '1') then ... elsif (add = '1') then ... elsif (delete = '1') then ... end if; end if; end process; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
denisys 0 25 января, 2007 Опубликовано 25 января, 2007 · Жалоба Уважаемый andrew_b, предложенная вами конструкция повторяет то, что описано в приложенном к первому сообщению lamination файле ver1.txt (поправьте, если ошибаюсь). Именно ее я имел ввиду когда писал : Процесс EDIT_REG приведенный в приложенном Вами файле описан несомненно правильней и, если не вдаваться в подробности алгоритма, должен работать с REGW нормально. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
lamination 0 25 января, 2007 Опубликовано 25 января, 2007 · Жалоба Надо использовать высокочастотный клок, а сигналы, по которым изменяется состояние регистра, использовать как разрешающие (clock enаble). У меня прикрепленном файле(который пытался синтезировать), так и сделано) просто мне показалось что это не совсем корректно, думал есть еще способы. Что может быть причиной "зависания" синтезатора? у меня он работает в течении 2-х суток и ничего не выдает - это он входит в пустой цикл или все же дать ему поработать неделю?средний UART синтезируется буквально сразу Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
denisys 0 25 января, 2007 Опубликовано 25 января, 2007 · Жалоба Что может быть причиной "зависания" синтезатора? у меня он работает в течении 2-х суток и ничего не выдает - это он входит в пустой цикл или все же дать ему поработать неделю?средний UART синтезируется буквально сразу Думаю ждать не стоит. Обратите внимание на процессы: MAIN, HOLD, HOLDras, RASCHET. Вы пытаетесь работать на разных клоках, сигналы проходят в другие клоковые зоны, что вызовет нестабильность. Сигналы delete, create, add и др. Вы пытаетесь изменять в разных процессах это тоже не есть хорошо. Думаю также стоит лучше описать обращения к памяти. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 14 25 января, 2007 Опубликовано 25 января, 2007 · Жалоба Уважаемый andrew_b, предложенная вами конструкция повторяет то, что описано в приложенном к первому сообщению lamination файле ver1.txt (поправьте, если ошибаюсь). Именно ее я имел ввиду когда писал : Процесс EDIT_REG приведенный в приложенном Вами файле описан несомненно правильней и, если не вдаваться в подробности алгоритма, должен работать с REGW нормально. Прошу прощения... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться