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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Прием данных с АЦП AD9681
Алга
сообщение Oct 20 2017, 05:38
Сообщение #31


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

Группа: Свой
Сообщений: 107
Регистрация: 29-12-04
Пользователь №: 1 739



В ручном режиме нужно добиться, что у вас работает установка задержки IDELAYE2
путем ее проверки на выходе.
На входе С, Клок на этом примитиве CLK(???-что за сигнал )- должен aclk_div.
Все другие управлениющие сигналы (для idelaye2 iserdese2) производЯтся синхронно с этим сигналом.
Он становится основным клоковым сигналом.
Потом проверить наличие этого сигнала. Какова его частота.
Также нужно следить за установкой аттрибута IDELAY_TYPE (fixed, variable, var_load and etc) IDELAYE2.
Go to the top of the page
 
+Quote Post
Art55555
сообщение Oct 20 2017, 07:14
Сообщение #32


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

Группа: Участник
Сообщений: 156
Регистрация: 7-10-10
Пользователь №: 59 981



Цитата(Алга @ Oct 20 2017, 09:38) *
В ручном режиме нужно добиться, что у вас работает установка задержки IDELAYE2
путем ее проверки на выходе.
На входе С, Клок на этом примитиве CLK(???-что за сигнал )- должен aclk_div.
Все другие управлениющие сигналы (для idelaye2 iserdese2) производЯтся синхронно с этим сигналом.
Он становится основным клоковым сигналом.
Потом проверить наличие этого сигнала. Какова его частота.
Также нужно следить за установкой аттрибута IDELAY_TYPE (fixed, variable, var_load and etc) IDELAYE2.


С - это основной клоковый сигнал (100 МГц), в данной реализации просто стоит здесь. Заменил на aclk_div. В прошлых реализациях пробовал его. Работает также. Сейчас проверим. А по настройке IDELAY_TYPE variable подойдёт?
Go to the top of the page
 
+Quote Post
Алга
сообщение Oct 20 2017, 07:29
Сообщение #33


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

Группа: Свой
Сообщений: 107
Регистрация: 29-12-04
Пользователь №: 1 739



Подходит для INC/DEC режима. Если прямая загрузка кода задержки со входов, то режим VAR_LOAD.
Далее С- это clk у вас 100 МГЦ, надо 200 Мгц поскольку нужен для управления IDELAYCTRL.
Go to the top of the page
 
+Quote Post
Art55555
сообщение Oct 23 2017, 09:19
Сообщение #34


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

Группа: Участник
Сообщений: 156
Регистрация: 7-10-10
Пользователь №: 59 981



Цитата(Алга @ Oct 20 2017, 11:29) *
Подходит для INC/DEC режима. Если прямая загрузка кода задержки со входов, то режим VAR_LOAD.
Далее С- это clk у вас 100 МГЦ, надо 200 Мгц поскольку нужен для управления IDELAYCTRL.


Поправил, ещё такой вопрос. Я првильнопонимаю, что BUFR должны делить на 8 в моём случае?





Сообщение отредактировал Art55555 - Oct 23 2017, 09:31
Go to the top of the page
 
+Quote Post
Алга
сообщение Oct 23 2017, 10:30
Сообщение #35


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

Группа: Свой
Сообщений: 107
Регистрация: 29-12-04
Пользователь №: 1 739



Не совсем.
BUFR делит на 4. Поскольку ISERDESE2 в данном случае принимает только 8 бит и в DDR режиме.
Если АЦП в DDR режиме также.
Go to the top of the page
 
+Quote Post
Art55555
сообщение Oct 23 2017, 12:22
Сообщение #36


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

Группа: Участник
Сообщений: 156
Регистрация: 7-10-10
Пользователь №: 59 981



Цитата(Алга @ Oct 23 2017, 14:30) *
Не совсем.
BUFR делит на 4. Поскольку ISERDESE2 в данном случае принимает только 8 бит и в DDR режиме.
Если АЦП в DDR режиме также.


В итоге получается вот что.
Результат - всё тот же АА на выходе.. какое бы значение я бы не задавал.
Сигнал dco_calib_out_t должен отправляться на вход калибровочной машины. И там всегда АА.


x_dco0 : IBUFDS
generic map (
DIFF_TERM => TRUE, -- Differential Termination
IBUF_LOW_PWR => TRUE, -- Low power (TRUE) vs. performance (FALSE) setting for referenced I/O standards
IOSTANDARD => "LVDS_25")
port map (
O => aclk, -- Clock buffer output
I => dco1p, -- Diff_p clock buffer input (connect directly to top-level port)
IB => dco1n -- Diff_n clock buffer input (connect directly to top-level port)
);


xIDELAY: IDELAYE2
generic map (
SIGNAL_PATTERN => "CLOCK",
REFCLK_FREQUENCY => 200.0,
HIGH_PERFORMANCE_MODE => "TRUE",
--FINEDELAY => "BYPASS",
DELAY_SRC => "IDATAIN",
CINVCTRL_SEL => "FALSE",
IDELAY_TYPE => "VAR_LOAD",--"VARIABLE",
IDELAY_VALUE => 0,
PIPE_SEL => "FALSE"
)
port map (
DATAIN => '0',--,
IDATAIN => aclk,
DATAOUT => d_aclk,

C => aclk_div,
CE => set_idelay_dco,
INC => '1',
LD => ld_dco_delay,
CNTVALUEIN => dco_delay,
CNTVALUEOUT => open,

REGRST => not AdcIdlyCtrlRdy,
CINVCTRL => '0',
LDPIPEEN => '0'
);

bufio_adc: buf port map ( i => d_aclk, o => aclk_main ); --FB

BUFR_ins1 : BUFR
generic map (
BUFR_DIVIDE => "4", -- Values: "BYPASS, 1, 2, 3, 4, 5, 6, 7, 8"
SIM_DEVICE => "7SERIES" -- Must be set to "7SERIES"
)
port map (
O => aclk_div, -- 1-bit output: Clock output port
CE => '1', -- 1-bit input: Active high, clock enable (Divided modes only)
CLR => '0', -- 1-bit input: Active high, asynchronous clear (Divided modes only)
I => d_aclk -- 1-bit input: Clock buffer input driven by an IBUFG, MMCM or local interconnect
);

x_IDELAYCTRL : IDELAYCTRL
port map (REFCLK => clk, RST => reset, RDY => AdcIdlyCtrlRdy);


xISERDES111: ISERDESE2
generic map (
SERDES_MODE => "MASTER",
INTERFACE_TYPE => "NETWORKING",
IOBDELAY => "Both",
DATA_RATE => "DDR",
DATA_WIDTH => 8,
DYN_CLKDIV_INV_EN => "FALSE",
DYN_CLK_INV_EN => "FALSE",
NUM_CE => 1,
OFB_USED => "FALSE",
INIT_Q1 => '0',
INIT_Q2 => '0',
INIT_Q3 => '0',
INIT_Q4 => '0',
SRVAL_Q1 => '0',
SRVAL_Q2 => '0',
SRVAL_Q3 => '0',
SRVAL_Q4 => '0'
)
port map (
-- Registered outputs
Q1 => dco_calib_out(0),
Q2 => dco_calib_out(1),
Q3 => dco_calib_out(2),
Q4 => dco_calib_out(3),
Q5 => dco_calib_out(4),
Q6 => dco_calib_out(5),
Q7 => dco_calib_out(6),
Q8 => dco_calib_out(7),
-- Unregistered output
O => open,--IntBitClk, --ser_dat(ii),
-- Carry out for bit expansion
SHIFTOUT1 => open,
SHIFTOUT2 => open,
-- Serial data in from PAD or IODELAY
D => aclk,--'0',
DDLY => '0', --d_aclk,--d_aclk,
-- Carry in for bit expansion
SHIFTIN1 => '0',
SHIFTIN2 => '0',
-- Clock signals
CLK => aclk_main,-- high-speed clock
CLKB => not aclk_main, -- inverted clock
CLKDIV => aclk_div,-- divided clock
-- Clock enable
CE1 => '1',
CE2 => '0',
-- Reset
RST => reset, --rst(i),
--- NOT USED
BITSLIP => '0', -- bitslip operation-------------------
OCLK => '0', -- high-speed clock
OCLKB => '0', -- inverted clock

DYNCLKSEL => '0',
DYNCLKDIVSEL => '0',
CLKDIVP => '0',
OFB => '0' -- feedback path

);

dco_calib_out_t<=dco_calib_out;
Go to the top of the page
 
+Quote Post
Алга
сообщение Oct 23 2017, 12:36
Сообщение #37


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

Группа: Свой
Сообщений: 107
Регистрация: 29-12-04
Пользователь №: 1 739



АЦП при этом какую частоту на выходе DCO выдает? FCO?

Пробуем IBUFDS аттрибут IBUF_LOW_PWR => FALSE,
Go to the top of the page
 
+Quote Post
Art55555
сообщение Oct 23 2017, 13:45
Сообщение #38


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

Группа: Участник
Сообщений: 156
Регистрация: 7-10-10
Пользователь №: 59 981




AD9681 работает в режиме 011 = DDR two-lane, bytewise. Впрочем, смена режимов ничего не даёт.

Пробуем IBUFDS аттрибут IBUF_LOW_PWR => FALSE,[/quote]

Пробую. Результат через 15 минут.

Цитата(Art55555 @ Oct 23 2017, 17:33) *
Пробую. Результат через 15 минут.


