реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
Мур
сообщение Feb 7 2017, 19:45
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847



Собрал простенький проект для пробы новой платформы. 4 светодиода генератором случайных интервалов обеспечиваю плавную смену яркости светодиодов. На модели в интервале 350мСек можно видеть этот процесс.
Каково же было мое удивление, что синтезатор отбросил вход CLK(единственный). Что это может быть? Проект выкладываю тут. Спасибо!
Go to the top of the page
 
+Quote Post
iosifk
сообщение Feb 7 2017, 19:57
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Мур @ Feb 7 2017, 22:45) *
Собрал простенький проект для пробы новой платформы. 4 светодиода генератором случайных интервалов обеспечиваю плавную смену яркости светодиодов. На модели в интервале 350мСек можно видеть этот процесс.
Каково же было мое удивление, что синтезатор отбросил вход CLK(единственный). Что это может быть? Проект выкладываю тут. Спасибо!

Тут - это где?


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Мур
сообщение Feb 8 2017, 05:09
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847



Эх спешка....
Не тыцнул ЗАГРУЗИТЬ. Извините!
Прикрепленные файлы
Прикрепленный файл  PWM.zip ( 9.74 килобайт ) Кол-во скачиваний: 29
 
Go to the top of the page
 
+Quote Post
Timmy
сообщение Feb 8 2017, 07:45
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 835
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Не могли бы вы подробно прокомментировать вот эту конструкцию?
Код
process (clk, reset, enable, tmp)
--process (clk)
begin
if (clk'event and clk='1') then
elsif reset = '0' then
    tmp <= (others=>'1');
elsif  enable = '1' then
    for i in 0 to 30 loop
    tmp(i+1) <= tmp(i);
    end loop;
tmp(0) <= tmp(31) xor tmp(21) xor tmp(1) xor tmp(0);
end if;
end process;

Go to the top of the page
 
+Quote Post
Мур
сообщение Feb 8 2017, 10:32
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847



Цитата(Timmy @ Feb 8 2017, 10:45) *
Не могли бы вы подробно прокомментировать вот эту конструкцию?


Это заимствовано(из инернета) в качестве генератора случайных чисел. Я шел на поводу синтезатора, который ругался на список чувствительности, чтобы его возмущение ублажить... Я его уже применял прежде. Замечаний не было
Закоментирован мой список из одно CLK. Здесь сдвиговый регистр с обратными связями через XOR...

К конечной проблеме это не имеет отношения...

Кто смотрел,- вы убедились, что входной пин в подключении отбрасывается?.. И это при том, что он подключен только к PLL...
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Feb 8 2017, 10:57
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Мур @ Feb 8 2017, 13:32) *
К конечной проблеме это не имеет отношения...
Дащаз.
Код
process
begin
if (clk'event and clk='1') then
elsif reset = '0' then

Как вы думаете, что об этом думает синтезатор?
Go to the top of the page
 
+Quote Post
Мур
сообщение Feb 8 2017, 11:14
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847



Цитата(andrew_b @ Feb 8 2017, 13:57) *
Дащаз.
Код
process
begin
if (clk'event and clk='1') then
elsif reset = '0' then

Как вы думаете, что об этом думает синтезатор?


Вы ошибаетесь. Тут тактирование уже с выхода PLL... См. сигнал clk_s в TOP_PWM_4LED_GPIO.vhd


Хм... Как-то прозевал это место.. Спасибо! Тю, солома!...
И после исправления CLK стал на место? (Я на работе ПЛИС не занимаюсь). Сообщите результат!
Go to the top of the page
 
+Quote Post
Мур
сообщение Feb 8 2017, 19:32
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847



Наконец-то добрался до домашнего компа... Результат проблему не решил. Все-таки вход CLK не подключен к дизайну...
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Feb 9 2017, 02:07
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(Мур @ Feb 9 2017, 02:32) *
Наконец-то добрался до домашнего компа... Результат проблему не решил. Все-таки вход CLK не подключен к дизайну...

Автору предлагается изменить название темы с "Волюнтаризм ISE" на "я написал 5 строчек на VHDL и умудрился облажаться".
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Feb 9 2017, 04:54
Сообщение #10


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Решил удволетворить своё любопытство и посмотреть текст схемы. Меня очень смутил тот факт, что
в модуле pointer_cnt_ea выходной порт IСNТ_OUT содержит кириллические символы....
Соответственно и другие модули, где применяется этот порт, содержат ту-же ошибку. Не это ли корень проблемы ? Поскольку ISE у меня не установлен, то открыть проект и проверить я не могу.



Сообщение отредактировал Flip-fl0p - Feb 9 2017, 05:23
Go to the top of the page
 
+Quote Post
Мур
сообщение Feb 9 2017, 05:38
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847



Цитата(Flip-fl0p @ Feb 9 2017, 07:54) *
содержит кириллические символы....

Спасибо! Было бы здорово тут сказать, что за редактор вы применяете? На вооружение стоит взять...

Всегда считал, что прогон модели на симуляторе хороший способ прооверки всей этой мелочевки.... Хороший опыт! Спасибо всем...

Моментально все стало на место! Именно кирилица портила жизнь. Заимствованый модуль генератора RND при том варианте кода как-то работал прежде, правда в Lattice. Почему я и не обратил внимание...

"Чилавеку свойствинна ашибацца"
"Человеку не свойственно совершенство" Ф.Брукс.
Go to the top of the page
 
+Quote Post
Flip-fl0p
сообщение Feb 9 2017, 05:54
Сообщение #12


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Цитата(Мур @ Feb 9 2017, 08:38) *
Спасибо! Было бы здорово тут сказать, что за редактор вы применяете? На вооружение стоит взять...

Классический Notepad++. Правда пришлось помучиться, чтобы из обычного редактора сделать удобную среду разработки. Но оно того стоило.
Советую установить следующие плагины:
NppExec - консоль в текстовом редакторе. Нужна для запуска проверки синтаксиса прямо в редакторе. Надо будет настроить вызов Modelsim через эту консоль.
Snippets - чтобы создавать свои шаблоны кода, и быстро их вставлять.
SourceCookifier - чтобы видеть дерево кода, где сигнал объявлен, где процесс, константа, и быстро переключаться к месту объявления.
Есть ещё куча плагинов, мною не изученных, которые существенно помогут в рутине написания текста.
На данный момент под виндой я не вижу ему разумных альтернатив... Разве что Sigasi. Но он платный. Другие редакторы мне не очень понравились.
P.S. Как ни странно, но прогон данного текста схемы у Modelsim тоже не вызвал подозрений..... Quartus проверять отказался, выдав непонятную критическую ошибку...

Сообщение отредактировал Flip-fl0p - Feb 9 2017, 05:57
Go to the top of the page
 
+Quote Post
Tausinov
сообщение Feb 9 2017, 09:57
Сообщение #13


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 19-10-13
Пользователь №: 78 795



После беглого просмотра кода вот, что заметил.
В gen_pwm_ea.vhd в списке чувствительности процесса ресет лишний.
В rnd_ea процесс - это нечто вообще странное. Клок там естественным образом выкидывается, потому что вы его никак не используете. До сегодняшнего дня даже не задумывался, что будет, если после условия с фронтом клока if (clk'event and clk='1') then что-то, кроме NULL дописать в else. Precision просто выкидывает клок, есть подозрение, что остальные синтезаторы поступят так же. Почему синтезатор предупреждает о необходимости сигналов в списке чувствительности - результаты работы железа и симуляция будут отличаться. По факту же синтезатор список чувствительности не анализирует. Если идея была в том, чтобы получить задний фронт, то можно сделать if (clk'event and clk='0'), в противном случае считайте, что клок вообще не используется.
Go to the top of the page
 
+Quote Post
Мур
сообщение Feb 9 2017, 10:25
Сообщение #14


Знающий
****

Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847



Цитата(Tausinov @ Feb 9 2017, 13:57) *
После беглого просмотра кода вот, что заметил.
В gen_pwm_ea.vhd в списке чувствительности процесса ресет лишний.

Это не критично. Синхронный сброс не требует присутствия сигнала RESET в списке чувствительности. Главное не пропустить самый важный...
Цитата
В rnd_ea процесс - это нечто вообще странное. Клок там естественным образом выкидывается, потому что вы его никак не используете. До сегодняшнего дня даже не задумывался, что будет, если после условия с фронтом клока if (clk'event and clk='1') then что-то, кроме NULL дописать в else. Precision просто выкидывает клок, есть подозрение, что остальные синтезаторы поступят так же.

Этот топик как раз говорит о том, что присутствие кирилицы лишает синтезатор привычной магии. Варнинги сыпятся "не по делу". Тут может быть все что угодно...
Цитата
Почему синтезатор предупреждает о необходимости сигналов в списке чувствительности - результаты работы железа и симуляция будут отличаться. По факту же синтезатор список чувствительности не анализирует. Если идея была в том, чтобы получить задний фронт, то можно сделать if (clk'event and clk='0'), в противном случае считайте, что клок вообще не используется.

Проект прошел проверку на симуляторе. Грубые ошибки исправляются на этом этапе. Вот синтезатору кирилица все ставит на уши...

Вывод еще таков, что при переносе проекта от одного элементного базиса в другой могут быть цирки... Как в этом случаее
Go to the top of the page
 
+Quote Post
Tausinov
сообщение Feb 9 2017, 10:49
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 135
Регистрация: 19-10-13
Пользователь №: 78 795



Цитата(Мур @ Feb 9 2017, 13:25) *
Это не критично. Синхронный сброс не требует присутствия сигнала RESET в списке чувствительности. Главное не пропустить самый важный...


Для синтезатора это вообще без разницы, но расхождение в симуляции и поведении готового устройства - легко.

Цитата
Этот топик как раз говорит о том, что присутствие кирилицы лишает синтезатор привычной магии. Варнинги сыпятся "не по делу". Тут может быть все что угодно...


С кириллицей не экспериментировал, вставлял только сам процесс. Варнинг про список чувствительности с кириллицей никак не связан - это стандартное предупреждение, когда в списке чувствительности асинхронного процесса участвую не все сигналы. В VHDL2008 можно использоваться (all), чтобы этого избежать в дальнейшем.

Цитата
Проект прошел проверку на симуляторе. Грубые ошибки исправляются на этом этапе. Вот синтезатору кириллица все ставит на уши...


Честно говоря, этот самый процесс в симуляторе у меня так и не завелся.
Error: (vsim-3601) Iteration limit reached at time 10 ns.

Так что не понимаю, почему вы продолжаете грешить на шрифт, игнорируя проблему непонятной конструкции.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st June 2025 - 19:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01493 секунд с 7
ELECTRONIX ©2004-2016