AndreiF 0 30 апреля, 2020 Опубликовано 30 апреля, 2020 (изменено) · Жалоба Здравствуйте. Я хотел повторить ШИМ, который представлен на рисунке, но столкнулся с проблемой. При попытке моделирования кольцевого генератора (выполненного на 4-х триггерах) Quartus 9.1 выдает ошибку "нельзя выход крайнего триггера объединять с тактовым сигналом" т.е. не разрешает замкнуть кольцо генератора. Скажите в каком направлении мне искать выход из данной ситуации? Частота импульсов System clock = 8MHz. Проект Quartus 9.1 DPWM.rar Изменено 30 апреля, 2020 пользователем AndreiF Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 220 30 апреля, 2020 Опубликовано 30 апреля, 2020 · Жалоба 17 минут назад, AndreiF сказал: Частота импульсов System clock = 8MHz Опечатались? Должно быть 8 ГГц. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndreiF 0 30 апреля, 2020 Опубликовано 30 апреля, 2020 (изменено) · Жалоба Ошибки нет. Выдержка из статьи "DPWM работает на частоте переключения fs = 1 MHz. Кольцо колеблется при 8 MHz. Этот сигнал 8 МГц используется в качестве тактового импульса для всего чипа-прототипа. " Полный текст статьи: 01_Impact of Digital Control in Power Electronics.pdf Изменено 30 апреля, 2020 пользователем AndreiF Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Avex 1 30 апреля, 2020 Опубликовано 30 апреля, 2020 (изменено) · Жалоба 59 minutes ago, AndreiF said: Quartus 9.1 выдает ошибку "нельзя выход крайнего триггера объединять с тактовым сигналом" т.е. не разрешает замкнуть кольцо генератора. Скажите в каком направлении мне искать выход из данной ситуации? Первое, что приходит в голову: выход последнего флопа вывести наружу на внешний пин, а потом завести на дедикетед клоковый вход плис, и с него тактировать схему. p.s. Частота здесь будет зависеть от задержки петли, котрая складывается из задержки переключения каждого из 4х флопов, задержки интерконнекта между ними, и - если сделаете по моему совету - задержки выходного и входного пинов. Если между пинами подпаяете емкость и переменный резистор - сможете регулировать частоту. p.p.s. Но лучше не связываться с асинхронщиной, и переделать генератор на 4х флопах: я советую все их подключить к одному генератору, и через пины D и Q замкнуть в кольцо. По сбросу грузить в них код 1000. Тогда во время работы на выходах будет бежать единица: 1000-0100-0010-0001- и т.д, - как раз то, что вам нужно. Изменено 30 апреля, 2020 пользователем Aleх Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndreiF 0 30 апреля, 2020 Опубликовано 30 апреля, 2020 · Жалоба 4 минуты назад, Aleх сказал: Первое, что приходит в голову: выход последнего флопа вывести наружу на внешний пин, а потом завести на дедикетед клоковый вход плис, и с него тактировать схему. Спасибо, Aleх, за идею. Стоит попробовать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 30 апреля, 2020 Опубликовано 30 апреля, 2020 · Жалоба Распределителем тактов является сдвигающий регистр, выход последнего разряда которого подсоединен к входу первого разряда. В данном регистре все триггеры, кроме первого, устанавливаются в нулевое состояние, а в первый записывается логическая единица. По каждому такту логическая единица, переписывается в следующий регистр, а из последнего регистра в первый. ниже приведено описание на vhdl library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity Generator is port ( clk, rst : std_logic; Dout : out std_logic_vector(7 downto 0) ); end Generator; architecture behav of Generator is signal S: std_logic_vector(7 downto 0); begin Process (clk,rst) begin if rst = '0' then S<="00000001"; elsif clk='1' and clk'event then for i in 0 to 6 loop S(i)<=S(i+1); S(7)<=S(0); end loop; end if; end process; Dout<=S; End behav; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 220 30 апреля, 2020 Опубликовано 30 апреля, 2020 · Жалоба 16 минут назад, AndreiF сказал: Ошибки нет. Выдержка из статьи Там ни слова про ПЛИС, в которых асинхронные задержки на цепочках ЛЭ — да, делают, но генераторы, т.е замыкая их,— нет. И для т.н. "цифровых БП" не требуется запредельная разрядность ШИМ. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 34 30 апреля, 2020 Опубликовано 30 апреля, 2020 · Жалоба Приветствую! 1 minute ago, Plain said: Ошибки нет. Выдержка из статьи Любую статью надо проверять - по проведений схеме генератор не будет работать так как триггера переключаются по положительному фронту, а начальное состояние у всех == 0. и ресеты для всех в 0. Так с какого перепугу им возбуждаться и что то генерировать? Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 30 апреля, 2020 Опубликовано 30 апреля, 2020 · Жалоба 5 minutes ago, RobFPGA said: и ресеты для всех в 0 а ресеты то как раз и не ноль Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndreiF 0 30 апреля, 2020 Опубликовано 30 апреля, 2020 · Жалоба Всем спасибо за размышления) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Nick_K 0 30 апреля, 2020 Опубликовано 30 апреля, 2020 · Жалоба Конечно будет писать ошибку. Вы соединили 2 входа в одной точке. В лучшем случае у Вас выгорят только присоединённые порты. В худшем... В общем плохо будет. Да и нельзя в новых ПЛИС делать такие мутки. Если очень хочется, соедините 2 входа через логический элемент (например через ИЛИ). Ну либо извращаться как-то по-другому. з.ы. И да, как сказали чуть выше - установка всех триггеров в 1 не даст никакого толка. Сделайте хотя-бы один в ресете и остальные в установке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 220 30 апреля, 2020 Опубликовано 30 апреля, 2020 · Жалоба 26 минут назад, Nick_K сказал: соединили 2 входа в одной точке У автора асинхронный кольцевой генератор и sys_clk является выходом схемы, т.е. автор спрашивает, как ему эту мысль втолковать компилятору. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 30 апреля, 2020 Опубликовано 30 апреля, 2020 · Жалоба 30 minutes ago, Nick_K said: 2 входа в одной точке входа выхода а в нескольких точках можно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 62 30 апреля, 2020 Опубликовано 30 апреля, 2020 · Жалоба 1 minute ago, Plain said: У автора асинхронный кольцевой генератор и sys_clk является выходом схемы, т.е. автор спрашивает, как ему эту мысль втолковать компилятору. Как выше заметил Nick_K, автор system_clock сделал как INPUT, а должен бал сделать его как OUTPUT. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Plain 220 30 апреля, 2020 Опубликовано 30 апреля, 2020 · Жалоба Вопрос наверное в том, разрешает ли САПР ПЛИС создать и использовать внутренний тактовый генератор. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться