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

 
 
 
Reply to this topicStart new topic
> SerDes. Клок в одном банке, данные в другом, ISE не синтезирует. Что предпринять?
Nivovod
сообщение Feb 25 2013, 16:19
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 16-06-10
Пользователь №: 57 971



Есть макетная плата с ПЛИС Kintex7 и есть макетная плата АЦП с последовательным выходом. Проблема в том, что клок с платы АЦП попадает в один банк плис, а сами последовательные данные в другой. Использую ядро SerDes и при синтезе в ISE 14.3 выдается ошибка 1073, указывающая на этот косяк. Как победить проблему?
Go to the top of the page
 
+Quote Post
svedach
сообщение Feb 25 2013, 19:11
Сообщение #2


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

Группа: Свой
Сообщений: 135
Регистрация: 8-01-12
Из: Беларусь
Пользователь №: 69 226



Попробуйте самостоятельно сделать на сдвиговом регистре. Может удастся обойти проблему...
Сам делал так:
CODE
module ADCDeser(ADCBitClk,
FR,
SerData, DeSerData, DeSerDataA);

input ADCBitClk;
input FR;
input SerData;
output [15:0] DeSerData;
output DeSerDataA;

//Т.к. данные от АЦП идут последовательно и по двум фронтам, разделяем данные по фронту и по спаду
wire SerDataP;
wire SerDataN;
//Защелкивание разделенных данных в регистры
reg SerDataPReg;
reg SerDataNReg;
//Сдвиговый регистр данных
reg [15:0] DeSerDataShReg;
//Формирование строба записи десериализованных данных в выходной регистр
reg FRReg;
reg DataADly;
reg DataA;
//Выходные десереализованные данные
reg [15:0] DeSerData;
reg DeSerDataA;


initial
begin
SerDataPReg <= 0;
SerDataNReg <= 0;
DeSerDataShReg <= 0;
FRReg <= 0;
DataADly <= 0;
DataA <= 0;
DeSerData <= 0;
DeSerDataA <= 0;
end

IDDR2 #(
.DDR_ALIGNMENT("NONE"), // Sets output alignment to "NONE", "C0" or "C1"
.INIT_Q0(1'b0), // Sets initial state of the Q0 output to 1'b0 or 1'b1
.INIT_Q1(1'b0), // Sets initial state of the Q1 output to 1'b0 or 1'b1
.SRTYPE("SYNC") // Specifies "SYNC" or "ASYNC" set/reset
) IDDR2_inst (
.Q0(SerDataP), // 1-bit output captured with C0 clock
.Q1(SerDataN), // 1-bit output captured with C1 clock
.C0(ADCBitClk), // 1-bit clock input
.C1(~ADCBitClk), // 1-bit clock input
.CE(1'b1), // 1-bit clock enable input
.D(SerData), // 1-bit DDR data input
.R(1'b0), // 1-bit reset input
.S(1'b0) // 1-bit set input
);

always @(posedge ADCBitClk) SerDataPReg <= SerDataP;
always @(negedge ADCBitClk) SerDataNReg <= SerDataN;

always @(posedge ADCBitClk)
begin
FRReg <= FR;
DataA <= (FRReg ^ FR) && (FR);
DataADly <= DataA;
end

always @(posedge ADCBitClk)
begin
DeSerDataShReg <= (DataADly) ? {14'h0000, SerDataPReg, SerDataNReg} : {DeSerDataShReg[13:0], SerDataPReg, SerDataNReg};
end

always @(posedge ADCBitClk)
begin
DeSerData <= (DataADly) ? DeSerDataShReg : DeSerData;
DeSerDataA <= DataADly;
end

endmodule
Go to the top of the page
 
+Quote Post
dsmv
сообщение Feb 26 2013, 07:06
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 451
Регистрация: 6-09-05
Из: Москва
Пользователь №: 8 284



Можно завести тактовый сигнал на глобальный буфер и использовать примитивы ISERDES.





Go to the top of the page
 
+Quote Post
Bad0512
сообщение Feb 26 2013, 14:39
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(Nivovod @ Feb 25 2013, 23:19) *
Есть макетная плата с ПЛИС Kintex7 и есть макетная плата АЦП с последовательным выходом. Проблема в том, что клок с платы АЦП попадает в один банк плис, а сами последовательные данные в другой. Использую ядро SerDes и при синтезе в ISE 14.3 выдается ошибка 1073, указывающая на этот косяк. Как победить проблему?

Данных маловато. Какая частота клока? Как передаются данные (SDR или DDR)? На какой тип клоковых пинов заведен клок (MRCC/SRCC или GC) ? Клоковая инфраструктура у Кинтекса довольно хитрая, поэтому возможно несколько разных решений. Всё зависит от исходных данных.
Go to the top of the page
 
+Quote Post
Nivovod
сообщение Feb 27 2013, 13:38
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 16-06-10
Пользователь №: 57 971



Спасибо за отклики!

Свой serdes я уже сам конечно написал, но он нормально работает до частоты 160МГц, а мне надо 400МГц. Данные идут по обоим фронтам (DDR), по двум каналам одновременно. Клок заведен на SRCC.
Go to the top of the page
 
+Quote Post
Bad0512
сообщение Feb 27 2013, 14:06
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 802
Регистрация: 11-05-07
Из: Томск
Пользователь №: 27 650



Цитата(Nivovod @ Feb 27 2013, 20:38) *
Спасибо за отклики!

Свой serdes я уже сам конечно написал, но он нормально работает до частоты 160МГц, а мне надо 400МГц. Данные идут по обоим фронтам (DDR), по двум каналам одновременно. Клок заведен на SRCC.

Прочитайте документ ug472. Ключевые слова BUFMR,BUFIO,BUFR.
Все решаемо.
Go to the top of the page
 
+Quote Post

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

 


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


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