Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ad9254, 150 Msps, 14 bit плюс FPGA
Форум разработчиков электроники ELECTRONIX.ru > Аналоговая и цифровая техника, прикладная электроника > Цифровые схемы, высокоскоростные ЦС
Ar-han
Ищу консультацию, информацию, советы по составлению схемы и разводке платы с этим ацп:
http://www.analog.com/static/imported-file...eets/AD9254.pdf
До сих пор не приходилось работать с такими частотами.
Что почитать, с чего начать, какие подводные камни, где можно посмотреть примеры,
или хотя бы food print 48-lead LFCSP_VQ для pcad.
Вход ВЧ-разъём, сигнал приходит от усилителя с 50 Ом выходом и однополярным 5 вольтовым питанием.
Выход разъём параллельной шины, к fpga отладочной платы ML507.
http://www.xilinx.com/images/boards/ml507/ml507_front.jpg
На плате есть ВЧ разъёмы Diff clk out, корректно ли их использовать для тактирования АЦП напрямую?
Как преобразовать входной сигнал к дифференциальному входу ацп?
Будет ли корректно на вход поставить резистивный делитель общим сопротивлением 50 Ом,
и один из дифф. входов АЦП повесить на землю?
Сколько слоёв желательно иметь в подобной плате?
Нужна ли трансформаторная развязка входа?
Нужно ли делать выравнивание длины дорожек выходной шины?
Учитывать ли при этом длины соответствующих дорожек на отладочной плате для таких частот?
Нужна ли микросхема выходного буфера в моём случае, если я плату ацп планирую вешать непосредственно на разъёмы отладочной платы FPGA? (в pdf на ацп использован 74VCX162244)
http://www.chipfind.ru/datasheet/stmicroel...4vcx162244.htm)
Нужны ли резисторы на выходной шине между ацп и fpga, если не использовать буфер?
Буду рад любым советам по теме.
Спасибо.
zambezi
Почему не посмотреть схему reference design от AD и разводку печатной платы которая приведена в том же даташите, ссылку на который Вы даете. Большая часть вопросов отпадет. Почитайте со страницы 26 и далее.
Ar-han
Цитата(zambezi @ Apr 5 2014, 16:32) *
Почему не посмотреть схему reference design от AD и разводку печатной платы которая приведена в том же даташите, ссылку на который Вы даете. Большая часть вопросов отпадет. Почитайте со страницы 26 и далее.


Даташит читаю, есть еще какая-то доступная информация по принципам построения подобных схем?
Спасибо.

Corvus
Во-первых, не паникуйте. Не настолько всё страшно biggrin.gif
Во-вторых, как уже сказали, скачайте матереилы на отладочные платы. Там и схематик и гербера. Ориентируйтесь на него.
Из общей информации по трассировке - Грэхам и Джонсон в помощь.
zambezi
Цитата(Ar-han @ Apr 5 2014, 17:25) *
Даташит читаю, есть еще какая-то доступная информация по принципам построения подобных схем?
Спасибо.


Еще доступная информация на странице этого самого AD9254 там больше 10 application notes на все случаи жизни. Зайдите на страничку AD где лежит даташит и посмотрите в разделе документация.
Ar-han
Цитата(Corvus @ Apr 5 2014, 17:35) *
Во-первых, не паникуйте. Не настолько всё страшно biggrin.gif
Во-вторых, как уже сказали, скачайте матереилы на отладочные платы. Там и схематик и гербера. Ориентируйтесь на него.
Из общей информации по трассировке - Грэхам и Джонсон в помощь.


Спасибо за поддержку.
Вопросы появились после просмотра схемы отладочной платы под ацп. А не много ли там лишнего в моём случае?
Нужен ли в моём случае распределитель тактовых сигналов, и выходной буфер?
...Вгляделся в номиналы резисторов на схеме, и картина начала чуть проясняться, так увидел, что входной сигнал с общей землёй через дроссель T1 и операционник, превращается в дифференциальный.
Но нужен ли мне усилитель на входе ацп, если мой сигнал заведомо выше диапазона ацп в 2-3 раза, не подойдет ли резистивный делитель?
И какова функция дросселя T1, мне тоже не понятно.
Видимо и в правду без черной магии не обойтись...

zambezi
Цитата(Ar-han @ Apr 5 2014, 18:17) *
Вопросы появились после просмотра схемы отладочной платы под ацп. А не много ли там лишнего в моём случае?
Нужен ли в моём случае распределитель тактовых сигналов, и выходной буфер?

На схеме все компоненты которые помечены "DNI" не устанавливаются (Do Not Install)
Слово "Optional" вообще означает "альтернативный" вариант, поэтому его можно смело отбросить из рассмотрения, если Вам не нужно обязательно применить OpAmp.
Все остальное обязательно к использованию если Вы хотите выжать максимум из ADC. Хотите упрощать схему, Ваше право, но если Вы делаете первый раз, может разумнее сначала сделать идеально, а уже потом выпаивать "лишние" компоненты и смотреть как изменились параметры схемы. Или сразу развести несколько вариантов, полный, усеченный и самый экономный...
Ar-han
Цитата(zambezi @ Apr 5 2014, 18:49) *
На схеме все компоненты которые помечены "DNI" не устанавливаются (Do Not Install)
Слово "Optional" вообще означает "альтернативный" вариант, поэтому его можно смело отбросить из рассмотрения, если Вам не нужно обязательно применить OpAmp.

Огромное спасибо, про "DNI" никогда бы не догадался, без шуток.

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

Если я правильно понимаю, распределитель тактовой частоты всё же желателен для АЦП с подобным быстродействием, даже если на моей плате стоит LVDS преобразователь ICS85401
http://www.xilinx.com/products/boards/ml50...ts/ics85401.pdf
с sma разъёмами в 4 сантиметрах от предполагаемого места АЦП платы, а частоту преобразования мне менять не нужно.
И также желателен выходной буфер, даже если до входов камня-fpga 5-6 см пути через разъём.
А входной сигнал я могу поделить, допустим, пополам двумя резисторами по 25 Ом, и подать на одну ногу дифференциального входа ацп, привязав вторую ногу диф. входа на землю?

Я знал, что в субботний вечер на форуме можно встретить поддержку самых сильных специалистов.
Спасибо.
Ar-han
Цитата(zambezi @ Apr 5 2014, 18:49) *
Все остальное обязательно к использованию если Вы хотите выжать максимум из ADC.

Попалась информация про большой джиттер fpga, порядка 300 ps, это порядка 5% от периода clock=150 MHz.
Насколько это достоверно и критично, для данной частоты?
Может ли AD9515
http://www.analog.com/static/imported-file...eets/AD9515.pdf
которая тактирует ацп на отладочной плате, выровнять clock, убрав джиттер?
Не исправляет ли джиттер LVDS преобразователь ICS85401
http://www.xilinx.com/products/boards/ml50...ts/ics85401.pdf
установленный на отладочной плате fpga?
Буду рад ссылкам на статьи или посты по этой теме.
Еще раз спасибо.


zambezi
Цитата(Ar-han @ Apr 5 2014, 21:50) *
Попалась информация про большой джиттер fpga, порядка 300 ps, это порядка 5% от периода clock=150 MHz.
Насколько это достоверно и критично, для данной частоты?


Есть формула зависимости отношения сигнал шум ADC от jitter, на странице 19, максимальный jitter который они вообще рассматривают 3ps. Из чего можно сделать вывод, Ваши 300ps это неприемлемая цифра.

AD9515 это просто буфер который раздает чистый клок. Если клок идет с большим джиттером, буфер его транслирует на выход. Методы получения клока с низким уровнем джиттера есть, но я нетвердо знаю в этой теме, поэтому советовать не буду, пускай подскажут те кто имеет опыт.

Насчет необходимости выходного буфера не уверен, 10см на частоте 150MHz не самая большая дистанция, можно сделать так, поставить буфер и развести перемычки, если что буфер снять, и перемкнуть его затем. AD поставило буфер просто для защиты чипа от безграмотного включения и для повышения нагрузочной способности ADC, что позволяет выдать нормальный сигнал даже на входы с очень высокой емкостью. Буфер точно лишним не будет...

Про однополярное включение, схема приведена на стр.15 где они пишут что не рекомендуют такое включение, но говорят для недорогих применений возможно.
Ar-han
Цитата(zambezi @ Apr 6 2014, 04:53) *
Есть формула зависимости отношения сигнал шум ADC от jitter, на странице 19, максимальный jitter который они вообще рассматривают 3ps. Из чего можно сделать вывод, Ваши 300ps это неприемлемая цифра.

AD9515 это просто буфер который раздает чистый клок. Если клок идет с большим джиттером, буфер его транслирует на выход. Методы получения клока с низким уровнем джиттера есть, но я нетвердо знаю в этой теме, поэтому советовать не буду, пускай подскажут те кто имеет опыт.

Насчет необходимости выходного буфера не уверен, 10см на частоте 150MHz не самая большая дистанция, можно сделать так, поставить буфер и развести перемычки, если что буфер снять, и перемкнуть его затем. AD поставило буфер просто для защиты чипа от безграмотного включения и для повышения нагрузочной способности ADC, что позволяет выдать нормальный сигнал даже на входы с очень высокой емкостью. Буфер точно лишним не будет...

Про однополярное включение, схема приведена на стр.15 где они пишут что не рекомендуют такое включение, но говорят для недорогих применений возможно.


Огромное спасибо. Буду читать про ждиттер на fpga, кажется, там есть специальные тактовые цепи, GCLK, которые как раз под тактирование и заточены. Возможно, не всё так плохо, как кажется...
На 50 мгц, и 8 bit разрешения я никаких проблем не заметил...
dm.pogrebnoy
Однозначно ставить синтезатор с малым джиттером и ФШ. Иначе затея с 14 битами бессмысленна.
zambezi
Не знаю поможет или нет, вот статья про генераторы http://www.micran.ru/sites/micran_ru/data/...ynthesizers.pdf
VladimirB
Цитата(Ar-han @ Apr 5 2014, 16:24) *
Ищу консультацию, информацию, советы по составлению схемы и разводке платы с этим ацп:
http://www.analog.com/static/imported-file...eets/AD9254.pdf
До сих пор не приходилось работать с такими частотами...


Во-первых, почему АЦП именно этот?
У AD9254 выходная шина КМОП - на частотах 150МГц она будет шуметь, что выльется в ухудшение характеристик АЦП.
На это можно забить или побороться вырезами в земле и вставкой дополнительных последовательных буферов или резисторов.
В общем ничего страшного нет - даже без доп. мер работать будет, только с шумами и палками в спектре.
ИМХО проще взять АЦП с шиной данных LVDS - благо сейчас их полно.

Ну а так ничего страшного, частоты низкие - 150МГц всего, тактируйте от чего-нибудь с малым джиттером и сплошной слой земли под сигналами и всё должно работать.



polyakovav
На официальной страничке этого АЦП у производителя
http://www.analog.com/ru/analog-to-digital...ts/product.html
есть два десятка статей с рекомендациями по проектированию.
Ваши вопросы там рассматриваются довольно подробно и профессионально.
Всему, что там написано, можно верить sm.gif
Ar-han
Цитата(polyakovav @ Apr 6 2014, 20:13) *
На официальной страничке этого АЦП у производителя
http://www.analog.com/ru/analog-to-digital...ts/product.html
есть два десятка статей с рекомендациями по проектированию.
Ваши вопросы там рассматриваются довольно подробно и профессионально.
Всему, что там написано, можно верить sm.gif


Да, спасибо! По названиям статей настоящий клад.

Цитата(VladimirB @ Apr 6 2014, 19:18) *
Во-первых, почему АЦП именно этот?
У AD9254 выходная шина КМОП - на частотах 150МГц она будет шуметь, что выльется в ухудшение характеристик АЦП.
На это можно забить или побороться вырезами в земле и вставкой дополнительных последовательных буферов или резисторов.
В общем ничего страшного нет - даже без доп. мер работать будет, только с шумами и палками в спектре.
ИМХО проще взять АЦП с шиной данных LVDS - благо сейчас их полно.

Ну а так ничего страшного, частоты низкие - 150МГц всего, тактируйте от чего-нибудь с малым джиттером и сплошной слой земли под сигналами и всё должно работать.

