kovigor 5 25 января, 2016 Опубликовано 25 января, 2016 · Жалоба Есть проект, в котором, в зависимости от положения пары переключателей должна меняться частота тактирования. Эталонный тактовый сигнал (CLK) подается на предназначенную для этого ножку и идет на счетчик, на выходах которого формируются сигналы с частотами CLK/2, CLK/4 и CLK/8. Проект компилируется и работает, но меня одолевают сомнения в корректности такого решения. Прокомментируйте, пожалуйста ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 25 января, 2016 Опубликовано 25 января, 2016 · Жалоба абсолютно корректно, если прописаны констрейны и есть свободные глобальные ресурсы для разводки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 5 25 января, 2016 Опубликовано 25 января, 2016 · Жалоба абсолютно корректно, если прописаны констрейны и есть свободные глобальные ресурсы для разводки. В качестве констрейна указана только "основная" тактовая частота. Этого недостаточно ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shamrel 0 25 января, 2016 Опубликовано 25 января, 2016 · Жалоба В качестве констрейна указана только "основная" тактовая частота. Этого недостаточно ? На сколько я понимаю, нет. И об этом вам должен был сказать в предупреждении Quartus. Следует для каждой генерируемой частоты прописать типа такого: create_generated_clock -name {как ее назовем} -divide_by 2 -source [get_ports {от какого клока деленая}] [get_registers {откуда берется}] Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeyVas 0 25 января, 2016 Опубликовано 25 января, 2016 · Жалоба Констрейны в sdc , генерируется автоматически в timequest, нужно толь подправить время и тд. потом. Quartus 13.1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 5 25 января, 2016 Опубликовано 25 января, 2016 · Жалоба Констрейны в sdc , генерируется автоматически в timequest, нужно толь подправить время и тд. потом. Quartus 13.1 А где их подправить, в каком файле ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeyVas 0 25 января, 2016 Опубликовано 25 января, 2016 · Жалоба Расширение sdc если не ошибаюсь, на этом компьютере нет квартуса у меня. Этот файл в настройках нужно указать. Если его нет в папке с проектом его нужно сгенерировать в timequest, timequest запускается на кнопке часы нарисованы. ссылка Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kovigor 5 25 января, 2016 Опубликовано 25 января, 2016 · Жалоба расширение sdc если не ошибаюсь, на этом компьютере нет квартуса у меня. Этот файл в настройках нужно еще указать. Если его нет его нужно сгенерировать в timequest там на кнопке часы нарисованы Там какой-то другой файл. В .sdc - файле я сам констрейны задавал вручную ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SergeyVas 0 25 января, 2016 Опубликовано 25 января, 2016 · Жалоба Можно переложить его в другую папку, в timequest внизу кнопка должна быть write.... заново его запишет. Потом подкорректировать или дописать что то еще. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
shamrel 0 25 января, 2016 Опубликовано 25 января, 2016 · Жалоба Там какой-то другой файл. В .sdc - файле я сам констрейны задавал вручную ... Вот и пропишите вручную. des00 скромничает, но вот отличный пример: TimeQuest для чайников. Часть 3 (Клоки как вас много) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bad0512 2 26 января, 2016 Опубликовано 26 января, 2016 · Жалоба Есть проект, в котором, в зависимости от положения пары переключателей должна меняться частота тактирования. Эталонный тактовый сигнал (CLK) подается на предназначенную для этого ножку и идет на счетчик, на выходах которого формируются сигналы с частотами CLK/2, CLK/4 и CLK/8. Проект компилируется и работает, но меня одолевают сомнения в корректности такого решения. Прокомментируйте, пожалуйста ... По умолчанию такая схема - источник непрерывного геморроя. По разным причинам.Гораздо проще и правильнее на счётчике формировать стробы CE, а жить при этом на исходной тактовой. При этом не надо вручную описывать сгенерированные клоки, не будет проблем с ресурсом тактовых деревьев, единственный вопрос, который постоянно мусолится - некоторые утверждают что в данном случае (прореженные CE на исходно высокой тактовой) энергопотребление будет выше. Однако детальных исследований на эту тему ИМХО никто так и не проводил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 26 января, 2016 Опубликовано 26 января, 2016 · Жалоба По умолчанию такая схема - источник непрерывного геморроя. По разным причинам.Гораздо проще и правильнее на счётчике формировать стробы CE, а жить при этом на исходной тактовой. да не факт. с чего она будет гемороем, если поделил тактовую, зароутил на глобальный буфер и работаешь на нем как на асинхронном(это важно), от остальной схемы клоке. А с СЕ может потребоваться полная переписка большей части проекта, если изначально это не было заложено в код (сигнал clkena), да и констрейнить это потом надо мультициклами по дереву, да и синтезатор сам себе на уме, не факт что в LAB clkena вход триггеров задействует, может на логике все залабать. Каждый из вариантов имеет право на жизнь, но нужно понимать последствия. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Bad0512 2 26 января, 2016 Опубликовано 26 января, 2016 · Жалоба если поделил тактовую, зароутил на глобальный буфер и работаешь на нем как на асинхронном(это важно), от остальной схемы клоке. Если клок асинхронный (объявлен асинхронным) относительно базового (который делим счётчиком) то при переходе из одного домена в другой (а такие места наверняка будут - иначе зачем вообще морочиться с разными доменами?) возникнет место неконтролируемого тайминг аналайзером перехода с непредсказуемыми последствиями. Если клок описать синхронным, то там тоже свои проблемы есть в виде фазовой разбежки между фронтами клоков (которая получается именно из-за деления на логике). Эта фазовая задержка часто приводит к невозможности соблюсти слаки по холду. В общем и целом, кругом разложен ровный слой мелких граблей. А всё потому, что gated clock - абсолютное зло! Справедливости ради надо отметить, что в случае с Clock Enable тоже есть пара проблемных моментов (типа адского fanout по цепи CE, что приводит к проблемам в тайминге). Но ИМХО эти проблемы решить проще, чем в случае gated clock. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 26 января, 2016 Опубликовано 26 января, 2016 · Жалоба (а такие места наверняка будут - иначе зачем вообще морочиться с разными доменами?) Например есть кучка медленных уартов на частоте 20МГц, когда вся система хлопает на 200. Или например совершенно отдельный микроб со своими задачами стоит, на частоте 48МГц, а все остальное работает на 192. Вариантов масса, на всех PLL не напасешься. возникнет место неконтролируемого тайминг аналайзером перехода с непредсказуемыми последствиями. правила CDC не вчера были придуманы. Если клок описать синхронным, то там тоже свои проблемы есть в виде фазовой разбежки между фронтами клоков (которая получается именно из-за деления на логике). Эта фазовая задержка часто приводит к невозможности соблюсти слаки по холду. Правильно. И в итоге все равно достается из котомки решений по CDC вариант с фифо с раздвижкой указателей на половину, глубина которого посчитана исходя из соотношений клоков. Т.е. решение по прежнему асинхронное. В общем и целом, кругом разложен ровный слой мелких граблей. А всё потому, что gated clock - абсолютное зло! Рождение постоянного клока на счетчике-делителе != gated clock. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ilkz 0 26 января, 2016 Опубликовано 26 января, 2016 (изменено) · Жалоба ... фифо с раздвижкой указателей на половину ... А можно вот тут подробнее? Впервые слышу. Мне всегда казалось что фифо это просто два тактово независящих друг от друга указателя (указатель rd, который всегда "догоняет" указатель wr, но не обгоняет его). Ну естественно, они развязаны через cdc друг относительно друга. Изменено 26 января, 2016 пользователем ilkz Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться