Форум программистов, компьютерный форум, киберфорум
Программируемая логика: ПЛИС, ПАИС
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 06.01.2019
Сообщений: 5
1

В симуляторе всё работает, а вот в реальности - нет

18.06.2020, 20:25. Просмотров 402. Ответов 10

Здравствуйте, ув. форумчане! Столкнулся с такой проблемой которую мне, как новичку, сложно решить. Задача вот в чём. Модуль принимает сигнал с генератора и выдает только первые 4 периода. В симуляторе всё работает, а вот в реальности - нет. Подскажите в чём ошибка и как это сделать правильно. Спасибо!

Код
module startgen(input clk, output Out);

reg [3:0]counter;
reg q=1;

always @(posedge clk)
	begin
		if(counter==4'd4)
			q <= 1'b0;
		else
			counter <= counter + 1'd1;
	end

assign Out = clk && q;

endmodule
В симуляторе всё работает, а вот в реальности - нет
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.06.2020, 20:25
Ответы с готовыми решениями:

схлопывающееся меню под IE всё работает отлично, но вот NN - нет
&lt;script language='JavaScript'&gt; &lt;!-- function show(ttt){ eTarget=ttt eTarget.style.display...

"Да нет там такой папки. Вот все папки, вот весь код из первой папки. Делайте что хотите"
да там нет такой папки вот все папки cfg Directory 4096 u678321952 u678321952...

wifi работает, даже локальная сеть на ноуте через wifi работает, а вот внешка нет!!!
пользователь под ником &quot;neige18&quot; пишет: &quot;Wifi подключен на ноутбуке. Создано беспроводное...

Gangnamgame.net в браузере, нет доступа к реестру, ccleaner, вот это все
Доброго! Похожая проблема, как и у остальных. Надеюсь на вашу помощь!

10
шКодер самоучка
2090 / 1834 / 892
Регистрация: 09.10.2013
Сообщений: 4,003
Записей в блоге: 7
18.06.2020, 21:08 2
0x1e9307, в ПЛИС не шарю, но у вас counter не обнулен - там может быть мусор на старте
1
0 / 0 / 0
Регистрация: 06.01.2019
Сообщений: 5
19.06.2020, 00:22  [ТС] 3
Увы, не помогло.
0
шКодер самоучка
2090 / 1834 / 892
Регистрация: 09.10.2013
Сообщений: 4,003
Записей в блоге: 7
19.06.2020, 18:50 4
Цитата Сообщение от 0x1e9307 Посмотреть сообщение
Увы, не помогло.
Тогда извините: у меня больше идей нет.
1
60 / 9 / 0
Регистрация: 04.04.2016
Сообщений: 16
21.06.2020, 12:51 5
А Вы схему этого представляете, можете показать, что синтезировалось?
1
2377 / 1696 / 353
Регистрация: 11.09.2009
Сообщений: 6,228
21.06.2020, 19:35 6
Цитата Сообщение от 0x1e9307 Посмотреть сообщение
не помогло
Покажите, как сделали начальную установку.
Где на диаграмме сигнал начального сброса ПЛИС?
Относительно чего, где, чем и как вы смотрите сигнал "Out" в реальности?
1
0 / 0 / 0
Регистрация: 06.01.2019
Сообщений: 5
24.06.2020, 04:59  [ТС] 7
Немного изменил код, проверил соединения до и после. В принципе работает, но вначале формируется высокий уровень. Но это уже другая история.

Код
module startgen(input clk, reset, output Out);

reg [3:0]counter;
reg q=1;
always @(posedge clk, negedge reset)
	begin
		if(!reset)
			counter <= 0;
		else 
		if(counter==4'd4)
			q <= 0;
		else
			counter <= counter + 1'd1;
	end

assign Out = clk && q;

endmodule
0
Миниатюры
В симуляторе всё работает, а вот в реальности - нет   В симуляторе всё работает, а вот в реальности - нет   В симуляторе всё работает, а вот в реальности - нет  

103 / 76 / 14
Регистрация: 15.11.2012
Сообщений: 518
25.06.2020, 01:59 8
В целом дизайн неудачный и способный доставить массу проблем.
Как минимум - глитч (короткий выброс) на пятом периоде. Он там просто обязан быть, поскольку переменная q сбрасывается позже перехода clk из 0 в 1 и на короткое время условие assign out = ... даст единицу.
Такие выбросы мало того что дают глюки в работе, эти глюки еще непостоянны и зависят от температуры, напряжений, конкретного экземпляра микросхемы. А если проект становится хоть сколько нибудь заметным на фоне доступных ресурсов микросхемы - еще и раз от раза компиляции будет разный результат.

Самый простой в данном случае вариант решения - работать не по фронту (posedge), а по спаду clk (negedge).

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

В данном случае вы получите фазовый сдвиг с входным clk (на высоких частотах - весьма заметный), который, опять таки, будет различным в разных условиях. И если вы вдруг измените частоту входного clk, фазовый сдвиг в градусах у вас также изменится.

Добавлено через 9 минут
Вспомнил тут, что по крайней мере в случае FPGA Xilinx Spartan 6 (хотя, думаю, это общая позиция Xilinx и там везде так) ваш проект просто аппаратно не соберется ввиду того, что в их FPGA невозможно подать глобальный клок на вход комбинационной логики. Вообще никак. Global clock там можно подать только на тактовые входы триггеров и разных аппаратных блоков (память, DSP, ввод/вывод).
1
0 / 0 / 0
Регистрация: 06.01.2019
Сообщений: 5
25.06.2020, 03:49  [ТС] 9
Цитата Сообщение от alexey6689 Посмотреть сообщение
В целом дизайн неудачный и способный доставить массу проблем.
Как минимум - глитч (короткий выброс) на пятом периоде. Он там просто обязан быть, поскольку переменная q сбрасывается позже перехода clk из 0 в 1 и на короткое время условие assign out = ... даст единицу.
Большое спасибо за комментарий.
Так, пятого периода и нет же... Но явно есть высокий лог. уровень перед 4 периодами(см. осциллограмму в моем предыдущем комментарии).

Цитата Сообщение от alexey6689 Посмотреть сообщение
Самый простой в данном случае вариант решения - работать не по фронту (posedge), а по спаду clk (negedge).
Внёс правки в код - разницы не заметил.

Цитата Сообщение от alexey6689 Посмотреть сообщение
В данном случае вы получите фазовый сдвиг с входным clk (на высоких частотах - весьма заметный), который, опять таки, будет различным в разных условиях. И если вы вдруг измените частоту входного clk, фазовый сдвиг в градусах у вас также изменится.
Фазовый сдвиг в этой части схемы меня мало заботит. Задача данной части схемы - выдать на выход только 4 периода с подаваемых на вход импульсов. Вот что меня заботит, так это плавно нарастающий высокий уровень перед этими 4 периодами.

Цитата Сообщение от alexey6689 Посмотреть сообщение
Вспомнил тут, что по крайней мере в случае FPGA Xilinx Spartan 6 (хотя, думаю, это общая позиция Xilinx и там везде так) ваш проект просто аппаратно не соберется ввиду того, что в их FPGA невозможно подать глобальный клок на вход комбинационной логики. Вообще никак. Global clock там можно подать только на тактовые входы триггеров и разных аппаратных блоков (память, DSP, ввод/вывод).
У меня по проще. ALTER'овская CPLD MAXII EPM240T100C5N. Просто нужно горсть логики заменить на один корпус.
0
103 / 76 / 14
Регистрация: 15.11.2012
Сообщений: 518
25.06.2020, 12:53 10
Понятно, что в вашем случае все это может и "прокатить".
Про пятый импульс я упомянул, что он весьма короткий (скорее всего не более 1 нс). Обычным "бытовым" осциллографом такое не увидеть. Скорее всего дальше находится логика, которой такой импульс тоже не страшен. Но если поставить туда что-то быстрое и шустрое - скорее всего будут проблемы.

Плавно нарастающий уровень - это, я думаю, источник питания у вас дает подъем такой. Период инициализации самой CPLD типовой - 200 мкс.
1
0 / 0 / 0
Регистрация: 06.01.2019
Сообщений: 5
25.06.2020, 23:46  [ТС] 11
Всем спасибо за комментарии. Есть над чем подумать.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.06.2020, 23:46

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Не работает управление реле (в симуляторе работает)
Помогите кто чем может! Пытаюсь микроконтроллером управлять катушкой реле 12В 40Ом (300мА) через...

OrCAD. Не работает шина в симуляторе
Собственно, рис.1. полноценная схема без шины. Рис. 3. добавляю шину, рис. 4. результат.

Не работает php на wps-е. Гланвая страница работает все остальное нет
На локальном дэнвере все отлично работает. Но при копировании на впс и сдоступом через сеть...

IE опять все портит, в 9 версии работает, а в остальных нет. не работает float
сайт http://gkantecreo.ru/ вверху в шапке слайдер в блоке div с css {float: left; padding-left:...

Есть чат(локальный) на Delphi тестировал в два окна на своем ПК все работает, но вот на разных не робит
Что делать ? моет в свойствах сетевой карты адреса какие-то прописать ? я не прописывал, но сеть и...

Структура Note: по отдельности всё работает, а всё вместе нет
#include &lt;iostream&gt; #include &lt;clocale&gt; #include &lt;cstdlib&gt; #include &lt;string.h&gt; using namespace...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.