. , , ,

,,,

VERILOG- BER- — ,

( )

()

:

(c )

VERILOG-Ƞ BER-

2002

1.

1.1. BER- (Bit-Error-Rate ; ITU-T O.153).

1.2. BER- .

2. BER-

 

2.1.

 

. . 2.1 [1]. RG (XOR) . , CLK .
.

. 2.1.

- ̠ N
( > N). . 2.1 . , 2 1. - , . : , . . .

1. (2 1 ) . 1 , . 0. . 1 , . , . 0 . 1 .

2. (2 1 ) . 1 1, 2, 3 . .

. 0 . 0. , . , . 1 . 0 , 1/2 .

3. (2 1 ) , W (W , 2 1), , .

.

2.2.

 

() () , . 2.2. . . , , ( ). . SD, RG1 .

. 2.2. ,

, . 0, XOR1 Y1 XOR2. RG1 , (. . 2.1). , XOR2. () SCRD, . , , RG1, XOR2 . .

SCRD ( ) . ( ) . SCRD RG2, RD.

RD SD . , RG1 RG2 , SCRD, , , . Y2 = Y1, , ,
RD = SCRD Å Y2 = SD Å Y1 Å Y2 = SD Å Y1 Å Y1 = SD Å 0 = SD.

- . RG2, , ( ). , , RG2. RG2, , , XOR3 Y2 . RD Y.


SD = 0. . . RD = 0. (- RG2) .

2.3.

 

. 2.3, RxC RD DTE DCE . , , , . .
(SD = 0, . . 2.2). RxC RxD TT .

G2 G3. G2 () . 1. , () . , . G2 . 0.

, . G3 . 0. G3 . 1 , .

. 2.3. DCE DTE

RxC G1 RxD (.
. 2.4). RxC RxD. RxC D- . 1 ( 1(L + 4)). 2.

T1(J) T1(J + 3) : S(J), S(J + 1), S(J + 2), S(J + 3). : D(J), D(J + 1), D(J + 2), D(J + 3). , ( , ) . , , .

. 2.4.

, () , ()! (0 1) RxD. , . , Z D- , . 0.

, 1(J + 4) RxD : . 0 . 1 . 2(J + 4) ( Z , . 1). 2(J + 5) . 1. , .

1(J + 5) RxD . ,   N.   ( ERR), .

2( + 2) N. , . . Y D(K + 2), RxD. .   . T2(L + 1) . , .   , , . , .

3.

3.1. , . 2.3.

3.2. .

3.3. , . 2.3. . 3.1. gate level.

3.4. . . 3.1. 1000 . , .

3.5. ( 20 40 ). .

3.6. ( ). .

3.7. : ( ) .

. 3.1. :

/ ;

(), . . 2.1;

N , , . . 2.1;

T(DATA) , , , . . 2.3;

T(SYNC) , , , . . 2.3.

3.1.

