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

 
 
6 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Правильное использование locked у PLL
Jackov
сообщение Jan 22 2015, 18:27
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 25-09-13
Из: Н.Новгород
Пользователь №: 78 485



Приветствую!

Имеется Cyclone4, а в нём имеется PLL.
Как известно PLL на рабочий режим выходит не сразу, сразу после запуска она выдаёт нестабильную частоту.
Тактировать схемы такой нестабильной частотой, понятное дело, нельзя - могут сбойнуть. Для этого в PLL предусмотрен специальный выход "locked". Доподлинно неизвестно синхронизирован ли этот выход с тактовой частотой выдаваемой PLL, или нет. Потому встаёт вопрос: как правильно использовать этот выход.
Я предлагаю такую схему:
Прикрепленное изображение

На Verilog-е выглядит так:
Код
module M1(
    ....................................
    (*chip_pin = "Y2"*) input inMHz50);


    wire Locked33_6, MHz33_6_;
    PLL1 PLL1(.c0(MHz33_6_), .locked(Locked33_6), .inclk0(inMHz50));
    wire Enable33_6Q;
    DFF Enable33_6(.q(Enable33_6Q), .d(Locked33_6), .clk(MHz33_6_), .clrn(1'd1), .prn(1'd1));
    wire MHz33_6;
    LCELL Cell(.out(MHz33_6), .in(Enable33_6Q & MHz33_6_));

    .......ля-ля-ля тополя.......
endmodule

LCELL нужен только для того чтобы на него сослаться в констрейнах, по другому я не сумел.

Сами констрейны выглядят так:
Код
derive_clock_uncertainty

#тактовая частота с генератора 50МГц
create_clock -period 50MHz -name {inMHz50} [get_ports {inMHz50}]

#тактовая частота с PLL
create_generated_clock -name MHz33_6_  -source [get_ports {inMHz50}] [get_pins {PLL1|altpll_component|auto_generated|pll1|clk[0]}] -divide_by 5 -multiply_by 7 -duty_cycle 70.00
create_generated_clock -name MHz33_6   -source [get_pins {PLL1|altpll_component|auto_generated|pll1|clk[0]}] [get_nets {Cell}] -invert

То что в названии частоты присутствует 33,6 МГц - это пережиток прошлого, сейчас там 70.
В последней строчке я и ссылаюсь на LCELL, "-invert" присутствует из-за того что компилятор по каким-то своим причинам инвертирует сигнал после LCELL.

Вопроса, собственно, два: Правильно ли использовать выход "locked" подобным образом? И если правильно, правильно ли заданы констрейны?

Сообщение отредактировал Jackov - Jan 22 2015, 18:28
Go to the top of the page
 
+Quote Post
Opex
сообщение Jan 23 2015, 08:46
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 75
Регистрация: 13-03-11
Из: Екатеринбург
Пользователь №: 63 574



У xilinx есть клоковые буферы со входом enable, у альтеры, наверное, тоже есть подобное.
Можно использовать locked в качестве сигнала сброса.
Всякие хитрые манипуляции с тактовой, мне кажется, до добра не доведут..

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

Сообщение отредактировал Opex - Jan 23 2015, 09:00
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Jan 23 2015, 09:07
Сообщение #3


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

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



to Jackov Что мешает использовать этот сигнал в качестве сброса(инверсный)? Что на altera, что на xilinx я так и делаю.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 23 2015, 09:13
Сообщение #4


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(bogaev_roman @ Jan 23 2015, 12:07) *
to Jackov Что мешает использовать этот сигнал в качестве сброса(инверсный)? Что на altera, что на xilinx я так и делаю.

И я.
Код
module Reset_m (
  input    bit        res_ext,    //!< External reset (knob, port)
  input    bit        no_lock,    //!< PLL no locked reset
  input    bit        res_cmd,    //!< MCU command reset
  input    bit        clks,        //!< Slow Clock
output    bit        res_int        //!< Internal wide device reset
);
  bit            rest;        //!< Reset start
  assign rest = res_ext || no_lock || res_cmd;
  
  bit        [1:0]    ress;        //!< Reset sequence
  always_ff @(posedge rest, posedge clks) begin
    if (rest) ress <= '1;
    else ress <= {ress[0], 1'b0};
  end
  assign res_int = ress[1];

endmodule : Reset_m
Go to the top of the page
 
+Quote Post
Jackov
сообщение Jan 23 2015, 16:22
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 25-09-13
Из: Н.Новгород
Пользователь №: 78 485



Цитата(Opex @ Jan 23 2015, 11:46) *
У xilinx есть клоковые буферы со входом enable, у альтеры, наверное, тоже есть подобное.
Ммм... не совсем понял.

Цитата(Opex @ Jan 23 2015, 11:46) *
Всякие хитрые манипуляции с тактовой, мне кажется, до добра не доведут..
Согласен, сам такое не люблю. Но я же немножко. rolleyes.gif
Как я думаю, дребезгов, гонок и прочих гличей быть не должно.

Цитата(Opex @ Jan 23 2015, 11:46) *
И еще, обычно трассы для тактовых сигналов в плисах отделены от обычной логики, элемента "И" может и не оказаться, тогда клок разведется через логику, и опять в клоки. Такой каши лучше избегать.
Забыл написать, этот LCELL подключил к глобальному клоку, судя по Чип Планеру, действительно подключился.

Цитата(Opex @ Jan 23 2015, 11:46) *
Можно использовать locked в качестве сигнала сброса.
Цитата(bogaev_roman @ Jan 23 2015, 12:07) *
to Jackov Что мешает использовать этот сигнал в качестве сброса(инверсный)? Что на altera, что на xilinx я так и делаю.
Цитата(ViKo @ Jan 23 2015, 12:13) *
И я.
Не хотелось бы. Это до каждого триггера пойдёт линия сброса - усложняет трассировку, а если сброс делать синхронным то ещё и логику. Конечно, можно не каждый триггер сбрасывать, а только нужный, но это надо думать какие нужно, какие нет, а думать над этим желания нет, т.к. у меня в проекте сброс вообще не предусмотрен, ПЛИСка в устройстве одна и сбрасывать её попросту некому, да и ненужно это - запустилась и работает.
Go to the top of the page
 
+Quote Post
Hose
сообщение Jan 23 2015, 17:10
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 82
Регистрация: 7-01-15
Пользователь №: 84 450



Яков, начните с изучения плл. Он красиво нарисован в описании на семейство... И есть у меня такое подозрение, что там уже реализовано отключение выхода при отсутствии захвата. Если не найдете, или нет такой функции, то не стоит делать, поскольку захват плл - штука условная и аналоговая, учитывая ширину петли альтеровского плл. Устанете потом искать куда пропадают такты.
Go to the top of the page
 
+Quote Post
Opex
сообщение Jan 23 2015, 17:18
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 75
Регистрация: 13-03-11
Из: Екатеринбург
Пользователь №: 63 574



Цитата(Jackov @ Jan 23 2015, 21:22) *
Ммм... не совсем понял.


У альтеры вон есть какой-то Clock Control Block, и у него есть вход enable, 0 подать, и не будет выходить клок.

Цитата(Jackov @ Jan 23 2015, 21:22) *
Не хотелось бы. Это до каждого триггера пойдёт линия сброса - усложняет трассировку, а если сброс делать синхронным то ещё и логику. Конечно, можно не каждый триггер сбрасывать, а только нужный, но это надо думать какие нужно, какие нет, а думать над этим желания нет, т.к. у меня в проекте сброс вообще не предусмотрен, ПЛИСка в устройстве одна и сбрасывать её попросту некому, да и ненужно это - запустилась и работает.


Вы вручную что ли все разводить собираетесь?
А кто без ресета все в нужное начальное состояние устанавливает?

Go to the top of the page
 
+Quote Post
SM
сообщение Jan 23 2015, 17:51
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Jackov @ Jan 23 2015, 19:22) *
Не хотелось бы. Это до каждого триггера пойдёт линия сброса - усложняет трассировку,

Это, с какого перепуга то? У Вас и так резет обязан быть. Вот к нему и примешать lock.
Go to the top of the page
 
+Quote Post
DuHast
сообщение Jan 23 2015, 18:36
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 13-07-06
Из: Москва
Пользователь №: 18 797



Только меня смущает, что на MHz33_6 не будет ни какой частоты?
Go to the top of the page
 
+Quote Post
Jackov
сообщение Jan 23 2015, 18:40
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 25-09-13
Из: Н.Новгород
Пользователь №: 78 485



Цитата(Hose @ Jan 23 2015, 20:10) *
Яков, начните с изучения плл. Он красиво нарисован в описании на семейство... И есть у меня такое подозрение, что там уже реализовано отключение выхода при отсутствии захвата. Если не найдете, или нет такой функции, то не стоит делать, поскольку захват плл - штука условная и аналоговая, учитывая ширину петли альтеровского плл. Устанете потом искать куда пропадают такты.
Что я могу сказать? Смотрел осциллографом, когда этот locked переходит в 1 частота к этому времени действительно стабилизируется. А без него схема сбоит.

Цитата(Opex @ Jan 23 2015, 20:18) *
У альтеры вон есть какой-то Clock Control Block, и у него есть вход enable, 0 подать, и не будет выходить клок.
Ага, спасибо за наводку, посмотрю.

Цитата(Opex @ Jan 23 2015, 20:18) *
Вы вручную что ли все разводить собираетесь?
Цитата(SM @ Jan 23 2015, 20:51) *
Это, с какого перепуга то?
Я, конечно, утверждать не берусь, но рассуждая логически, чем сложнее трассировка, тем хуже тайменги, а у меня и так констрейны с натяжкой сходятся.
Хотя если для асинхронного сброса есть специально выделенная сеть, как для клоков, тогда да, тогда усложнить не должно.

Цитата(Opex @ Jan 23 2015, 20:18) *
А кто без ресета все в нужное начальное состояние устанавливает?
Цитата(SM @ Jan 23 2015, 20:51) *
У Вас и так резет обязан быть. Вот к нему и примешать lock.
Ну почему же обязан? Кто ПЛИСку ресетить будет? Некому её ресетить. Я не знаю как у Хилых, но Альтера гарантирует при старте нулевые состояния на всех триггерах.

Цитата(DuHast @ Jan 23 2015, 21:36) *
Только меня смущает, что на MHz33_6 не будет ни какой частоты?
Она там есть, только 70 Мгц - имена старые остались.
Go to the top of the page
 
+Quote Post
DuHast
сообщение Jan 23 2015, 18:43
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 314
Регистрация: 13-07-06
Из: Москва
Пользователь №: 18 797



Цитата(Jackov @ Jan 23 2015, 21:40) *
Она там есть, только 70 Мгц - имена старые остались.

У Вас
MHz33_6 = locked AND (locked задержанный на такт)
откуда там клок?
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 23 2015, 18:52
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Jackov @ Jan 23 2015, 21:40) *
Хотя если для асинхронного сброса есть специально выделенная сеть, как для клоков, тогда да, тогда усложнить не должно.

Именно так. Тем более, что домешивание LOCK к и так имеющемуся резету, добавит лишь один логический элемент во всю схему, никак более ее не изменив.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 23 2015, 19:00
Сообщение #13


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Вижу в Мегавизарде Альтеры Enable self-reset on loss lock. Отметить галкой и забыть про сбои.
Go to the top of the page
 
+Quote Post
Jackov
сообщение Jan 23 2015, 19:08
Сообщение #14


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 25-09-13
Из: Н.Новгород
Пользователь №: 78 485



Цитата(DuHast @ Jan 23 2015, 21:43) *
У Вас
MHz33_6 = locked AND (locked задержанный на такт)
откуда там клок?

Да, картинку криво нарисовал, верхний вход элемента И должен быть подключён к клоку от PLL.
Go to the top of the page
 
+Quote Post
Jackov
сообщение Jan 26 2015, 14:58
Сообщение #15


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 25-09-13
Из: Н.Новгород
Пользователь №: 78 485



Цитата(ViKo @ Jan 23 2015, 22:00) *
Вижу в Мегавизарде Альтеры Enable self-reset on loss lock. Отметить галкой и забыть про сбои.
Посмотрел, это не то.

Цитата(SM @ Jan 23 2015, 21:52) *
Именно так. Тем более, что домешивание LOCK к и так имеющемуся резету, добавит лишь один логический элемент во всю схему, никак более ее не изменив.
Нет желания возиться с этими сбросами, хотелось бы обойтись малой кровью.

Цитата(Opex @ Jan 23 2015, 20:18) *
У альтеры вон есть какой-то Clock Control Block, и у него есть вход enable, 0 подать, и не будет выходить клок.
Да, нашёл:
Прикрепленное изображение

Пожалуй остановлюсь на этом варианте. Завёл locked с PLL на вход разрешения напрямую, надеюсь пичёк в начале не проскочит.
Go to the top of the page
 
+Quote Post

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

 


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


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