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

 
 
> Тактовая частота через PLL, три нагрузки, Spartan6
AVR
сообщение Dec 18 2016, 15:50
Сообщение #1


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Здравствуйте!
Я всегда использовал PLL только для того чтобы изменить частоту внутри ПЛИС и это всегда было просто и легко. Теперь завяз в более сложной конфигурации. Требуется входную частоту 24 МГц превратить в 48 МГц и подать на три нагрузки:
1) внутренняя логика
2) выход однополярный клок ЦАП
3) выход дифференциальный клок АЦП
Перед созданием темы произвел поиск по форуму, но решая одну проблему возникает прежняя.

Сейчас схема такая:
Код
[Вход 24 МГц] -> [PLL из 24 в 48 МГц] -> [BUFG] -> (*) -> [такты внутриПЛИСной логики]
(*) -> [OBUF тактовый выход ЦАП]
(*) -> [OBUFDS дифф выход тактов АЦП]

Схема не разводится ни при наличии BUFG после PLL ни при его отсутствии, ни если убрать OBUF для тактов ЦАП а задействовать просто assign.
Что не правильно в этой схеме и как правильно делать?
Презентацию spartan-6-clocking-resources.pptx от Xilinx смотрел, просветления не произошло.


--------------------
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
TRILLER
сообщение Dec 18 2016, 20:22
Сообщение #2


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

Группа: Свой
Сообщений: 180
Регистрация: 17-02-09
Из: Санкт-Петербург
Пользователь №: 45 001



Используйте ODDR.
Go to the top of the page
 
+Quote Post
AVR
сообщение Dec 25 2016, 16:56
Сообщение #3


фанат Linux'а
*****

Группа: Свой
Сообщений: 1 353
Регистрация: 23-10-05
Из: SPB.RU
Пользователь №: 10 008



Цитата(TRILLER @ Dec 18 2016, 23:22) *
Используйте ODDR.
Благодарю за совет. Если честно, столь короткий комментарий был мной решительно проигнорирован - не ясно как это могло помочь, а напрасно. Дополнительное чтение ошибок компилятора, а также UG382 привело к пониманию что ODDR2 ведь расположен у самого выхода из ПЛИС, и если дать данные 1 и 0 и заклокать их - будет тот же самый клок на выходе, о чем и пишут в UG382 если я правильно понял суть этой ихней хитроумной задумки.

Пока что вижу что проект хотя бы разводится! Спасибо за помощь и подсказки!
Попробую его посимулить с задержками, будет ли всё хорошо.

Код
wire pll_fb;
wire clock48m_logic;
wire clock48m_dac;
wire clock48m_adc;
pll24to48 pll(
.fb_in(pll_fb),
.fb_out(pll_fb),
.clock24m(clock24m),
// три разные нагрузки
.clock48m_1(clock48m_logic),
.clock48m_2(clock48m_dac),
.clock48m_3(clock48m_adc));

wire adc_clock;
ODDR2 adc_clk(
.D0(1), .D1(0),
.C0(clock48m_adc),
.C1(~clock48m_adc),
.Q(adc_clock));
OBUFDS adc_clk_diff( // дифф клок на выходе - так правильно???
.I(adc_clock),
.O(CLKP),
.OB(CLKM));

ODDR2 dac_clk(
.D0(1), .D1(0),
.C0(clock48m_dac),
.C1(~clock48m_dac),
.Q(dac_clock)); // клок ЦАП
always @(posedge clock48m_logic) begin
    dac <= dac + 10'b1; // просто тестовая пила
end

always @(posedge clock48m_logic) begin
// тут логика живет
end
Хотя тут же увидел ошибку - вход C1 у ODDR2 кажется уже сам по себе инвертирует.

Цитата
Это очень плохая идея - прогонять тактирующие клоки для АЦП и ЦАП через ПЛИС. Угробите все характеристики за счёт адского джиттера по клоку.
Не экономьте на клоковых буферах в следующий раз.
Вы предлагаете ставить полностью внешние клочья? Дело в том что у меня в одном режиме просто 24->48 МГц, а в другом режиме более экзотическая частота, которую ПЛИСный DCM вполне получает, внешнюю микросхему для решения такой задачи (да еще с тремя выходами, один из них дифф, хотя может еще один буфер это решает) по неопытности еще пока не присмотрел...


--------------------
Go to the top of the page
 
+Quote Post
dm.pogrebnoy
сообщение Dec 25 2016, 20:31
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 747
Регистрация: 11-04-07
Пользователь №: 26 933



Цитата(AVR @ Dec 25 2016, 19:56) *
Вы предлагаете ставить полностью внешние клочья? Дело в том что у меня в одном режиме просто 24->48 МГц, а в другом режиме более экзотическая частота, которую ПЛИСный DCM вполне получает, внешнюю микросхему для решения такой задачи (да еще с тремя выходами, один из них дифф, хотя может еще один буфер это решает) по неопытности еще пока не присмотрел...

Если укажете модели ЦАП и АЦП, то можно прикинуть, но в общем случае идея очень плохая.


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



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

 


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


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