Перейти к содержанию
    

Ага, теперь более понятно. Я эту тему упомянул в первоначальном посте ветки.

Я, как новичок, практически не знаком пока с темой встроенных PLLей. Знаю что они есть и видимо их несколько, но не в курсе как они программируются как функция от входной тактовой, да и не знаю какой их фазоый сдвиг относительно входного клока.

Хотя это тоже может быть вариант...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

entity del3 is

Port ( clk : in STD_LOGIC;

del_3 : out STD_LOGIC);

end del3;

 

architecture Behavioral of del3 is

 

 

signal first_step : std_logic := '0';

signal sek_step : std_logic := '0';

signal clk_cnt : integer range 0 to 2 := 0;

begin

 

process (Clk )

begin

if (Clk'event and Clk = '1')

then

 

if clk_cnt = 2 then clk_cnt <= 0;

else clk_cnt <= clk_cnt + 1;

end if;

 

if clk_cnt = 2 then first_step <= '1';

elsif clk_cnt = 1 then first_step <= '0';

end if;

 

end if;

end process ;

 

process (Clk )

begin

if (Clk'event and Clk = '0')

then

 

if first_step = '0' then sek_step <= '0';

elsif first_step = '1' then sek_step <= '1';

end if;

 

end if;

end process ;

 

del_3 <= first_step and sek_step ;

 

end Behavioral;

 

что то типа того

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Где взял - не помню.

Взяли скорее всего у Ксайлинкса. В их журнале была статья "необычные счетчики" - о счетчиках на 1,5 на 3 на 6...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ага, теперь более понятно. Я эту тему упомянул в первоначальном посте ветки.

Я, как новичок, практически не знаком пока с темой встроенных PLLей. Знаю что они есть и видимо их несколько, но не в курсе как они программируются как функция от входной тактовой, да и не знаю какой их фазоый сдвиг относительно входного клока.

Хотя это тоже может быть вариант...

 

Если вам требуется точная фаза, то делитель- не лучший вариант.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если вам требуется точная фаза, то делитель- не лучший вариант.

 

что такое точная фаза??? он авсёравно с допуском - лучше уж не точная - но всегда сдвинутая в одну сторону.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

post-3092-1196673645_thumb.jpg

 

Больше спасибо.

Имплементировал кодом VHDLя - работает как часы ! :a14: , синхроннно по входному клоку.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я, как новичок, практически не знаком пока с темой встроенных PLLей. Знаю что они есть и видимо их несколько, но не в курсе как они программируются как функция от входной тактовой, да и не знаю какой их фазоый сдвиг относительно входного клока.

Хотя это тоже может быть вариант...

 

Я бы в первую очередь познакомился - классная штука. Без геморроя может частоту и поделить и умножить. Главное что она 50-на-50 сохраняет без проблем, а фазовый сдвиг задается любой - 0-90-180-270.

По крайней мере в Xilinxe в EDK используется Wrapper который без проблемм этот DCM подключает.

Кстати не забывайте, что (по крайней мере в Xilinxe) если я правильно понял доку в ПЛИСине есть специальные линии - они называются BUFG, которые специально предназначены для клоков. Без них нормального SKEW и HOLD TIME не добиться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я бы в первую очередь познакомился - классная штука. Без геморроя может частоту и поделить и умножить. Главное что она 50-на-50 сохраняет без проблем, а фазовый сдвиг задается любой - 0-90-180-270.

По крайней мере в Xilinxe в EDK используется Wrapper который без проблемм этот DCM подключает.

Кстати не забывайте, что (по крайней мере в Xilinxe) если я правильно понял доку в ПЛИСине есть специальные линии - они называются BUFG, которые специально предназначены для клоков. Без них нормального SKEW и HOLD TIME не добиться.

 

 

выходы pll компиллятор сам постарается развести на эти линии и старается при разводке, чтобы до всех клоковых входов триггеров этот клок доходил одновременно. правда у этого есть обратная сторона чем больше ресурсов таким способом занято, тем больше групповая задержка распространения клока

 

ВНИМАНИЕ скорость переключения триггера по входу CLK и RST может отличаться в несколько раз!!!!!! никогда не пользуюсь асинхронными установками

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я бы в первую очередь познакомился - классная штука. Без геморроя может частоту и поделить и умножить. Главное что она 50-на-50 сохраняет без проблем, а фазовый сдвиг задается любой - 0-90-180-270.

По крайней мере в Xilinxe в EDK используется Wrapper который без проблемм этот DCM подключает.

Кстати не забывайте, что (по крайней мере в Xilinxe) если я правильно понял доку в ПЛИСине есть специальные линии - они называются BUFG, которые специально предназначены для клоков. Без них нормального SKEW и HOLD TIME не добиться.

 

Да, согласен, обязательно познакомлюсь...когда придет время. Пока для меня все впереди, есть видимо еще тысячу вещей с которыми буду знакомиться в области ПЛИС... :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

выходы pll компиллятор сам постарается развести на эти линии и старается при разводке, чтобы до всех клоковых входов триггеров этот клок доходил одновременно. правда у этого есть обратная сторона чем больше ресурсов таким способом занято, тем больше групповая задержка распространения клока

 

У меня как раз был прикол, что пока не указал, что этот клок должен везтись на эти линии, компилятор пытался развезти клок по обыкновенному. В итоге был ужас.

А насчет обратной стороны, то эти линии - это и есть отдельный ресурс, который ничем не кроме этого заниматься не может и эти специальные линии вроде сделаны так, что они имеют хорошие отводки правктически в любой части ПЛИС, большую нагрузочную способность и малую емкость и поэтому могут тактировать очень много нагрузок.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне кажется что если входная частота не опускаеться ниже скажем

25 MHz (это в случае Xilinx) то надо использовать DCM и не мучиться.

В противном случае надо использовать другой клок,скажем 50 MHz,

сгенерить с помощью DCM максимально возможный клок, типа 400 MHz.

Далее с его помощью сэмплировать входной клок, сгенерить поделенный на 3

клок и пропустить через BUFG. Если требование на скважность 10% то должно

работать до 20 MHz (если помучиться то наверное до 40)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Что подобное и реализовал на основе схемы предоставленной в ветке (спасибо тому кто кинул схемку). Только там 3 DFFа, из них 2 идет на счетчик modulo 3 считающий спады входного клока. Реализовал кодом - работает как часы. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Выложили же ПДФку с делением на 1,5 - потом ещё Т-триггера на выход и вот вам 50% duty и частота в трое меньше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...