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

Jackov

Участник
  • Постов

    425
  • Зарегистрирован

  • Посещение

Весь контент Jackov


  1. Исторически сложилось. А это проблема? Ознакомился конечно, потому и говорю.
  2. Где SV-конструкции - да. Там про ip-корки, это будет следующим этапом. )
  3. Ну так я и указываю директивы через `define. У меня несколько вариантов платы, отличаются наличием или отсутствием некоторых микросхем, потому закомментаривая или раскомментаривая соответствующие дифайны я включаю/исключаю куски кода работающие с этими микросхемами. Поэтому объявления некоторых переменных то появляются, то исчезают, а значит в do-файле мы каким-то образом должны знать какие переменные присутствуют в коде, какие нет. Впрочем вариантов решения задачи набралось достаточно. Ну переменные может нет, а вот адекватные названия состояниям иногда бывает затруднительно подобрать.
  4. Что за ключ? Как можно что-то послать в RTL? Мне всегда нравилось численное название состояний автоматов. Состояний много, каждому надо имя выдумывать, а так пронумеровал и потом в симуляции или при отладке в железе посмотрел на номер состояния, нашёл его в графе/блок-схеме и сразу понятно где находится автомат и что происходит.
  5. Ну не знаю, какой смысл в крутом железе, если его нельзя нормально запрограммировать, какая с него польза конечному пользователю... Как по мне, в таком деле нельзя отдавать приоритеты, все направления нужны, все направления важны.
  6. Чёт я не совсем понял. Да может действительно будет проще силами TCL залезть в исходный RTL-код, прочитать там всё что надо и делать соответствующий выбор.
  7. У меня при создании проекта synplify крашится, не знаю почему, или криво встал, или кряки кривые. Я сравниваю с Q, Q версии 9.1 аж от 2009 года то что мне нужно компилирует без всяких танцев с бубнами, в отличии от. А ещё говорят, что Хилые - флагман ФПГА... Прикрепил. SV.rar
  8. NotePad++ такое умеет. Я уже давно не пользуюсь встроенным редактором.
  9. Буду признателен, если поделитесь опытом. Думаю, лучше здесь, может быть это прочитает ещё кто-то кому это нужно.
  10. Я сравниваю по годам. Q версии 9.1 от 2009 года, а ISE версии 14.7 от 2013 года, Q может, I нет. У меня Spartan 6. И кстати, что получается, Vivado поддерживает SV, но не поддерживает Spartan 6, ISE поддерживает Spartan 6, но не поддерживает SV. Выходит так, что в принципе, используя штатные инструменты, нельзя ничего написать на SV для Spartan-а 6? Здорово у них там всё. И как выводить предупреждения и ошибки в удобном виде, используя Synplify, я так и не понял.
  11. У меня туда нет доступа. Установил версию 2010. При попытке создать проект в самом Synplify он аварийно завершается. Подключил к ISE, вроде даже что-то синтезирует. Но вот незадача, логи синтеза выводит не в консоль ISE, а в отдельный файл, и всё бы ничего, но там такая портянка, что в ней среди прочего никак невозможно найти предупреждения и ошибки. В консоли ISE можно отфильтровать, переключив на соответствующую вкладку. А тут как? Неясно.
  12. Нужны некоторые конструкции SV, в частности 2-х мерные массивы, по типу wire [7:0][15:0]ABC; ISE, как я понимаю, такое не могёт... в отличии, кстати от Q, тот вполне компилирует. Говорят к ISE можно подключить сторонний синтезатор Synplify. Собственно два вопроса: 1. Где его взять? Смотрел на торрентах, есть 9.6.1; 2009.06 SP1; 2010 2010091 и 2019.03 версии,. Какая лучше? Как обстоят дела с кряками, работают ли? 2. Как интегрировать, если это возможно, одно в другое?
  13. Ага, мысль понятна. Но в моём случае, сейчас, наверно, проще через catch или find сделать. Кстати, find, при отсутствии сигнала, выдаёт не ноль, а пустую строку "".
  14. Да понятно что команды разные. Печально, что нет штатных возможностей добраться до определений прекомпилятора из tcl. Не понял, как?
  15. Это да. Но как вернуть обратно? onerror {break} не работает. Только onerror "". find - хорошо, но это почти тоже самое что и catch. А хотелось бы что-то вида if {[define exists BBB]} {add wave B}
  16. Канал на Youtube посвящённый проектированию под FPGA. Акцент сделан на производителя ПЛИС фирму Intel (Altera) и язык описания схем Verilog. Материал, в большей степени, ориентирован на начинающих. https://www.youtube.com/c/Jack0v/playlists?view=1
  17. Есть код: `define AAA //`define BBB ... `ifdef AAA wire A; `endif `ifdef BBB wire B; `endif ... В Моделсиме добавляю эти сигналы через do-файл: ... add wave A add wave B ... Строчка add wave B вызывает ошибку. Есть ли способ добавлять сигналы с учётом определений прекомпилятора? Я знаю, что директивы - моветон, но всё же. Документацию полистал - ничего хорошего не нашёл, за исключением onerror {resume}, но он пропускает все неизвестные сигналы, поэтому приходится писать ... add wave A onerror {resume} add wave B onerror {break} ... Вот только onerror {break} не работает, и МоделСим продолжает пропускать неизвестные сигналы, поэтому вместо него пишу onerror "" , как пишут в документации это возврат команды onerror к исходному состоянию, вот только как оно называется так и не понятно. Но в любом случае это неудобно. Можно ещё через catch { }, но это тоже костыли. Всё же хотелось бы получить доступ к определениям прекомпилятора из tcl.
  18. Вообще, если подумать, то в автомате тестировать нужно только комбинационную часть, регистр состояний тестировать незачем, он слишком прост для этого. Потому можно сделать так: переписываем автомат так чтобы его комбинационная часть была в отдельном always-блоке. Этот always-блок временно, на время тестирования, помещаем в отдельный модуль. На вход модуля помещаем счётчик, который, во время счёта, переберёт все возможные комбинации на входе модуля. Ну а далее просто смотрим что выдаёт модуль и сравниваем с графом автомата.
  19. Обычный RS-триггер с приоритетом так-то. Ну да, выглядит непривычно, привычно так: if(RM_Rise == 1'b1) Dis_Foto <= 1'b1; else if(Res_Dis_Foto == 1'b1) Dis_Foto <= 1'b0; Но и так тоже можно.
  20. Рекомендую навернуть этот плейлист https://www.youtube.com/playlist?list=PL4UMfOeGYsvblwrP3VYKHq11xgkxVqoUj
  21. Это всё хорошо. Вот только если он инверсию поставит на выходе триггера, то инвертированное начальное состояние триггера (после выхода ПЛИС на рабочий режим) он никак скомпенсировать не сможет. Я в своё время накололся на этом, весь извёлся пытаясь понять почему у меня триггер после запуска сразу стоит в единице.
  22. У Альтеры PLL вообще меньше 1МГц (или около того) выдавать не может. Можно поделить на PLL до приемлемых значений, а потом ещё и счётчиком, тогда разрядов у него меньше будет.
  23. Тут нужно помнить что не во всех ПЛИС есть асинхронная установка в единицу. Например в Циклоне 1 она была, а Циклоне 4 уже нет. И если так написать то есть вероятность, что компилятор сделает асинхронный сброс в ноль, и чтобы его скомпенсировать поставит инверсию на выходе триггера, отчего начальное состояние триггера будет не 0, а 1. В таких случаях надо смотреть не только RTL, но ещё и что получилось после фитера.
  24. У плисины корпус с ногами под брюхом, BGA он называется или ка-то так, особо не подпаяешься. У флешки, кстати, тоже такой корпус. Так что даже просто флешку на свободные ноги перекинуть - не вариант. Ладно, этот вопрос пока отложили, может позже ещё подниму тему.
×
×
  • Создать...