0 / 0 / 0
Регистрация: 06.01.2019
Сообщений: 5
|
|
1 | |
В симуляторе всё работает, а вот в реальности - нет18.06.2020, 20:25. Просмотров 781. Ответов 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
|
|
18.06.2020, 20:25 | |
схлопывающееся меню под IE всё работает отлично, но вот NN - нет "Да нет там такой папки. Вот все папки, вот весь код из первой папки. Делайте что хотите" wifi работает, даже локальная сеть на ноуте через wifi работает, а вот внешка нет!!! Gangnamgame.net в браузере, нет доступа к реестру, ccleaner, вот это все |
|
0 / 0 / 0
Регистрация: 06.01.2019
Сообщений: 5
|
|
19.06.2020, 00:22 [ТС] | 3 |
Увы, не помогло.
0
|
61 / 10 / 0
Регистрация: 04.04.2016
Сообщений: 16
|
|
21.06.2020, 12:51 | 5 |
А Вы схему этого представляете, можете показать, что синтезировалось?
1
|
2526 / 1813 / 393
Регистрация: 11.09.2009
Сообщений: 6,710
|
|
21.06.2020, 19:35 | 6 |
Покажите, как сделали начальную установку.
Где на диаграмме сигнал начального сброса ПЛИС? Относительно чего, где, чем и как вы смотрите сигнал "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
|
108 / 80 / 15
Регистрация: 15.11.2012
Сообщений: 549
|
|
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 |
Большое спасибо за комментарий.
Так, пятого периода и нет же... Но явно есть высокий лог. уровень перед 4 периодами(см. осциллограмму в моем предыдущем комментарии). Внёс правки в код - разницы не заметил. Фазовый сдвиг в этой части схемы меня мало заботит. Задача данной части схемы - выдать на выход только 4 периода с подаваемых на вход импульсов. Вот что меня заботит, так это плавно нарастающий высокий уровень перед этими 4 периодами. У меня по проще. ALTER'овская CPLD MAXII EPM240T100C5N. Просто нужно горсть логики заменить на один корпус.
0
|
108 / 80 / 15
Регистрация: 15.11.2012
Сообщений: 549
|
|
25.06.2020, 12:53 | 10 |
Понятно, что в вашем случае все это может и "прокатить".
Про пятый импульс я упомянул, что он весьма короткий (скорее всего не более 1 нс). Обычным "бытовым" осциллографом такое не увидеть. Скорее всего дальше находится логика, которой такой импульс тоже не страшен. Но если поставить туда что-то быстрое и шустрое - скорее всего будут проблемы. Плавно нарастающий уровень - это, я думаю, источник питания у вас дает подъем такой. Период инициализации самой CPLD типовой - 200 мкс.
1
|
0 / 0 / 0
Регистрация: 06.01.2019
Сообщений: 5
|
|
25.06.2020, 23:46 [ТС] | 11 |
Всем спасибо за комментарии. Есть над чем подумать.
0
|
25.06.2020, 23:46 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь. Не работает управление реле (в симуляторе работает) OrCAD. Не работает шина в симуляторе Не работает php на wps-е. Гланвая страница работает все остальное нет IE опять все портит, в 9 версии работает, а в остальных нет. не работает float Есть чат(локальный) на Delphi тестировал в два окна на своем ПК все работает, но вот на разных не робит Структура Note: по отдельности всё работает, а всё вместе нет Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |