[email protected] 0 10 марта, 2019 Опубликовано 10 марта, 2019 · Жалоба Добрый день, всем! Недавно начал осваивать ПЛИС. В качестве HDL выбрал VHDL. ПЛИС ф. Xilinx, среда разработки Vivado 2018.3 Столкнулся со сложностью: при описании в Vivado модуля на VHDL 2008 невозможно добавить этот моль в IP integrator (окно Diagram см. рисунок во вложении) т.к. кнопка OK не активна. При использовании VHDL (не 2008) проблем не возникает. Из информации в интернете не совсем понятно, что делать. Кто-то пишет, что невозможно добавить модуль описанный на VHDL 2008 в IP integrator. В документации же написано что есть поддержка VHDL 2008. Знающие подскажите что делать?В данном же примере VHDL 2008 необходим для описания 8-и входового И (y <= ana a). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nice_vladi 2 10 марта, 2019 Опубликовано 10 марта, 2019 · Жалоба Spoiler Не холивара ради - попробуйте верилог, он гораздо дружелюбнее. И, как правило, гораздо лучше поддержан во всех САПР. Посмотрите настройки проекта - раздел языков. Похоже, что нужно включить поддержку VHDL2008. К сожалению, вивады под рукой нет, но в quartus & libero в настройках точно есть переключатели, которые определяют, какую версию языка использовать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
[email protected] 0 10 марта, 2019 Опубликовано 10 марта, 2019 · Жалоба 25 minutes ago, nice_vladi said: Reveal hidden contents Не холивара ради - попробуйте верилог, он гораздо дружелюбнее. И, как правило, гораздо лучше поддержан во всех САПР. Посмотрите настройки проекта - раздел языков. Похоже, что нужно включить поддержку VHDL2008. К сожалению, вивады под рукой нет, но в quartus & libero в настройках точно есть переключатели, которые определяют, какую версию языка использовать. Поддержка VHDL 2008 включена в файле and8.vhd (на второй картинке видно Type: VHDL 2008). Проблема в том, что я не могу файл and8.vhd (с указанным в настройках VHDL 2008) добавить в окно графического дизайнера... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 10 марта, 2019 Опубликовано 10 марта, 2019 · Жалоба 1 час назад, [email protected] сказал: В данном же примере VHDL 2008 необходим для описания 8-и входового И (y <= ana a). Чтои менно из 2008 там используется, чего нет в 93? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kaktus 0 10 марта, 2019 Опубликовано 10 марта, 2019 (изменено) · Жалоба Понимаю, ответ немного не в тему, но меня смутила фраза "VHDL 2008 необходим для описания 8-и входового И". VHDL 2008 стараюсь избегать, чтобы не встречать сложностей, с которыми столкнулся автор темы, сам пишу в таких случаях вот так : вне процесса y <= '1' when (a="11111111") else '0'; в процессе это будет выглядеть так: if (a="11111111") then y<='1'; else y <= '0'; end if; По фэншую, наверное, следует написать так, что должно работать для вектора произвольной (разумной) длины: y <= '1' when (CONV_INTEGER(a) = 2**(a'length)-1) else '0'; Для неразумной длины entity AND_VECTOR is generic(LEN : integer := 8); port ( A : in std_logic_vector(LEN -1 downto 0); Y : out std_logic ); end AND_VECTOR; architecture AND_V of AND_VECTOR is begin process(A) begin Y<= '1'; for i in 0 to LEN -1 loop if A(i) = '0' then Y<= '0';end if; end loop; end process; end AND_V; Изменено 10 марта, 2019 пользователем kaktus Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 10 марта, 2019 Опубликовано 10 марта, 2019 · Жалоба 48 минут назад, [email protected] сказал: Проблема в том, что я не могу файл and8.vhd (с указанным в настройках VHDL 2008) добавить в окно графического дизайнера... А зачем это нужно? Именно "графический дизайнер"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 10 марта, 2019 Опубликовано 10 марта, 2019 · Жалоба Цитата Добрый день, всем! Недавно начал осваивать ПЛИС. В качестве HDL выбрал VHDL. ПЛИС ф. Xilinx, среда разработки Vivado 2018.3 Столкнулся со сложностью: при описании в Vivado модуля на VHDL 2008 невозможно добавить этот моль в IP integrator (окно Diagram см. рисунок во вложении) т.к. кнопка OK не активна. При использовании VHDL (не 2008) проблем не возникает. Из информации в интернете не совсем понятно, что делать. Кто-то пишет, что невозможно добавить модуль описанный на VHDL 2008 в IP integrator. В документации же написано что есть поддержка VHDL 2008. Знающие подскажите что делать?В данном же примере VHDL 2008 необходим для описания 8-и входового И (y <= ana a). Фиговая поддержка у Vivado VHDL2008 если Вам необходимо работать в графическом дизайне. В нем не поддерживается VHDL 2008. А так-же не поддерживаются никакие другие типы кроме std_logic/std_logic_vector P.S. Именно убогая поддержка VHDL заставляет меня изучать SystemVerilog. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
[email protected] 0 10 марта, 2019 Опубликовано 10 марта, 2019 · Жалоба 58 minutes ago, andrew_b said: Чтои менно из 2008 там используется, чего нет в 93? Если не установить в настройках VHDL 2008, то сразу пишет ошибку: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
[email protected] 0 10 марта, 2019 Опубликовано 10 марта, 2019 · Жалоба 56 minutes ago, iosifk said: А зачем это нужно? Именно "графический дизайнер"? Если честно может и не нужен. Я только осваиваю ПЛИС. У меня плата Z-turn board с м/с Zynq-7000. В примерах которые я нашел в интернете описается единственный способ заактировать ПЛИС (PL часть) от внутреннего ARM процессора (PS). Что бы это сделать нужно в графическом дизаейнере добавить IP блок - Zynq7 Process System туда же добавить мой модуль (and8) уже от PS получать clk. Это выглядит примерно как на картинке ниже. Да и наглядно и более ясно это делать в графическом виде. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
[email protected] 0 10 марта, 2019 Опубликовано 10 марта, 2019 · Жалоба 1 hour ago, kaktus said: Понимаю, ответ немного не в тему, но меня смутила фраза "VHDL 2008 необходим для описания 8-и входового И". VHDL 2008 стараюсь избегать, чтобы не встречать сложностей, с которыми столкнулся автор темы, сам пишу в таких случаях вот так : вне процесса y <= '1' when (a="11111111") else '0'; в процессе это будет выглядеть так: if (a="11111111") then y<='1'; else y <= '0'; end if; По фэншую, наверное, следует написать так, что должно работать для вектора произвольной (разумной) длины: y <= '1' when (CONV_INTEGER(a) = 2**(a'length)-1) else '0'; Для неразумной длины entity AND_VECTOR is generic(LEN : integer := 8); port ( A : in std_logic_vector(LEN -1 downto 0); Y : out std_logic ); end AND_VECTOR; architecture AND_V of AND_VECTOR is begin process(A) begin Y<= '1'; for i in 0 to LEN -1 loop if A(i) = '0' then Y<= '0';end if; end loop; end process; end AND_V; Возможно я немного некорректно выразился с фразой "VHDL 2008 необходим для описания 8-и входового И". Дело в том что я повторяю примеры приведенные в небезызвестной книге "Цифровая схемотехника и архитектура компьютера" второе издание Дэвид М. Хэррис и Сара Л. Хэррис. Пример 4.4. Восьмивходовой И. Чтобы запустить проект и в Vivado или ModelSim требуется в настройках устанавливать именно VHDL 2008. 46 minutes ago, Flip-fl0p said: Фиговая поддержка у Vivado VHDL2008 если Вам необходимо работать в графическом дизайне. В нем не поддерживается VHDL 2008. А так-же не поддерживаются никакие другие типы кроме std_logic/std_logic_vector P.S. Именно убогая поддержка VHDL заставляет меня изучать SystemVerilog. Т.е. для меня без вариантов... или VHDL 2008 без графического дизайна либо VHDL 1993? Вариантов больше нет? 49 minutes ago, Flip-fl0p said: Фиговая поддержка у Vivado VHDL2008 если Вам необходимо работать в графическом дизайне. В нем не поддерживается VHDL 2008. А так-же не поддерживаются никакие другие типы кроме std_logic/std_logic_vector P.S. Именно убогая поддержка VHDL заставляет меня изучать SystemVerilog. Т.е. для меня без вариантов... или VHDL 2008 без графического дизайна либо VHDL 1993? Вариантов больше нет? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 16 10 марта, 2019 Опубликовано 10 марта, 2019 · Жалоба 2 часа назад, kaktus сказал: По фэншую, наверное, следует написать так, что должно работать для вектора произвольной (разумной) длины: y <= '1' when (CONV_INTEGER(a) = 2**(a'length)-1) else '0'; Это как раз не по феншую. Во-первых, преобразование в целый тип ограничено 32-битами. Стандарт вам гарантирует минимум 32-битное представление целых чисел. Больше -- на усмотрение вендоров. Как правило, этого никто не делает. Во-вторых, зачем так делать, если функции сравнения уже перегружены для аргументов разных типов. В-третьих, не используйте legacy в виде std_logic_arith и производных. Стандарт предоставляет пакет numeric_std. 1 час назад, [email protected] сказал: Если не установить в настройках VHDL 2008, то сразу пишет ошибку: Напишите функцию сами или найдите готовую в интернете. Например, в пакете reduce_pack. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 10 марта, 2019 Опубликовано 10 марта, 2019 · Жалоба В лоб можно записать вот так: Y <= '1' when ( A= (A'left downto 0 => '1') ) else '0'; Только на RTL просмотрщике это будет выглядеть как схема сравнения. Но кому какое дело, что нам рисует RTL Ну разве что ВУЗ'овские преподаватели могут придраться к этому. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
[email protected] 0 10 марта, 2019 Опубликовано 10 марта, 2019 · Жалоба Кажется нашел приемлемое решение проблемы Написал модуль inv8 на VHDL (93), игнорируя ошибку Error ..... . Вставил в графический дизайнер модуль (inv8). Затем, в настройках inv8.vhd уставил язык VHDL 2008. Выглядит и работает как 8-и входовой И. Вроде норм. В симуляции, RTL анализе и сгенерирован битстрим. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flip-fl0p 4 10 марта, 2019 Опубликовано 10 марта, 2019 · Жалоба 1 час назад, [email protected] сказал: В Vivado для блок дизайна есть готовые элементы логики. (utility_vector вроде). А вообще делать в блок дизайне лучше только самые верхние уровни проекта, где объединяются готовые большие блоки. Я бы порекомендовал симуляцию производить в Modelsim. Ибо симулятор Vivado хоть и красив, но требует после каждого изменения в исходнике перезапуска симуляции, которая занимает неадекватно много времени. А так-же по сравнению с Modelsim раза так в 3 дольше симулирует, если не больше. Но это уже сугубо мое личное мнение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
[email protected] 0 10 марта, 2019 Опубликовано 10 марта, 2019 · Жалоба 1 minute ago, Flip-fl0p said: В Vivado для блок дизайна есть готовые элементы логики. (utility_vector вроде). А вообще делать в блок дизайне лучше только самые верхние уровни проекта, где объединяются готовые большие блоки. Я бы порекомендовал симуляцию производить в Modelsim. Ибо симулятор Vivado хоть и красив, но требует после каждого изменения в исходнике перезапуска симуляции, которая занимает неадекватно много времени. А так-же по сравнению с Modelsim раза так в 3 дольше симулирует, если не больше. Но это уже сугубо мое личное мнение. На счет ModelSim согласен с Вами, там все гораздо быстрее получается. И да, дизайн ModelSim убогий и нелогичный. Vivado только начал осваивать. На счет "В Vivado для блок дизайна есть готовые элементы...." не совсем понял. Если речь идет счетчиках, сумматорах и прочих стандартных элементах, то мне это сейчас ненужно, т.к. в данный момент я осваиваю именно VHDL. Раз уж тут все так весело понеслось)) еще один вопрос не по теме. Вопрос к опытным разработчикам ПЛИС. Что же выбрать на перспективу VHDL, Verilog или System Verilog? Стандартный ответ о Си подробности Верилогов, его лаконичности и консерватизма VHDL становится ясно из учебников и большинства статей о ПЛИС. Интерисует больше о перспективности... и кто из них более оптимален с чтоки зрения используемых ресурсов ПЛИС. Может еще какие особенности? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться