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

 
 
> Синхронизовать две DE0 борды на 450МГц
iiv
сообщение Jul 23 2013, 16:28
Сообщение #1


вопрошающий
*****

Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436



Всем привет,

есть две терасиковские борды с EP4CE22F17C6, на каждой из которых работает идентичный дизайн на частоте 450МГц. Сам дизайн прост, поэтому удалось выйти на такую частоту, на ней же хочется оставаться. В дизайне есть основной клок (450МГц) и счетчик по этому клоку. Счетчик двухступенчатый, первая ступень - 2-х битная, а по переполнению счетчик клочит второй счетчик (44Бит) на 450/4МГц частоте. На платах есть свои 50МГц осцилляторы, использовать внешние осцилляторы не хочу. Мне необходимо синхронизировать оба счетчика с обеих плат (пусть с какой-то фиксированной фазой) и удерживать такую синхронизацию бесконечно долго (счетчик переполняется за 40 часов, вот это для меня означает бесконечно долго).

Физически для такой синхронизации я могу задействовать не более 10 ног каждой плисины через JP3 (2x13) коннектор. Длина провода, если постараться, будет не более 10см, но ни о каких лвдсах, к сожалению, мечтать не приходится. Дополнительно хотел бы сказать, что вокруг не сильно благоприятные электромагнитные условия, то есть этот проводок между плисками, хоть я и заэкранирую, может случайно что-то словить из окружающей среды.

Реально никогда с таким не сталкивался, и прошу совета, как правильно поступить. Железо поменять не смогу - не реально.

Вижу одно из решений:

первая плисина
Код
input CLOCK_50;
inout [12:0] GPIO_2;

my_pll1 my_pll1_module(.inclk0(CLOCK_50) /*50МГц от кварца*/, .inclk1(GPIO_2[2]) /* вход 450МГц от соседней плиски*/,
.c0(GPIO_2[0]) /* 450МГц на соседнюю плиску*/, .c1(GPIO_2[1]) /* еще один выход с 450МГц клоком на соседнюю плиску*/);

wire [1:0] FastCounter;
wire         MyClk;

assign FastCounter=GPIO_2[3:4];
assign MyClk=GPIO_2[0];

always @(posedge MyClk) FastCounter<=FastCounter+1;


вторая плисина
Код
inout [12:0] GPIO_2;

my_pll2 my_pll2_module(.inclk0(GPIO_2[0]) /*первый 450МГц вход от соседний плиски*/, .inclk1(GPIO_2[1]) /*второй 450МГц вход от соседний плиски*/,
.c0(GPIO_2[2]) /* 450МГц на соседнюю плиску*/);

wire [1:0] FastCounter;
wire         MyClk;

assign FastCounter=GPIO_2[3:4];
assign MyClk=GPIO_2[2];


Еще в железе не проверял, но вопрошаю, пожалуйста, посоветуйте, можно ли так, и что можно еще улучшить!

Спасибо!

ИИВ
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 20:20
Рейтинг@Mail.ru


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