не помогло((

[quote name='Алга' date='Oct 23 2017, 16:36' post='1525596']
АЦП при этом какую частоту на выходе DCO выдает? FCO?

Прикрепленное изображение


Сообщение отредактировал Art55555 - Oct 23 2017, 13:45
Go to the top of the page
 
+Quote Post
Алга
сообщение Oct 23 2017, 13:46
Сообщение #39


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

Группа: Свой
Сообщений: 107
Регистрация: 29-12-04
Пользователь №: 1 739



Атрибут оставьте в этом состоянии.
Проверяем частоту aclk_div. Какая она? Реальная ...на вашем железе.
Go to the top of the page
 
+Quote Post
Art55555
сообщение Oct 23 2017, 13:55
Сообщение #40


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

Группа: Участник
Сообщений: 156
Регистрация: 7-10-10
Пользователь №: 59 981



Цитата(Алга @ Oct 23 2017, 17:46) *
Атрибут оставьте в этом состоянии.
Проверяем частоту aclk_div. Какая она? Реальная ...на вашем железе.


Атрибут оставил.
А как его проверишь - то? Я сделал по нему счётчик - бежит, всё в порядке.
Go to the top of the page
 
+Quote Post
Алга
сообщение Oct 23 2017, 14:02
Сообщение #41


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

Группа: Свой
Сообщений: 107
Регистрация: 29-12-04
Пользователь №: 1 739



Вывести его на вывод и
Промерить частоту, допустим осциллографом. Потом пронаблюдать этот сигнал стабилен или нет.
Go to the top of the page
 
+Quote Post
Art55555
сообщение Oct 23 2017, 14:45
Сообщение #42


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

Группа: Участник
Сообщений: 156
Регистрация: 7-10-10
Пользователь №: 59 981



Цитата(Алга @ Oct 23 2017, 18:02) *
Вывести его на вывод и
Промерить частоту, допустим осциллографом. Потом пронаблюдать этот сигнал стабилен или нет.


Ладно это я посмотрю.
А настройки DDR/SDR 8 бит выход правильно заданы?


Цитата(Art55555 @ Oct 23 2017, 18:19) *
Ладно это я посмотрю.
А настройки DDR/SDR 8 бит выход правильно заданы?


1. Мне не нравится вообще число АА. Ведь мы должны получать все 1 или все 0?
2. Сейчас мы делаем так. Принятый сигнал отправляем на IDELAYE2 для формирования. Из задержанного делаем aclk_main и aclk_div. А на вход D ISERDESE2 подаём "чистый" принятый сигнал aclk, после. Правильно ли это? Может, из "чистого" (несдвинутого) делать aclk_main и aclk_div, ими защёлкивать, а сдвинутый подавать на ISERDESE2 ?
Go to the top of the page
 
+Quote Post
Art55555
сообщение Oct 23 2017, 15:52
Сообщение #43


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

Группа: Участник
Сообщений: 156
Регистрация: 7-10-10
Пользователь №: 59 981



Ещё одно наблюдение.
Если вывести режим ацп с 2-кратной скоростью в 21 регистр подать значение 40 (100 = DDR one-lane, wordwise), то значение выходного ISERDES2 помучается FF. На сигналы LD и CNTVALUEIN по-прежнему реакции нет, а вот, если подать '1' на СЕ, то измение есть, только 1 такт, такое ощущение, что реально не задерживается ничего. Если подать на СЕ единицы на постоянную, то видим, что FF часто сменяются FE, но если единицу убрать, то опять всё возвращается на FF.
Ситуация на том же месте в итоге((
Go to the top of the page
 
+Quote Post
Tausinov
сообщение Oct 23 2017, 16:21
Сообщение #44


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

Группа: Участник
Сообщений: 119
Регистрация: 19-10-13
Пользователь №: 78 795



Цитата(Art55555 @ Oct 23 2017, 16:55) *
Атрибут оставил.
А как его проверишь - то? Я сделал по нему счётчик - бежит, всё в порядке.


Способ ненадежный - сделать делитель на этой частоте, формирующий моргание диодиком раз в секунду. Оцениваем глазами. При относительно большой погрешности все сразу станет видно.
Способ надежный, но чуть более трудоемкий - параллельно запускаем пару счетчиков. Один на частоте, которую заведомо знаем и уверены в ней, второй - на частоте, которая нас интересует. Зная значения счетчиков и одной из частот, легко находим вторую.
Go to the top of the page
 
+Quote Post
Алга
сообщение Oct 23 2017, 16:29
Сообщение #45


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

Группа: Свой
Сообщений: 107
Регистрация: 29-12-04
Пользователь №: 1 739



Цитата
Мне не нравится вообще число АА. Ведь мы должны получать все 1 или все 0?

Должно быть стабильные АА и 55 и нестабильные переходы.

Примитив IDELAYE2 работает в нескольких режимах. Если меняется управление, то надо менять и аттрибут IDELAY_TYPE.
Пока он нормально и стабильно не заработает- результата не будет.
И поэтому устанавливаем IDELAYE2 только в режим загрузки
(Сигналы INC и СЕ занулить) и шаг за шагом, устанавливается код задержки, проверяем его на выходе,
смотрим код что есть на выходе ISERDESE2.
Еще внимательно с сигналами сброса. Их также надо проверять и видеть.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th November 2017 - 08:50
Рейтинг@Mail.ru


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