реклама на сайте
подробности

 
 
> Подстроиться под входную частоту
zombi
сообщение Oct 4 2010, 15:12
Сообщение #1


Гуру
******

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



Есть проблемка.
В схеме юзаю альтеру EPM3256ATC144-7, на ее обе global_clk приходят 25MHz и 100MHz имеется внешний ресет (можно и програмный реализовать).
100MHz получены из 25 на внешнем PLL (ICS512B).
Проблема в том что фаза частоты 100MHz с PLL-ки случайна от включения к включению. Т.е. фазы частот либо совпадают либо они противоположны.
Можно ли както в альтере при включении питания (один раз) определить как пришла частота 100MHz относительно 25MHz.
И уже потом тактировать остальные блоки либо прямой либо инверсной частотой 100MHz.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Shtirlits
сообщение Oct 4 2010, 15:46
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



Вариантов два - заменить PLL, например, на рекомендованные в документации модели с фиксированной фазой, либо жертвовать драгоценные ресурсы cpld, а их может понадобится, на синхронизацию регистров 2-3, если не получится гарантировать соотношение фаз. И еще регистр, который будет помнить фазу, ну и регистр для сброса основной схемы.
Go to the top of the page
 
+Quote Post
zombi
сообщение Oct 4 2010, 15:58
Сообщение #3


Гуру
******

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



Цитата(Shtirlits @ Oct 4 2010, 18:46) *
Вариантов два - заменить PLL, например, на рекомендованные в документации модели с фиксированной фазой,

В след. итерации обязательно заменю. А сейчас надо чтото с этой делать!
Цитата(Shtirlits @ Oct 4 2010, 18:46) *
жертвовать драгоценные ресурсы cpld, а их может понадобится, на синхронизацию регистров 2-3, если не получится гарантировать соотношение фаз. И еще регистр, который будет помнить фазу, ну и регистр для сброса основной схемы.

Согласен пожертвовать! Токо не знаю как unsure.gif

Цитата(des00 @ Oct 4 2010, 18:46) *
1. Странная у вас PLL, это точно PLL?
2. Не парить мозг, а получить 25МГц в ПЛИС.

1. Да точно PLL токо голимая.
2. Нет нужно обязательно от внешней синхронизироваться.
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 4 2010, 16:01
Сообщение #4


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(zombi @ Oct 4 2010, 10:58) *
2. Нет нужно обязательно от внешней синхронизироваться.

что на этих 25 метрах? а если нарезать на 100 и детектор фронта использовать? smile.gif


--------------------
Go to the top of the page
 
+Quote Post
zombi
сообщение Oct 4 2010, 16:04
Сообщение #5


Гуру
******

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



Цитата(des00 @ Oct 4 2010, 19:01) *
что на этих 25 метрах? а если нарезать на 100 и детектор фронта использовать? smile.gif

К сожалению не знаю что значит нарезать laughing.gif ! и про детектор фронта можно подробнее плиз unsure.gif
Go to the top of the page
 
+Quote Post
des00
сообщение Oct 4 2010, 16:08
Сообщение #6


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(zombi @ Oct 4 2010, 11:04) *
К сожалению не знаю что значит нарезать laughing.gif ! и про детектор фронта можно подробнее плиз unsure.gif

пропустить через 2-3 триггера на частоте 100МГц и используя схему выделения фронтов пропускаемого сигнала (в вашем случае 25МГц) построить всю логику. Выделение фронтов делается так
Код
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];


--------------------
Go to the top of the page
 
+Quote Post
zombi
сообщение Oct 4 2010, 16:20
Сообщение #7


Гуру
******

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



Цитата(des00 @ Oct 4 2010, 19:08) *
пропустить через 2-3 триггера на частоте 100МГц и используя схему выделения фронтов пропускаемого сигнала (в вашем случае 25МГц) построить всю логику. Выделение фронтов делается так
Код
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];

