jesd204: Scrambler for 64b mode

The component can be used for scrambling in Tx and descrambling on the
Rx side of the JESD link.
main
Laszlo Nagy 2019-09-25 10:24:36 +01:00 committed by Laszlo Nagy
parent 474e07e579
commit a5346412d1
5 changed files with 2223 additions and 0 deletions

View File

@ -0,0 +1,83 @@
//
// The ADI JESD204 Core is released under the following license, which is
// different than all other HDL cores in this repository.
//
// Please read this, and understand the freedoms and responsibilities you have
// by using this source code/core.
//
// The JESD204 HDL, is copyright © 2016-2017 Analog Devices Inc.
//
// This core is free software, you can use run, copy, study, change, ask
// questions about and improve this core. Distribution of source, or resulting
// binaries (including those inside an FPGA or ASIC) require you to release the
// source of the entire project (excluding the system libraries provide by the
// tools/compiler/FPGA vendor). These are the terms of the GNU General Public
// License version 2 as published by the Free Software Foundation.
//
// This core is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
// A PARTICULAR PURPOSE. See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License version 2
// along with this source code, and binary. If not, see
// <http://www.gnu.org/licenses/>.
//
// Commercial licenses (with commercial support) of this JESD204 core are also
// available under terms different than the General Public License. (e.g. they
// do not require you to accompany any image (FPGA or ASIC) using the JESD204
// core with any corresponding source code.) For these alternate terms you must
// purchase a license from Analog Devices Technology Licensing Office. Users
// interested in such a license should contact jesd204-licensing@analog.com for
// more information. This commercial license is sub-licensable (if you purchase
// chips from Analog Devices, incorporate them into your PCB level product, and
// purchase a JESD204 license, end users of your product will also have a
// license to use this core in a commercial setting without releasing their
// source code).
//
// In addition, we kindly ask you to acknowledge ADI in any program, application
// or publication in which you use this JESD204 HDL core. (You are not required
// to do so; it is up to your common sense to decide whether you want to comply
// with this request or not.) For general publications, we suggest referencing :
// The design and implementation of the JESD204 HDL Core used in this project
// is copyright © 2016-2017, Analog Devices, Inc.
//
`timescale 1ns/100ps
module jesd204_scrambler_64b #(
parameter WIDTH = 64,
parameter DESCRAMBLE = 0
) (
input clk,
input reset,
input enable,
input [WIDTH-1:0] data_in,
output reg [WIDTH-1:0] data_out
);
reg [57:0] state = {1'b1,57'b0};
wire [WIDTH-1:0] feedback;
wire [WIDTH-1+58:0] full_state;
assign full_state = {state,DESCRAMBLE ? data_in : feedback};
assign feedback = full_state[WIDTH-1+58:58] ^ full_state[WIDTH-1:39] ^ data_in;
always @(*) begin
if (enable == 1'b0) begin
data_out = data_in;
end else begin
data_out = feedback;
end
end
always @(posedge clk) begin
if (reset == 1'b1) begin
state <= {1'b1,57'b0};
end else begin
state <= full_state[57:0] ^ {full_state[38:0],19'b0};
end
end
endmodule

View File

@ -0,0 +1,994 @@
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e
fc37ba9a78bb369f
ffd7bf617e9e3d8f
fe9ebf617fd73fff
f8bbba9a7c373d8f
ef15b1c6744c369f
e322a63d69492c3e
d6b699c25cdd2000
cbb38e3950ea13c1
c3c8856547440960
c028809e41610270
c161809e40280001
c744856543c80270
d0ea8e394bb30960
dcdd99c256b613c1
e949a63d63222000
f44cb1c66f152c3e

View File

@ -0,0 +1,994 @@
96cbc18568e63566
4c6d1cf69a00af94
0a448663d0845a91
a9572f207cda37bb
ebacc3113e8d8883
31f665c4d936f188
1b3ead1329c629c3
0ada6ea49ed6e821
29109d35ab350970
e4c2a9417c61caaa
719a16af0bd597d1
f8ba807317f5830e
09ee775da15b1f6d
079be433cf00eef9
518d8317792bac32
914f0b44797f8173
32798821daa68fdc
299bf4af7ee5ecdd
c4375a9c7a486f5b
caf588a15b10006c
014ab73763d5b191
c4d1dc21aad2fa46
98371c584dc2c901
5e7e35bc1b479002
310d79e4895b3a7f
41ff416ff8a77293
63e9907e485f7e98
c6dc21f167331c02
94a79aff89c64f91
11b1b61810788558
8ca7f937e48b10b1
9aeac21a1747ea23
67d7af6cf4170787
d84f44f465645341
072c4f25a3a1be40
7f833575160eabfa
f47fff7309953ebc
01574c25617a3c17
f0044ce605233bfa
2e3bd9cbd5dba506
cfeb5c7d27abb70b
cb2bc61ead9186bf
346221c35d4d62ee
5e1a6a8cce858d32
5e6628b785f780c7
31c54785b04bb933
aadbf8273e08f27a
245f81e920c2324b
2ce85811c5f7627b
edd15b73e5161073
6fab4a43dbe07cd0
92b2ef6e27a46c75
8e6a2c307dd0f6c4
02cb1768800f1aa1
8cd075d334933e17
7156f48c6364040b
9bcd72d292ebb803
9dcaededed3f86fd
6aa98113f270e538
4dac25a8adc31428
fb336c9d611b6ce6
315d94e4c97180d5
4e1d540abd4f069b
4ef2056033ea5118
95af2a93a89d3870
b8d72f5ca92a9e4e
70ae388caefdf972
cd0467b8247a69f3
cfcfa5bb86d2dc47
7c5f71c3467892b3
7e4530328c941020
177782be0c63cb3e
774ef1d738c1727e
b67e79139dda709e
7b6d75630d2ef414
dd6f85b52366d84c
f0c62066007f9f7d
3acc63dba65a45f9
d4becc5b2e8b0a8d
4533991ceefed7a2
9c721ca999af2c9e
bbf8c5f939a9fa1b
f075972025255b4d
a2f83ddeac8d1e9c
fdc8d2f7656b0965
6445d151ec3def74
5db99e63938c98b4
4a6227e8e2fbc563
9ffa947025138dcf
d55cb52b8ba3d95e
c3f288351235bbc0
56aee6ad4ca2afa8
30416e9238e368d0
f36ee73adaf4eb82
7ee6a958f27424ad
d49327b790161efb
a2a067e491e0de27
9576895e580848c9
1d25fd9de8934f23
8d79fe851d570691
aadbb02b09432cf5
18453601c6cc8aa5
fdd5a8a28c9534b1
d351a4f72fa2a303
ec80e14fb3ace139
74ec8417c93b8494
d77bf79e200bdbba
229570a137d2c619
26520d5f86d52252
ecca78c05359023a
62d20c29e93623e0
3b8cffffdb49f230
f5c0ca2fd0b52da9
dbdf506911e9f8e8
d9c0732fd3768c4f
d06d998d3c9df548
ff81e7c4c9556e0f
9150e174364e1fa9
534170f4b56d5e2a
da1441ac67aa8e0b
0b69a7c7a068718d
9e9aaf3251cb45f8
01c0df7ac596f6de
459473c298579d06
214ddf02598dda37
90805e474f9f8f28
7e6220f4fcac073e
adacfcf300ec8593
647743f67ecbaa5e
0561db0d61f57809
be829332169831d6
3b5e438774e4f486
27e797554aa5d158
abcb246a6414fded
c91482a4aae164e8
ef57cdde00ceb99e
bf447331520dcf49
780b59f34169d72c
279c2a1b457efa3d
11a8fbbb64fcdcc3
dd9697fef8a41dd9
5f1032e0d8715442
d556d4a7d24cb47c
c6cc295e3c1694a2
e63bdc9b234b7f00
4cfd01f0bd53162e
220d6099703aa7d6
4e6fec72dcab17c4
80dcf5f9dc137734
3c3ee20310928d44
e68c1418d9227f8e
7195e4f43d35e46b
5bb5cf05c7135148
2d4e69ea0464dd19
445a365e6cfbfb5d
6a7ce0f3c54b2ceb
b9d32a36c5909cbb
de0529ed505326d4
8b005320f66cbce4
5d258886052361c7
ac21c17fa4a21269
0375aa0b95975d2a
367616c54900903f
e8c00f13416bb26b
e81facd5f2eb9a5c
54b558d27e78c02b
66bf74d9bcb142af
ff86f2d71ae68a24
993fe110ac4dd6e4
a51351bf8ad58c4b
f809419f65d7091d
fcb349550f5a239d
47ad619aac2fbd93
1944bcb56e15efcf
eb1988bd511ec98b
601d8b0507c44a0f
e424efe88df8ea26
2c6cba315d777cc1
85a3d834a66f414e
fe6d6cca78b2b4e9
f134e89680986c52
9880afe2ff1d2876
0ac073295f13abfb
01804b3d5ba0d268
cc13173065719c1d
afbca11837d26de8
1c8f67b363e66da8
8536a09de9f00510
b71a47ee1d4770a3
ddeff00355aff567
adbdd106ef152b29
be77f22fc080364a
2b342da1d779dad1
7ae92a0613964a34
4a5a178af5bd0fa2
7cb927c35524a75f
567d06fa88521227
92eaa01c2796612b
6df29a0dc70f9970
840a3a7e4ba7646b
28af48986355645b
d0a702e932124b30
386c1bbfa3a61d59
a469234c1bae865f
431e0e94150fabcc
28ed3f3798732b04
8495a5895e70e30a
eb081a53df58c14f
8cf183482a0b90e5
587874ed2741e581
38640218aab29ed5
d7825c7679968c42
f2fa8fe79f91da5c
892760c92153e46c
348f2446f8dc33da
4d1a0fe4eadfeeb2
59e0df258f954d28
f89b6dc0e4486f24
64db65821d9676b2
f2caccf441193b55
9b508ff8ad507478
e23ddba6e61167ff
1250454f31ce562e
d6af56a2788ec6d9
066d132ef29f4c67
32ed44e206a3ef7b
836bc5c527463ff4
af684257464f1020
8a02b490ad0732b4
594c90d4554909b8
149b16c056276eb7
454b58f58e18175e
6f7c948f66060eb2
0a5aa1fdb57d0a00
ae0a001c195a9d4b
7a9a32a2813364cb
22ef4ef79ab4ec54
93a2515b47d453f6
8ef1704f53ba1623
fe26fe3affcfd6c2
1509b72f14fd83eb
e808810487a5c7c6
f718b0341c24f642
51c3fb8af3002aec
9b865d8866ea8862
09e10d930286e716
b153d8c8f8975482
2625baaa48d047c2
0b4993dfecda43a5
a60ecd452d36e732
ca21b9e06f6986a1
88982b88d8119a45
f6db419ccfa327ff
480ba4195591eaea
e0a8abb9fa08e28f
85036679cb84b6ec
5a0731225abb9574
31358e7a29921a2e
4507002440b7b30e
f696d9174e9fd380
75b5c515d8c8b468
be7b6e849f66d17d
78f0dd435709887b
59bbe5f85d984523
48f4d75f7c5d817c
487ee2e4bf1ab116
150e0928adc250f7
d2f14e14de50dd18
548ea413e4b65b5c
c324ed2ad7d89c9a
4c7e75b5890cd318
a852ed0624d27031
f1bb4354345d5afa
32f4de7e8c267b0e
bc1869cf6c5dc5e3
67157731af216fb8
589d31d5c73deb8a
7479b43ca7a52c7a
8837f4b7681747d4
800fa568c598c654
04d4f27f92e51ce5
01aadbe423ae7f36
61392093c019b6b9
a9e09703345f6d34
bf2cfe893e8d14d3
1e063d0346b13acd
57e8ac9d7d526b6c
1c0c1a4bda14d0f2
7dfb1d6a02edeaa5
5e8e30939ed29908
78863b4fdcec78f7
41e0b467ab03c137
49e5a109d1b4b96f
9270919cce3d8748
4aadadfb6bb8bfd6
be9ea9982a1be4c2
4148c8015ea68100
9b3cc36cf87c2a61
d508a60f9be48059
9d36ca780b7b7983
7cc5e86f980feb0e
290e81555c60dcf8
39f21ad7a3f7d35b
0f1cc38c1d5cfc85
3643fcc33e7186b4
e2cf62049ab11fc2
46da5983507172bd
4fe13d50185d50a6
a6e151c625ced4f5
cca456bae41b4851
b3c829efd1f9b2a0
ce8b2eac56b89250
2cd043f352a0148c
190632c4e0dd3ca2
0b858e24341c2afe
692331c6bab9fb89
04d882c7fc5f5345
7e9c8a3cdee1ea3b
0e75c2da85d56c26
f4a685bb6e045777
b634c0480d5b946d
e96614ede222fb6d
7e76c4142af90048
4a33486b504a490d
a4ec3127760ca4f4
8d5bea0e1604b778
a5c33b2d042a6ec0
c9e439a1e241547f
ec7c73123350c71d
f0c9eb3bbf3a476b
86cc3f045ed84bff
7b9af11e0984c84c
1bcece8cb92d8e9a
2d857d563cf0ae01
1dcc3aea75a31152
7b38657d9a843795
dc65f134e9970e95
84e3d2e121df4efa
0680bc4ffb658966
c00e678d6a7c78f0
e7d3a4ca0106a48f
9850855322aebf63
5d71b87019590d38
5f7e08214fb49e39
4babf8adc36df9a3
7acb7ebacd61ede2
048de80ddb366a31
f8e4ef3cef0a47d0
81845b2a23bafc97
f2153a1482930df8
7ca12d021f893525
f0a9cb2fff1a092b
9cc559d0f299e054
64fff63a61a4c6cb
b7097d8f86e49689
228515add5fe95ec
0470293fd87aa4ac
9b0100253ba814a9
6522e8a1cc835917
e80188fc664f6ad5
2e18380e655ba53b
51773aea70a1b360
4ae77c9fafbd1f8b
46a8dd4ab8abb11b
fe2785525d3809f4
ea1fa1e1e41e4009
94cacac05f0a9e90
6ed13ce8b4cc15a3
8c6f043b173f96eb
99a3c02e77c3d158
c82836a539df30c0
bfa9a84e882d5ef0
89e4f67e95934a31
7cad03ab7a1cebd7
92a162cf5c5381be
d5c2b2e90002c6ee
741a260f8084afd1
d23b0486d26591bc
40ad6ff2a6a13caf
0e3e3e4eb73255cf
d3807798131a731a
177f5787b17a3a5a
005d9ba1a13d24d7
88f90be3b6eed434
10668378b0b7e002
1c8d002a46d436b9
8bfa1866bea16ccd
cc2ce4174d5d5734
db3d001c413488c9
0f79d49ba30bfc65
062680d67cbf62df
c67bed67f91d6c15
87bffae430895a94
ec2c25805b64eeb1
c8772caefdef4b4b
801875b7adb3e07b
a8278ab5db8051fe
a51128b05e965f88
f41d8e91ffccd040
f841a41d247280b7
c36844751004dd78
c47da5389faa8945
9261a1af193da4b8
398dafee418408de
41764ce0a257e4f6
646c2d7b0506d84c
0214e2b7adfe0c5a
0941f7cea2d8b953
1b8edb184cc46970
189cc0f881c17646
15fb39a9bb326e96
ed908e2da02186d7
fe0248fbe7b5b16f
b019d0fe71c46a3d
2a7d397140fd7c58
a1123f6ad8ab2197
78772ac8671aab8b
79483688bf4d5e8d
bf448208b0921cf4
3f961974b2662cb2
f27c2e1483b8eb1f
4eb74e6cac9094c0
9b9f0bc4d15e38ae
8d42eb7863dd824b
76cbfcde3d502524
c53619fc4d6936c3
76d4281b9be411ed
42154e5b62e153bc
f2f7d4e181990094
b9b28f040cfb4240
b450b9bef40b383e
b51be00f29122bac
b1e381a07ecb0c2f
cc514fc1824e8552
6b60d7f04fcca3aa
c77dda35d8382c8a
4a58424e6548ade9
f261b858fdf88483
c68056f00de016c3
a32cda13960ac562
3aac08ad1a19209f
3a85973ee8d73f21
1f7ce4a130b538ee
5d70c2a3b095d862
da3003c2a0ea78b0
ce05a13c18ca2501
29b355757b692f80
5afe16c38c480ffa
d1d486c1848277b9
026405483d8c0a74
f54df081f2533043
af4f397d6d0cb316
d78af95c1154efb8
a227444158489d2f
e47430aa39a39507
aa5dcb990ef8d643
73d98e2d640f03c0
67181b67d3e4d3ee
ca69953663e421f8
368a054548046877
e970d91caee0fc49
a22f03b668b34e1f
37fb053f590f78a7
5caec8e55bd16787
084c3da4996b59b9
ae710e53469fa049
c6f9110b4cded6cc
570a401fd1859a1a
03adb3a12ab6e218
51823f14e12cbfe5
a6582d81f42f7fad
76c198bf387b4452
18a04084e63d7407
ea6fd5e8d063cd90
899d38ca7ea45733
339bfaaf8e13f949
78830c8f56275446
f92be81847ef441e
aa9f56a08d373067
3a125f81d50e2eb0
6e745a15407564af
43dade5f2ccbb252
b4d9ba35ef3e1146
a2674e383c5ea2bb
17358c2b1e51fa22
63e413a9ac8e7d30
454847573759ea00
1f5dc024bf0d17b9
48b88ac2ed09bf47
604b2dfc9c455442
283b70ead2416f0b
1b5038f4c70c60c7
fce1a56e0cc9f2b4
23344d0319f2c7e2
1bca2b70f33565b0
cfb12f35fa701dac
6ef68b78a7f8a60d
b8a19ea38a4dec6d
934489a030e6a4e8
6e941a2497ea2fa0
12b7e21bc579b83f
62c9cf1b5c9ca1c9
6bdf4e52c1b3fa59
b1725579b6d55ef8
794e6d12197802c4
bc1a3aba8792969b
b0490ee994813d91
01423880432ce241
9169f94a08324397
092ab360614ab2d4
5a84c344b1aab5f0
f48e1d85ddf273c7
c17523ad903c3bb7
f22422d50fff8987
df20f0ca88e71689
a2fa43ee541e6b60
9ca67822b974ab28
94575b627035591c
3e2303e841663797
bb6090421fb208f0
8aaded54514a47f8
c86a4fa2f3eb396c
9cbcbbab64b32b30
b9cf0c110cd85046
90bb347dfb1d67cd
127fa0d41eb50e75
e73fd1220d3eebbb
5733ac966fa29a4d
097dc692119648cf
8f1e39d3959923ae
9c92fc3843caf8c0
abef24800d77d3ec
054d70c5fa295e1f
2013d958c8209df5
5a73a6cf96dfac84
e0e6aa81d763c053
ecb2fe3723f45107
894beb53a2ecc5f5
3677880616199b3d
51e6b22dbda40040
e3b643f1a8ef7cbe
c985a7f60584268d
5d887bf53001bac0
54a367fbd671e51b
363cbb02c9371fbb
7ef01f4b542f22df
d698360accdeb106
4c4380b045aafb1d
8ef5c6862e741311
4996f337c3a0d43b
e52e3d9eebb3641d
957aa74fbebade15
17623f91d844613a
308ce28d35934488
fa9b00a132601d5f
248c68e8672f4d68
32b5e41d5b9e31c5
508abe502ee56658
5218d0fe424eaed5
a66d3b0f6e517cde
6cdbc71f4ba4a015
fc2a3f54adc57d3f
5fe3e54b775bbe82
91c05ac1ad521d9e
0dd2ab31174bfd2a
ee3fe125fb1408f6
2b1bd0a95d183cb4
776cbc1347a8d85b
2b16cca300bd1b53
4801dccfd93cc4aa
5c0dcf1a5ccd3869
f7e2dc79a1c0ddb5
ca951f4d5b8a474d
f8b442bd3aa8b98b
878f7004f6927561
36ecbc15304692f4
78062e549a769142
5cf3c9c276089b3a
4429db318e15abb8
96bd58558ad9a91a
fadd1951fc48c373
ec057f6389dfeb8a
2959d6f317e467b8
5378d237e0f6338e
6743f85d7d9f4469
a1b6a7eee47864e6
73a98e1595ba63e0
0160713ceffb3a92
e0a239d09b27e0ca
4efcbe821eadc99e
6bf8752ddc169e10
7978ff8973e36620
a59182addab08b2c
cb997ba69aa0d5fb
575c12972620f06f
069f5b4828af18f8
c919335aa58333ab
0bbc6a544aecaf99
a89afd8bfc36e50e
d265a9087954a4d8
5f2e7295b94a4af2
2b5dbfc2e62e1434
916b29f4a5e3d217
73a93a131772d5d8
0d01e1f02c8775c1
6765f785e0dbb9c6
0256d832f159d550
2c8926d4a09a5587
624127be4b73c397
1893b9d39dd4ee8b
7fe267a01b7f508f
4778a9c6bfc4ef0d
adcb471095b76a1a
ab41106b24bb3905
e918dd7d5150465f
5fb759e583e7d55a
f0672f0810c8b8e2
c259dd4ca74098cb
ccf1577d00fbd93d
067ca86c059bb461
8640acf7e5c99939
b8a42bae42df0449
a565dba16f38d0be
c7750038e50cd670
45c3b1a8c09c3b72
d521e380adb1b34c
b51439d78dbdcdc1
15c2b11993c6c8a8
bd157494df1f3f39
9458a1d3c8d042a9
5eac65b112e1c403
2a1e09f1d76c10e7
b29a3d9648bc2d97
41ad93f051622d36
480ebd2b735f5988
956174f1879da2bc
7a3387badfb4c810
3e1a02428e86327b
d37712fe1d9979b1
fd2214b653123b97
cd6aafde883610ac
13f72a453ab6e96e
8b88460608167db1
11d612181922fdef
bb287c9ce81e14e8
0b74a189aba4eece
216a9a7101355023
5b8650dd62aa2849
8de7faca654cfd96
2687a55b2f987902
d47ee35ca4f2b413
66d9b2df5b01b5cc
c9bb342319d6055b
efba21a9819620c8
6d61c818bee1f8eb
b5d25c1c39a38d94
a5ade628228a1ee5
cf702ff3060c7512
c6305eb1de2a1293
107c4733d23a61c5
862b07567a431890
de8ee935cd4c046a
273564bdf30346df
559d8fcc1733a0f4
29fb0d867866eb11
b98022716a23d7eb
41145e901933db0d
a50d432e16dddb9f
de1cf0acc8e2de17
19e96beb554c5561
7c1aec46da5e64e7
57d234bd0f808e7d
67db886279ce0849
c65d35488f1b8425
fa64dfb1f5aef65e
050b0ef0a929bc13
5d0f503313022588
dd49b215ad04ccdc
96233d348c5347c0
02f54d91fd9d36a5
481ec7d07100b4dd
6ce07b4caa1ee46c
62826b87183816af
6e82117511b9ad89
8bc6ae813d54ef3e
34958cf46a9ae6e4
1d5c86ee2530096a
57b64259ce1b25d0
b74506054485de21
2f843b2b0c3dac03
4b210b017146745b
3577f3d59969c4a5
0850998e6fb6b78e
f042b46e8c7a5b5b
22a05ed3dc9fa0ea
ec8c2d8b9b780ede
e28b0b393f1b81ae
1b0f7775ca3c66a9
eb8120da9b8aa15b
9557a37a14e3fbd3
60a099ecde17b5ea
36ded1391248c55f
157a51f767a8aa06
6c86b54fb0459f30
57847eef12eae4e8
cb76dfcb043afbb3
b7883dac116aca09
45fa01f136a74bdd
62738dbb6cc12fbc
1281561e3459d027
732885eb2cde6e48
ff5a602acf2c0ac1
55b0cb641574f1c3
6fabbedf8b093467
963120ef4a2572c4
92f4f1a941185ab7
2edfda7b6863127e
8662dd9ba600586a
7f11e8601f5b302f
d89937a5dfcb2a58
84bbd91e20e1c193
e6fb35cd70a8beac
d81b98bb0b24aa98
8f27d8f686aad41d
da65d768eed6f327
b013cd4786ebd3f9
64eb37803c711ea9
d997a40f26bda900
ad12e159f2ed45e9
3cee02ce39c2b58b
643bb38021211cde
ce8622afb4bb3986
3f805d0062996134
2796f7bf8ddf6296
4a4cdf1f10ff354c
71cba06cf198d79d
42428cae3f934249
3890bccd19b49f09
422be0e20718a30e
b121b6a6a5d4bd4e
fbb8bfb2970f1d3e
73ba4805c3170683
0a019ebbb7999560
142a3bfa4f04204c
28a66f1105847fd4
c02342879875a074
c428cfc3b3a445ce
4d7c38f934ea8992
6c066bc05e52684d
4662d1a24dded482
0cc55b03381fa355
ebfb664afa893077
826526e32e6af7ad
ab59dce2aefe74ed
ef1d7ed81cf83719
88b1f9087382981f
c207f84da0f537ff
e204439dbebecaf0
55782b3c3b547adc
c55ec1c605dd268c
0d0d520e338e99a7
94801086fc657a05
ee346e2e55c6e0c7
119886cabefa02b9
323dc6348cccd5c1
212c91edf2bf2b1b
402b8b13d2f998a6
f19aae07a5330f21
80a841ca6ce0b8e3
4a85022c91ae1ee8
04546d83c3342445
ed4ab7d9384db99b
1e43d25c5a85de9c
d0fa2631e4e16ef7
b255ff62a373208d
b31b98d4aee73863
b90d62992261222b
baafea359fd7c6fb
030da78f44b3acef
1dc80416b3b1a9bf
9e07e661d37e602a
851be1d1c95a3f12
35804e353957cd71
d6bcbb16e0e836c2
6ba6b3e8ddf8ddfd
cc5bba4aeabae439
7f0c5de8a4fc207b
ed893d08b64d310e
8dbd672ef1800692
ca01712b39a29bdf
393abe3fa298b42d
d2c818bd94c1b77b
1f9935c99a8fccac
becbe3c6aa64af29
fc64bd918d970a64
fa1ccae9ed57a2db
958995a0a2eba5cf
e4643a0666e9b9fd
c529dcd30a5725a8
30be034b931e05cb
51ef48d232008c45
2bfa84526561c87c
a65c6d93d985916d
4f7fd0b5c564997d
4ae05b22dc64a01b
0515bb6d53151038
70dd40b2c1e98202
b1f15989164a4e21
b8cc6f1b8d3f30b0
cfb236bb7eb95b9f
59b8590dd7a19e04
b59180d7a06da05c
0a416e36e35495df
3ad9a1f62898c6fd
8ad3c23e96971186
15003844ff587234
20b907e6dd7fdf07
17b7b7cf3ecd8294
8fa7d250e2c4dc18
b7e6a2e1fec6f6e7
c4cb8af301e3111b
2c5ac07832abcec4
09c0f85756ac066d
3db1ebe41833d4a6
72fc076d1ccdf192
ae8bce9d46cb60f7
5bb6b4f51b2b59df
c7b3eb6b34381257
fbf32a77e1db73ab
d44dae7a62bc73d9
3744684656c177fd
816a0ab81de938b4
c3f0da4b70ebec84
9e9bf4c35cd33af0
dc732c38adcd6cf0
92472b93ece18ffc
488d9885bf25dbdc
d0a3d0420ce08d1b
43f8605f7ae8808f
a3cf60e2cc2e9117
e0f6fc5378b88800
50fdebf77e69e802
124eab6ad91a94b2
86306f0162c84e0f
4fbfd05aeca4fc72
9d69da268fcdcd63
c7839c007f4f56a9
3cc40770d71a3180
39e64e6ba5dd8c92
5a9490363cc32188
356a3156581980f0
09ebd9f698edd63e
6959196b38700257
788d0050cec6b251
6dc82891673b3295
b3e6f4018ce244ba
2c125d2810142a31
9f04ec6936de967e
d09e22040d40aa90
efba80c83094d34a
bfa09b34f0639398
46828f7e6ba1e17f
8c9e12615cd26aa7
39e0a5402c5f7b45
113848c0fede81d5
3ba33cfa72c21f09
e01d0038dbfccee7
892048ca4ebfc4fc
2211f27b28622313
8a97e01643aad6ad
666ae1fbc4354805
8e12b25c6f070839
eac400c9eecaa67b
e96e290e15915169
8469e442f01880c9
5fb1a123d5fe5365
6aa234cdf5699d32
f42365227c470807
9ccb48b655489e16
82a5256b2994dc2b
9653d54f51398d4f
fe1b9108be8a48e3
6baeec241cfe539d
5c554ac17bb2704d
693b6bdf09995a72
08727fecfe7145f2
2a76a8720c49a745
9a9029f0f015dd0b
935cce444e8cdb78
941d069c02f4f7e9
fc8ccb8a2980ea88
f74963c130b5328a
91581ab778461290
ffb2a49e73b3c306
00a4ce23ab42817c
b2b8942a7f733dc5
13924ad935ca75d1
a2b59360becd3370
902ef8d32ad7b74a
523c24c55fd79752
fb2821182fc4bb03
02ec75e78b1c25a4
9b1ef06ffa736259
fb6a5b0746676ef6
02ac96ce2903c4ad
fcc43a3a4be2b0ca
8651ce962ae4985c
780eec2440b708b6
8a5be79f00fe9a6c
6fbc9f91a4b1e054
1c840990cff21474
dc4019d9438b8ec5
4bc8c7700b5600dc
e66bc1c50359cc84
ecc17843a7119554
48c78ca2126ae784
8b59422aec786c59
7b33c0f9d0da4c50
d0443b2ae37faadd
a7ea93d00dec4e70
8c09b55dc6d6af49
7253741677a56775
7bfaca3644ea21aa
5213d94c2f4d4f56
ddc9490b3ec04724
a36b4724ba9f1dd6
434e792c40f2e002
57c237126ea1973a
3d192188bf3ddccc
a37aa8503924ea46
82efe740bc8478f1
c55767bfbc0aaf31
d43f45d01ed48d01
57576787cbbad315
355b2592b0924599
908ae61a7ef95f96
c0f2ede2cf0b206b
3296e0ca444724cc
f2f839bdcf68ca2f
05b83e79c558f9cd
5ce4af1c8cafba08
c7761d3279a86c7b
699e927fd77b2a9e
44d7f062b4f51bb0
19dc54a73e5774af
cd2536e0a5524da0
7430a6286cc03fce
a327b505d3d7814d
3cd45117104ec412
e38f62d64a4127f2
a059861b0145793b
c341aa0f4f91e19a
184339d28c95c0f5
7e64d11b9f66e73c
6dc20e4ce6264267
29675f2306a35504
debb0ef5e140372b
8245b87344c143e0
a70d106fbaadeb69
c0ecd9fa2e4d1002
26234296f42a660c
517440b77d2e47ab
cfddcbca64b567fb
9c6c2737a4ff1b26
8ade8cbe0d044b44
33029d8fb543e9b8
30d855f854d7e838
259e77f82cf81ed8
417297f4d258733f
7eb2c3ebb80bb999
b80868f876da7fdf
32df0a7c499b4ba8
8e30291b77e68a70
7da10eac5a91dc72
e01c06970a042dd5
f5c8345b7c56f6d4
2dbc1d0fdec4ed31
84f67bebbd278ca8
16d30f6c6175ba84
93d68f0c2ad731b5
1368d208a03d831f
33cf43b44d3064c4
745f3c1cb0bdb9fa
cd8cda62b3bc4b39
70e779f8c12e20af
03efac484565e759
a8a95cbaad6c8db3
9f25772e7d7c2479
54c6b349ed889332
653346384526a865
ecb14d78c9c07281
011d471524a8890f
845132665608c185
2cac39d0e77c1506

View File

@ -0,0 +1,7 @@
#!/bin/bash
SOURCE="scrambler_64b_tb.v"
SOURCE+=" ../jesd204_common/jesd204_scrambler_64b.v"
cd `dirname $0`
source run_tb.sh

View File

@ -0,0 +1,145 @@
//
// The ADI JESD204 Core is released under the following license, which is
// different than all other HDL cores in this repository.
//
// Please read this, and understand the freedoms and responsibilities you have
// by using this source code/core.
//
// The JESD204 HDL, is copyright © 2016-2017 Analog Devices Inc.
//
// This core is free software, you can use run, copy, study, change, ask
// questions about and improve this core. Distribution of source, or resulting
// binaries (including those inside an FPGA or ASIC) require you to release the
// source of the entire project (excluding the system libraries provide by the
// tools/compiler/FPGA vendor). These are the terms of the GNU General Public
// License version 2 as published by the Free Software Foundation.
//
// This core is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
// A PARTICULAR PURPOSE. See the GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License version 2
// along with this source code, and binary. If not, see
// <http://www.gnu.org/licenses/>.
//
// Commercial licenses (with commercial support) of this JESD204 core are also
// available under terms different than the General Public License. (e.g. they
// do not require you to accompany any image (FPGA or ASIC) using the JESD204
// core with any corresponding source code.) For these alternate terms you must
// purchase a license from Analog Devices Technology Licensing Office. Users
// interested in such a license should contact jesd204-licensing@analog.com for
// more information. This commercial license is sub-licensable (if you purchase
// chips from Analog Devices, incorporate them into your PCB level product, and
// purchase a JESD204 license, end users of your product will also have a
// license to use this core in a commercial setting without releasing their
// source code).
//
// In addition, we kindly ask you to acknowledge ADI in any program, application
// or publication in which you use this JESD204 HDL core. (You are not required
// to do so; it is up to your common sense to decide whether you want to comply
// with this request or not.) For general publications, we suggest referencing :
// The design and implementation of the JESD204 HDL Core used in this project
// is copyright © 2016-2017, Analog Devices, Inc.
//
`timescale 1ns/100ps
module scrambler_64b_tb;
parameter VCD_FILE = "scrambler_64b_tb.vcd";
`include "tb_base.v"
reg failed_t1 = 1'b0;
reg failed_t2 = 1'b0;
// Test scrambler against descrambler
//
// Descrambled data should match the input of the scrambler.
reg [63:0] data_in = 'h0;
reg [63:0] data_out_expected;
wire [63:0] data_scrambled;
wire [63:0] data_out;
always @(posedge clk) begin
if (reset == 1'b1) begin
data_in <= 'h0001020304050607;
end else begin
data_in <= data_in + {8{8'h08}};
end
end
jesd204_scrambler_64b #(
.DESCRAMBLE(0)
) i_scrambler (
.clk(clk),
.reset(reset),
.enable(1'b1),
.data_in(data_in),
.data_out(data_scrambled)
);
jesd204_scrambler_64b #(
.DESCRAMBLE(1)
) i_descrambler (
.clk(clk),
.reset(reset),
.enable(1'b1),
.data_in(data_scrambled),
.data_out(data_out)
);
always @(posedge clk) begin
if (data_in != data_out && failed_t1 == 1'b0) begin
failed_t1 <= 1'b1;
end
end
// Test descrambler against reference data
//
// Check if descrambler can synchronize and a stream captured from
// a scrambler output. The descrambled data stream should match the input of
// the scrambler.
reg [63:0] descrambler_data_in = 'h0;
reg [63:0] data_ref = 'h0;
wire[63:0] descrambler_data_out;
integer i;
reg [63:0] scrambler_64b_input [0:993];
reg [63:0] scrambler_64b_output [0:993];
reg t2_enable = 1'b0;
initial begin
$readmemh("scrambler_64b_input.txt", scrambler_64b_input); // Input to a scrambler
$readmemh("scrambler_64b_output.txt", scrambler_64b_output); // Output of a scrambler
@(negedge reset);
@(posedge clk);
for (i=0;i<994;i=i+1) begin
@(posedge clk);
descrambler_data_in <= scrambler_64b_output[i];
data_ref <= scrambler_64b_input[i];
if (i==1) t2_enable <= 1'b1;
if (i==993) t2_enable <= 1'b0;
end
end
jesd204_scrambler_64b #(
.DESCRAMBLE(1)
) i_descrambler2 (
.clk(clk),
.reset(reset),
.enable(1'b1),
.data_in(descrambler_data_in),
.data_out(descrambler_data_out)
);
always @(posedge clk) begin
if (data_ref != descrambler_data_out && failed_t2 == 1'b0 && t2_enable) begin
failed_t2 <= 1'b1;
end
end
always @(posedge clk) begin
failed <= failed_t1 || failed_t2;
end
endmodule