|
Правильное использование locked у PLL |
|
|
|
Jan 22 2015, 18:27
|
Местный
  
Группа: Участник
Сообщений: 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
|
|
|
|
|
 |
Ответов
|
Feb 6 2015, 11:04
|

Гуру
     
Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271

|
Цитата(ViKo @ Feb 6 2015, 15:10)  Для проверки забейте 4 входных сигнала вместо 1. Например, по И объедините. LUT весь используется, и Quartus будет вынужден использовать CE. А потом посмотрите быстродействие для обоих вариантов. Тогда уж более очевидный тестовый проект, как я предлагал: Цитата(Krys @ Feb 6 2015, 12:49)  Предлагаю засинтезить проект по защёлкиванию шины данных (размером с количество "теряемых" триггеров) по клоку, стробируемому по CE. В этом случае хотя бы синтезатору будет видно, что совершенно все триггеры имеют CE, и ничего не потеряется, если подать CE прямо на соответствующий выделенный аппаратный вход триггера. Можно ещё дополнительно усложнить задачу, подобрав на входе триггера такую комбинационную функцию, которая бы занимала все входы LUT'а. В этом случае добавление к этой функции ещё одного сигнала приводит к необходимости ещё одного лута, а это уж точно неоптимально (просто в тривиальном примере от добавления сигнала CE к LUT'у ничего страшного не происходит, т.к. ещё есть свободные входы). И посмотреть сразу в виде схемы после PAR, так будет надёжнее, чем по косвенным признакам оценивать, как же это легло.
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
|
Feb 11 2015, 16:41
|
Местный
  
Группа: Участник
Сообщений: 294
Регистрация: 25-09-13
Из: Н.Новгород
Пользователь №: 78 485

|
Цитата(Krys @ Feb 6 2015, 14:04)  Тогда уж более очевидный тестовый проект, как я предлагал: Набросал код. 16 триггеров, у каждого 4-х входовое И. Код module test #(parameter N = 16) (output reg [N-1:0]Q, input [N*4-1:0]D, input En, input Clk); wire [N-1:0]CombLogic; genvar i; generate for(i = 0; i < N; i = i + 1) begin: i_ assign CombLogic[i] = &D[i*4+3:i*4]; end endgenerate
always @(posedge Clk) begin if(En) begin Q = CombLogic; end end endmodule РТЛ:
Компиляция:
Как видим, теперь вход EN используется. Однако, Ква триггеры разметал по всему кристаллу:
Такие пироги. Пользуясь случаем, хочу спросить. Почему синтезатор не даёт использовать generate внутри always-а? Если generate разворачивается в набор строчек, то какая ему разница где их разворачивать? И ещё, пытался этот код написать без generate-а, вот так: Код module test #(parameter N = 16) (output reg [N-1:0]Q, input [N*4-1:0]D, input En, input Clk); always @(posedge Clk) begin if(En) begin integer i; for(i = 0; i < N; i = i + 1) begin Q[i] = &D[i*4+3:i*4]; end end end endmodule Ругается вот на это &D[i*4+3:i*4], говорит, что i - не константа. Собака такой.
|
|
|
|
Сообщений в этой теме
Jackov Правильное использование locked у PLL Jan 22 2015, 18:27 Opex У xilinx есть клоковые буферы со входом enable, у ... Jan 23 2015, 08:46 bogaev_roman to Jackov Что мешает использовать этот сигнал в ка... Jan 23 2015, 09:07 ViKo Цитата(bogaev_roman @ Jan 23 2015, 12:07)... Jan 23 2015, 09:13 Jackov Цитата(Opex @ Jan 23 2015, 11:46) У xilin... Jan 23 2015, 16:22 Opex Цитата(Jackov @ Jan 23 2015, 21:22) Ммм..... Jan 23 2015, 17:18 SM Цитата(Jackov @ Jan 23 2015, 19:22) Не хо... Jan 23 2015, 17:51  DuHast Только меня смущает, что на MHz33_6 не будет ни ка... Jan 23 2015, 18:36 Hose Яков, начните с изучения плл. Он красиво нарисован... Jan 23 2015, 17:10 Jackov Цитата(Hose @ Jan 23 2015, 20:10) Яков, н... Jan 23 2015, 18:40 DuHast Цитата(Jackov @ Jan 23 2015, 21:40) Она т... Jan 23 2015, 18:43  Jackov Цитата(DuHast @ Jan 23 2015, 21:43) У Вас... Jan 23 2015, 19:08 SM Цитата(Jackov @ Jan 23 2015, 21:40) Хотя ... Jan 23 2015, 18:52 ViKo Вижу в Мегавизарде Альтеры Enable self-reset on lo... Jan 23 2015, 19:00 Jackov Цитата(ViKo @ Jan 23 2015, 22:00) Вижу в ... Jan 26 2015, 14:58 Opex Xilinx, кстати, не рекомендует использовать такое ... Jan 26 2015, 15:18 Jackov Цитата(Opex @ Jan 26 2015, 18:18) а вмест... Jan 29 2015, 14:49 Krys Цитата(Opex @ Jan 26 2015, 21:18) Xilinx,... Feb 2 2015, 08:04 Opex В триггерах всяких, и т.д.
Просто рекомендуется пи... Jan 29 2015, 15:24 Jackov Цитата(Opex @ Jan 29 2015, 18:24) if (ena... Jan 29 2015, 19:06  SM Цитата(Jackov @ Jan 29 2015, 22:06) DV-тр... Jan 29 2015, 19:27   Jackov Цитата(SM @ Jan 29 2015, 22:27) Что такое... Jan 29 2015, 20:36    doom13 Цитата(Jackov @ Jan 29 2015, 23:36) Кстат... Jan 29 2015, 20:50    SM Цитата(Jackov @ Jan 29 2015, 23:36) Кстат... Feb 2 2015, 08:34 ViKo Точно так же, как и подавать данные на D вход.
Мог... Feb 2 2015, 08:36 SM Цитата(ViKo @ Feb 2 2015, 11:36) Можно вл... Feb 2 2015, 08:46 ViKo Книжка есть - Пухальский, Новосельцева. Цифровые у... Feb 2 2015, 09:01 SM Цитата(ViKo @ Feb 2 2015, 12:01) Там можн... Feb 2 2015, 09:03 Opex Цитата(Krys @ Feb 2 2015, 13:04) Судя из ... Feb 2 2015, 12:28 Krys Цитата(Opex @ Feb 2 2015, 18:28) Вы прочи... Feb 3 2015, 03:36  Jackov Цитата(Krys @ Feb 3 2015, 06:36) там один... Feb 3 2015, 17:41 Jackov Цитата(SM @ Feb 2 2015, 11:34) Как достуч... Feb 2 2015, 16:27 SM Цитата(Jackov @ Feb 2 2015, 19:27) Пробле... Feb 2 2015, 16:45  Jackov Цитата(SM @ Feb 2 2015, 19:45) А Вам заче... Feb 2 2015, 18:21 SM Извращение какое. Зачем его разводить по всей схем... Feb 2 2015, 18:35 Opex Цитата(Krys @ Feb 3 2015, 08:36) очень вн... Feb 3 2015, 08:57 Krys Это всё понятно. Однако просто гейтед клок в их по... Feb 3 2015, 09:41 Opex Советуем использовать одно, но лучше используйте д... Feb 3 2015, 15:02 Krys Цитата(Opex @ Feb 3 2015, 21:02) Советуем... Feb 4 2015, 03:09 Opex Цитата(Krys @ Feb 4 2015, 08:09) Вам что,... Feb 4 2015, 16:02 SM Цитата(Opex @ Feb 4 2015, 19:02) 1) BUFGC... Feb 4 2015, 17:55 ViKo Топикстартеру надо пересмотреть свою позицию:
Цита... Feb 4 2015, 18:23 Krys Цитата(ViKo @ Feb 5 2015, 00:23) Топикста... Feb 5 2015, 02:27  SM Цитата(Krys @ Feb 5 2015, 05:27) 100) Gat... Feb 5 2015, 08:34   Krys Цитата(SM @ Feb 5 2015, 14:34) Да не 100)... Feb 5 2015, 09:01 ViKo Krys, перечитайте тему с начала, что не задавать н... Feb 5 2015, 06:08 Krys Цитата(ViKo @ Feb 5 2015, 12:08) Krys, пе... Feb 5 2015, 07:07  ViKo Цитата(Krys @ Feb 5 2015, 10:07) Почему ж... Feb 5 2015, 08:44 Jackov Цитата(Jackov @ Feb 3 2015, 20:41) Не сов... Feb 5 2015, 16:50 Krys Цитата(Jackov @ Feb 5 2015, 22:50) А вот ... Feb 6 2015, 04:15 des00 Цитата(Jackov @ Feb 5 2015, 23:50) Синтез... Feb 6 2015, 05:20  SM Цитата(des00 @ Feb 6 2015, 08:20) Логичес... Feb 6 2015, 05:44   ViKo Цитата(SM @ Feb 6 2015, 08:44) Вот, кстат... Feb 6 2015, 05:52   des00 Цитата(SM @ Feb 6 2015, 13:44) Вот, кстат... Feb 6 2015, 05:55    SM Цитата(des00 @ Feb 6 2015, 08:55) И в общ... Feb 6 2015, 06:09     des00 Цитата(SM @ Feb 6 2015, 14:09) А причем т... Feb 6 2015, 06:16      SM Цитата(des00 @ Feb 6 2015, 09:16) Это все... Feb 6 2015, 06:18       Krys Цитата(SM @ Feb 6 2015, 12:18) А Вы верни... Feb 6 2015, 06:49        SM Цитата(Krys @ Feb 6 2015, 09:49) А если д... Feb 6 2015, 06:57       des00 Цитата(SM @ Feb 6 2015, 13:18) А Вы верни... Feb 6 2015, 07:01        SM Цитата(des00 @ Feb 6 2015, 10:01) а фоне ... Feb 6 2015, 07:06         des00 Цитата(SM @ Feb 6 2015, 14:06) Вот это, к... Feb 6 2015, 07:12          Krys Цитата(des00 @ Feb 6 2015, 13:12) задали ... Feb 6 2015, 07:47          SM Цитата(des00 @ Feb 6 2015, 10:12) для вас... Feb 6 2015, 09:04    Krys Цитата(des00 @ Feb 6 2015, 11:55) В случ... Feb 6 2015, 06:39     SM Цитата(Krys @ Feb 6 2015, 09:37) А какие ... Feb 6 2015, 06:41 ViKo Развернул уже, и не раз. Feb 5 2015, 16:56 Jackov Цитата(ViKo @ Feb 5 2015, 19:56) Разверну... Feb 5 2015, 17:10 ViKo Цитата(Jackov @ Feb 5 2015, 20:10) Это не... Feb 5 2015, 17:17 SM Цитата(Jackov @ Feb 5 2015, 20:10) И в св... Feb 5 2015, 17:23  ViKo Цитата(SM @ Feb 5 2015, 20:23) а вот на р... Feb 5 2015, 17:27 Jackov Цитата(ViKo @ Feb 5 2015, 20:17) Да ну...... Feb 5 2015, 19:13 SM Цитата(Jackov @ Feb 5 2015, 22:13) Не про... Feb 5 2015, 19:27  Jackov Цитата(SM @ Feb 5 2015, 22:27) Ну если эт... Feb 5 2015, 19:34 SM Цитата(ViKo @ Feb 6 2015, 12:10) и Quartu... Feb 6 2015, 09:25  ViKo Цитата(SM @ Feb 6 2015, 12:25) Ничего он ... Feb 6 2015, 09:31   SM Цитата(ViKo @ Feb 6 2015, 12:31) Но макси... Feb 6 2015, 09:43    ViKo Цитата(SM @ Feb 6 2015, 12:43) Но для опт... Feb 6 2015, 09:56     SM Цитата(ViKo @ Feb 6 2015, 12:56) Задать о... Feb 6 2015, 09:59   Krys Цитата(Jackov @ Feb 11 2015, 22:41) Компи... Feb 13 2015, 03:14    ViKo Цитата(Krys @ Feb 13 2015, 06:14) Вы мне ... Feb 13 2015, 09:34     Krys Цитата(ViKo @ Feb 13 2015, 15:34) Сначала... Feb 16 2015, 03:27 ViKo Не уверен, но помню, что галки SPEED, AREA еще со ... Feb 6 2015, 10:04 SM Цитата(ViKo @ Feb 6 2015, 13:04) Не увере... Feb 6 2015, 10:20 Opex ЦитатаПользуясь случаем, хочу спросить. Почему син... Feb 11 2015, 18:13 Jackov Цитата(Opex @ Feb 11 2015, 21:13) generat... Feb 11 2015, 18:25  SM Цитата(Jackov @ Feb 11 2015, 21:25) Почем... Feb 11 2015, 19:19
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|