|
Подстроиться под входную частоту |
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 24)
|
Oct 4 2010, 15:46
|
Знающий
   
Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905

|
Вариантов два - заменить PLL, например, на рекомендованные в документации модели с фиксированной фазой, либо жертвовать драгоценные ресурсы cpld, а их может понадобится, на синхронизацию регистров 2-3, если не получится гарантировать соотношение фаз. И еще регистр, который будет помнить фазу, ну и регистр для сброса основной схемы.
|
|
|
|
|
Oct 4 2010, 15:58
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Цитата(Shtirlits @ Oct 4 2010, 18:46)  Вариантов два - заменить PLL, например, на рекомендованные в документации модели с фиксированной фазой, В след. итерации обязательно заменю. А сейчас надо чтото с этой делать! Цитата(Shtirlits @ Oct 4 2010, 18:46)  жертвовать драгоценные ресурсы cpld, а их может понадобится, на синхронизацию регистров 2-3, если не получится гарантировать соотношение фаз. И еще регистр, который будет помнить фазу, ну и регистр для сброса основной схемы. Согласен пожертвовать! Токо не знаю как  Цитата(des00 @ Oct 4 2010, 18:46)  1. Странная у вас PLL, это точно PLL? 2. Не парить мозг, а получить 25МГц в ПЛИС. 1. Да точно PLL токо голимая. 2. Нет нужно обязательно от внешней синхронизироваться.
|
|
|
|
|
Oct 4 2010, 17:15
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Цитата(DmitryR @ Oct 4 2010, 19:36)  Как только вы свои 25МГц пропустите через логику, чтобы сделать инверсию - у нее фронт уплывет от фронта 100 МГц. Не мучайтесь, тактируйте все от 100 МГц, поставьте на них же счетчик до 4-х и от этого счетчика запитайте enable схемы, которая должна работать вчетверо медленнее. Нет. Мне надо 100MHz либо инвертировать либо нет в зависомости от 25MHz. Код always @(posedge clk_100MHz) {r[1], r[0]} <= {r[0], pipa};
assign pipa_posedge = ~r[1] & r[0]; assign pipa_negedge = r[1] & ~r[0]; assign pipa_anyedge = r[1] ^ r[0]; Намалевал схемку, токо не знаю что дальше делать с PosE,NegE,AnyE? В идеале хотелось бы подать на вход SEL mux0 0/1 для выбора нужной частоты (если оно так работать будет?)
Эскизы прикрепленных изображений
|
|
|
|
|
Oct 4 2010, 17:27
|
Профессионал
    
Группа: Участник
Сообщений: 1 273
Регистрация: 3-03-06
Пользователь №: 14 942

|
Цитата(DmitryR @ Oct 4 2010, 20:36)  Как только вы свои 25МГц пропустите через логику, чтобы сделать инверсию - у нее фронт уплывет от фронта 100 МГц. Не мучайтесь, тактируйте все от 100 МГц, поставьте на них же счетчик до 4-х и от этого счетчика запитайте enable схемы, которая должна работать вчетверо медленнее. Интересно в плане энергопотребления ПЛИС. Тактировать схему на Fclk = 100 МГц через enable Fclk/4 или на частоте Fclk = 25 МГц. По идее ощутимо отличаться не должно.
|
|
|
|
|
Oct 4 2010, 17:31
|
Местный
  
Группа: Свой
Сообщений: 244
Регистрация: 4-03-08
Из: Москва
Пользователь №: 35 621

|
Цитата(zombi @ Oct 4 2010, 21:15)  Нет. Мне надо 100MHz либо инвертировать либо нет в зависомости от 25MHz. А почему "нет"? Присоединяюсь к советующим использовать clock enable.
--------------------
...а Сила, Брат - она - в несиловых решениях.
|
|
|
|
|
Oct 4 2010, 18:02
|

я только учусь...
     
Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839

|
Цитата(zombi @ Oct 4 2010, 20:35)  И всетаки не понимаю как clock enable использовать??? управлять работой триггером/регистром, не пробовали?  Возьмите ниже приведенное описание (выбирать описание Вам на VHDL или на Verilog - что больше нравиться  ) и промоделируйте DFF with Positive-Edge Clock and Clock EnableЦитата Описание выводов
D -- Data Input C -- Positive-Edge Clock CE -- Clock Enable (active High) Q -- Data Output Код VHDL Code
Following is the equivalent VHDL code for the DFF with a positive-edge clock and clock Enable.
library ieee; use ieee.std_logic_1164.all;
entity flop is port(C, D, CE : in std_logic; Q : out std_logic); end flop; architecture archi of flop is begin process (C) begin if (C'event and C='1') then if (CE='1') then Q = D; end if; end if; end process; end archi;
Verilog Code
Following is the equivalent Verilog code for the DFF with a positive-edge clock and clock enable.
module flop (C, D, CE, Q); input C, D, CE; output Q; reg Q;
always @(posedge C) begin if (CE) Q = D; end endmodule И все поймете
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Oct 4 2010, 19:10
|
Гуру
     
Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804

|
Цитата(zombi @ Oct 4 2010, 21:53)  Как DFF with Positive-Edge Clock and Clock Enable использовать для определения фазы входной частоты??? Просто Вам пытаются сказать, что одного клока 100 Мгц достаточно для Ваших нужд. Иначе Вы бы не выбрали такое семейство для своего проекта. А с фазой можно просто поступить. По включению питания все триггера семейства устанавливаются в ноль. Значит можно организовать по включению питания одноразовую работу счетчика на частоте 25 Мгц, который сформирует синхронный rst на триггер tff, на "с" вход которого подать 200Мгц. на выходе 100, в фазе с 25. ( но фронт со сдвигом)
|
|
|
|
|
Oct 4 2010, 19:12
|
Знающий
   
Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905

|
Был совет не использовать внешний 25MHz-овый клок вовсе! Питать всю схему 100MHz и разрешать кажый четвертый такт.
Ваше изумление вероятно вызвано скрытым от нас знанием схемы, в которой, возможно, 25MHz тактирует какую-то периферию.
Честно говоря, я не нашел в документации на PLL никакого упоминания о соотношении фаз, на которые можно рассчитывать, только сказано, что оно может меняться от включения к включению.
Может, пусть cpld делит клок на 4 и выдает его наружу, а не напрямую с кварца? И PLL будет счастливее...
|
|
|
|
|
Oct 4 2010, 19:40
|

Гуру
     
Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106

|
Цитата(sazh @ Oct 4 2010, 22:10)  Значит можно организовать по включению питания одноразовую работу счетчика на частоте 25 Мгц, который сформирует синхронный rst на триггер tff, на "с" вход которого подать 200Мгц. на выходе 100, в фазе с 25. ( но фронт со сдвигом) Хорошо бы еслиб альтера тянула 200. Цитата(Shtirlits @ Oct 4 2010, 22:12)  Честно говоря, я не нашел в документации на PLL никакого упоминания о соотношении фаз, на которые можно рассчитывать, только сказано, что оно может меняться от включения к включению. Вы правы. Я осцилографом смотрел. Вроде фазы входной и умноженной частоты либо совпадают либо инверсны. А может осцилом всего и не увидеть. В любом случае ясно что проблему в лоб не решить.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|