Не силен я в языках описания аппаратуры. Токо в граф редакторе шупортаюсь crying.gif
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Oct 4 2010, 16:36
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Как только вы свои 25МГц пропустите через логику, чтобы сделать инверсию - у нее фронт уплывет от фронта 100 МГц. Не мучайтесь, тактируйте все от 100 МГц, поставьте на них же счетчик до 4-х и от этого счетчика запитайте enable схемы, которая должна работать вчетверо медленнее.
Go to the top of the page
 
+Quote Post
zombi
сообщение Oct 4 2010, 17:15
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 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 для выбора нужной частоты (если оно так работать будет?)

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Intekus
сообщение Oct 4 2010, 17:31
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 244
Регистрация: 4-03-08
Из: Москва
Пользователь №: 35 621



Цитата(zombi @ Oct 4 2010, 21:15) *
Нет. Мне надо 100MHz либо инвертировать либо нет в зависомости от 25MHz.

А почему "нет"? Присоединяюсь к советующим использовать clock enable.


--------------------
...а Сила, Брат - она - в несиловых решениях.
Go to the top of the page
 
+Quote Post
zombi
сообщение Oct 4 2010, 17:35
Сообщение #11


Гуру
******

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



Цитата(Intekus @ Oct 4 2010, 20:31) *
А почему "нет"? Присоединяюсь к советующим использовать clock enable.

И всетаки не понимаю как clock enable использовать???
Go to the top of the page
 
+Quote Post
Maverick
сообщение Oct 4 2010, 18:02
Сообщение #12


я только учусь...
******

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



Цитата(zombi @ Oct 4 2010, 20:35) *
И всетаки не понимаю как clock enable использовать???

управлять работой триггером/регистром, не пробовали? smile.gif

Возьмите ниже приведенное описание (выбирать описание Вам на VHDL или на Verilog - что больше нравиться smile.gif ) и промоделируйте 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


И все поймете smile.gif


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
zombi
сообщение Oct 4 2010, 18:53
Сообщение #13


Гуру
******

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



Цитата(Maverick @ Oct 4 2010, 21:02) *
Возьмите ниже приведенное описание (выбирать описание Вам на VHDL или на Verilog - что больше нравиться smile.gif ) и промоделируйте DFF with Positive-Edge Clock and Clock Enable


Не, ну Вы даете! что такое clock enable я знаю biggrin.gif

Как DFF with Positive-Edge Clock and Clock Enable использовать для определения фазы входной частоты???
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- zombi   Подстроиться под входную частоту   Oct 4 2010, 15:12
|- - des00   Цитата(zombi @ Oct 4 2010, 10:20) Не силе...   Oct 4 2010, 16:31
||- - Shtirlits   QUOTE (DmitryR @ Oct 4 2010, 20:36) Как т...   Oct 4 2010, 17:12
|||- - sazh   Цитата(zombi @ Oct 4 2010, 21:53) Как DFF...   Oct 4 2010, 19:10
|||- - zombi   Цитата(sazh @ Oct 4 2010, 22:10) Значит м...   Oct 4 2010, 19:40
|||- - vadimuzzz   Цитата(zombi @ Oct 5 2010, 02:40) Вы прав...   Oct 4 2010, 22:47
||- - x736C   Цитата(DmitryR @ Oct 4 2010, 20:36) Как т...   Oct 4 2010, 17:27
|- - sazh   Цитата(zombi @ Oct 4 2010, 19:20) Не силе...   Oct 4 2010, 17:07
- - des00   1. Странная у вас PLL, это точно PLL? 2. Не парить...   Oct 4 2010, 15:46
- - Shtirlits   страница 6 и 7 http://www.altera.com/literature/ds...   Oct 4 2010, 18:20
- - Shtirlits   Был совет не использовать внешний 25MHz-овый клок ...   Oct 4 2010, 19:12
- - Shtirlits   частота чего-то полезного 126.6MHz Так скажите, в...   Oct 4 2010, 20:33
- - zombi   Все оказалось банально просто когда я вместо ICS51...   Oct 4 2010, 23:02


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 14:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.01528 секунд с 7
ELECTRONIX ©2004-2016