novartis 0 22 июля, 2016 Опубликовано 22 июля, 2016 · Жалоба Есть шина 40 бит, тикает на частоте 257.8125 МГц, нужно перейти на 66 бит на частоту 156.25 МГц. Ну наверно понятно откуда это. Как это делается? И как это называется, в смысле, что вбить в гугл, чтобы почитать теорию? На Gearbox выдает не то... Так то я бы поставил двухклоковое фифо с разной шириной шины, но хочется узнать как это делается внутри. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Tausinov 0 22 июля, 2016 Опубликовано 22 июля, 2016 · Жалоба Самый очевидный, вроде, вариант - обработка на повышенной скорости, кратной каждой из двух - НОК(257.8125, 156.25) = 515.625 МГц: соответственно упаковывать исходные 40-битовые в промежуточную память кратного размера - НОК(44, 60) = 1320, потом оттуда вычитывать уже по 66. Но в этом примере частота получается, мягко говоря, высоковатая.... Так что должен быть, возможно, менее элегантный, но более эффективный способ, что-то типа такого : делаем буфер разрядности N*1320, пишем в него, циклически, с некой задержкой начинаем вычитывать. Так, как в момент чтения данные будут статические, то проблем с метастабильностью не будет. Равенство скоростей потоков гарантирует то, что мы никогда не залезем на пишущуюся область. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Den64 0 23 июля, 2016 Опубликовано 23 июля, 2016 · Жалоба Есть шина 40 бит, тикает на частоте 257.8125 МГц, нужно перейти на 66 бит на частоту 156.25 МГц. Ну наверно понятно откуда это. Это что за экзотика? Почему 66 бит? У вас контроль чётности? Почему не 64 бита, например хотя бы? я не спец в этих шинах просто интересно... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 23 июля, 2016 Опубликовано 23 июля, 2016 · Жалоба Есть шина 40 бит, тикает на частоте 257.8125 МГц, нужно перейти на 66 бит на частоту 156.25 МГц. Ну наверно понятно откуда это. Как это делается? И как это называется, в смысле, что вбить в гугл, чтобы почитать теорию? На Gearbox выдает не то... Так то я бы поставил двухклоковое фифо с разной шириной шины, но хочется узнать как это делается внутри. на частоте 257... ставите 3 регистра по 40 бит + банальную логику wire data_rdy = (data_cnt >= 66); always_ff @(posedge iclk) begin val = val40; if (val40) begin data[119:0] <= (data[79:0], data40}; if (sop40) data_cnt <= 40; else data_cnt <= data_rdy ? (data_cnt - 66 + 40) : (data_cnt + 40); end // val60 <= val & data_rdy; case (data_cnt) 80 : dat66 <= data[79 -: 66]; // 40 + 40 -> 80 - 66 -> 14 94 : dat66 <= data[93 -: 66]; // 14 + 40 + 40 -> 94 - 66 = 28 68 : dat66 <= data[67 -: 66]; // 28 + 40 -> 68 - 66 = 2 //bla-bla-bla endcase end а дальше все тривиально. ЗЫ. Проблема будет только в большом мультиплексоре на lcm(40,66) = 1320/66 = 20 входов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Inanity 1 23 июля, 2016 Опубликовано 23 июля, 2016 (изменено) · Жалоба Это что за экзотика? Почему 66 бит? У вас контроль чётности? Почему не 64 бита, например хотя бы? я не спец в этих шинах просто интересно... Это, наверное, какой-нибудь 40G/100G Ethernet. The traditional ASIC gearbox architecture is to fill a bit FIFO at one clock rate and drain it at another. If the clock ratio is carefully controlled this will have the desired functionality. This method is prohibitively expensive in an FPGA due to the relative scarcity of clock resources... Да, видимо FIFO для такой решения такой задачи слишком затратно. Вот документ с полным описание, даже пример есть в архивчике, глава Gearbox (стр 11-5): https://www.altera.com/content/dam/altera-w...tx_cookbook.pdf Очень похоже на то, что des00 описал. P.S. архив cookbook.zip довольно интересный, не знал, что у альтеры такое есть) Изменено 23 июля, 2016 пользователем Inanity Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
novartis 0 24 июля, 2016 Опубликовано 24 июля, 2016 · Жалоба Это что за экзотика? Почему 66 бит? У вас контроль чётности? Почему не 64 бита, например хотя бы? я не спец в этих шинах просто интересно... Это из 10G ethernet, потом из 66 бит делается 64 бит декодером. Вот документ с полным описание, даже пример есть в архивчике, глава Gearbox (стр 11-5): https://www.altera.com/content/dam/altera-w...tx_cookbook.pdf Очень похоже на то, что des00 описал. P.S. архив cookbook.zip довольно интересный, не знал, что у альтеры такое есть) Спасибо большое за пдф и архив, самое то, буду разбираться. :smile3046: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lutovid 0 27 июля, 2016 Опубликовано 27 июля, 2016 (изменено) · Жалоба Работал с gearbox на 10G на kintex-7 - скреиблирование/дескремблирование работало нормально - возможно стоит почитать гайд по трансиверу и заставить работать то что уже написано нежели реализовывать свой велосипед(если я понял правильно вопрос - я про то, что gearbox выдает не то); может ibert-ом канал потестить, а еще там есть возможность лупбеков разных уровней - можно ими покрутить Изменено 27 июля, 2016 пользователем Lutovid Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться