Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Работа с Double Data Rate
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
DuHast
Привет всем!!!
На Cyclon подаются данные по десятиразрядной шине и тактовый сигнал. Данные изменяют своё значение по каждому фронту тактового сигнала (как положительному, так и отрицательному). Я умножаю тактовый сигнал во встроеном PLL на два, и использую его для защёлкивания данных во входных регистрах и их дальнейшей обработки.
Вопросы:
1. корректна ли такая схема?
2 можно ли обработать эти данные без использования PLL?

Почти уверен, что ответы 1-Да, 2-Нет, но хочется подстраховаться.
Methane
Цитата(DuHast @ Feb 18 2009, 19:21) *
Привет всем!!!
На Cyclon подаются данные по десятиразрядной шине и тактовый сигнал. Данные изменяют своё значение по каждому фронту тактового сигнала (как положительному, так и отрицательному). Я умножаю тактовый сигнал во встроеном PLL на два, и использую его для защёлкивания данных во входных регистрах и их дальнейшей обработки.
Вопросы:
1. корректна ли такая схема?
2 можно ли обработать эти данные без использования PLL?

Почти уверен, что ответы 1-Да, 2-Нет, но хочется подстраховаться.

1. Мне почему-то кажется что нет. Нужно документацию на PLL смотреть. Я ее не помню.
2. Посмотреть документацию, как DDR делать.
DuHast
Цитата(Methane @ Feb 18 2009, 20:34) *
2. Посмотреть документацию, как DDR делать.

Может подскажите где?
sazh
Цитата(DuHast @ Feb 18 2009, 21:13) *
Может подскажите где?


У Альтеры есть открытый проект link port
http://www.altera.com/support/refdesigns/s...amp;WT.oss=link
Но принцип обратный - на понижение частоты и соответственно расширение разрядности принимаемых данных
DuHast
Цитата(sazh @ Feb 18 2009, 21:44) *
принцип обратный - на понижение частоты и соответственно расширение разрядности принимаемых данных

При реализации этого подхода не полечится защёлкнуть входные данные в FastInputReg, а это чревато нехорошими последствиями.
sazh
Цитата(DuHast @ Feb 18 2009, 22:50) *
При реализации этого подхода не полечится защёлкнуть входные данные в FastInputReg, а это чревато нехорошими последствиями.


Вы не озвучили частоты, с которыми работаете. Но если умножаете на pll, значит невысокие.
А здесь все наоборот. Процессорный link port. Причем все просто и прозрачно. И клок не нужен непрерывный. Правда разрядность поменьше. А базируется именно на том, что клок сопровождения - локальный.
И все это добро потом легко ложится на пониженную системную. практически любую. одноклоковая синхронизация.
Все пляшет и поет. Конечно есть констрейны.
Проект рабочий.
DuHast
Цитата(sazh @ Feb 18 2009, 23:06) *
Вы не озвучили частоты.

62,5Мгц *2 = 125 Мгц.
Цитата(sazh @ Feb 18 2009, 23:06) *
И клок не нужен непрерывный.

Это конечно здорово. Боюсь что в схеме с PLL будут проблемы из-за нестабильности клока.
Цитата(sazh @ Feb 18 2009, 23:06) *
.. Правда разрядность поменьше.
.. клок сопровождения - локальный.
.. Конечно есть констрейны.

Всё это компенсирует отсутствие FastInputReg?
sazh
Цитата(DuHast @ Feb 18 2009, 23:29) *
Всё это компенсирует отсутствие FastInputReg?


А почему он должен отсутствовать. Что мешает в буфере ввода вывода расположить регистр.
Хозяин барин. Я на ночь глядя анализировать не буду.
Считайте метод альтернативным.
///////////////
Ну вот и вляпался. (Один регистр по переднему фронту. второй по заднему).
Значит и без Fast InputReg можно обойтись.
DuHast
Цитата(sazh @ Feb 18 2009, 23:35) *
А почему он должен отсутствовать. Что мешает в буфере ввода вывода расположить регистр.
Хозяин барин. Я на ночь глядя анализировать не буду.
Считайте метод альтернативным.

В Вашей схеме каждый разряд шины данных идёт на два тригера, один защёлкивается положительным фронтом, другой отрицательным. В Cyclon'e во входной ноге только один входной регистр. Вот в Strarix'е два , причём защёлкиваются они разными фронтами, похоже именно для подключения DDR.
Спасибо за помощь, попробую завтра предложеный Вами метод.
Methane
Цитата(DuHast @ Feb 18 2009, 22:29) *
62,5Мгц *2 = 125 Мгц.

А чего не в лоб?
Код
reg[4:0] clkreg;
always @(posedge clk200MHz)
begin
  clkreg[4:0] <= {clkreg[3:0],clkDataIn};
  if(clkreg[4:0] == 4'b1100) fifo_out <= data_in_neg_edge;
  if(clkreg[4:0] == 4'b0011) fifo_out <= data_in_pos_edge;
end


PS: ногами не бить, писал на верилоге давно.
DuHast
Цитата(Methane @ Feb 19 2009, 00:07) *
А чего не в лоб?
...

И что мы получим на выходе? fifo_out - данные и clk200MHz- синхронный им клок? А где тогда EnableFifo_out ? Или я Вас не так понял?
Methane
Цитата(DuHast @ Feb 19 2009, 06:43) *
И что мы получим на выходе? fifo_out - данные и clk200MHz- синхронный им клок? А где тогда EnableFifo_out ? Или я Вас не так понял?

Мне провести сеанс телепатии, узнать ТЗ, и написать все?
sazh
Цитата(Methane @ Feb 19 2009, 10:46) *
Мне провести сеанс телепатии, узнать ТЗ, и написать все?

clk200MHz - маловато будет.
Тут еще с метастабильностью любят бороться. Так что clk500MHz пожалуй в самый раз.
Methane
Цитата(sazh @ Feb 19 2009, 09:52) *
clk200MHz - маловато будет.
Тут еще с метастабильностью любят бороться. Так что clk500MHz пожалуй в самый раз.

В два раза быстрее частоты измерения входого сигнала, будет достаточно.
DuHast
Цитата(Methane @ Feb 19 2009, 10:46) *
Мне провести сеанс телепатии, узнать ТЗ, и написать все?

Причём тут телепатия. Вы предложили схему на входе которой данные , тактируемые каждым фронтом клока 62,5МГц, а на выходе те же данные тактируемые положительным фронтом клоко 200МГц. В этой схеме не хватает выходного сигнала EnableDataOut, как его формироватьВы не указали.
Methane
Цитата(DuHast @ Feb 19 2009, 19:05) *
Причём тут телепатия. Вы предложили схему на входе которой данные , тактируемые каждым фронтом клока 62,5МГц, а на выходе те же данные тактируемые положительным фронтом клоко 200МГц. В этой схеме не хватает выходного сигнала EnableDataOut, как его формироватьВы не указали.

assign EnableDataOut = ((clkreg[4:0] == 4'b1100) || (clkreg[4:0] == 4'b0011));

К примеру.
DuHast
to Methane

Ваша идея понятна, спасибо. Надо будет обдумать.
Methane
Цитата(DuHast @ Feb 19 2009, 21:47) *
to Methane

Ваша идея понятна, спасибо. Надо будет обдумать.

(Я надеюсь понятно что данные тоже нужно чуть задержать?
Acex
Цитата(DuHast @ Feb 18 2009, 20:21) *
Привет всем!!!
На Cyclon подаются данные по десятиразрядной шине и тактовый сигнал. Данные изменяют своё значение по каждому фронту тактового сигнала (как положительному, так и отрицательному). Я умножаю тактовый сигнал во встроеном PLL на два, и использую его для защёлкивания данных во входных регистрах и их дальнейшей обработки.
Вопросы:
1. корректна ли такая схема?
2 можно ли обработать эти данные без использования PLL?

Почти уверен, что ответы 1-Да, 2-Нет, но хочется подстраховаться.

Возможно, Вам больше подойдет вот это - altddio Megafunction, www.altera.com/literature/ug/ug_altddio.pdf.

The Altera DDR I/O megafunctions let you configure the DDR I/O
registers in Arria GX, Stratix series, Cyclone series, HardCopy II,
HardCopy Stratix, and APEX II devices.

In Cyclone series devices, the megafunctions automatically implement the
DDR registers in the LEs closest to the pin. The altddio_in megafunction
implements the interface for DDR inputs.

DDR registers capture and/or send data at twice the rate of the clock or
data strobe to interface with a memory device or other high-speed
interface application in which the data is clocked at both edges of the
clock.
DuHast
Цитата(Acex @ Feb 22 2009, 00:19) *
In Cyclone series devices, the megafunctions automatically implement the
DDR registers in the LEs closest to the pin. The altddio_in megafunction
implements the interface for DDR inputs.

Спасибо, существенное дополнение.
С альтернативными вариантами все ясно. Хотелось бы получить ответ на первый вопрос.
Acex
Цитата(DuHast @ Feb 22 2009, 08:43) *
Спасибо, существенное дополнение.
С альтернативными вариантами все ясно. Хотелось бы получить ответ на первый вопрос.

Первый вопрос слишком абстрактный. Все зависит от того, что Вам нужно дальше сделать с теми
"данными по десятиразрядной шине и тактовым сигналом", которые есть на входе Cyclon-а.
DuHast
Цитата(Acex @ Feb 24 2009, 01:34) *
Первый вопрос слишком абстрактный. Все зависит от того, что Вам нужно дальше сделать с теми
"данными по десятиразрядной шине и тактовым сигналом", которые есть на входе Cyclon-а.

Обработать laughing.gif . Есть десяти разрядная шина данных, я хочу обрабатывать в ПЛИС передаваемые по ней данные, поскольку изначальный клок не подходид, я умножаю его в PLL на два. Данные и начальный клок идут непрерывно стабильность клока 100ppm(если это важно).
Я думаю что моя ситуация вполне стандартна - нужно всего лишь ввести данные с серриализатора в ПЛИС, особенность серриализатора - использование DDR.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.