С выбором, так уж получилось, набираюсь опыта.
А если я решусь пару последних бит выкинуть, это сильно упростит задачу?
Спасибо.

Цитата(zambezi @ Apr 6 2014, 12:42) *
Не знаю поможет или нет, вот статья про генераторы http://www.micran.ru/sites/micran_ru/data/...ynthesizers.pdf


Спасибо, спасибо, ничего лишнем не будет.

Цитата(dm.pogrebnoy @ Apr 6 2014, 12:23) *
Однозначно ставить синтезатор с малым джиттером и ФШ. Иначе затея с 14 битами бессмысленна.


Присмотрелся к плате FPGA, обнаружил синтезатор частоты, с такими характеристиками:
RMS phase jitter @ 622.08MHz (12KHz - 20MHz): 0.80ps (typical)...
The rms phase jitter performance is typically less than 1ps, thus making
the device acceptable for use in demanding applications such
as OC48 SONET and 10 Gb Ethernet.

Синтезатор частоты:
http://www.xilinx.com/products/boards/ml50...cs843001-21.pdf
Как я понял, 150 Мгц вполне реально с неё получить.

Схема FPGA отладочной платы, ML507
http://www-inst.eecs.berkeley.edu/~cs150/f..._schematics.pdf
стр.9 - тактирование

Значит не всё так страшно, и можно тактировать ацп по lvds через sma разъёмы c платы fpga?
Ну не такую же штуку еще городить на 150 Msps рядом с корпусом ацп?
AD9540
http://www.analog.com/static/imported-file...eets/AD9540.pdf
Kaligooola
На схеме отладочной платы ML507 есть разъёмы J4, J6. На J4 приходят дифф сигналы. На плате эти цепи согласованы по длине.
Поэтому если вы на своей плате сделаете согласование длин цепей к эти разъёмам, то облегчите себе жизнь в последующей работе с платой.

У Analog Devices есть АЦП с выходом как CMOS так и LVDS (переключаемые).
Посмотрите, может для вашей АЦП есть совместимая по контактам с LVDS выходами микросхема.
С учётом её выводов можно делать схему соединения с ML507.

Брать сигнал тактирования с выхода ПЛИС для АЦП не стоит, разве что вам просто нужен принцип оцифровки, работать будет, но ...

по поводу
Цитата
А входной сигнал я могу поделить, допустим, пополам двумя резисторами по 25 Ом, и подать на одну ногу дифференциального входа ацп, привязав вторую ногу диф. входа на землю?


Так делать нельзя. У дифф. входа сигналы подаются относительно уровня порового сигнала. Этим уровнем может быть Common-Mode Level Bias Output. Посмотрите схему включения усилителя и трансформатора со страницы 15 даташит. Этим уровнем сигнал с выхода усилителя смещается к уровню нуля.
Для того чтоб получить на выходе АЦП нулевой выход мы должны замкнуть входы не к земле, а к сигналу CML.

Не пожалейте сил и средств на входной буфер АЦП, он стоит дешевле микросхемы АЦП и перезаказа печатной платы. Усилитель или трансформатор зависит от задач. Если нужна полоса пропускания от 0 Гц (постоянный уровень, видеоимупльс и т. п.), то нужен усилительный буфер, а если нужно только ВЧ часть сигнала, то можно ставить трансформаторный буфер на вход.
Ar-han
Цитата(Kaligooola @ Apr 7 2014, 10:30) *
Брать сигнал тактирования с выхода ПЛИС для АЦП не стоит, разве что вам просто нужен принцип оцифровки, работать будет, но


На плате fpga обнаружил синтезатор частоты с такими характеристиками:
RMS phase jitter @ 622.08MHz (12KHz - 20MHz): 0.80ps (typical)...
Писал о нём в последнем комментарии к посту.
Насколько я понимаю, он вполне подходит для тактирования АЦП

Спасибо, за разъяснение с дифф. входом.


polyakovav
Цитата(Ar-han @ Apr 7 2014, 14:17) *
На плате fpga обнаружил синтезатор частоты с такими характеристиками:
RMS phase jitter @ 622.08MHz (12KHz - 20MHz): 0.80ps (typical)...

Насколько я понимаю, он вполне подходит для тактирования АЦП

Подходит или нет - зависит от требований к Вашему устройству по полосе частот и динамическому диапазону.
Важно еще правильно передать сигнал с синтезатора до АЦП, чтобы не нагрести по дороге шумов со всей платы.
Ar-han
Цитата(Kaligooola @ Apr 7 2014, 10:30) *
У Analog Devices есть АЦП с выходом как CMOS так и LVDS (переключаемые).
Посмотрите, может для вашей АЦП есть совместимая по контактам с LVDS выходами микросхема.
С учётом её выводов можно делать схему соединения с ML507.

Насколько я понял LVDS выход предпочтительнее для АЦП, вот попалась ADS6145
пытаюсь сравнивать с AD9254
http://www.ti.com/lit/ds/symlink/ads6145.pdf
125Msps, 14 bit
Выход либо параллельный КМОП либо DDR LVDS, по цене получается дешевле, энергопотребление меньше,
не сильно ли усложнит задачу DDR LVDS ?

Я не совсем понимаю, как данные забирать с ацп с параллельной шины, если я ацп тактирую своим генератором,
получается, я должен этим же генератором тактировать и ПЛИС? Значит нужен еще и распределитель тактовых сигналов для
отдельного тактирования ПЛИС?
А в случае DDS LVDS вообще пока не очень понятно, там данные по фронту и по спаду тактового сигнала надо собирать?
Значит надо в ПЛИСе PLL-ку ставить и умножать частоту на 2, и с этой частотой собирать данные с LVDS или как это
правильно делается?

Всем спасибо.
Kaligooola
Цитата
Я не совсем понимаю, как данные забирать с ацп с параллельной шины, если я ацп тактирую своим генератором,
получается, я должен этим же генератором тактировать и ПЛИС? Значит нужен еще и распределитель тактовых сигналов для
отдельного тактирования ПЛИС?

Если вы берёте сигнал с разветвителя на ML507 плате, то у вас разветвитель подаёт сигнал и на вход ПЛИС, и на SMA разъём для передачи на АЦП. Дополнительный разветвитель не нужен.
К тому же АЦП выдаёт вместе с данными сигнал типа CLKOUT (Как параллельная так и LVDS), и им можно защелкивать данные на входах ПЛИС. Его параметры нужно искать в даташите.
Цитата
не сильно ли усложнит задачу DDR LVDS ?

повозится придётся и с тем и стем вариантом.
Цитата
А в случае DDS LVDS вообще пока не очень понятно, там данные по фронту и по спаду тактового сигнала надо собирать?
Значит надо в ПЛИСе PLL-ку ставить и умножать частоту на 2, и с этой частотой собирать данные с LVDS или как это
правильно делается?

Да нужно защелкивать по обеим фронтам. Есть специальный буфер для DDR защелкивания.
У Xilinx есть несколько интересных XAPP на тему защелкивания данных с LVDS АЦП.
Ar-han
Цитата(Kaligooola @ Apr 8 2014, 09:36) *
Если вы берёте сигнал с разветвителя на ML507 плате, то у вас разветвитель подаёт сигнал и на вход ПЛИС, и на SMA разъём для передачи на АЦП. Дополнительный разветвитель не нужен.

Так и предполагаю поступить.


Цитата(Kaligooola @ Apr 8 2014, 09:36) *
К тому же АЦП выдаёт вместе с данными сигнал типа CLKOUT (Как параллельная так и LVDS), и им можно защелкивать данные на входах ПЛИС. Его параметры нужно искать в даташите.

Вот тут пока не совсем понимаю, получается этим сигналом (CLKOUT) нужно тактировать ПЛИС, чтобы собрать данные с АЦП?
А в ПЛИСЕ нужно инвертировать этот сигнал, чтобы получить удвоенную частоту, если по фронту и по спаду нужно данные собирать DDR LVDC.
CLKOUT, он же будет совпадать по частоте с сигналом, которым я буду тактировать АЦП, он может быть сдвинут по фазе, но этот сдвиг ведь фиксирован и не плавает, тогда зачем он нужен вообще, и как его использовать?

Kaligooola
Цитата
CLKOUT, он же будет совпадать по частоте с сигналом, которым я буду тактировать АЦП, он может быть сдвинут по фазе, но этот сдвиг ведь фиксирован и не плавает, тогда зачем он нужен вообще, и как его использовать?


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

По собиранию данных по обеим фронтам почитайте у Xilinx в XAPP.
У Altera есть собственный примитив для сбора DDR данных.
Timmy
Цитата(Ar-han @ Apr 8 2014, 16:28) *
Вот тут пока не совсем понимаю, получается этим сигналом (CLKOUT) нужно тактировать ПЛИС, чтобы собрать данные с АЦП?
А в ПЛИСЕ нужно инвертировать этот сигнал, чтобы получить удвоенную частоту, если по фронту и по спаду нужно данные собирать DDR LVDC.
CLKOUT, он же будет совпадать по частоте с сигналом, которым я буду тактировать АЦП, он может быть сдвинут по фазе, но этот сдвиг ведь фиксирован и не плавает, тогда зачем он нужен вообще, и как его использовать?

Смотрим в даташите ads6145 минимальные холд и сетап для данных относительно CLKOUT:0.7 и 1.7 ns. В целом, ширина окна валидных данных 2.4нс. Далее, смотрим задержку CLKOUT относительно CLKIN: 4.3нс - 7.3нс - разброс задержки больше, чем окно данных, таким образом, без использования CLKOUT мы не сможем надёжно синхронизироваться с данными даже без учёта clock to data skew в FPGA и PCB. У других АЦП ситуация похожая.
Ar-han
Цитата(Timmy @ Apr 9 2014, 09:58) *
Смотрим в даташите ads6145 минимальные холд и сетап для данных относительно CLKOUT:0.7 и 1.7 ns. В целом, ширина окна валидных данных 2.4нс. Далее, смотрим задержку CLKOUT относительно CLKIN: 4.3нс - 7.3нс - разброс задержки больше, чем окно данных, таким образом, без использования CLKOUT мы не сможем надёжно синхронизироваться с данными даже без учёта clock to data skew в FPGA и PCB. У других АЦП ситуация похожая.


Получается, что "CLKOUT" нужно использовать для тактирования всего ПЛИСа, умножать частоту на два, ДСМ блоком подкрутить фазу считывания...
Или можно тактировать ПЛИС и АЦП одним генератором, а в ПЛИС ДСМ блоком отстроиться по фазе на фиксированную величину, относительно общего генератора...
Или можно как-то иначе, может в LVDS интерфейсе ПЛИСа что-то аппаратно реализовано для этого сигнала (CLKOUT).

Спасибо за разъяснения.
Timmy
Цитата(Ar-han @ Apr 9 2014, 10:57) *
Получается, что "CLKOUT" нужно использовать для тактирования всего ПЛИСа, умножать частоту на два, ДСМ блоком подкрутить фазу считывания...
Или можно тактировать ПЛИС и АЦП одним генератором, а в ПЛИС ДСМ блоком отстроиться по фазе на фиксированную величину, относительно общего генератора...
Или можно как-то иначе, может в LVDS интерфейсе ПЛИСа что-то аппаратно реализовано для этого сигнала (CLKOUT).

Спасибо за разъяснения.

Почитайте аппноты от Xilinx, это стандартная задача, на Виртексе легко решается, даже без DCM, достаточно входных DDR регистров и калиброванных линий задержки.
Ar-han
Цитата(Timmy @ Apr 9 2014, 12:03) *
Почитайте аппноты от Xilinx, это стандартная задача, на Виртексе легко решается, даже без DCM, достаточно входных DDR регистров и калиброванных линий задержки.


Может быть у xilinx есть какие-то примеры? Из найденного пока что удалось найти xapp1071
http://electronix.ru/forum/index.php?showt...amp;hl=xapp1071

Спасибо.
Timmy
Цитата(Ar-han @ Apr 10 2014, 08:07) *
Может быть у xilinx есть какие-то примеры? Из найденного пока что удалось найти xapp1071
http://electronix.ru/forum/index.php?showt...amp;hl=xapp1071

Спасибо.

xapp855,xapp860, правда, с наворотами для более высоких частот, но если разберётесь с ними, будет понятно, как сделать прощеsm.gif.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.