/ N T(DATA) T(SYNC)
1 39 35 756, 759 759, 989
2 36 25 41, 126 41, 42, 43,44
3 35 33 88, 89, 90 860 867
4 33 20 903915 34, 44, 54
5 31 28 56, 65 69 68, 895
6 29 27 55, 57, 59, 67 757 763
7 28 25 85, 847 85, 88, 93
8 25 22 49 54 51 56, 129
9 7 6 47, 61 84, 99 105
10 9 5 55, 78, 88 80, 90
11 10 7 759, 989 55, 57, 59, 67
12 11 9 41, 42, 43,44 85, 847
13 15 14 860 867 49 54
14 17 14 34, 44, 54 47, 61
15 18 11 68, 895 55, 78, 88
16 20 17 757 763 85, 847
17 21 19 759, 989 49 54
18 22 21 41, 42, 43,44 47, 61
19 23 18 860 867 55, 78, 88
20 36 25 34, 44, 54 759, 989
21 35 33 68, 895 41, 42, 43,44
22 33 20 757 763 860 867
23 31 28 85, 88, 93 34, 44, 54
24 21 19 51 56, 129 68, 895
25 22 21 41, 42, 43,44 757 763
26 23 18 860 867 85, 88, 93
27 36 25 34, 44, 54 51 56, 129
28 35 33 759, 989 756, 759
29 31 28 41, 42, 43,44 41, 126
30 29 27 860 867 88, 89, 90
31 28 25 34, 44, 54 903915
32 25 22 68, 895 56, 65 69
33 7 6 757 763 55, 57, 59, 67
34 9 5 85, 88, 93 85, 847
35 10 7 51 56, 129 49 54
36 11 9 84, 99 105 47, 61
37 15 14 80, 90 55, 78, 88
38 25 22 55, 57, 59, 67 759, 989
39 7 6 85, 847 41, 42, 43,44
40 9 5 49 54 860 867
41 10 7 47, 61 34, 44, 54
42 11 9 55, 78, 88 68, 895
43 15 14 85, 847 757 763
44 17 14 49 54 759, 989
45 18 11 47, 61 41, 42, 43,44
46 25 22 55, 78, 88 860 867
47 7 6 759, 989 34, 44, 54
48 9 5 41, 42, 43,44 68, 895
49 10 7 860 867 757 763
50 11 9 34, 44, 54 85, 88, 93
51 15 14 68, 895 51 56, 129
52 17 14 757 763 41, 42, 43,44
53 18 11 85, 88, 93 860 867
54 28 25 51 56, 129 34, 44, 54
55 25 22 41, 42, 43,44 759, 989
56 7 6 860 867 41, 42, 43,44
57 9 5 34, 44, 54 860 867
58 10 7 68, 895 34, 44, 54
59 11 9 34, 44, 54 35, 46, 56
60 15 14 759, 989 68, 895
61 17 14 41, 42, 43,44 757 763
62 18 11 860 867 85, 88, 93
63 20 17 34, 44, 54 51 56, 129
64 21 19 68, 895 41, 42, 43,44
65 22 21 757 763 860 867
66 23 18 85, 88, 93 34, 44, 54
67 36 25 51 56, 129 759, 989
68 35 33 84, 99 105 34, 44, 54
69 33 20 80, 90 68, 895
70 31 28 55, 57, 59, 67 757 763
71 21 19 85, 847 85, 88, 93
72 22 21 49 54 51 56, 129
73 23 18 85, 88, 93 41, 42, 43,44
74 36 25 51 56, 129 860 867
75 35 33 41, 42, 43,44 34, 44, 54
76 31 28 860 867 68, 895
77 29 27 34, 44, 54 34, 44, 54
78 28 25 759, 989 759, 989
79 25 22 34, 44, 54 41, 42, 43,44
80 7 6 68, 895 860 867

4.

4.1.

, Verilog HDL. -
(module), (reg), (wire), , (input, output) . .

. 4.1 (.
. 2.3) . , , . , gate- RTL- (Register Transfer Level). , , Ƞ . , . , , . , gate-.

(. 4.1) . (module ber_tester) . (module DCE, module Line, module DTE) . D- ( ), .

. . : Project à New à < > à Add ( ) à OK à GO ( )). , , . 4.2, :

timing , . . G1 (. 4.1);

RxCgood ;

RxDgood, ;

A[1:M] - ;

errRxC () RxC;

errRxD () RxD;

RxCbad ();

RxDbad ();

B[1:M] - ;

D_input_TT D- DTE;

ERROR () BER-.

. 4.1. BER- Verilog HDL RTL

4.2. RTL- BER- Verilog HDL

4.2.1. BER-main_module.v

// ( )

module ber_tester (ERROR); // ber_tester - ,

//

// ( , )

output ERROR; // ERROR ( )

wire RxDgood, RxCgood, RxDbad, RxCbad; //

DTE DTE1(ERROR, RxCbad, RxDbad); // BER-ࠠ

