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

 
 
> auto reset DCM_SP, Spartan3E
atlantic
сообщение Aug 21 2008, 08:26
Сообщение #1


участник
****

Группа: Свой
Сообщений: 573
Регистрация: 16-02-06
Пользователь №: 14 402



Имеется внешний приходящий lvds clk, который потом в DCM_SP умножается итд.
Вообщем после того, как DCM станет LOCKED, начинает работать схема.
Этот lvds clk периодически может пропадать и возобновляться, т.е. на DCM
надо подавать RST после таких "провалов". В системе, для ПЛИС больше нет
дополнительных источников clk, кроме вышеописанного. Трабл в том, что после резкого
пропадания clkin сигнал LOCKED может продолжать оставаться в еденице, и по сути
LOCKED не гарантирует наличие clkin.

Вопрос в том, как сделать надежную систему сброса DCM при пропадании clk?
Думаю не я первый этим озадачен. Ставить внешню схему, которая отслеживает clk
и выдает RST, не очень то хочется, разве что это будет небольшая(по кол-ву ног)
и недорогая микросхема. Хотелось бы это сделать внутри ПЛИС.

Погуглив, я нашел ранее обсуждаемую аналогичную тему:
http://www.fpgarelated.com/usenet/fpga/show/9713-1.php
там дядька из Xilinx рекомендует следующий алгоритм, суть которого заключается в
периодической проверке наличия CLKIN (status[1]) и при его отсутствии выдавать
RST на несколько тактов, но дело в том, чтобы переодически делать это в ПЛИС,
надо иметь дополнительный надежный clk, а его как раз и нету см. выше.
Дале, там идет дискуссия на эту тему с вопросом/предложением
о том, чтоб встроить такую ф-цию(auto RST DCM при пропадании clkin) в кристал,
на что дядька из Xilinx как бы пообещал это дело передать в отдел разработки.
Это было в мае 2004, но видимо в Xilinx ничего так и не сдалали по этому поводу.
Хотя такая ф-ция в кристалле напрашивается в первую очередь.

Кто как обходится в таких случаях?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
des00
сообщение Aug 26 2008, 03:20
Сообщение #2


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

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



немного офттопик, но по сабжу.

Гуру ксайлинкса объясните как работает вот этот кусок кода :

файл DCM_STANDBY_Verilog22_Syn\ringosc.v

Код
  //----------------------------------------------------------------------------
  // Clock divider made with SRL and FD so that CLKWIRE drives only one slice.
  //----------------------------------------------------------------------------

  assign SHIFTSEL = OSCCLKDIV - 3;
  assign TOGGLE_CE = (OSCCLKDIV <= 2) ? 1'b1 : CE_SRL;
  assign TOGGLE_DIN = TOGGLE_CE ^ TOGGLE;
  assign CLK = TOGGLE;

  SRL16 SHIFTSRL (
               .Q(SHIFTOUT),.A0(SHIFTSEL[0]),
               .A1(SHIFTSEL[1]),.A2(SHIFTSEL[2]),
               .A3(SHIFTSEL[3]),.CLK(CLKWIRE),
               .D(CE_SRL))/* synthesis xc_uset="CLK_WIRE" xc_rloc="X2Y1" */;
  FDP SHIFTFD (.Q(CE_SRL),.C(CLKWIRE),.D(SHIFTOUT),
               .PRE(1'b0))/* synthesis xc_uset="CLK_WIRE" xc_rloc="X2Y1" */;


в делителе видно обратную связь SHIFTOUT-> CE_SRL. Но такая цепь будет работать только в случае если в ней, в момент включения в цепочке будет хотя бы одна единица.

НО, если верить v4lsc, элементы FDP и SRL16 по умолчанию инициализируются нулями. А параметры INIT как видно, в коде не переопределенны, также нет переопределения в ucf файле.

В доке DCM_STANDBY_Verilog22_Syn\readme.doc этот момент тоже не раскрывается.

Собственно вопрос как же работает такой делитель, при нулевых начальных условиях?

Спасибо.


--------------------
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 07:51
Рейтинг@Mail.ru


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