Полная версия этой страницы:
Xilinx ASI пример 1015
anatolich
Jan 21 2014, 13:54
Пробовал ли кто-нибудь пример из харр1015?
Это DVB-ASI асинхронный последовательный интерфейс для MPEG по коаксиалу.
Я пробую просимулить поведенческую модель.
Тх нормально делает 8 в 10,
на Rx нормально делается десереализация. Потом это поступает на фрэймер
и вот тут не получается, что-то я недопонимаю.
Я предполагал что после него должно быть нормальное выравнивание по стартовому байту
Их генератор генерит последовательность 47h, 48h, 49h, ... 02h, BCh, BCh, 47h
с байтом синхронизации ВС
Но на выходе фрэймера какая-то каша, хотя ВС им ловятся и рефрейминг он делает
anatolich
Jan 22 2014, 14:27
В результате симуляции подметил, что Тх сериализатор выдает в линию по два бита
например:
если на входе 1010000011 то в серию выходит 1100001010
Это фича у них такая? Так и должно быть?
anatolich
Jan 23 2014, 06:43
Так и оказалось...
в исходниках харр1015 имелась ошибочка
в модуле serializer_10b1b.vhd
вместо
ODDR_inst : ODDR2
generic map(
DDR_ALIGNMENT => "NONE", -- "OPPOSITE_EDGE"
INIT => '0', -- Initial value of 0
SRTYPE => "SYNC") -- Synchronous reset
port map (
Q => sdout, -- 1-bit DDR output
C0 => sclk_0, -- 1-bit clock input
C1 => sclk_180,
CE => '1', -- 1-bit clock enable input
D0 => sdata_slice_R(1), -- 1-bit data input (positive edge)
D1 => sdata_slice_R(0), -- 1-bit data input (negative edge) !!!!!!!!!!!!!!!!!!!!!!!!!
R => '0', -- 1-bit reset input
S => '0' -- 1-bit set input
);
нужно
ODDR_inst : ODDR2
generic map(
DDR_ALIGNMENT => "NONE", -- "OPPOSITE_EDGE"
INIT => '0', -- Initial value of 0
SRTYPE => "SYNC") -- Synchronous reset
port map (
Q => sdout, -- 1-bit DDR output
C0 => sclk_0, -- 1-bit clock input
C1 => sclk_180,
CE => '1', -- 1-bit clock enable input
D0 => sdata_slice_R(0), -- 1-bit data input (positive edge)
D1 => sdata_slice_R(1), -- 1-bit data input (negative edge) !!!!!!!!!!!!!!!!!!!!!!!!!
R => '0', -- 1-bit reset input
S => '0' -- 1-bit set input
);
anatolich
Jan 27 2014, 13:26
Напоминаю, я прикручиваю пример для 3-го Спартана 1015 ASI к 6-му Спартану и хочу уменьшить скорость
Долго бился с ПостРут симуляцией и выяснилось что нужно поменять атрибуты ODDR2
на
ODDR_inst : ODDR2
generic map(
DDR_ALIGNMENT => "С0", -- "OPPOSITE_EDGE"
INIT => '0', -- Initial value of 0
SRTYPE => "АSYNC") -- Synchronous reset
port map (
Q => sdout, -- 1-bit DDR output
C0 => sclk_0, -- 1-bit clock input
C1 => sclk_180,
CE => '1', -- 1-bit clock enable input
D0 => sdata_slice_R(0), -- 1-bit data input (positive edge)
D1 => sdata_slice_R(1), -- 1-bit data input (negative edge) !!!!!!!!!!!!!!!!!!!!!!!!!
R => '0', -- 1-bit reset input
S => '0' -- 1-bit set input
);
Теперь попробую в железе
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.