Jump to content

    

Strob

Участник
  • Content Count

    180
  • Joined

  • Last visited

Everything posted by Strob


  1. Надо глянуть, выглядит как аналог сигаси. Это хорошо.
  2. Про динамическое отключение-подключение не смогу ответить. Возможно нельзя, возможно не знаю как. Инкапсуляции в vhdl действительно нет. И наверное не будет никогда. Наследования в vhdl возможны, через ключевое слово new. Поддержку никогда не проверял. Возможно не поддержано инструментами. Полиморфизм в vhdl существует как в виде передачи через генерики(в т.ч. типов, пэкэджей и функций - vhdl 2008) так и через анонимные типы(vhdl 2019) или неопределенные типы(сейчас не помню появилось ли это в 2008, или раньше было).
  3. Данный источник мягко говоря не точен. Да по VHDL вообще русскоязычные источники как специально сделаны так, чтобы все на SV переходили. Тихий ужас. пункт 1.3.5 стандарта раскрывает смысл этой цитаты из вступления. Вот пример настоящего VHDL 2008. library ieee; context ieee.ieee_std_context; entity slave is port ( clk, reset : in std_ulogic; req : in std_ulogic; ack : out std_ulogic; ... ); end entity slave; architecture pipelined of slave is signal req_cnt, ack_cnt : unsigned(3 downto 0); default clock is rising_edge(clk); property all_requests_acked is forall C in {0 to 15}: always {req and req_cnt = C} |=> {[*0 to 99]; ack and ack_cnt = C}; begin req_ack_counter : process (clk) is begin if rising_edge(clk) then if reset = '1' then req_cnt <= "0000"; ack_cnt <= "0000"; else if req = '1' then req_cnt <= req_cnt + 1; end if; if ack = '1' then ack_cnt <= ack_cnt + 1; end if; end if; end if; end process req_ack_counter; ... assert all_requests_acked; end architecture pipelined; Догонять - как будто это плохо. Насчет костылей, вопрос крайне сложный. В VHDL по сути все представлено в виде библиотек. Это его путь. =) Консервативные языки vs. Быстроразвивающиеся языки - это еще более древний, лютый и бессмысленный спор. И для этого есть библиотека )) UVVM. Как бы там ни было, спорить бессмысленно, SV лучше поддержан в части верификации, чем VHDL, и это существенно более важная особенность, нежели выяснение чего там нет или есть в языке. VHDL 2019 вообще почти все нововведения сконцентрировал вокруг верификации. А толку то, если его поддержку мы может и увидим году в 2040.
  4. И в мыслях не было кого-то в чем то обвинять. Как раз protected types и были введены для того, чтобы максимально приблизиться к классам по функционалу. При очень большом желании найти строгие совпадения/несовпадения можно очень быстро улететь в бессмысленный холивар. Т.к. и в V/SV отсутствует ряд возможностей VHDL. Сonstraint based random verification и functional coverage присутствуют в виде библиотек. PSL именно "интегрировали" в VHDL 2008.
  5. Реализуются через record'ы. Есть нюансы. В vhdl 2019 даже более продвинуто(атрибут converse позволяет автоматически объявить порты инверсного направления, плюс появился прямой аналог modport - view), чем в SV, однако поддержку 2019-го ждать наверное еще долго.
  6. Классы и констрейны(если не считать констрэйном конструкцию вида range a to b) вполне реализуются через package и protected type. Не один в один. Но функционал повторяем. PSL есть
  7. Проблема с vhdl не в языке, на данный момент в нем есть все, что и в sv. А вот с поддержкой в сапрах "бяда-бяда"
  8. Странно что Вы наткнулись на sla, которая если ещё не удалена из языка, то как минимум не используется(на память, она кажется только с bit_vector работает). Но при этом не наткнулись на shift_left, shift_right, sll, srl.
  9. Сигаси это эклипс. Эклипсовский плагин для тикля ставится. Ну, как то оно работает.
  10. Какой-то сборник вредных советов, как по мне... Задержки используются в симуляции. В ISE ищите в верхнем левом углу. Там где иерархия проекта. Одна из вкладок - симуляция. Точнее уже и не вспомню.
  11. Вектора разные бывают. Для библиотеки numeric_std, вектора signed и unsigned могут использоваться в арифметических операциях. Поэтому в integer ничего преобразовывать не надо.
  12. Интересно, синтезатор поймет, что это сумматор и задействует соответствующие аппаратные ресурсы или все на лутах и обычных интерсоннектах разведет?
  13. process(clock) begin if rising_edge(clock) then c <= a - b when z else a + b; end if; end process; Как то так не пробовали? Писал по памяти, может надо c <= a - b when ??z else a + b; Зависит от контекста
  14. А что за косяк? С 2018 я сразу на 2020.1 прыгал. Вроде проблем не было.
  15. Это все понятно. Проблема в том, что лично для меня vitis hls 2020.1 совершенно непригоден для работы, т.к. не поддерживал работу с массивами в портах top функции ни в каком виде, отличном от bram
  16. Да, если используется VHDL-2008 или 2019. Иерархический доступ к сигналам. Путь к сигналу прописывается в парных угловых скобках <<signal путь.до.сигнала : тип_сигнала>>. символ ^ - подняться вверх по иерархии, символ @ - перейти в корень иерархии. Для упрощения иерархический сигнал можно использовать через alias.
  17. Adds array reshape and partitioning directives for top ports Vitis HLS окончательно заменяет Vivado hls, но кажись вопиющий маразм с портами исправили...
  18. Не очень понятно, как связана инерция диода и подсветка соседнего сегмента. Соседний сегмент - это другой диод. Чтобы не было засветки надо обеспечить одновременное переключение сигналов. Или дэдтаймы.
  19. Добрый день! Судя по докам для того чтобы прошить внутреннюю флэшу достаточно установить соответствующий режим прошивки. Все вроде понятно. Однако... Info: "embFlash Erase,Program" starting on device-1... Info: Status Code: 0x00019020 Error: Finished, NOT wakes up Info: User Code: 0x00000000 Info: Finished! Info: Cost 5.82 second(s) И все. После этого в режиме SRAM не проливается пока не сделать Erase флэши. Я что-то делаю не так? Исходно на кристалле был демо-проект, и он из флеши грузился. UPD: Проблема решена... Если кто столкнется, не пугайтесь. В версии 2.100617 программера баг. Частоты кабеля в GUI не соответствуют реальным. По умолчанию стоит 2МГц, что является допустимой скоростью, однако это ложь и провокация. Какие то добрые японцы таки обнаружили, что шьется только на 30, 15 и 2.5 МГц. При этом судя по скорости записи пункту 2.5 в GUI соответствует самая высокая из допустимых скоростей записи. Видимо 24 МГц.
  20. Не помню ни одного случая когда была нужна библиотека IEEE.STD_LOGIC_ARITH.all Неужели возможность арифметических операций над std_logic_vector стоит того, чтобы вносить такую путаницу? Какие такие блага отсутствуют в стандартной IEEE.numeric_std.all? И это я уже не говорю о том, что на дворе 2020 год и поддержка vhdl2008 вполне сносная, а значит используя numeric_std, можно забыть о половине недостатков, которые обычно приписывают vhdl'у. Уже и vhdl 2019 вышел, правда поддержку его ждать будем наверное лет 10
  21. Коэффициенты фильтра рассчитывались от частоты 266мгц?