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

 
 
> Implementation of Scrambler for PCI Express
keshu
сообщение Dec 24 2005, 15:40
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 34
Регистрация: 24-12-05
Пользователь №: 12 621



HI All,

Can any one help me implement Scrambler/Descrambler for PCI Express. The data path is 16 bits wide.

The standard shows scrambler that has datapath as 8 bits. Now in my design as the data path is 16 bits the scrambler needs to be modified, so that it can be designed as 2 paralled 8 bit scramblers working together.

Can any one give pointers to this kind of design.

can anyone upload this paper

The Algorithm of 16-Bit Scrambler in Parallel for PCI Express
W.-O. Kwon, K. Park, M.-J. Kim, and H.-J. Kwon (Korea)

h**p://w*w.actapress.com/PaperInfo.aspx?PaperID=21467


Thanks,
keshu
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Link
сообщение Dec 25 2005, 14:22
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 28
Регистрация: 1-12-05
Пользователь №: 11 671



Scrambling with 16 bits data path similar the 8 bit one. You just have to calculate twice the scrambled data for one tact. For example:

----------------------
Clock process:

DATA_scrambled(15) <= DATA(15) xor Scr_Temp0(08);
DATA_scrambled(14) <= DATA(14) xor Scr_Temp0(09);
DATA_scrambled(13) <= DATA(13) xor Scr_Temp0(10);
DATA_scrambled(12) <= DATA(12) xor Scr_Temp0(11);
DATA_scrambled(11) <= DATA(11) xor Scr_Temp0(12);
DATA_scrambled(10) <= DATA(10) xor Scr_Temp0(13);
DATA_scrambled(9) <= DATA(9) xor Scr_Temp0(14);
DATA_scrambled(8) <= DATA(8) xor Scr_Temp0(15);

DATA_scrambled(7) <= DATA(7) xor Scr_Temp1(08);
DATA_scrambled(6) <= DATA(6) xor Scr_Temp1(09);
DATA_scrambled(5) <= DATA(5) xor Scr_Temp1(10);
DATA_scrambled(4) <= DATA(4) xor Scr_Temp1(11);
DATA_scrambled(3) <= DATA(3) xor Scr_Temp1(12);
DATA_scrambled(2) <= DATA(2) xor Scr_Temp1(13);
DATA_scrambled(1) <= DATA(1) xor Scr_Temp1(14);
DATA_scrambled(0) <= DATA(0) xor Scr_Temp1(15);

Scr_Temp0 <= Scr_Temp2; -- in case where you have to advance LSFR 16 bits
Scr_Temp0 <= Scr_Temp1; -- in case where you have to advance LSFR 8 bits

end clock process;

----------------



----------------------------------------------------------------
SCRAMBLING_CALCULATE_Temp_PROC: process(RST, Scr_Temp0, Scr_Temp1)
begin

if RST='1' then
Scr_Temp1 <= x"FFFF";
Scr_Temp2 <= x"E817";
else

Scr_Temp1(0) <= Scr_Temp0(8);
Scr_Temp1(1) <= Scr_Temp0(9);
Scr_Temp1(2) <= Scr_Temp0(10);
Scr_Temp1(3) <= Scr_Temp0(11) xor Scr_Temp0(8);
Scr_Temp1(4) <= Scr_Temp0(12) xor Scr_Temp0(9) xor Scr_Temp0(8);
Scr_Temp1(5) <= Scr_Temp0(13) xor Scr_Temp0(10) xor Scr_Temp0(9) xor Scr_Temp0(8);
Scr_Temp1(6) <= Scr_Temp0(14) xor Scr_Temp0(11) xor Scr_Temp0(10) xor Scr_Temp0(9);
Scr_Temp1(7) <= Scr_Temp0(15) xor Scr_Temp0(12) xor Scr_Temp0(11) xor Scr_Temp0(10);
Scr_Temp1(8) <= Scr_Temp0(0) xor Scr_Temp0(13) xor Scr_Temp0(12) xor Scr_Temp0(11);
Scr_Temp1(9) <= Scr_Temp0(1) xor Scr_Temp0(14) xor Scr_Temp0(13) xor Scr_Temp0(12);
Scr_Temp1(10) <= Scr_Temp0(2) xor Scr_Temp0(15) xor Scr_Temp0(14) xor Scr_Temp0(13);
Scr_Temp1(11) <= Scr_Temp0(3) xor Scr_Temp0(15) xor Scr_Temp0(14);
Scr_Temp1(12) <= Scr_Temp0(4) xor Scr_Temp0(15);
Scr_Temp1(13) <= Scr_Temp0(5);
Scr_Temp1(14) <= Scr_Temp0(6);
Scr_Temp1(15) <= Scr_Temp0(7);

Scr_Temp2(0) <= Scr_Temp1(8);
Scr_Temp2(1) <= Scr_Temp1(9);
Scr_Temp2(2) <= Scr_Temp1(10);
Scr_Temp2(3) <= Scr_Temp1(11) xor Scr_Temp1(8);
Scr_Temp2(4) <= Scr_Temp1(12) xor Scr_Temp1(9) xor Scr_Temp1(8);
Scr_Temp2(5) <= Scr_Temp1(13) xor Scr_Temp1(10) xor Scr_Temp1(9) xor Scr_Temp1(8);
Scr_Temp2(6) <= Scr_Temp1(14) xor Scr_Temp1(11) xor Scr_Temp1(10) xor Scr_Temp1(9);
Scr_Temp2(7) <= Scr_Temp1(15) xor Scr_Temp1(12) xor Scr_Temp1(11) xor Scr_Temp1(10);
Scr_Temp2(8) <= Scr_Temp1(0) xor Scr_Temp1(13) xor Scr_Temp1(12) xor Scr_Temp1(11);
Scr_Temp2(9) <= Scr_Temp1(1) xor Scr_Temp1(14) xor Scr_Temp1(13) xor Scr_Temp1(12);
Scr_Temp2(10) <= Scr_Temp1(2) xor Scr_Temp1(15) xor Scr_Temp1(14) xor Scr_Temp1(13);
Scr_Temp2(11) <= Scr_Temp1(3) xor Scr_Temp1(15) xor Scr_Temp1(14);
Scr_Temp2(12) <= Scr_Temp1(4) xor Scr_Temp1(15);
Scr_Temp2(13) <= Scr_Temp1(5);
Scr_Temp2(14) <= Scr_Temp1(6);
Scr_Temp2(15) <= Scr_Temp1(7);

end if;

end process;
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


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

 


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


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