Гость vitzap 9 июля, 2020 Опубликовано 9 июля, 2020 (изменено) · Жалоба 1 hour ago, Yuri124 said: возможно - в данном случае - задать макс. допустимую задержку от выхода этого latch до того фронта клока, на котором должен уже быть выставлен действительный адрес для SRAM. М.б. через мультицикл это определить - но с учетом асинхронности записи мл. байта в регистр ПЛИС и клока ПЛИС - т.е. 1-2 такта ПЛИС учесть на переход в др. клоковый домен. Так так такт как таковой отсутствует - схема комбинационная. Скорей, для задания констрейнов нужно использовать set_max_delay, но я такого никогда не делал. Когда-то давно, еще на MAX7000, словил срабатывание комбинационной схемы от "иголок" (решил "срисовать" схему на 1533 серии) и больше не грешил этим. Изменено 9 июля, 2020 пользователем vitzap Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 9 июля, 2020 Опубликовано 9 июля, 2020 · Жалоба Как понял, просто и толково сделать не получится. По любому танцев с бубном не избежать. Впрочем всё как всегда ... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 1 9 июля, 2020 Опубликовано 9 июля, 2020 · Жалоба 13 minutes ago, vitzap said: Так так такт как таковой отсутствует - схема комбинационная но latch то появится. Посмотреть после компиляции - как он в проекте обзывается (если с именем регистра исходника не будет совпадать) - и описать этот регистр в констрейне. Да и при комбинационной схеме есть возможность описать задержки (как конкретно пишется - уже не помню, есть в описании команд, кажется от synopsys) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Гость vitzap 9 июля, 2020 Опубликовано 9 июля, 2020 · Жалоба 7 minutes ago, zombi said: По любому танцев с бубном не избежать Вы попробуйте сделать просто защелку. Скорей всего, заработает и так. Если будут глюки - задавать констрейны. Если не тянуть сигналы через большую ПЛИС (а мы не знаем, что у вас стоит), то все должно прокатить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 1 9 июля, 2020 Опубликовано 9 июля, 2020 · Жалоба 3 minutes ago, zombi said: просто и толково ну почему же, судя по приведенной Вами осциллограмме - МК выставляет этот байт адреса синхронно с ALE в такте Т2. Поскольку этот байт не используется сразу после того, как ALE стал 1, то можно смело пропускать этот байт в латч, и защелкивать (запрещать изменение) после того, как ALE стал в 0 - это ИМХО будет наиболее быстро. Сложно только описать задержки, да еще с переходом в другой домен - ну так или делать синхронизатор готовности данных и адреса (чтобы точно знать, когда всё готово, при этом - возможно, еще придется запоминать и остальной адрес и данные) - это ИМХО будет проще всего. Тем более что нужно передать всё это дальше в SRAM. Но с учетом чуть ли не 5-кратного превышения частоты ПЛИС над частотой МК - очень вероятно, что можно обойтись без промежуточных регистров (зависит от времянки SRAM и задержек ПЛИС в выходных блоках). Только всё подробнейшим образом разрисовать и просчитать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Raven 8 9 июля, 2020 Опубликовано 9 июля, 2020 · Жалоба 10 minutes ago, Yuri124 said: Да и при комбинационной схеме есть возможность описать задержки (как конкретно пишется - уже не помню, есть в описании команд, кажется от synopsys) Человек хотел сказать - асинхронная схема (а не комбинационная). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 1 9 июля, 2020 Опубликовано 9 июля, 2020 (изменено) · Жалоба 14 minutes ago, Raven said: хотел сказать - асинхронная схема (а не комбинационная) без разницы. В схеме присутствует латч, он в любом случае появится после компиляции с каким-то именем, это имя и использовать в констрейнах. Только внимательно читать отчет компилятора. Было такое - задал в констрейне имя как в проекте (это был даже не латч - регистр, а именно логика) - в отчете оппа - констрейн проигнорен, т.к. нет такого имени сигнала. Пришлось смотреть, как оно обозвалось компилятором и подправлять. Изменено 9 июля, 2020 пользователем Yuri124 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 9 июля, 2020 Опубликовано 9 июля, 2020 · Жалоба 3 hours ago, zombi said: Сейчас так и делаю инверсным ALE в DFF защелкиваю. Но в таком случае мл.адреса на sram попадают позже как минимум на пол такта MK. Короче, так и оставлю. Проще на МК wait states добавить чем весь этот гемор разрулить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 1 9 июля, 2020 Опубликовано 9 июля, 2020 · Жалоба 30 minutes ago, zombi said: на МК wait states добавить Если скорость не поджимает. Но гемора то особо не вижу - данные то МК выдает всё равно на такт позже. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 9 июля, 2020 Опубликовано 9 июля, 2020 · Жалоба 19 minutes ago, Yuri124 said: Если скорость не поджимает. Ну так придётся чем то и пожртвовать. 19 minutes ago, Yuri124 said: Но гемора то особо не вижу - данные то МК выдает всё равно на такт позже. Это кому как. Почитал тут все что насоветовали. И понял, не для меня этот банкет Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 1 9 июля, 2020 Опубликовано 9 июля, 2020 (изменено) · Жалоба ну смотрите - если делать защелку, то мл. байт точно будет раньше, чем по спаду ALE (хотя защелка медленнее, чем D-триггер, насколько помнится, но при таких частотах МК думаю наносекунд 10 выиграете. С другой стороны - данные придут только в след. такте, при быстрой SRAM, если ей не нужен большой setup по адресу - эти 10 нс без разницы (если не вести далеко по кристаллу, но так и данные тогда тоже надо будет, наверное, далеко вести). А так квартус сам по себе может наставить латчей, если некорректно ( с его точки зрения) описан автомат, и предупредит об этом - т.к. латч часто не самое хорошее решение. Такое было у меня, тоже принимал данные с МК, регулировал через wait state МК, но тогда многого не знал по описанию констрейнов, да и скорость устраивала - обработка была настолько медленной, что все равно приходилось притормаживать МК. Изменено 9 июля, 2020 пользователем Yuri124 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 9 июля, 2020 Опубликовано 9 июля, 2020 · Жалоба По заднему фронту ALE - работают подобные проекты. В новом решил слегка ускорить. Не получилось. Ну и ладно. Это далеко не самая важная проблема по сравнению с тем что ещё предстоит нагородить. Спасибо за советы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Yuri124 1 10 июля, 2020 Опубликовано 10 июля, 2020 (изменено) · Жалоба 22 hours ago, zombi said: эти адреса в самой плис тоже используются Поставить в клоковом домене ПЛИС (150 МГц) 2-3 триггера синхронизатора на wire ale: reg ale_r, ale_rr, ale_rrr; - количество триггеров взял исходя из картинки (там адрес появляется после фронта ale) и из частот 32 и 150 МГц. Поставить автомат: 1. ждать 1 на ale_rrr 2. address_150 <- address_MC; adress_valid <- 1'b1; - формируется строб вылидности адреса, импульс, написать автомат так, чтобы этот импульс длился 1 такт 150 МГц 3. ждать 0 на ale_rrr 4. преход на 1. Т.е. 4-й такт 150МГц пишет в регистр в домене 150 МГц адрес (можно весь, не только младший байт) - судя по картинке, должно работать норм. Но нужно посчитать точно, с каким разбросом выдает МК адрес по отношению к ALE, может быть получится и 3-м клоком защелкивать в регистр. Таким образом - адрес будем иметь не позже спада ALE и гарантированно валидный в домене ПЛИС. От фронта ALE можно посчитать каким клоком писать данные в домен ПЛИС - если это нужно. Тогда просто дополнить автомат еще 1-2 состояниями. Посчитать и прописать min/max задержки rising edge ale и мах задержку адреса (возможно - понадобится и min задержку адреса) - от ножек ПЛИС до клока 150 МГц. Изменено 10 июля, 2020 пользователем Yuri124 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 164 10 июля, 2020 Опубликовано 10 июля, 2020 · Жалоба 16 часов назад, zombi сказал: Не получилось. Т.е. Вам непосредственно по теме ответили, Вы этот код вписали в исходник, но он не стал работать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 10 июля, 2020 Опубликовано 10 июля, 2020 · Жалоба 1 hour ago, Yuri124 said: Поставить в клоковом домене ПЛИС (150 МГц) 2-3 триггера синхронизатора на wire ale: Понял Вашу мысль. Спасибо Yuri124! Т.о. синхронизатор необходим только на одном проводнике а не на всей шине. Шикарно! 21 minutes ago, Plain said: Т.е. Вам непосредственно по теме ответили, Вы этот код вписали в исходник, но он не стал работать? Нет конечно. Пока чисто теоретически всё. Прочитав про все сложности понял что в моём случае (опыте, знании и тд) это именно "не получилось" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться