acvarif 0 12 октября, 2017 Опубликовано 12 октября, 2017 · Жалоба Имеется проект для Cyclone 3 (Sopc компонент + Nios F) Частота на которой работает Sopc компонент 55 мГц Системная частота Nios + обвъязка(контроллер RAM, UART и пр.) 100 мГц Sopc компонент имеет связь с Nios по Avalon (запись-чтение) Для потребностей Sopc компонента пытаюсь увеличить частоту вдвое 110 мГц затем внутри делю на 2 - получаю те же 55, а 110 предполагается использовать для точной подсинхронизации некоторых процессов в компоненте. Вроде для компонента ничего не должно меняться. Но система перестает работать вообще. Ничего не сделал, только входной клок увеличил вдвое и поделил на 2. Подскажите пожалуйста в чем может быть проблема? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Burenkov 0 12 октября, 2017 Опубликовано 12 октября, 2017 · Жалоба Имеется проект для Cyclone 3 (Sopc компонент + Nios F) Частота на которой работает Sopc компонент 55 мГц Системная частота Nios + обвъязка(контроллер RAM, UART и пр.) 100 мГц Sopc компонент имеет связь с Nios по Avalon (запись-чтение) Для потребностей Sopc компонента пытаюсь увеличить частоту вдвое 110 мГц затем внутри делю на 2 - получаю те же 55, а 110 предполагается использовать для точной подсинхронизации некоторых процессов в компоненте. Вроде для компонента ничего не должно меняться. Но система перестает работать вообще. Ничего не сделал, только входной клок увеличил вдвое и поделил на 2. Подскажите пожалуйста в чем может быть проблема? У вас Nios отдельно от Sopc, снаружи? Сделайте хотя бы скриншот структуры, ничего не понятно. Где и как умножаете и делите частоту? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
acvarif 0 12 октября, 2017 Опубликовано 12 октября, 2017 · Жалоба У вас Nios отдельно от Sopc, снаружи? Сделайте хотя бы скриншот структуры, ничего не понятно. Где и как умножаете и делите частоту? Структура Компонент на который подается 55,55.. мГц (altpll_io) - amulet0 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Burenkov 0 12 октября, 2017 Опубликовано 12 октября, 2017 (изменено) · Жалоба Структура Компонент на который подается 55,55.. мГц (altpll_io) - amulet0 Вам надо убедиться что логика, которая обслуживает slave порт вашего блока работает на частоте altpll_io, а не на ее производной. SOPC поставил clock cross логику между портом slave вашего блока и мастерами на sys_clk, и все сигналы slave порта у вас работают на частоте altpll_io. Как вы делите частоту внутри amulet0? Это момент тоже важен, нельзя клок так просто пропускать через триггер-делитель, из-за этого тоже могут быть проблемы Изменено 12 октября, 2017 пользователем Burenkov Sergey Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
acvarif 0 12 октября, 2017 Опубликовано 12 октября, 2017 · Жалоба Вам надо убедиться что логика, которая обслуживает slave порт вашего блока работает на частоте altpll_io, а не на ее производной. SOPC поставил clock cross логику между портом slave вашего блока и мастерами на sys_clk, и все сигналы slave порта у вас работают на частоте altpll_io. Как вы делите частоту внутри amulet0? Это момент тоже важен, нельзя клок так просто пропускать через триггер-делитель, из-за этого тоже могут быть проблемы Да именно так. altpll_i0 делаю 110, а в компоненте amulet0 просто делю ее на тригере. Предполагаю, что логика компонента должна работать также. Другое дело, что там (в компоненте) где осуществляется запись(чтение) данних в регистры(из регистров) компонента посредством Avalon нужно оставить неделенную на 2 altpll_i0. Я правильно понимаю? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Burenkov 0 12 октября, 2017 Опубликовано 12 октября, 2017 · Жалоба Да именно так. altpll_i0 делаю 110, а в компоненте amulet0 просто делю ее на тригере. Предполагаю, что логика компонента должна работать также. Другое дело, что там (в компоненте) где осуществляется запись(чтение) данних в регистры(из регистров) компонента посредством Avalon нужно оставить неделенную на 2 altpll_i0. Я правильно понимаю? Да, все что связано с Avalon нужно тактировать от altpll_io, либо сделать переход между домена вручную. Раз уж деление на триггере никак нельзя убрать, то после триггера поставьте клоковый буфер и опишите эту частоту в sdc Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
acvarif 0 12 октября, 2017 Опубликовано 12 октября, 2017 · Жалоба Да, все что связано с Avalon нужно тактировать от altpll_io, либо сделать переход между домена вручную. Раз уж деление на триггере никак нельзя убрать, то после триггера поставьте клоковый буфер и опишите эту частоту в sdc Понял. Спасибо. Как выглядит клоковый буфер? Я так понимаю это должно быть описание на VHDL(Verilog)? В sdc ее просто прописать.. ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Burenkov 0 12 октября, 2017 Опубликовано 12 октября, 2017 · Жалоба Понял. Спасибо. Как выглядит клоковый буфер? Я так понимаю это должно быть описание на VHDL(Verilog)? В sdc ее просто прописать.. ? Видимо надо такую штуку поставить https://www.altera.com/content/dam/altera-w...ug_altclock.pdf не уверен... Я бы сделал лучше просто второй вход клока, и на него подал с PLL частоту, так как-то прозрачнее и понятнее... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться