Jump to content

    

Flip-fl0p

Свой
  • Content Count

    1120
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Flip-fl0p

Старые поля

  • skype
    Array
  • Vkontakte
    Array

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

6602 profile views
  1. Спасибо ! Я думал, что any net - это и есть любые трассы. А тут вон оно как)
  2. Доброй ночи дамы и господа. Нужда заставила взяться за рисование платы. Поскольку так уж сложилось, что на профессиональном уровне я этим никогда не занимался, то рисовать плату начал в том, что хоть как-то знаю, т.е Altium designer. Плату развел, вроде-бы можно уже изготовить её (буду делать ЛУТом, т.к делаю для себя) Однако все-же перфекционизм взял свое, и решил я добавить правило проектирования, чтобы убедиться что зазоры между проводниками нормальные. И обнаружил, что любое изменение угла проводника на плате вызывает срабатывание нарушения правила clearence. Поигравшись с настройками этого констрейна я так и не понял как мне правильно проверить соответствие на минимальное расстояние между двумя проводниками. Дизайн прилагаю. PCB_Project.rar
  3. Потому-что проще написать на нем. Не надо думать над преобразованием типов, над выравниванием разрядностей. В верилоге проще написать модуль так, чтобы он синтезироваться. Но то, что он может синтезироваться неправильно - это уже десятое. Главное - смотрите как быстро ! Не то, что эти VHDLщики преобразуют по пол часа integer в битовые вектора. )))
  4. А в Vivado 2020.2 добавили новую фичу для симуляции VHDL2008. Изучать более новые версии смысла мало, поскольку неизвестно когда вендоры смогут поддержать новый стандарт. Упыри блин...
  5. А чем верицифировать ? У Vivado линтер тоже так-себе...
  6. Так под тем, чтобы разобраться со всеми типами и подтипами языка VHDL - я и имел виду разобраться со стандартными библиотеками...
  7. В стандартных библиотеках VHDL нет unsigned_vector, есть unsigned. Если собираетесь дальше писать на VHDL - настоятельно рекомендую разобраться со всеми типами и подтипами в VHDL.
  8. Так почти все мониторы работают на стандартных таймингах VESA. Для пользовательских таймингов можно задать отдельный дефайн. Так проще. Опыт мне подсказывает что в 99% случаев будет использоваться какой-то один стандартный тайминг.
  9. Тайминги для мониторов выдаются в соответствии со стандартами VESA. Собственно можете называть их как в стандарте. Например VESA_800x600_60Hz или VESA_640x480_85Hz. Соответственно и выбирать тайминги проще через глобальный дефайн. А разве модуль, который выдает координату точки и формирует тайминги - это не один и тот-же модуль ?
  10. Детальность зависит только от полноты описания модуля, которое мне нужно для документирования. В случае вывода на семисегментный индикатор с 4 разрядами я бы ограничился таким описанием: Модуль верхнего уровня CONTROLLER_4X_7SEGM, который имеет 4 входа данных (каждый вход данные для соответствующего сегмента) и 2 выхода данных. Один выход - код семисегментного индикатора. Второй - выбор индикатора. Этот модуль состоит из 2 других модулей: 7SEGM_CTRL_FSM - модуль который определяет в какое время включить нужный сегмент и что на этот сегмент подать. По сути - это простейший цифровой автомат. Возможно туда имело бы смысл добавить небольшой блок, который формирует из системной частоты нужную частоту для своей работы, чтобы обеспечить необходимую скорость переключения сегментов. Или же счетчик, который держит включенным разряд нужное нам время. Но это мелочи, которые обычно определяются когда полная схема устройства перед глазами. И второй модуль - это BINARY_TO_7SEGM_CODER кодер из 4 битового двоичного числа в код семисегментного индикатора. В итоге мы имеем блок CONTROLLER_4X_7SEGM которому достаточно подать на входы данные, которые мы хотим зажечь на соответствующих сегментах. Ему все равно каким образом эти данные формируются. Он полностью автономен. Стараюсь модули делать с минимальной связностью. Каждый модуль максимально "тупой" и не знает о существовании других модулей. Ему подали данные на вход, он их обработал и выдал дальше. Это в идеале. Обычно получается чуть сложнее и частенько приходится добавлять доплнительные сигнал в виде ready, busy, done.
  11. Так FPGA - это больше схемотехника. И думать надо по-другому. А когда рисуете схемы на бумаге карандашом - становится сразу проще. Советую. У меня обычно уходит много бумаги времени прежде чем я приступаю к написанию кода.
  12. В Вашем коде много недостатков. 1. Есть сигналы, которые не используются. Долой из рабочего кода мусор. Код должен быть максимально чистым. 2. Нет нормальных названий сигналов. Сигналы должны быть понятными. Вот что значит регистр CTCQ ? По коду видно, что это счетчик, а что он считает. Зачем он нужен ? 3. Смешано все в одной куче. Разбейте схему на логически законченные блоки. 4. На вход тактовой частоты подается сигнал с счетчика. Думаю в Вашем случае это ошибка.... Хотите правильно делать ? Начинайте проектирование не с написание кода, а с рисования карандашом на бумаге. Нарисуйте функциональную схему Вашего устройства. Тогда все станет понятным и простым. Ну и самое главное - пользуйтесь симулятором. Пока не заработает на симуляторе - в железе работать не будет. Чтобы дойти до уровня, когда можно написать код без симулятора - надо потратить не один десяток часов, а то и сотню. При этом Все-равно на более-менее сложных блоках без симулятора не обойтись.
  13. Я предпочитаю преобразователь из двоичного в семи сегментный держать в виде отдельного модуля с параметром каким логичесим уровнем зажигать сегмент. Хотя все чаще и чаще я стал в своём коде применять различного рода функции, хоть раньше этого и не любил.