Line Line1 (RxCbad, RxDbad, RxCgood, RxDgood); // :

DCE DCE1(RxCgood, RxDgood); // DTE, Line DCE (DTE1, Line1 蠠 //DCE1)

endmodule //

4.2.2. BER-DTE_module.v

module DTE(out1, in1, in2); // ,

input in1, in2; //

output out1; //

parameter M=5, N=3; // - , N -

// . N:

// 3 2, 4 3, 5 3, 6 5, 7 6, 9 5, 10 7, 11 9, 15 14, 17 14,

// 18 11, 20 17, 21 19, 22 21, 23 18, 25 22, 28 25, 29 27,

// 31 28, 33 20, 35 33, 36 25, 39 35

reg [1:M] B; // -

reg TT; // D-

wire D_input_TT; //

assign out1 = TT, // , out1

// D-

D_input_TT = B[N] ^ B[M] ^ in2; // ,

// D_input_TT

// : B[N], // B[M] in2

always begin: analyzer // BER- "" :

@(negedge in1) begin: prediction_and_check // in1

TT = B[N] ^ B[M] ^ in2; // ,

B = B >> 1; //

// ,

B[1] = in2; // [1]

// in2

end // ,

// in1

end // "always"

endmodule

4.2.3. BER-Line_module.v

module Line (out20, out10, in20, in10); // ,

input in20, in10; //

output out20, out10; //

reg errRxD, g3, errRxC; //

integer count, timing; //

initial count = 0; //

initial errRxD=0; //

initial g3=0; //

assign out10 = in10 ^errRxD; // out10

// in10 errRxD

assign out20 = in20 ^errRxC; // out20

// in20 errRxC

// "" in20:

always @(posedge in20) begin: ticking // ( -

count = count + 1; // RxCgood);

timing = count - 1; // timing count

errRxC = g3; // g3 errRxC

end

// "" 20 , . . ,

// , RxD

always #20 if

((count == 39) // RxD (

|(count == 60) // )

|(count == 70)

|(count == 40)

|(count == 40)

|(count == 40)

|(count == 310)

|(count == 120)

|(count == 160)

|(count == 130))

begin

errRxD = 1; //

end

else

begin

errRxD = 0; //

end

// "" 20 , . . ,

// , RxC

always #20 if

((count == 9) // RxC (

|(count == 40) // )

|(count == 700)

|(count == 940)

|(count == 400)

|(count == 126)

|(count == 127)

|(count == 128)

|(count == 129)

|(count == 130))

begin

g3 = 1; //

end

else

begin

g3 = 0; //

end

endmodule

4.2.4. BER-DCE_module.v

module DCE (out40, out30); // , (⠠ // )

output out40, out30; //

reg g1; // g1

parameter M=5, N=3; // - , N -

// . N:

// 3 2, 4 3, 5 3, 6 5, 7 6, 9 5, 10 7, 11 9, 15 14, 17 14,

// 18 11, 20 17, 21 19, 22 21, 23 18, 25 22, 28 25, 29 27,

// 31 28, 33 20, 35 33, 36 25, 39 35

reg [1:M] A; // - A

reg temp; // temp

initial A = 1; //

assign out30 = A[N] ^ A[M], out40 = g1; //

initial begin: stopper //

#20040; $stop; // 2040

end // ( = 20 )

always begin: RxC_generator // :

#10 g1 = 0; // = 10

#10 g1 = 1; // = 10

end

always begin: pseudorandom_RxD //

@(posedge g1) // g1:

temp = A[N] ^ A[M]; // A[N] A[M],

A = A >> 1; // ,

A[1] = temp; // temp

end

endmodule

. 4.2. BER-, . ,

1. .., .., .. . . .: , 2002. 220 .

2. Hyde Daniel C. CSCI 320 Computer Architecture. Handbook on Verilog HDL.
Bucknell University, 1997.

. .

31. 03. 2002

( ) () :

 

 

 

! , , , .
. , :