OpenCores
URL https://opencores.org/ocsvn/cheap_ethernet/cheap_ethernet/trunk

Subversion Repositories cheap_ethernet

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 2 to Rev 3
    Reverse comparison

Rev 2 → Rev 3

/cheap_ethernet/trunk/FPGAUDP/FPGAUDP.exe Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream
cheap_ethernet/trunk/FPGAUDP/FPGAUDP.exe Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: cheap_ethernet/trunk/FPGAUDP/main.pas =================================================================== --- cheap_ethernet/trunk/FPGAUDP/main.pas (nonexistent) +++ cheap_ethernet/trunk/FPGAUDP/main.pas (revision 3) @@ -0,0 +1,97 @@ +unit main; + +interface + +uses + Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, + Dialogs, StdCtrls, IdUDPClient, IdBaseComponent, IdComponent, IdUDPBase, + IdUDPServer, IdSocketHandle, Math, IdTCPServer, IdTCPConnection, + IdTCPClient; + +type + TForm1 = class(TForm) + IdUDPServer1: TIdUDPServer; + Memo1: TMemo; + IdUDPClient1: TIdUDPClient; + Button1: TButton; + Edit1: TEdit; + Label1: TLabel; + Button2: TButton; + Button3: TButton; + Button5: TButton; + Button4: TButton; + Button6: TButton; + procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream; + ABinding: TIdSocketHandle); + procedure ButtonsClick(Sender: TObject); + procedure FormShow(Sender: TObject); + private + { Private declarations } + public + { Public declarations } + end; + +var + Form1: TForm1; + +implementation + +{$R *.dfm} + +var + cnt: Integer = 0; + +const + CmdDone = 0; + CmdStatus = 1; + CmdLEDCtrl = 2; + CmdSetConfig = 3; + CmdSwChanged = 4; + CmdDataEcho = 5; + + +procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream; + ABinding: TIdSocketHandle); +var + S, T: String; + i, l: Integer; +begin + Memo1.Lines.Add(IntToStr (cnt) + ') Received ' + IntToStr (AData.Size) + ' bytes:'); + cnt := cnt + 1; + l := min (AData.Size, 32); + SetLength (S, l); + AData.Read (S[1], l); + T := ''; + for i := 0 to l - 1 do + T := T + IntToHex (Ord (S[i + 1]), 2) + ' '; + Memo1.Lines.Add (T + #13#10); +end; + +procedure TForm1.FormShow(Sender: TObject); +begin + IdUDPServer1.Active := True; +end; + +procedure TForm1.ButtonsClick(Sender: TObject); +var + S, T: String; + i: Integer; +begin + cnt := cnt + 1; + IdUDPClient1.Host := Edit1.Text; + case (TButton(Sender).Tag) of + 0: S := Chr(CmdLEDCtrl) + #1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0; + 1: S := Chr(CmdLEDCtrl) + #0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0; + 2: S := Chr(CmdSetConfig) + #1#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0; + 3: S := Chr(CmdSetConfig) + #0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0; + 4: S := Chr(CmdStatus) + #0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0#0; + 5: S := Chr(CmdDataEcho) + #1#2#3#4#5#6#7#8#9#10#11#12#13#14#15#16#17; + end; + for i := 0 to Length (S) - 1 do + T := T + IntToHex (Ord (S[i + 1]), 2) + ' '; + Memo1.Lines.Add(IntToStr (cnt) + ') Sending ' + IntToStr (Length (S)) + ' bytes:'); + Memo1.Lines.Add (T); + IdUDPClient1.Send (S); +end; + +end. Index: cheap_ethernet/trunk/FPGAUDP/main.dfm =================================================================== --- cheap_ethernet/trunk/FPGAUDP/main.dfm (nonexistent) +++ cheap_ethernet/trunk/FPGAUDP/main.dfm (revision 3) @@ -0,0 +1,119 @@ +object Form1: TForm1 + Left = 192 + Top = 114 + Width = 763 + Height = 560 + Caption = 'FPGA Cheap Ethernet test' + Color = clBtnFace + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + OldCreateOrder = False + OnShow = FormShow + DesignSize = ( + 755 + 526) + PixelsPerInch = 96 + TextHeight = 13 + object Label1: TLabel + Left = 24 + Top = 20 + Width = 69 + Height = 13 + Caption = 'Destination IP ' + end + object Memo1: TMemo + Left = 8 + Top = 52 + Width = 739 + Height = 464 + Anchors = [akLeft, akTop, akRight, akBottom] + TabOrder = 0 + end + object Button1: TButton + Left = 244 + Top = 16 + Width = 75 + Height = 25 + Caption = 'Led ON' + TabOrder = 1 + OnClick = ButtonsClick + end + object Edit1: TEdit + Left = 104 + Top = 16 + Width = 121 + Height = 21 + TabOrder = 2 + Text = '192.168.1.44' + end + object Button2: TButton + Tag = 1 + Left = 328 + Top = 16 + Width = 75 + Height = 25 + Caption = 'Led OFF' + TabOrder = 3 + OnClick = ButtonsClick + end + object Button3: TButton + Tag = 5 + Left = 664 + Top = 16 + Width = 75 + Height = 25 + Caption = 'Echo' + TabOrder = 4 + OnClick = ButtonsClick + end + object Button5: TButton + Tag = 4 + Left = 580 + Top = 16 + Width = 75 + Height = 25 + Caption = 'Get Status' + TabOrder = 5 + OnClick = ButtonsClick + end + object Button4: TButton + Tag = 2 + Left = 412 + Top = 16 + Width = 75 + Height = 25 + Caption = 'Autosend ON' + TabOrder = 6 + OnClick = ButtonsClick + end + object Button6: TButton + Tag = 3 + Left = 496 + Top = 16 + Width = 75 + Height = 25 + Caption = 'Autosend OFF' + TabOrder = 7 + OnClick = ButtonsClick + end + object IdUDPServer1: TIdUDPServer + Bindings = < + item + IP = '0.0.0.0' + Port = 1024 + end> + DefaultPort = 0 + OnUDPRead = IdUDPServer1UDPRead + Left = 204 + Top = 64 + end + object IdUDPClient1: TIdUDPClient + Host = '192.168.1.44' + Port = 1024 + Left = 152 + Top = 64 + end +end Index: cheap_ethernet/trunk/FPGAUDP/FPGAUDP.dpr =================================================================== --- cheap_ethernet/trunk/FPGAUDP/FPGAUDP.dpr (nonexistent) +++ cheap_ethernet/trunk/FPGAUDP/FPGAUDP.dpr (revision 3) @@ -0,0 +1,13 @@ +program FPGAUDP; + +uses + Forms, + main in 'main.pas' {Form1}; + +{$R *.res} + +begin + Application.Initialize; + Application.CreateForm(TForm1, Form1); + Application.Run; +end. Index: cheap_ethernet/trunk/FPGAUDP/FPGAUDP.res =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: cheap_ethernet/trunk/FPGAUDP/FPGAUDP.res =================================================================== --- cheap_ethernet/trunk/FPGAUDP/FPGAUDP.res (nonexistent) +++ cheap_ethernet/trunk/FPGAUDP/FPGAUDP.res (revision 3)
cheap_ethernet/trunk/FPGAUDP/FPGAUDP.res Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: cheap_ethernet/trunk/FPGAUDP/main.dcu =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: cheap_ethernet/trunk/FPGAUDP/main.dcu =================================================================== --- cheap_ethernet/trunk/FPGAUDP/main.dcu (nonexistent) +++ cheap_ethernet/trunk/FPGAUDP/main.dcu (revision 3)
cheap_ethernet/trunk/FPGAUDP/main.dcu Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: cheap_ethernet/trunk/docs/transformer1.PNG =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: cheap_ethernet/trunk/docs/transformer1.PNG =================================================================== --- cheap_ethernet/trunk/docs/transformer1.PNG (nonexistent) +++ cheap_ethernet/trunk/docs/transformer1.PNG (revision 3)
cheap_ethernet/trunk/docs/transformer1.PNG Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: cheap_ethernet/trunk/docs/transformer2.PNG =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: cheap_ethernet/trunk/docs/transformer2.PNG =================================================================== --- cheap_ethernet/trunk/docs/transformer2.PNG (nonexistent) +++ cheap_ethernet/trunk/docs/transformer2.PNG (revision 3)
cheap_ethernet/trunk/docs/transformer2.PNG Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: cheap_ethernet/trunk/Ethernet_test/ipcore_dir/_xmsgs/pn_parser.xmsgs =================================================================== --- cheap_ethernet/trunk/Ethernet_test/ipcore_dir/_xmsgs/pn_parser.xmsgs (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/ipcore_dir/_xmsgs/pn_parser.xmsgs (revision 3) @@ -0,0 +1,12 @@ + + + + + + + + + + + + Index: cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX.v =================================================================== --- cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX.v (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX.v (revision 3) @@ -0,0 +1,487 @@ +/******************************************************************************* +* This file is owned and controlled by Xilinx and must be used solely * +* for design, simulation, implementation and creation of design files * +* limited to Xilinx devices or technologies. Use with non-Xilinx * +* devices or technologies is expressly prohibited and immediately * +* terminates your license. * +* * +* XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" SOLELY * +* FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR XILINX DEVICES. BY * +* PROVIDING THIS DESIGN, CODE, OR INFORMATION AS ONE POSSIBLE * +* IMPLEMENTATION OF THIS FEATURE, APPLICATION OR STANDARD, XILINX IS * +* MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION IS FREE FROM ANY * +* CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE FOR OBTAINING ANY * +* RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY * +* DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE * +* IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR * +* REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF * +* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * +* PARTICULAR PURPOSE. * +* * +* Xilinx products are not intended for use in life support appliances, * +* devices, or systems. Use in such applications are expressly * +* prohibited. * +* * +* (c) Copyright 1995-2012 Xilinx, Inc. * +* All rights reserved. * +*******************************************************************************/ +// You must compile the wrapper file FIFORX.v when simulating +// the core, FIFORX. When compiling the wrapper file, be sure to +// reference the XilinxCoreLib Verilog simulation library. For detailed +// instructions, please refer to the "CORE Generator Help". + +// The synthesis directives "translate_off/translate_on" specified below are +// supported by Xilinx, Mentor Graphics and Synplicity synthesis +// tools. Ensure they are correct for your synthesis tool(s). + +`timescale 1ns/1ps + +module FIFORX( + rst, + wr_clk, + rd_clk, + din, + wr_en, + rd_en, + dout, + full, + empty +); + +input rst; +input wr_clk; +input rd_clk; +input [7 : 0] din; +input wr_en; +input rd_en; +output [7 : 0] dout; +output full; +output empty; + +// synthesis translate_off + + FIFO_GENERATOR_V9_1 #( + .C_ADD_NGC_CONSTRAINT(0), + .C_APPLICATION_TYPE_AXIS(0), + .C_APPLICATION_TYPE_RACH(0), + .C_APPLICATION_TYPE_RDCH(0), + .C_APPLICATION_TYPE_WACH(0), + .C_APPLICATION_TYPE_WDCH(0), + .C_APPLICATION_TYPE_WRCH(0), + .C_AXI_ADDR_WIDTH(32), + .C_AXI_ARUSER_WIDTH(1), + .C_AXI_AWUSER_WIDTH(1), + .C_AXI_BUSER_WIDTH(1), + .C_AXI_DATA_WIDTH(64), + .C_AXI_ID_WIDTH(4), + .C_AXI_RUSER_WIDTH(1), + .C_AXI_TYPE(0), + .C_AXI_WUSER_WIDTH(1), + .C_AXIS_TDATA_WIDTH(64), + .C_AXIS_TDEST_WIDTH(4), + .C_AXIS_TID_WIDTH(8), + .C_AXIS_TKEEP_WIDTH(4), + .C_AXIS_TSTRB_WIDTH(4), + .C_AXIS_TUSER_WIDTH(4), + .C_AXIS_TYPE(0), + .C_COMMON_CLOCK(0), + .C_COUNT_TYPE(0), + .C_DATA_COUNT_WIDTH(10), + .C_DEFAULT_VALUE("BlankString"), + .C_DIN_WIDTH(8), + .C_DIN_WIDTH_AXIS(1), + .C_DIN_WIDTH_RACH(32), + .C_DIN_WIDTH_RDCH(64), + .C_DIN_WIDTH_WACH(32), + .C_DIN_WIDTH_WDCH(64), + .C_DIN_WIDTH_WRCH(2), + .C_DOUT_RST_VAL("0"), + .C_DOUT_WIDTH(8), + .C_ENABLE_RLOCS(0), + .C_ENABLE_RST_SYNC(1), + .C_ERROR_INJECTION_TYPE(0), + .C_ERROR_INJECTION_TYPE_AXIS(0), + .C_ERROR_INJECTION_TYPE_RACH(0), + .C_ERROR_INJECTION_TYPE_RDCH(0), + .C_ERROR_INJECTION_TYPE_WACH(0), + .C_ERROR_INJECTION_TYPE_WDCH(0), + .C_ERROR_INJECTION_TYPE_WRCH(0), + .C_FAMILY("spartan3"), + .C_FULL_FLAGS_RST_VAL(1), + .C_HAS_ALMOST_EMPTY(0), + .C_HAS_ALMOST_FULL(0), + .C_HAS_AXI_ARUSER(0), + .C_HAS_AXI_AWUSER(0), + .C_HAS_AXI_BUSER(0), + .C_HAS_AXI_RD_CHANNEL(0), + .C_HAS_AXI_RUSER(0), + .C_HAS_AXI_WR_CHANNEL(0), + .C_HAS_AXI_WUSER(0), + .C_HAS_AXIS_TDATA(0), + .C_HAS_AXIS_TDEST(0), + .C_HAS_AXIS_TID(0), + .C_HAS_AXIS_TKEEP(0), + .C_HAS_AXIS_TLAST(0), + .C_HAS_AXIS_TREADY(1), + .C_HAS_AXIS_TSTRB(0), + .C_HAS_AXIS_TUSER(0), + .C_HAS_BACKUP(0), + .C_HAS_DATA_COUNT(0), + .C_HAS_DATA_COUNTS_AXIS(0), + .C_HAS_DATA_COUNTS_RACH(0), + .C_HAS_DATA_COUNTS_RDCH(0), + .C_HAS_DATA_COUNTS_WACH(0), + .C_HAS_DATA_COUNTS_WDCH(0), + .C_HAS_DATA_COUNTS_WRCH(0), + .C_HAS_INT_CLK(0), + .C_HAS_MASTER_CE(0), + .C_HAS_MEMINIT_FILE(0), + .C_HAS_OVERFLOW(0), + .C_HAS_PROG_FLAGS_AXIS(0), + .C_HAS_PROG_FLAGS_RACH(0), + .C_HAS_PROG_FLAGS_RDCH(0), + .C_HAS_PROG_FLAGS_WACH(0), + .C_HAS_PROG_FLAGS_WDCH(0), + .C_HAS_PROG_FLAGS_WRCH(0), + .C_HAS_RD_DATA_COUNT(0), + .C_HAS_RD_RST(0), + .C_HAS_RST(1), + .C_HAS_SLAVE_CE(0), + .C_HAS_SRST(0), + .C_HAS_UNDERFLOW(0), + .C_HAS_VALID(0), + .C_HAS_WR_ACK(0), + .C_HAS_WR_DATA_COUNT(0), + .C_HAS_WR_RST(0), + .C_IMPLEMENTATION_TYPE(2), + .C_IMPLEMENTATION_TYPE_AXIS(1), + .C_IMPLEMENTATION_TYPE_RACH(1), + .C_IMPLEMENTATION_TYPE_RDCH(1), + .C_IMPLEMENTATION_TYPE_WACH(1), + .C_IMPLEMENTATION_TYPE_WDCH(1), + .C_IMPLEMENTATION_TYPE_WRCH(1), + .C_INIT_WR_PNTR_VAL(0), + .C_INTERFACE_TYPE(0), + .C_MEMORY_TYPE(1), + .C_MIF_FILE_NAME("BlankString"), + .C_MSGON_VAL(1), + .C_OPTIMIZATION_MODE(0), + .C_OVERFLOW_LOW(0), + .C_PRELOAD_LATENCY(1), + .C_PRELOAD_REGS(0), + .C_PRIM_FIFO_TYPE("1kx18"), + .C_PROG_EMPTY_THRESH_ASSERT_VAL(2), + .C_PROG_EMPTY_THRESH_ASSERT_VAL_AXIS(1022), + .C_PROG_EMPTY_THRESH_ASSERT_VAL_RACH(1022), + .C_PROG_EMPTY_THRESH_ASSERT_VAL_RDCH(1022), + .C_PROG_EMPTY_THRESH_ASSERT_VAL_WACH(1022), + .C_PROG_EMPTY_THRESH_ASSERT_VAL_WDCH(1022), + .C_PROG_EMPTY_THRESH_ASSERT_VAL_WRCH(1022), + .C_PROG_EMPTY_THRESH_NEGATE_VAL(3), + .C_PROG_EMPTY_TYPE(0), + .C_PROG_EMPTY_TYPE_AXIS(0), + .C_PROG_EMPTY_TYPE_RACH(0), + .C_PROG_EMPTY_TYPE_RDCH(0), + .C_PROG_EMPTY_TYPE_WACH(0), + .C_PROG_EMPTY_TYPE_WDCH(0), + .C_PROG_EMPTY_TYPE_WRCH(0), + .C_PROG_FULL_THRESH_ASSERT_VAL(1021), + .C_PROG_FULL_THRESH_ASSERT_VAL_AXIS(1023), + .C_PROG_FULL_THRESH_ASSERT_VAL_RACH(1023), + .C_PROG_FULL_THRESH_ASSERT_VAL_RDCH(1023), + .C_PROG_FULL_THRESH_ASSERT_VAL_WACH(1023), + .C_PROG_FULL_THRESH_ASSERT_VAL_WDCH(1023), + .C_PROG_FULL_THRESH_ASSERT_VAL_WRCH(1023), + .C_PROG_FULL_THRESH_NEGATE_VAL(1020), + .C_PROG_FULL_TYPE(0), + .C_PROG_FULL_TYPE_AXIS(0), + .C_PROG_FULL_TYPE_RACH(0), + .C_PROG_FULL_TYPE_RDCH(0), + .C_PROG_FULL_TYPE_WACH(0), + .C_PROG_FULL_TYPE_WDCH(0), + .C_PROG_FULL_TYPE_WRCH(0), + .C_RACH_TYPE(0), + .C_RD_DATA_COUNT_WIDTH(10), + .C_RD_DEPTH(1024), + .C_RD_FREQ(1), + .C_RD_PNTR_WIDTH(10), + .C_RDCH_TYPE(0), + .C_REG_SLICE_MODE_AXIS(0), + .C_REG_SLICE_MODE_RACH(0), + .C_REG_SLICE_MODE_RDCH(0), + .C_REG_SLICE_MODE_WACH(0), + .C_REG_SLICE_MODE_WDCH(0), + .C_REG_SLICE_MODE_WRCH(0), + .C_SYNCHRONIZER_STAGE(2), + .C_UNDERFLOW_LOW(0), + .C_USE_COMMON_OVERFLOW(0), + .C_USE_COMMON_UNDERFLOW(0), + .C_USE_DEFAULT_SETTINGS(0), + .C_USE_DOUT_RST(1), + .C_USE_ECC(0), + .C_USE_ECC_AXIS(0), + .C_USE_ECC_RACH(0), + .C_USE_ECC_RDCH(0), + .C_USE_ECC_WACH(0), + .C_USE_ECC_WDCH(0), + .C_USE_ECC_WRCH(0), + .C_USE_EMBEDDED_REG(0), + .C_USE_FIFO16_FLAGS(0), + .C_USE_FWFT_DATA_COUNT(0), + .C_VALID_LOW(0), + .C_WACH_TYPE(0), + .C_WDCH_TYPE(0), + .C_WR_ACK_LOW(0), + .C_WR_DATA_COUNT_WIDTH(10), + .C_WR_DEPTH(1024), + .C_WR_DEPTH_AXIS(1024), + .C_WR_DEPTH_RACH(16), + .C_WR_DEPTH_RDCH(1024), + .C_WR_DEPTH_WACH(16), + .C_WR_DEPTH_WDCH(1024), + .C_WR_DEPTH_WRCH(16), + .C_WR_FREQ(1), + .C_WR_PNTR_WIDTH(10), + .C_WR_PNTR_WIDTH_AXIS(10), + .C_WR_PNTR_WIDTH_RACH(4), + .C_WR_PNTR_WIDTH_RDCH(10), + .C_WR_PNTR_WIDTH_WACH(4), + .C_WR_PNTR_WIDTH_WDCH(10), + .C_WR_PNTR_WIDTH_WRCH(4), + .C_WR_RESPONSE_LATENCY(1), + .C_WRCH_TYPE(0) + ) + inst ( + .RST(rst), + .WR_CLK(wr_clk), + .RD_CLK(rd_clk), + .DIN(din), + .WR_EN(wr_en), + .RD_EN(rd_en), + .DOUT(dout), + .FULL(full), + .EMPTY(empty), + .BACKUP(), + .BACKUP_MARKER(), + .CLK(), + .SRST(), + .WR_RST(), + .RD_RST(), + .PROG_EMPTY_THRESH(), + .PROG_EMPTY_THRESH_ASSERT(), + .PROG_EMPTY_THRESH_NEGATE(), + .PROG_FULL_THRESH(), + .PROG_FULL_THRESH_ASSERT(), + .PROG_FULL_THRESH_NEGATE(), + .INT_CLK(), + .INJECTDBITERR(), + .INJECTSBITERR(), + .ALMOST_FULL(), + .WR_ACK(), + .OVERFLOW(), + .ALMOST_EMPTY(), + .VALID(), + .UNDERFLOW(), + .DATA_COUNT(), + .RD_DATA_COUNT(), + .WR_DATA_COUNT(), + .PROG_FULL(), + .PROG_EMPTY(), + .SBITERR(), + .DBITERR(), + .M_ACLK(), + .S_ACLK(), + .S_ARESETN(), + .M_ACLK_EN(), + .S_ACLK_EN(), + .S_AXI_AWID(), + .S_AXI_AWADDR(), + .S_AXI_AWLEN(), + .S_AXI_AWSIZE(), + .S_AXI_AWBURST(), + .S_AXI_AWLOCK(), + .S_AXI_AWCACHE(), + .S_AXI_AWPROT(), + .S_AXI_AWQOS(), + .S_AXI_AWREGION(), + .S_AXI_AWUSER(), + .S_AXI_AWVALID(), + .S_AXI_AWREADY(), + .S_AXI_WID(), + .S_AXI_WDATA(), + .S_AXI_WSTRB(), + .S_AXI_WLAST(), + .S_AXI_WUSER(), + .S_AXI_WVALID(), + .S_AXI_WREADY(), + .S_AXI_BID(), + .S_AXI_BRESP(), + .S_AXI_BUSER(), + .S_AXI_BVALID(), + .S_AXI_BREADY(), + .M_AXI_AWID(), + .M_AXI_AWADDR(), + .M_AXI_AWLEN(), + .M_AXI_AWSIZE(), + .M_AXI_AWBURST(), + .M_AXI_AWLOCK(), + .M_AXI_AWCACHE(), + .M_AXI_AWPROT(), + .M_AXI_AWQOS(), + .M_AXI_AWREGION(), + .M_AXI_AWUSER(), + .M_AXI_AWVALID(), + .M_AXI_AWREADY(), + .M_AXI_WID(), + .M_AXI_WDATA(), + .M_AXI_WSTRB(), + .M_AXI_WLAST(), + .M_AXI_WUSER(), + .M_AXI_WVALID(), + .M_AXI_WREADY(), + .M_AXI_BID(), + .M_AXI_BRESP(), + .M_AXI_BUSER(), + .M_AXI_BVALID(), + .M_AXI_BREADY(), + .S_AXI_ARID(), + .S_AXI_ARADDR(), + .S_AXI_ARLEN(), + .S_AXI_ARSIZE(), + .S_AXI_ARBURST(), + .S_AXI_ARLOCK(), + .S_AXI_ARCACHE(), + .S_AXI_ARPROT(), + .S_AXI_ARQOS(), + .S_AXI_ARREGION(), + .S_AXI_ARUSER(), + .S_AXI_ARVALID(), + .S_AXI_ARREADY(), + .S_AXI_RID(), + .S_AXI_RDATA(), + .S_AXI_RRESP(), + .S_AXI_RLAST(), + .S_AXI_RUSER(), + .S_AXI_RVALID(), + .S_AXI_RREADY(), + .M_AXI_ARID(), + .M_AXI_ARADDR(), + .M_AXI_ARLEN(), + .M_AXI_ARSIZE(), + .M_AXI_ARBURST(), + .M_AXI_ARLOCK(), + .M_AXI_ARCACHE(), + .M_AXI_ARPROT(), + .M_AXI_ARQOS(), + .M_AXI_ARREGION(), + .M_AXI_ARUSER(), + .M_AXI_ARVALID(), + .M_AXI_ARREADY(), + .M_AXI_RID(), + .M_AXI_RDATA(), + .M_AXI_RRESP(), + .M_AXI_RLAST(), + .M_AXI_RUSER(), + .M_AXI_RVALID(), + .M_AXI_RREADY(), + .S_AXIS_TVALID(), + .S_AXIS_TREADY(), + .S_AXIS_TDATA(), + .S_AXIS_TSTRB(), + .S_AXIS_TKEEP(), + .S_AXIS_TLAST(), + .S_AXIS_TID(), + .S_AXIS_TDEST(), + .S_AXIS_TUSER(), + .M_AXIS_TVALID(), + .M_AXIS_TREADY(), + .M_AXIS_TDATA(), + .M_AXIS_TSTRB(), + .M_AXIS_TKEEP(), + .M_AXIS_TLAST(), + .M_AXIS_TID(), + .M_AXIS_TDEST(), + .M_AXIS_TUSER(), + .AXI_AW_INJECTSBITERR(), + .AXI_AW_INJECTDBITERR(), + .AXI_AW_PROG_FULL_THRESH(), + .AXI_AW_PROG_EMPTY_THRESH(), + .AXI_AW_DATA_COUNT(), + .AXI_AW_WR_DATA_COUNT(), + .AXI_AW_RD_DATA_COUNT(), + .AXI_AW_SBITERR(), + .AXI_AW_DBITERR(), + .AXI_AW_OVERFLOW(), + .AXI_AW_UNDERFLOW(), + .AXI_AW_PROG_FULL(), + .AXI_AW_PROG_EMPTY(), + .AXI_W_INJECTSBITERR(), + .AXI_W_INJECTDBITERR(), + .AXI_W_PROG_FULL_THRESH(), + .AXI_W_PROG_EMPTY_THRESH(), + .AXI_W_DATA_COUNT(), + .AXI_W_WR_DATA_COUNT(), + .AXI_W_RD_DATA_COUNT(), + .AXI_W_SBITERR(), + .AXI_W_DBITERR(), + .AXI_W_OVERFLOW(), + .AXI_W_UNDERFLOW(), + .AXI_B_INJECTSBITERR(), + .AXI_W_PROG_FULL(), + .AXI_W_PROG_EMPTY(), + .AXI_B_INJECTDBITERR(), + .AXI_B_PROG_FULL_THRESH(), + .AXI_B_PROG_EMPTY_THRESH(), + .AXI_B_DATA_COUNT(), + .AXI_B_WR_DATA_COUNT(), + .AXI_B_RD_DATA_COUNT(), + .AXI_B_SBITERR(), + .AXI_B_DBITERR(), + .AXI_B_OVERFLOW(), + .AXI_B_UNDERFLOW(), + .AXI_AR_INJECTSBITERR(), + .AXI_B_PROG_FULL(), + .AXI_B_PROG_EMPTY(), + .AXI_AR_INJECTDBITERR(), + .AXI_AR_PROG_FULL_THRESH(), + .AXI_AR_PROG_EMPTY_THRESH(), + .AXI_AR_DATA_COUNT(), + .AXI_AR_WR_DATA_COUNT(), + .AXI_AR_RD_DATA_COUNT(), + .AXI_AR_SBITERR(), + .AXI_AR_DBITERR(), + .AXI_AR_OVERFLOW(), + .AXI_AR_UNDERFLOW(), + .AXI_AR_PROG_FULL(), + .AXI_AR_PROG_EMPTY(), + .AXI_R_INJECTSBITERR(), + .AXI_R_INJECTDBITERR(), + .AXI_R_PROG_FULL_THRESH(), + .AXI_R_PROG_EMPTY_THRESH(), + .AXI_R_DATA_COUNT(), + .AXI_R_WR_DATA_COUNT(), + .AXI_R_RD_DATA_COUNT(), + .AXI_R_SBITERR(), + .AXI_R_DBITERR(), + .AXI_R_OVERFLOW(), + .AXI_R_UNDERFLOW(), + .AXIS_INJECTSBITERR(), + .AXI_R_PROG_FULL(), + .AXI_R_PROG_EMPTY(), + .AXIS_INJECTDBITERR(), + .AXIS_PROG_FULL_THRESH(), + .AXIS_PROG_EMPTY_THRESH(), + .AXIS_DATA_COUNT(), + .AXIS_WR_DATA_COUNT(), + .AXIS_RD_DATA_COUNT(), + .AXIS_SBITERR(), + .AXIS_DBITERR(), + .AXIS_OVERFLOW(), + .AXIS_UNDERFLOW(), + .AXIS_PROG_FULL(), + .AXIS_PROG_EMPTY() + ); + +// synthesis translate_on + +endmodule Index: cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX.ncf =================================================================== Index: cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX.ngc =================================================================== --- cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX.ngc (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX.ngc (revision 3) @@ -0,0 +1,3 @@ +XILINX-XDB 0.1 STUB 0.1 ASCII +XILINX-XDM V1.6e +$27a44<,[o}e~g`n;"2*73?(-;0<85?012305=789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456638;87<>5IORVP?GCL[K757>112924?OIX\^1MIJ]B=;94;7538<1EC^ZT;FJE972294:>6?9:HLSQQ112922?IR\Y__6IAN<0794;7438<1CXZ_UU8GKG:6=3:5=6<>1:09MKVR\3NB\L2>:1<25>4=AGZ^X7JFPC>2>586:281CXZ_UU8GKUG;93:5=?5=:NWWTPR=LFZI0<4?>e90w067my{9<5#;4:76057<>;1=59599847?=2598:047GAPTV9`lh;?3:5=?57:NWWTPR=lf0:4?>09:0>?780805;:4974:<>GCL[K7<364AEFQE97902KOH_O32?:8EABUI59546OKDSC?0;>720MIJ]A=5=<>GCL[K743o4AEFQE9?=8720MIJ]A=;=<>GCL[H7<364AEFQF97902KOH_L32?:8EABUJ59546OKDS@?0;>720MIJ]B=5=<>GCL[H743o4AEFQF9?=8720MIJ]B=;=7>GKD01J_T@L_SGD<>DR[VCEJB?4C39@A44EKCK90OA\6;BMNILRSMM;?7NA]E^EFJ@TF\@EESD@IO69@V@GSMM;0H?5KI79GMD:76>1OEL2>0?58@LG;984<7IGN<00=3>BNI5;82:5KI@>20;?69GMD:6=7<0HDO31?48@LG;:7<0HDO33?48@LG;<7<0HDO35?48@LG;>7<0HDO37?48@LG;07<0HDO39?48@LD;87=0HDL311<4?AOE48;5;6JFB=31:2=CAK6:?394DH@?518>3MCI0<;50?58@LD;9<4=7IGM<0<5?AOE4;4=7IGM<2<5?AOE4=4=7IGM<4<5?AOE4?4=7IGM<6<5?AOE414=7IGM<8<4?AOWI5:556JFP@>2>5803MC[M1?17:FJTG:7601OE]L31;2=3>BNXK6:2;5KO@>3:2=CGH6:<394DNC?54803MEJ0<<17:FLE9746>1OCL2>4?;8@JG;9<0;2:5KO@>21;069GKG:6;7=0HBL315<:?AIE48?1<394DN@?50813MEI0<09;EMA87813MEI0>09;EMA81813MEI0809;EMA83813MEI0:09;EMA8=813MEI0408;EMSE96912ND\L2>:1<4?AIWI5;5;6J@PC>3:<=CGYH7=7>17:FLTG:66:1NBL=4EO@1?C253O297KJ<;GF@0>@CKL90JI^;;GFSA3=AAOEYT<>m2:DJBJT_$ocmcRijndpbpjtX~0U: vmPaef\jbeXkfdxxofnu?3(fYfxyfbolzfoo]w}ucXiqcx1="l_`rshlef|`eeSywe^pbgm;7$jUj|}bfc`vjkkYsqyoT~img=1.`[dvwd`ijxdaa_u{saZqfka7; nQnpqnjgdrnggUu}kPweak95*dWhz{`dmnthmm[qwmV}yoe3?,b]b|lYflmxT{dj{h<11(fYfp`Uj~x}jr^uj`qn:9%iTmugPavwpawYpam~c1<"l_`zj[gstm{U|eizg=0.`[d~nWmkmRyfduj>21*dWhrbSdjPwhfwl82+kVkseR|zsdp\slbs`4;'oRowi^vzt`;7$jUjtdQxurgq[roc|a7: nQnxhq\pagsiV}bhyf265.`[d~n{V~oi~zPwhfwl82+kVkse~Q{ie]tmaro51&hSlvfs^vha`vX`nd0:#c^c{mvYs{}xiSzgkti?7(fYfp`yTxx}jr^uj`qn:<%iTmug|_u{sa86+kVida`aa_bnlgn;7$jUhcx`{_u{sa86+kVnjxlQlotlw[roc|a7:+kVnbbRyfduj\e}ot58&hSiga_vkgpmYuijb6??"l_ekm[roc|aUyhnf265.`[aoiW~coxeQxabj>77*dWmceSzgkti]t`fn:>=&hSiga_vkgpmYpzjb6>!mPdnww[wusWkg1="l_emvpZqnl}b64!mPeocah`Yudfix1="l_dlbficXzz~Tt`l=0.`[`tug{Ubbgklthmm[qwm4:'oRk}rnp\mklbk}cdbRzvpd]b|lu:8%iTi|`r^kmn`esafdTxt~j_sc`l86+kVoy~b|PiohfgqohfV~r|hQ}dbj>4)eXm{xd~RgajdawmjhX|pznSzolh<2/gZcuzfxTecdjcukljZr~xlU|hnf20-a\awthzVcefhm{inl\p|vbW~xhd0>#c^dbilj~5zzj~yoa3-a\bpjkWofjk~Q}su]uei;6$jUcm~QnllmppZcjx}s64)eX`hyTmug|_unbwq;7$jUcm~Qnxhq\pwcflp7: nQgar]b|luX|z~yn0>#c^jbwZgazUy~k}=1.`[mgtWkkhgx~20-a\lduXlh~jSnaznu?3(fYoizUomyoPcnwmpvYfp`y6#c^jbwZbf|hUhcx`{s^ubgm;7$jUcm~Qkauc\gjsi|zU|hnf20-a\lduXlh~jSnaznuq\sweo59&hSeo|_hlw[fjl59&hSeo|_lcpp`tXkl7; nQgar]nahoia}Umeak20-a\lduXgoyjaax=1.`[mgtWyxdkRhcafq\e}ot59&hSeo|_qplcZ`kinyT~lmg=1.`[mgtWyxdkRhcafq\vaeo59&hSeo|_qplcZ`kinyT{lmg=1.`[mgtWyxdkRhcafq\saeo59&hSeo|_qplcZ`kinyT{mg=1.`[mgtW{nThlzn_bmvjq;7$jUcm~Q}d^ppp86+kVbjR||t<3/gZnf{Vygm{kPcd?3(fYoizUx~~z20-a\lduX}gnn~kb`w<2/gZnf{V|j`dj20-a\lduX{Ujof3?,b]kevYpzVnjxlQlotlw95*dWakxSz|Prrv>4)eXadzgi`kat`vjkkYsqyo6>!mPilroahci|h~bccQ{yqg\e}ot58&hSdcldofjqgsafdTxt~j_sc`l87+kVcf|akbeovbpliiW}s{iR|kci?2(fYneyfnah`{aukljZr~xlU|mnf21-a\mhvkmdoexlzfoo]w}ucXmic1<"l_hosh`kbf}keb`Ptxrf[rtd`4;'oRgaiu]tvZvi|{U}ma3?,b]jjqcunhinSywe<2/gZkbefxrSywe<3/gZknnVlb`hQaalg>FigicZ~yeci#c^opcjhX~hf6=!mPoqvjil|f|`eeS`ake<2/gZiqm{lgczQcov?3(fYwzlfdmiQcaugmg|;6$jU{~hb`ae]qabu:8%iT|gb_gkekZr~xl7:gu?7,b]svjaXmdzuRzgrdqk[dutm{~Tzlb22-a\twi`Wlg{xtQ{hsgplZgt{lxS{oc_`zjw877:;&hS}|`g^gntqX|axneQnsrgqpZpfdVxjoe3>030/gZvugnUna}zv_ujqavnXizyn~yQyam]q`fn:9989 nQrne\ahvsqV~c~h}g_`qpawrX~hfT{lmg=0216)eXx{elShctx]wlwct`Vkxh|{_wco[rbd`4;;>?"l_qplcZcjx}sTxe|jsi]bwvcu|V|j`Ry}ci?2474+kVzycjQjmqvz[qnumzbTbhintd]uei;4$jU{~biPelrw}Zr~xl7; nQrne\ahvsqV~r|hQnxhq>4)eXx{elShctx]w}ucXzhic1="l_qplcZcjx}sTxt~j_sf`l86+kVzycjQjmqvz[qwmV}joe3?,b]svjaXmdzuRzvpd]t`fn:8%iT|ah_dosp|YsqyoT{mg=1.`[uthoVl~`aQ{hsgplZgt{lxS{oc=0215)eXx{elSk{cl^vkv`uoWhyxizPv`n\e}ot58:9?!mPpsmd[cskdV~c~h}g_`qpawrX~hfT~lmg=0217)eXx{elSk{cl^vkv`uoWhyxizPv`n\vaeo58:9?!mPpsmd[cskdV~c~h}g_`qpawrX~hfT{lmg=0217)eXx{elSk{cl^vkv`uoWhyxizPv`n\saeo58:9?!mPpsmd[cskdV~c~h}g_`qpawrX~hfT{mg=0217)eXx{elSk{cl^vkv`uoWgolmykPv`n>5547$jU{~biPftno[qwm4:'oR~}of]eqijX|pznSlvfs<2/gZvugnUmyabPtxrf[wgd`4:'oR~}of]eqijX|pznSjlh<2/gZvugnUmyabPtxrf[rgd`4:'oR~}of]eqijX|pznSzjlh<2/gZvugnUmyabPtxrf[rtd`4:'oR|nci]w}uc:8%iT~iQkauc\gjsi|V}bhyf211.`[wbXllzd0??25.`[wbXn{oz1<"l_sf\tkruW~coxe3>0-a\vaeoW}s{i0>#c^pfcZukajoTabjj_`zjw86+kVxnkR}cibg\ijbbW{khd0>#c^pfcZukajoTabjj_sf`l86+kVxnkR}cibg\ijbbW~khd0>#c^pfcZukajoTabjj_vf`l86+kVxnkR}cibg\ijbbW~xhd0>#c^qzjfnuggcqiQ|t`ef97*dW|doihcov]okr;7$jU~hQlololjZiqm{lgcz3?,b]vw`YdgdgdbR{addpehjq:8%iTy~kPdddbqirX{l~eci|=1.`[pubWme~xR||t<3/gZstmVoho0>#c^wpaZcdkVkse~3?,b]vw`YbkjUymnf20-a\qvcXmjiT~img=1.`[pubWlihSzolh<2/gZstmVohoRykci?3(fYr{lUnonQxrbj>4)eX}zoTi`ljdegg[wc`59&hSx}j_gkek40Xnekl0>#c^wpaZ`pn}UomyoPcnwmp86+kV|j`djPlnu>4)eXhicSywe<2/gZqckaUu}k20-a\swYfkbUgcz3?,b]tvZbf|hUhcx`{_vkgpm;68%iT{Qkeqvk9465<%iT{Qkeqvk[d~n{4;;>9"l_vp\``vs`Vxjoe3>6-a\swYcmy~cSjlh<3361*dW~xThh~{h^ubgm;6>%iT{Qkeqvk[rbd`4;;>9"l_vp\``vs`V}yoe3>6-a\swYazl{6=!mPws]sjqtX`nd0??,b]tvZvi|{U|eizg_`zjw877$jU|~R~ats]tmaroW{khd0:#c^uq[uhszV}bhyfPreak946+kV}yS}`{r^uj`qnXhic19"l_vp\tkruW~coxeQxdbj>55*dW~xT|cz}_vkgpmYpzjb68!mPws]qavvhfzoT`lzjnb{>5)eX{icSywe<2~5a=AAOEYT!hffn]dakcui}eyS{7P1-y~1>@fdzo:7J=4GOF2?L4?8:KMMQVX8820ECG[P^21<>OIA]ZT<>64IOKWTZ6302CEEY^P04:8MKOSXV:=46GAIUR\42?97:KMMQY7?>1BBDZP0958MKOSW93<7D@FT^2B3>OIA]U;N:5FNHV\4F11BBDZP1958MKOSW83<7D@FT^3B3>OIA]U:N:5FNHV\5F1F69JJLRX:9=0ECG[_334?LHN\V89;6GAIU]172=NF@^T>994IOKW[7303@DBXR<97:KMMQY5?>1BBDZP2958MKOSW;3<7D@FT^0B3>OIA]U9N:5FNHV\6F11BBDZP3958MKOSW:3<7D@FT^1B3>OIA]U8N:5FNHV\7F1J8;HLJPZ5B?2CEEYQJR\8>0@XZ=4:NVP62KTOFD>7@[WCXa8Idlhz_oydaac:OjjjtQm{ybcc<4N108J45UH][IN;6]]V@N\E2=TZ_KGSO:4SRPB0>UTZK>0XT^J659V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hcy,`hn~(EqeySjPpovq[beXpfx;<=>PRdqvhq71<2_;#u}{_gkekZabflxjxb| gbmmrcoag'xm#j|i.sd,ckrqWfxTt`l_gkek+adp'iggu!Bxnp\vaYwf}xTknQwos2344YUmzgx<8;;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jmw.bnh|*Kg{UyhR~ats]dgZ~hz9:;>R\jstnw532<]9%syQiigm\c`hbzh~d~"ilootemci)zo%l~k }f.empsYhzVyrbnQiigm-cf~)keas#@v`r^pg[uhszVmhSua}0120[Wct}e~::95Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,I}iuW{nT|cz}_fa\|jt789>T^h}zlu350>S7'qySkgio^efj`tf|fx$knaavgkek+ta'nxm"h govu[jtX{pdhSkgio/e`|+ekcq%Ftb|Pre]sjqtXojUsc>?04]Qavsk|8 xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nis"nbdx.O{kwYulVzexQhc^zlv567>VXnxb{1768Q5){}UmekaPgdlfvdrhz&mhccxiigm-vc)`zo$yj"iatw]lvZu~fjUmeka!gbz-gim'Drd~R|k_qlwvZadWqey<=>8_Sgpqir6>=1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`kq$h`fv Mymq[wbXxg~ySjmPxnp345>XZly~`y?94:W3+}usWocmcRijndpbpjt(ojeezkgio/pe+bta&{l$kczy_np\w|hdWocmc#ilx/aoo})JpfxT{Qnup\cfYg{:;<=Q]erwop4033\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*be&jf`t"Cwos]tvZvi|{UloRv`r1235ZTb{|f=;:4U1-{wqYaaoeTkh`jr`vlv*adgg|meka!rg-dvc(un&mex{Q`r^qzjfYaaoe%knv!cmi{+H~hzV}yS}`{r^e`[}iu89:9S_k|umv221=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr$Aua}_vp\tkruWniTtb|?011\V`urd};=86[?/yqw[coagVmnbh|ntnp,cfii~ocmc#|i/fpe*w`(og~}Sb|Psxl`[coag'mht#mcky-N|jtX{U{by|Pgb]{kw678=UYi~{ct047?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fa{*fjlp&GscQxr^rmpwY`kVrd~=>?5^Pfwpjs9?>0Y=!wsu]emciXoldn~lz`r.e`kkpaaoe%~k!hrg,qb*ai|Ud~R}vnb]emci)ojr%oaew/LzlvZquWyd~Ril_ymq4561W[oxyaz>659V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hcy,`hn~(EqeySz|Ppovq[beXpfx;<=9PRdqvhq71<2_;#u}{_gkekZabflxjxb| gbmmrcoag'xm#j|i.sd,ckrqWfxTt`l_gkek+adp'iggu!Bxnp\swYwf}xTknQwos234=YUmzgx<8<;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jmw.bnh|*atqgiTyoheZ3^*wbX{}mTec}{/P]326=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr$k~wac^qwebc\9T$yhR}{g^kmwq)VW8<87X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nis"nbdx.ep}keX{}kliV?R.sf\wqaXagy#\Q=629V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hcy,`hn~(ozseoR}{afgX5X(ulVykRgasu-R[6043\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*be&jf`t"i|yoa\wqg`mR;V"jPsue\mkus'XU?:>5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,cvikVymjkT1\,q`ZusoVcey!^_440?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fa{*fjlp&mxucmPsucda^7Z&{nTyiPioqw+TY1>:1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`kq$h`fv gr{mgZusinoP=P }d^qwcZoi{}%ZS:8<;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jmw.bnh|*atqgiTyoheZ3^*wbX{}mTec}{/P];26=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr$k~wac^qwebc\9T$yhR}{g^kmwq)VW0<87X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nis"nbdx.ep}keX{}kliV?R.vp\wqaXagy#\Q?629V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hcy,`hn~(ozseoR}{afgX5X(pzVykRgasu-R[4043\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*be&jf`t"i|yoa\wqg`mR;V"z|Psue\mkus'XU9:>5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,cvikVymjkT1\,tvZusoVcey!^_240?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fa{*fjlp&mxucmPsucda^7Z&~xTyiPioqw+TY3>:1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`kq$h`fv gr{mgZusinoP=P xr^qwcZoi{}%ZS88<;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jmw.bnh|*atqgiTyoheZ3^*rtX{}mTec}{/P]526=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr$k~wac^qwebc\9T$|~R}{g^kmwq)VW><87X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nis"nbdx.ep}keX{}kliV?R.vp\wqaXagy#\Q7629V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hcy,`hn~(ozseoR}{afgX5X(pzVykRgasu-R[<043\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*be&jf`t"i|yoa\wqg`mR8V"jPsue\mkus'XU;:>5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,cvikVymjkT2\,q`ZusoVcey!^_040?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fa{*fjlp&mxucmPsucda^4Z&{nTyiPioqw+TY5>:1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`kq$h`fv gr{mgZusinoP>P }d^qwcZoi{}%ZS>8<;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jmw.bnh|*atqgiTyoheZ0^*wbX{}mTec}{/P]726=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr$k~wac^qwebc\:T$yhR}{g^kmwq)VW<<87X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nis"nbdx.ep}keX{}kliV5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,cvikVymjkT2\,q`ZusoVcey!^_840?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fa{*fjlp&mxucmPsucda^4Z&~xTyiPioqw+TY7>:1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`kq$h`fv gr{mgZusinoP>P xr^qwcZoi{}%ZS<8<;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jmw.bnh|*atqgiTyoheZ0^*rtX{}mTec}{/P]126=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr$k~wac^qwebc\:T$|~R}{g^kmwq)VW:<87X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nis"nbdx.ep}keX{}kliV5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,cvikVymjkT2\,tvZusoVcey!^_640?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fa{*fjlp&mxucmPsucda^4Z&~xTyiPioqw+TY?>:1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`kq$h`fv gr{mgZusinoP>P xr^qwcZoi{}%ZS4;<;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jmw.bnh|*tcWyd~Rlfn=2=16=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr$~iQnup\flh;97?87X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nis"nbdx.pg[uhszVhbb1<1529V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hcy,`hn~(zmU{by|Pbhl?7;343\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*be&jf`t"|k_qlwvZdnf5>59>5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,vaYwf}xTnd`35?70?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fa{*fjlp&xoS}`{r^`jj909=:1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`kq$h`fv re]sjqtXj`d7;3;<;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jmw.bnh|*tcWyd~Rlfn=:=16=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr$~iQnup\flh;17?97X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nis"nbdx.pg[uhszVhbbR>:2:W3+}usWocmcRijndpbpjt(ojeezkgio/pe+bta&{l$kczy_np\w|hdWocmc#ilx/aoo})ulVzexQmio]217=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr$~iQnup\flhX:<80Y=!wsu]emciXoldn~lz`r.e`kkpaaoe%~k!hrg,qb*ai|Ud~R}vnb]emci)ojr%oaew/sf\tkruWkceS>;=;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jmw.bnh|*tcWyd~Rlfn^666>S7'qySkgio^efj`tf|fx$knaavgkek+ta'nxm"h govu[jtX{pdhSkgio/e`|+ekcq%yhR~ats]amkY2=;1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`kq$h`fv re]sjqtXj`dT:8<4U1-{wqYaaoeTkh`jr`vlv*adgg|meka!rg-dvc(un&mex{Q`r^qzjfYaaoe%knv!cmi{+wbXxg~ySoga_671?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fa{*fjlp&xoS}`{r^`jjZ>2:2_;#u}{_gkekZabflxjxb| gbmmrcoag'xm#j|i.sd,ckrqWfxTt`l_gkek+adp'iggu!}d^rmpwYeagU2955Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,vaYwf}xTnd`Pxnp3456212_;#u}{_gkekZabflxjxb| gbmmrcoag'xm#j|i.sd,ckrqWfxTt`l_gkek+adp'iggu!}d^rmpwYeagUsc>?0136<>S7'qySkgio^efj`tf|fx$knaavgkek+ta'nxm"h govu[jtX{pdhSkgio/e`|+ekcq%yhR~ats]amkYg{:;<<;6;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jmw.bnh|*tcWyd~Rlfn^zlv56798?37X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nis"nbdx.pg[uhszVhbbRv`r12360?<]9%syQiigm\c`hbzh~d~"ilootemci)zo%l~k }f.empsYhzVyrbnQiigm-cf~)keas#jPpovq[goiWqey<=>=14:8Q5){}UmekaPgdlfvdrhz&mhccxiigm-vc)`zo$yj"iatw]lvZu~fjUmeka!gbz-gim'{nT|cz}_ckm[}iu89:8945Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,vaYwf}xTnd`Pxnp34555=11^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`kq$h`fv re]sjqtXj`dTtb|?0166=>S7'qySkgio^efj`tf|fx$knaavgkek+ta'nxm"h govu[jtX{pdhSkgio/e`|+ekcq%yhR~ats]amkYg{:;<9?:8:W3+}usWocmcRijndpbpjt(ojeezkgio/pe+bta&{l$kczy_np\w|hdWocmc#ilx/aoo})ulVzexQmio]{kw678 xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nis"nbdx.pg[uhszVhbbRv`r123143?3\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*be&jf`t"|k_qlwvZdnfVrd~=>?64c8Q5){}UmekaPgdlfvdrhz&mhccxiigm-vc)`zo$yj"iatw]lvZu~fjUmeka!gbz-gim'{nT|cz}_ckm[}iu89:==<;6;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jmw.bnh|*tcWyd~Rlfn^zlv567>;?o7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nis"nbdx.pg[uhszVhbbRv`r1232Zdcl9?37X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nis"nbdx.pg[uhszVhbbRv`r12330?<]9%syQiigm\c`hbzh~d~"ilootemci)zo%l~k }f.empsYhzVyrbnQiigm-cf~)keas#jPpovq[goiWqey<=>814:8Q5){}UmekaPgdlfvdrhz&mhccxiigm-vc)`zo$yj"iatw]lvZu~fjUmeka!gbz-gim'{nT|cz}_ckm[}iu89:3945Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,vaYwf}xTnd`Pxnp345>6=81^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`kq$h`fv re]sjqtXojU;9<5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,vaYwf}xTknQ>509V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hcy,`hn~(zmU{by|Pgb]114=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr$~iQnup\cfY4=81^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`kq$h`fv re]sjqtXojU?9<5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,vaYwf}xTknQ:509V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hcy,`hn~(zmU{by|Pgb]514=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr$~iQnup\cfY0=81^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`kq$h`fv re]sjqtXojU39<5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,vaYwf}xTknQ6569V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hcy,`hn~(zmU{by|Pgb]{kw6789?<7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nis"nbdx.pg[uhszVmhSua}012212=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr$~iQnup\cfYg{:;1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`kq$h`fv re]sjqtXojUsc>?0574?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fa{*fjlp&xoS}`{r^e`[}iu89:>9:5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,vaYwf}xTknQwos2343303\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*be&jf`t"|k_qlwvZadWqey<=>8569V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hcy,`hn~(zmU{by|Pgb]{kw6781>m7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nis"nbdx.pg[t:765:58k5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,vaYv4947=3:i;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jmw.bnh|*tcWx6;21<14g9V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hcy,`hn~(zmUz0=033?6e?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fa{*fjlp&xoS|2?>=6=0c=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr$~iQ~<13:909m7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nis"nbdx.pg[t:765258k5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,vaYv494753:i;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jmw.bnh|*tcWx6:21>14g9V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hcy,`hn~(zmUz0<031?6e?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fa{*fjlp&xoS|2>>=0=0c=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr$~iQ~<02:929m7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nis"nbdx.pg[t:665<58k5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,vaYv4847;3:i;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jmw.bnh|*tcWx6:21614g9V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hcy,`hn~(zmUz0<039?6e?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fa{*fjlp&xoS|2=>=2=0c=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr$~iQ~<31:949m7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nis"nbdx.pg[t:565>58k5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,vaYv4;4793:i;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jmw.bnh|*tcWx6921814g9V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hcy,`hn~(zmUz0?037?6e?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fa{*fjlp&xoS|2=>=:=0c=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr$~iQ~<35Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,swYwf}xTnd`31?70?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fa{*fjlp&}yS}`{r^`jj949=:1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`kq$h`fv ws]sjqtXj`d7?3;<;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jmw.bnh|*quWyd~Rlfn=6=16=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr${Qnup\flh;=7?87X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nis"nbdx.uq[uhszVhbb181529V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hcy,`hn~({U{by|Pbhl?3;343\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*be&jf`t"y}_qlwvZdnf5259>5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,swYwf}xTnd`39?71?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fa{*fjlp&}yS}`{r^`jjZ62:2_;#u}{_gkekZabflxjxb| gbmmrcoag'xm#j|i.sd,ckrqWfxTt`l_gkek+adp'iggu!xr^rmpwYeagU:9?5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,swYwf}xTnd`P2408Q5){}UmekaPgdlfvdrhz&mhccxiigm-vc)`zo$yj"iatw]lvZu~fjUmeka!gbz-gim'~xT|cz}_ckm[6353\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*be&jf`t"y}_qlwvZdnfV>>>6[?/yqw[coagVmnbh|ntnp,cfii~ocmc#|i/fpe*w`(og~}Sb|Psxl`[coag'mht#mcky-tvZvi|{UiecQ:539V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hcy,`hn~({U{by|Pbhl\204<]9%syQiigm\c`hbzh~d~"ilootemci)zo%l~k }f.empsYhzVyrbnQiigm-cf~)keas#z|Ppovq[goiW>?97X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nis"nbdx.uq[uhszVhbbR6:2:W3+}usWocmcRijndpbpjt(ojeezkgio/pe+bta&{l$kczy_np\w|hdWocmc#ilx/aoo})pzVzexQmio]:1==R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr${Qnup\flhXpfx;<=>:9:W3+}usWocmcRijndpbpjt(ojeezkgio/pe+bta&{l$kczy_np\w|hdWocmc#ilx/aoo})pzVzexQmio]{kw6789;>46[?/yqw[coagVmnbh|ntnp,cfii~ocmc#|i/fpe*w`(og~}Sb|Psxl`[coag'mht#mcky-tvZvi|{UiecQwos23443>3\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*be&jf`t"y}_qlwvZdnfVrd~=>?107;?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fa{*fjlp&}yS}`{r^`jjZ~hz9:;>874U1-{wqYaaoeTkh`jr`vlv*adgg|meka!rg-dvc(un&mex{Q`r^qzjfYaaoe%knv!cmi{+rtXxg~ySoga_ymq45659<20Y=!wsu]emciXoldn~lz`r.e`kkpaaoe%~k!hrg,qb*ai|Ud~R}vnb]emci)ojr%oaew/vp\tkruWkceSua}01201<=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr${Qnup\flhXpfx;<===599V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hcy,`hn~({U{by|Pbhl\|jt789>>56[?/yqw[coagVmnbh|ntnp,cfii~ocmc#|i/fpe*w`(og~}Sb|Psxl`[coag'mht#mcky-tvZvi|{UiecQwos23417202_;#u}{_gkekZabflxjxb| gbmmrcoag'xm#j|i.sd,ckrqWfxTt`l_gkek+adp'iggu!xr^rmpwYeagUsc>?047:?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fa{*fjlp&}yS}`{r^`jjZ~hz9:;9<;7;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jmw.bnh|*quWyd~Rlfn^zlv567>3\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*be&jf`t"y}_qlwvZdnfVrd~=>?637g?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fa{*fjlp&}yS}`{r^`jjZ~hz9:;:Rlkd17;?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fa{*fjlp&}yS}`{r^`jjZ~hz9:;;874U1-{wqYaaoeTkh`jr`vlv*adgg|meka!rg-dvc(un&mex{Q`r^qzjfYaaoe%knv!cmi{+rtXxg~ySoga_ymq45609<20Y=!wsu]emciXoldn~lz`r.e`kkpaaoe%~k!hrg,qb*ai|Ud~R}vnb]emci)ojr%oaew/vp\tkruWkceSua}012;1<=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr${Qnup\flhXpfx;<=6>509V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hcy,`hn~({U{by|Pgb]314=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr${Qnup\cfY6=81^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`kq$h`fv ws]sjqtXojU99<5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,swYwf}xTknQ<509V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hcy,`hn~({U{by|Pgb]714=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr${Qnup\cfY2=81^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`kq$h`fv ws]sjqtXojU=9<5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,swYwf}xTknQ8509V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hcy,`hn~({U{by|Pgb];14=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr${Qnup\cfY>=>1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`kq$h`fv ws]sjqtXojUsc>?0174?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fa{*fjlp&}yS}`{r^e`[}iu89::9:5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,swYwf}xTknQwos2347303\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*be&jf`t"y}_qlwvZadWqey<=><569V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hcy,`hn~({U{by|Pgb]{kw678=?<7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nis"nbdx.uq[uhszVmhSua}012612=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr${Qnup\cfYg{:;<;;8;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jmw.bnh|*quWyd~Ril_ymq4560=>1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`kq$h`fv ws]sjqtXojUsc>?096e?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fa{*fjlp&}yS|2?>=2=0c=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr${Q~<13:949m7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nis"nbdx.uq[t:765>58k5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,swYv494793:i;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jmw.bnh|*quWx6;21814g9V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hcy,`hn~({Uz0=037?6e?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fa{*fjlp&}yS|2?>=:=0c=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr${Q~<12:969m7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nis"nbdx.uq[t:665858k5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,swYv4847?3:i;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jmw.bnh|*quWx6:21:14g9V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hcy,`hn~({Uz0<035?6e?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fa{*fjlp&}yS|2>>=4=0c=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr${Q~<02:9>9m7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nis"nbdx.uq[t:565:58k5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,swYv4;47=3:i;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jmw.bnh|*quWx6921<14g9V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hcy,`hn~({Uz0?033?6e?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fa{*fjlp&}yS|2=>=6=0c=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dg}(ddbr${Q~<31:909m7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nis"nbdx.uq[t:565258k5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$lou lljz,swYv4;4753;m;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.sf,cwgt&{y"m?/bcqv|hb|5:59o5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$l`= }d.eqev(u{}y$o=!laspzj`r;97?i7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"j gscp*wus{&i;#no}rxlfp949=k1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`d9$yh"i}ar,qwqu(k9%hm|vndv?7;063\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&{n$ko|.sqww*e7'ng~t#ib[1_-ch7)e8<:7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"j gscp*wus{&i;#jczx/en_4[)ody%a~8>;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.sf,cwgt&{y"m?/fov|+ajS;W%k`}!mr42?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*wb(o{kx"}{s.a3+bkrp'mfW>S!glq-iv063\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&{n$ko|.sqww*e7'ng~t#ib[5_-chu)ez?>7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"j gscp*wus{&i;#{?30?76?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*wb(o{kx"}{s.a3+s7;97?>7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"j gscp*wus{&i;#{?32?76?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*wb(o{kx"}{s.a3+s7;;7?>7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"j gscp*wus{&i;#{?34?7g?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*wb(o{kx"}{s.a3+s7X8Vkeh=>?007g?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*wb(o{kx"}{s.a3+s7X9Vkeh=>?007g?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*wb(o{kx"}{s.a3+s7X:Vkeh=>?007g?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*wb(o{kx"}{s.a3+s7X;Vkeh=>?007g?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*wb(o{kx"}{s.a3+s7X?007a?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*wb(o{kx"}{s.a2+fguzpdnx1>15c9V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hl1,q`*auiz$yy} c0-`ewt~fl~7=3;m;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.sf,cwgt&{y"m>/bcqv|hb|5859o5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$l`= }d.eqev(u{}y$o xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"j gscp*wus{&i:#jczx/en_5[)od;%a<8>;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.sf,cwgt&{y"m>/fov|+ajS8W%k`}!mr42?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*wb(o{kx"}{s.a2+bkrp'mfW?S!glq-iv063\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&{n$ko|.sqww*e6'ng~t#ib[2_-chu)ez<:7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"j gscp*wus{&i:#jczx/en_1[)ody%a~;:;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.sf,cwgt&{y"m>/w3?4;323\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&{n$ko|.sqww*e6';7=3;:;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.sf,cwgt&{y"m>/w3?6;323\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&{n$ko|.sqww*e6';7?3;:;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.sf,cwgt&{y"m>/w3?0;3c3\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&{n$ko|.sqww*e6';TRoad123443c3\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&{n$ko|.sqww*e6';T?Road123443c3\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&{n$ko|.sqww*e6';T8Road12344353\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&{n$ko|.sqww*ehey:>>6[?/yqw[coagVmnbh|ntnp,cfii~ocmc#|i/fpe*w`(og~}Sb|Psxl`[coag'mg<#|k/fpbw+tt|z%hc`~>5c9V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hl1,q`*auiz$yy} r`o\ahvsqVliSd8=;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.sf,cwgt&{y"|nm^gntqXnkUbSb|?01257>S7'qySkgio^efj`tf|fx$knaavgkek+ta'nxm"h govu[jtX{pdhSkgio/eo4+tc'nxj#||tr-qehYbey~rSklPi^mq45679<20Y=!wsu]emciXoldn~lz`r.e`kkpaaoe%~k!hrg,qb*ai|Ud~R}vnb]emci)oe:%~i!hr`q-vvrt'{kfShctx]j0c=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dh5(ul&xjaR|k_dl\m43e3\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&{n$~}`{r.O`kphsWje~byQly=2=1g=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dh5(ul&x{by| MbmvjqYdg|dSnw31?7f?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*wb(zyd~"Clotlw[firf}Uhu1?1_sv6f>S7'qySkgio^efj`tf|fx$knaavgkek+ta'nxm"h govu[jtX{pdhSkgio/eo4+tc'{zex!BcnwmpZeh}g~Tot2=>4g8Q5){}UmekaPgdlfvdrhz&mhccxiigm-vc)`zo$yj"iatw]lvZu~fjUmeka!gm2-va)uxg~y#@m`uov\gjsi|Vir0?0Pru7a?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*wb(zyd~"Clotlw[firf}Uhu1=15d9V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hl1,q`*twf}x$Anaznu]`kphsWjs7?3Q}t4`8Q5){}UmekaPgdlfvdrhz&mhccxiigm-vc)`zo$yj"iatw]lvZu~fjUmeka!gm2-va)uxg~y#@m`uov\gjsi|Vir090:e:W3+}usWocmcRijndpbpjt(ojeezkgio/pe+bta&{l$kczy_np\w|hdWocmc#ic0/pg+wvi|{%Fob{at^alqkrXkp6?2R|{5c9V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hl1,q`*twf}x$Anaznu]`kphsWjs793;j;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.sf,vuhsz&Ghcx`{_bmvjqYdq5?5Sz:b:W3+}usWocmcRijndpbpjt(ojeezkgio/pe+bta&{l$kczy_np\w|hdWocmc#ic0/pg+wvi|{%Fob{at^alqkrXkp6=28k4U1-{wqYaaoeTkh`jr`vlv*adgg|meka!rg-dvc(un&mex{Q`r^qzjfYaaoe%ka>!re-qtkru'DidyczPcnwmpZe~4?4T~y;m;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.sf,vuhsz&Ghcx`{_bmvjqYdq5=59h5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$l`= }d.psjqt(Eje~byQlotlw[f;?7Uyx8l4U1-{wqYaaoeTkh`jr`vlv*adgg|meka!rg-dvc(un&mex{Q`r^qzjfYaaoe%ka>!re-qtkru'DidyczPcnwmpZe~414>i6[?/yqw[coagVmnbh|ntnp,cfii~ocmc#|i/fpe*w`(og~}Sb|Psxl`[coag'mg<#|k/srmpw)JkfexRm`uov\g|:?6Vx9n5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$l`= }d.psjqt(Eje~byQlotlw[iss494=>6[?/yqw[coagVmnbh|ntnp,cfii~ocmc#|i/fpe*w`(og~}Sb|Psxl`[coag'mg<#|k/srmpw)JkfexRm`uov\hpr;87UBB[Q?5b9V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hl1,q`*twf}x$Anaznu]`kphsWqey0=0:c:W3+}usWocmcRijndpbpjt(ojeezkgio/pe+bta&{l$kczy_np\w|hdWocmc#ic0/pg+wvi|{%Fob{at^alqkrXpfx7=3;l;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.sf,vuhsz&Ghcx`{_bmvjqYg{6928m4U1-{wqYaaoeTkh`jr`vlv*adgg|meka!rg-dvc(un&mex{Q`r^qzjfYaaoe%ka>!re-qtkru'DidyczPcnwmpZ~hz5959n5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$l`= }d.psjqt(Eje~byQlotlw[}iu4=4>o6[?/yqw[coagVmnbh|ntnp,cfii~ocmc#|i/fpe*w`(og~}Sb|Psxl`[coag'mg<#|k/srmpw)JkfexRm`uov\|jt;=7?h7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"j rqlwv*Kdg|dSnaznu]{kw:16::Zts=;1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`d9$yh"|nup,V`urd}6;28<4U1-{wqYaaoeTkh`jr`vlv*adgg|meka!rg-dvc(un&mex{Q`r^qzjfYaaoe%ka>!re-qtkru'[oxyaz31?71?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*wb(zyd~"\jstnw8782:2_;#u}{_gkekZabflxjxb| gbmmrcoag'xm#j|i.sd,ckrqWfxTt`l_gkek+ak8'xo#~ats-Qavsk|5959?5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$l`= }d.psjqt(Zly~`y2;>408Q5){}UmekaPgdlfvdrhz&mhccxiigm-vc)`zo$yj"iatw]lvZu~fjUmeka!gm2-va)uxg~y#_k|umv?1;353\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&{n$~}`{r.Pfwpjs4?4>>6[?/yqw[coagVmnbh|ntnp,cfii~ocmc#|i/fpe*w`(og~}Sb|Psxl`[coag'mg<#|k/srmpw)Umzgx191539V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hl1,q`*twf}x$^h}zlu>;:04<]9%syQiigm\c`hbzh~d~"ilootemci)zo%l~k }f.empsYhzVyrbnQiigm-ci6)zm%y|cz}/Sgpqir;17?:7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"j rqlwv*eh}g~7<3;>;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.sf,vuhsz&idycz31?72?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*wb(zyd~"m`uov?6;363\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&{n$~}`{r.alqkr;;7?:7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"j rqlwv*eh}g~783;>;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.sf,vuhsz&idycz35?72?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*wb(zyd~"m`uov?2;363\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&{n$~}`{r.alqkr;?7?:7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"j rqlwv*eh}g~743;>;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.sf,vuhsz&idycz39?73?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*wb(zyd~"m`uov\406<]9%syQiigm\c`hbzh~d~"ilootemci)zo%l~k }f.empsYhzVyrbnQiigm-ci6)zm%y|cz}/bmvjqY6=91^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`d9$yh"|nup,gjsi|V8><6[?/yqw[coagVmnbh|ntnp,cfii~ocmc#|i/fpe*w`(og~}Sb|Psxl`[coag'mg<#|k/srmpw)dg|dS>;?;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.sf,vuhsz&idyczP4428Q5){}UmekaPgdlfvdrhz&mhccxiigm-vc)`zo$yj"iatw]lvZu~fjUmeka!gm2-va)uxg~y#naznu]615=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dh5(ul&x{by| cnwmpZ0282_;#u}{_gkekZabflxjxb| gbmmrcoag'xm#j|i.sd,ckrqWfxTt`l_gkek+ak8'xo#~ats-`kphsW>?;7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"j rqlwv*eh}g~T48>4U1-{wqYaaoeTkh`jr`vlv*adgg|meka!rg-dvc(un&mex{Q`r^qzjfYaaoe%ka>!re-qtkru'je~byQ6559V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hl1,q`*twf}x$ob{at^f28582<2_;#u}{_gkekZabflxjxb| gbmmrcoag'xm#j|i.sd,ckrqWfxTt`l_gkek+ak8'xo#~ats-`kphsWm;7=3;;;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.sf,vuhsz&idyczPd0>1:02<]9%syQiigm\c`hbzh~d~"ilootemci)zo%l~k }f.empsYhzVyrbnQiigm-ci6)zm%y|cz}/bmvjqYc9595995Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$l`= }d.psjqt(kfexRj><5<60>S7'qySkgio^efj`tf|fx$knaavgkek+ta'nxm"h govu[jtX{pdhSkgio/eo4+tc'{zex!lotlw[a7;=7??7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"j rqlwv*eh}g~Th<29>468Q5){}UmekaPgdlfvdrhz&mhccxiigm-vc)`zo$yj"iatw]lvZu~fjUmeka!gm2-va)uxg~y#naznu]g5919==1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`d9$yh"|nup,gjsi|Vn:050:4:W3+}usWocmcRijndpbpjt(ojeezkgio/pe+bta&{l$kczy_np\w|hdWocmc#ic0/pg+wvi|{%hcx`{_e3?=;343\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&{n$~}`{r.alqkrXl8U;9>5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$l`= }d.psjqt(kfexRj>_070?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*wb(zyd~"m`uov\`4Y5=:1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`d9$yh"|nup,gjsi|Vn:S>;<;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.sf,vuhsz&idyczPd0]716=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dh5(ul&x{by| cnwmpZb6W xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"j rqlwv*eh}g~Th5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$l`= }d.psjqt(kfexRj>_87a?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*rt(o~kx"z}{s.a2+fguzpdnx1>15c9V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hl1,tv*apiz$|y} c0-`ewt~fl~7=3;m;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.vp,crgt&~y"m>/bcqv|hb|5859o5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$l`= xr.etev(p{}y$o xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"z| gvcp*rus{&i:#jczx/en_5[)od;%a<8>;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.vp,crgt&~y"m>/fov|+ajS8W%k`}!mr42?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*rt(o~kx"z}{s.a2+bkrp'mfW?S!glq-iv063\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&~x$kzo|.vqww*e6'ng~t#ib[2_-chu)ez<:7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"z| gvcp*rus{&i:#jczx/en_1[)ody%a~;:;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.vp,crgt&~y"m>/w3?4;323\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&~x$kzo|.vqww*e6';7=3;:;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.vp,crgt&~y"m>/w3?6;323\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&~x$kzo|.vqww*e6';7?3;:;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.vp,crgt&~y"m>/w3?0;3c3\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&~x$kzo|.vqww*e6';TRoad123443c3\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&~x$kzo|.vqww*e6';T?Road123443c3\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&~x$kzo|.vqww*e6';T8Road123443e3\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&~x$kzo|.vqww*e5'jky~t`jt=2=1g=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dh5(pz&m|m~ xsuq,g7)di{xrbhz31?7a?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*rt(o~kx"z}{s.a1+fguzpdnx1<15c9V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hl1,tv*apiz$|y} c3-`ewt~fl~7?38>;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.vp,crgt&~y"m=/fov|+ajS9W%k`?!m042?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*rt(o~kx"z}{s.a1+bkrp'mfW xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"z| gvcp*rus{&i9#jczx/en_6[)ody%a~8>;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.vp,crgt&~y"m=/fov|+ajS=W%k`}!mr76?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*rt(o~kx"z}{s.a1+s7;87?>7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"z| gvcp*rus{&i9#{?31?76?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*rt(o~kx"z}{s.a1+s7;:7?>7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"z| gvcp*rus{&i9#{?33?76?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*rt(o~kx"z}{s.a1+s7;<7?o7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"z| gvcp*rus{&i9#{?P0^cm`56788?o7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"z| gvcp*rus{&i9#{?P1^cm`56788?o7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"z| gvcp*rus{&i9#{?P2^cm`56788?o7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"z| gvcp*rus{&i9#{?P3^cm`56788?o7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"z| gvcp*rus{&i9#{?P4^cm`56788?97X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"z| gvcp*rus{&ida}?:2:W3+}usWocmcRijndpbpjt(ojeezkgio/pe+bta&{l$kczy_np\w|hdWocmc#ic0/uq+bqf{'}xx~!lolr11d=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dh5(pz&m|m~ xsuq,vdkXn|fgSklPi458Q5){}UmekaPgdlfvdrhz&mhccxiigm-vc)`zo$yj"iatw]lvZu~fjUmeka!gm2-sw)`hy%{~z|/scn[cskdVc>j6[?/yqw[coagVmnbh|ntnp,cfii~ocmc#|i/fpe*w`(og~}Sb|Psxl`[coag'mg<#y}/fubw+qt|z%ym`Qiumn\mZkrp9:;<;>4U1-{wqYaaoeTkh`jr`vlv*adgg|meka!rg-dvc(un&mex{Q`r^qzjfYaaoe%ka>!ws-dsdu)z~x#ob_gwohZoXe|r;<=>>4g9V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hl1,tv*tfeV}ySh`Pi07a?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*rt(yd~"Clotlw[firf}Uhu1>15c9V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hl1,tv*qwf}x$Anaznu]`kphsWjs7=3;j;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.vp,suhsz&Ghcx`{_bmvjqYdq5;5Sz:b:W3+}usWocmcRijndpbpjt(ojeezkgio/pe+bta&{l$kczy_np\w|hdWocmc#ic0/uq+rvi|{%Fob{at^alqkrXkp6928k4U1-{wqYaaoeTkh`jr`vlv*adgg|meka!rg-dvc(un&mex{Q`r^qzjfYaaoe%ka>!ws-ttkru'DidyczPcnwmpZe~4;4T~y;m;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.vp,suhsz&Ghcx`{_bmvjqYdq5959h5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$l`= xr.usjqt(Eje~byQlotlw[f;;7Uyx8l4U1-{wqYaaoeTkh`jr`vlv*adgg|meka!rg-dvc(un&mex{Q`r^qzjfYaaoe%ka>!ws-ttkru'DidyczPcnwmpZe~4=4>i6[?/yqw[coagVmnbh|ntnp,cfii~ocmc#|i/fpe*w`(og~}Sb|Psxl`[coag'mg<#y}/vrmpw)JkfexRm`uov\g|:36Vx9o5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$l`= xr.usjqt(Eje~byQlotlw[f;=7?n7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"z| wqlwv*Kdg|dSnaznu]`}939W{~>n6[?/yqw[coagVmnbh|ntnp,cfii~ocmc#|i/fpe*w`(og~}Sb|Psxl`[coag'mg<#y}/vrmpw)JkfexRm`uov\g|:16 xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"z| wqlwv*Kdg|dSnaznu]`}919=l1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`d9$|~"ynup,Ifirf}Uhcx`{_b{?3;Yu|;:Zts=j1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`d9$|~"ynup,Ifirf}Uhcx`{_mww8581:2_;#u}{_gkekZabflxjxb| gbmmrcoag'xm#j|i.sd,ckrqWfxTt`l_gkek+ak8'}y#z~ats-Ngjsi|VidyczPltv?4;YNF_U;9n5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$l`= xr.usjqt(Eje~byQlotlw[}iu494>o6[?/yqw[coagVmnbh|ntnp,cfii~ocmc#|i/fpe*w`(og~}Sb|Psxl`[coag'mg<#y}/vrmpw)JkfexRm`uov\|jt;97?h7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"z| wqlwv*Kdg|dSnaznu]{kw:565:0e<]9%syQiigm\c`hbzh~d~"ilootemci)zo%l~k }f.empsYhzVyrbnQiigm-ci6){%||cz}/LalqkrXkfexRv`r=5=1f=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dh5(pz&}{by| MbmvjqYdg|dSua}<9<6g>S7'qySkgio^efj`tf|fx$knaavgkek+ta'nxm"h govu[jtX{pdhSkgio/eo4+qu'~zex!BcnwmpZeh}g~Ttb|39?7e?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*rt(yd~"Clotlw[firf}Usc26>^pw17=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dh5(pz&}{by| Rdqvhq:76<80Y=!wsu]emciXoldn~lz`r.e`kkpaaoe%~k!hrg,qb*ai|Ud~R}vnb]emci)oe:%{!xpovq+Wct}e~7=3;=;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.vp,suhsz&Xnxb{<3<66>S7'qySkgio^efj`tf|fx$knaavgkek+ta'nxm"h govu[jtX{pdhSkgio/eo4+qu'~zex!]erwop959=;1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`d9$|~"ynup,V`urd}6?28<4U1-{wqYaaoeTkh`jr`vlv*adgg|meka!rg-dvc(un&mex{Q`r^qzjfYaaoe%ka>!ws-ttkru'[oxyaz35?71?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*rt(yd~"\jstnw8382:2_;#u}{_gkekZabflxjxb| gbmmrcoag'xm#j|i.sd,ckrqWfxTt`l_gkek+ak8'}y#z~ats-Qavsk|5=59?5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$l`= xr.usjqt(Zly~`y27>408Q5){}UmekaPgdlfvdrhz&mhccxiigm-vc)`zo$yj"iatw]lvZu~fjUmeka!gm2-sw)pxg~y#_k|umv?=;363\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&~x${}`{r.alqkr;87?:7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"z| wqlwv*eh}g~7=3;>;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.vp,suhsz&idycz32?72?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*rt(yd~"m`uov?7;363\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&~x${}`{r.alqkr;<7?:7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"z| wqlwv*eh}g~793;>;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.vp,suhsz&idycz36?72?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*rt(yd~"m`uov?3;363\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&~x${}`{r.alqkr;07?:7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"z| wqlwv*eh}g~753;?;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.vp,suhsz&idyczP0428Q5){}UmekaPgdlfvdrhz&mhccxiigm-vc)`zo$yj"iatw]lvZu~fjUmeka!gm2-sw)pxg~y#naznu]215=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dh5(pz&}{by| cnwmpZ4282_;#u}{_gkekZabflxjxb| gbmmrcoag'xm#j|i.sd,ckrqWfxTt`l_gkek+ak8'}y#z~ats-`kphsW:?;7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"z| wqlwv*eh}g~T88>4U1-{wqYaaoeTkh`jr`vlv*adgg|meka!rg-dvc(un&mex{Q`r^qzjfYaaoe%ka>!ws-ttkru'je~byQ:519V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hl1,tv*qwf}x$ob{at^464>S7'qySkgio^efj`tf|fx$knaavgkek+ta'nxm"h govu[jtX{pdhSkgio/eo4+qu'~zex!lotlw[2373\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&~x${}`{r.alqkrX0<:0Y=!wsu]emciXoldn~lz`r.e`kkpaaoe%~k!hrg,qb*ai|Ud~R}vnb]emci)oe:%{!xpovq+firf}U2995Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$l`= xr.usjqt(kfexRj><1<60>S7'qySkgio^efj`tf|fx$knaavgkek+ta'nxm"h govu[jtX{pdhSkgio/eo4+qu'~zex!lotlw[a7;97??7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"z| wqlwv*eh}g~Th<2=>468Q5){}UmekaPgdlfvdrhz&mhccxiigm-vc)`zo$yj"iatw]lvZu~fjUmeka!gm2-sw)pxg~y#naznu]g5959==1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`d9$|~"ynup,gjsi|Vn:090:4:W3+}usWocmcRijndpbpjt(ojeezkgio/pe+bta&{l$kczy_np\w|hdWocmc#ic0/uq+rvi|{%hcx`{_e3?1;333\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&~x${}`{r.alqkrXl86=28:4U1-{wqYaaoeTkh`jr`vlv*adgg|meka!rg-dvc(un&mex{Q`r^qzjfYaaoe%ka>!ws-ttkru'je~byQk1=5=11=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dh5(pz&}{by| cnwmpZb6414>86[?/yqw[coagVmnbh|ntnp,cfii~ocmc#|i/fpe*w`(og~}Sb|Psxl`[coag'mg<#y}/vrmpw)dg|dSi?39?70?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*rt(yd~"m`uov\`4Y7=:1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`d9$|~"ynup,gjsi|Vn:S<;<;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.vp,suhsz&idyczPd0]116=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dh5(pz&}{by| cnwmpZb6W:?87X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"z| wqlwv*eh}g~Th5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$l`= xr.usjqt(kfexRj>_670?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*rt(yd~"m`uov\`4Y?=:1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`d9$|~"ynup,gjsi|Vn:S4;;;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.vp,suhsz&idyczPd3>3:02<]9%syQiigm\c`hbzh~d~"ilootemci)zo%l~k }f.empsYhzVyrbnQiigm-ci6){%||cz}/bmvjqYc:5;5995Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$l`= xr.usjqt(kfexRj=<3<60>S7'qySkgio^efj`tf|fx$knaavgkek+ta'nxm"h govu[jtX{pdhSkgio/eo4+qu'~zex!lotlw[a4;;7??7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"z| wqlwv*eh}g~Th?2;>468Q5){}UmekaPgdlfvdrhz&mhccxiigm-vc)`zo$yj"iatw]lvZu~fjUmeka!gm2-sw)pxg~y#naznu]g6939==1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`d9$|~"ynup,gjsi|Vn90;0:4:W3+}usWocmcRijndpbpjt(ojeezkgio/pe+bta&{l$kczy_np\w|hdWocmc#ic0/uq+rvi|{%hcx`{_e0?3;333\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&~x${}`{r.alqkrXl;6328:4U1-{wqYaaoeTkh`jr`vlv*adgg|meka!rg-dvc(un&mex{Q`r^qzjfYaaoe%ka>!ws-ttkru'je~byQk2=;=16=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dh5(pz&}{by| cnwmpZb5W9?87X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"z| wqlwv*eh}g~Th?Q>529V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb hl1,tv*qwf}x$ob{at^f1[7343\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-djqpXg{UxucmPfhdl*bj7&~x${}`{r.alqkrXl;U89>5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'ndzRa}_r{mgZ`nnf$l`= xr.usjqt(kfexRj=_570?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!hnut\kwYtqgiTjdh`.fn3*rt(yd~"m`uov\`7Y2=:1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+bhs~VeyS~wac^djbj(`d9$|~"ynup,gjsi|Vn9S;;<;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%lbyxPos]p}keXn`ld"jb?.vp,suhsz&idyczPd3]416=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/flwrZiuWzseoRhffn,dh5(pz&}{by| cnwmpZb5W1?87X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)`f}|TcQ|yoa\bl`h&nf;"z| wqlwv*eh}g~Th?Q6b39V4*~t|VlbjbQheogqeqiu'nidb{hffn,qb*aun'xm#j`{v^mq[vikVlbjb bel-dfh(`jdm%kocha/ldafe)jdm$kco{iwgaib(ii}c}iRlck^ofiZabf&|j`dj!crvq+wgjdfe{W=S!r`o-v*u4Wgebbdz!r`o,`utfe'n{=5v>8/pbi1b<]9%syQiigm\c`hbzh~d~"ilootemci)zo%l~k }f.empsYhzVyrbnQiigm-i`k(|dzT~lcPre]fj1c<]9%syQiigm\c`hbzh~d~"ilootemci)zo%l~k }f.empsYhzVyrbnQiigm-i`k(|dzT~lcPre]fj4543\:$t~zPfhdl[bcim{kc!hcnlubl`h&{l$kh!rg-qehYulVoe?>5Z0.zppZ`nnfUlick}aumq+behflbjb }f.eqb+ta'{kfSz|Peo1g?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!}su`oo*TT\VL^@AQHEO1g?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!}su`oo*tcW{ySl}}ef63?P6(pz~Tjdh`_fgmawgsg{%lob`yfhdl*w`(o{l%~k!}su`oo*tcW{ySl}}ef]g516<]9%syQiigm\c`hbzh~d~"ilootemci)zo%l~k }f.pppgjl'{nT~~zParpfcZb5;j1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+wusjea$~iQ}su]`khd4l2_;#u}{_gkekZabflxjxb| gbmmrcoag'xm#j|i.sd,vvredb%yhR||t^alig74m2_;#u}{_gkekZabflxjxb| gbmmrcoag'xm#j|i.sd,vvredb%yhR||t^pfc969;l1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+wusjea$~iQ}su]qab:66:o0Y=!wsu]emciXoldn~lz`r.e`kkpaaoe%~k!hrg,qb*tt|kf`#jPrrv\v`a;:79o7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)u{}hgg"|k_sqw[wc`W99o7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)u{}hgg"|k_sqw[wc`W89o7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)u{}hgg"|k_sqw[wc`W;9<7X> xrv\bl`hWnoeio{os-dgjhqn`ld"h gsd-vc)u{}hgg"||t^f272=R8&rxxRhffn]dakcui}ey#jm`nwdjbj(un&myj#|i/sqwfim(zz~Th?=8;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%yylck.pppZb4;m1^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+wusjea${Q}su]bwwc`<91^<"v|t^djbjY`mgoymya}/faljs`nnf$yj"i}f/pe+wusjea${Q}su]bwwc`Wm;?<6[?/yqw[coagVmnbh|ntnp,cfii~ocmc#|i/fpe*w`(zz~i`f!xr^pppZgtzlmTh?=l;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%yylck.uq[wusWjefn>j4U1-{wqYaaoeTkh`jr`vlv*adgg|meka!rg-dvc(un&xxxobd/vp\vvrXkfgi=>k4U1-{wqYaaoeTkh`jr`vlv*adgg|meka!rg-dvc(un&xxxobd/vp\vvrXzlm7<3=j;T2,|vrXn`ldSjkaescwkw)`kfd}jdh`.sd,cw`)zo%yylck.uq[wusW{ol0<05YCB;8RLCPW]S[I>5XE@18S@Dd3^XBXHQBOEG\Ef=PZ@^NS@AKE^@2`>^ND@DS!UJM 1,2$VRRJ):%=-O\CHK6?]IUKP<0T^ZCIC58\VRXOGN<7U][_WA@f>^XKFXNSD@IO79[`gYNlo1SheQ_rhoUawungg;;7Ujb_LcikwPbzzcdb<>4Xeo\Ilhhz_oydaa3:Zpp3=cag6;2;5kio>2:3=cag692;5kio>0:3=cag6?2;5kio>6:3=cag6=255kio>4>5813mce0:08;emvp969?2ndyy2>>69gkpr;:7=0hb{{<2<4?air|5>5;6j`uu>6:2=cg|~7:374dnww82<76>1ocxz37?78ahvsq;l0jdh`_fgmawgsg{U}5R?# Ykomk~'KFXN,Jkaescwkw&6<';?7k{cl99mcfdraen=7jPcmi6?wbXmg90~~z;;upva3=pzVigg85xr^gmyEFw0k:0LMv6a;D90?7|[:o1?>k5114956576533tY8o7=mh7?=5d58Wc2=;<>1<7?<316e`?75=lh0_>m534694?74;9>mh7?=5dg8`3;8?=:id;311`2<~];:<7>51;3956b|[:o1?>k5114956574=rnl0;7p*>06824>d>i3:1=:4>26827a}O;;n0(;=;%14>08800c=i9921<65`35g94?"680088k5a11:95>=h;=n1<7*>08800c=i9921>65`35a94?"680088k5a11:97>=h;=h1<7*>08800c=i9921865`35c94?"680088k5a11:91>=h;=31<7*>08800c=i9921:65`35:94?"680088k5a11:93>=n;==1<7*>088003=i9921<65f35794?"680088;5a11:95>=n;=>1<7*>088003=i9921>65f35194?"680088;5a11:97>=n;=81<7*>088003=i9921865f35394?"680088;5a11:91>=n;=:1<7*>088003=i9921:65f32d94?"680088;5a11:93>=e;:=1<7?50;2x 47220l0D>=9;I11`>i>m3:17pl<3983>4<729q/=<;533g8L6513A99h6a>0483>>{e:;k1<7:50;2x 4722020D>=9;I11`>"fl3>0e>;50;9j7c<722c:?j50;694?6|,8;>6464H215?M55l2.jh7:4i2794?=n;o0;66g>0`83>>i68k0;66sm2`:94?2=83:p(1<7>t$036><><@:9=7E==d:&b`?2>o68h0;66a>0c83>>{e;8?1<7:50;2x 47220<0D>=9;I11`>"fl3;0e>;50;9j7g<722c8j7>5;n33f?6=3th8>>4?:583>5}#98?1555G3248L64c3A987)hm:27;?!gc2=1b?84?::k0b?6=3`;;m7>5;n33f?6=3th8=54?:283>5}#98?1585G3248L64c3A987)hm:27;?!gc281b?84?::k0b?6=3f;;n7>5;|`063<72:0;6=u+1079=0=O;:<0D>5;n33f?6=3th8>?4?:583>5}#98?1555G3248L64c3A987)hm:27;?!gc2=1b?84?::k0b?6=3`;;m7>5;n33f?6=3th8=:4?:283>5}#98?1585G3248L64c3A987)hm:27;?!gc281b?84?::k0b?6=3f;;n7>5;|`061<72<0;6=u+1079=<=O;:<0D>t$036><3<@:9=7E==d:J07>"aj39>46*nd;38m63=831b?k4?::m24g<722wi?<850;794?6|,8;>6474H215?M55l2B8?6*ib;16<>o4=3:17d=9:188m6`=831b==o50;9l55d=831vn><>:187>5<7s-;:9777;I102>N4:m1C?>5+fc801==#im0?7d=::188m6`=831b==o50;9l55d=831vn>5<7s-;:9777;I102>N4:m1/mi4;;h16>5<5<3290;w)?>5;;;?M54>2B8>i5+ae87?l522900e>h50;9j55g=831d==l50;9~f67b290?6=4?{%321???3A98:6F<2e9'ea<33`9>6=44i2d94?=n99k1<75`11`94?=zj:8h6=4;:183!76=3337E=<6:J06a=#im0?7d=::188m6`=831b==o50;9l55d=831vn>5<7s-;:9777;I102>N4:m1/mi4;;h16>5<5<4290;w)?>5;101>N4;?1C??j4i2:94?=nn;0;66a>0583>>{e:=k1<7=50;2x 4722:9>7E=<6:J06a=n;10;66gi2;29?j77<3:17pl=3d83>1<729q/=<;5fb9K760<@:8o7d=7:188m16=831b==k50;9l552=831vn?:6:180>5<7s-;:97=<5:J073=O;;n0e>650;9jb7<722e:<94?::a66e=83>1<7>t$036>ce<@:9=7E==d:k0;6=44i02f>5<148070=O;:<0D>5<0;6>4?:1y'543=;:?0D>=9;I11`>o403:17dh=:188k4632900qo<<8;290?6=8r.:=84ic:J073=O;;n0e>650;9j05<722c:9850;194?6|,8;>6>=:;I102>N4:m1b?54?::ke6?6=3f;;87>5;|`173<72=0;6=u+1079bf=O;:<0D>5<1<75rb366>5<4290;w)?>5;101>N4;?1C??j4i2:94?=nn;0;66a>0583>>{e::>1<7:50;2x 4722oi0D>=9;I11`>o403:17d:?:188m46b2900c<>;:188yg43<3:1?7>50z&250<4;<1C?>84H20g?l5?2900ek<50;9l552=831vn?==:187>5<7s-;:97hl;I102>N4:m1b?54?::k74?6=3`;;i7>5;n330?6=3th98>4?:283>5}#98?1?>;4H215?M55l2c847>5;hd1>5<148eg>N4;?1C??j4i2:94?=n<90;66g>0d83>>i68=0;66sm25094?5=83:p(2B8>i5f3983>>oa:3:17b??4;29?xd5:o0;694?:1y'543=nj1C?>84H20g?l5?2900e9>50;9j55c=831d==:50;9~f70f290>6=4?{%321??03A98:6F<2e9'ea<63`9>6=44i2494?=n;k0;66g0<729q/=<;5969K760<@:8o7)ok:09j70<722c8:7>5;h1a>5<5;|`123<72<0;6=u+1079=2=O;:<0D>4=n;<0;66g<6;29?l5e2900e>h50;9l55d=831vn?87:186>5<7s-;:9778;I102>N4:m1/mi4>;h16>5<>o4n3:17b??b;29?xd5>=0;684?:1y'543=1>1C?>84H20g?!gc281b?84?::k02?6=3`9i6=44i2d94?=h99h1<75rb340>5<2290;w)?>5;;4?M54>2B8>i5+ae82?l522900e>850;9j7g<722c8j7>5;n33f?6=3th9:84?:483>5}#98?15:5G3248L64c3-ko6<5f3483>>o4>3:17d=m:188m6`=831d==l50;9~f706290>6=4?{%321??>3A98:6F<2e9'ea<33`9>6=44i2494?=n;o0;66g>0`83>>i68k0;66sm27094?3=83:p(5<55;294~"69<02;6F<379K77b<,hn1=6g<5;29?l512900e>l50;9j7c<722e:t$036><1<@:9=7E==d:&b`?7>o4j3:17d=i:188k46e2900qo<8c;291?6=8r.:=8467:J073=O;;n0(lj51:k01?6=3`9=6=44i2`94?=n;o0;66a>0c83>>{e:>h1<7;50;2x 47220=0D>=9;I11`>"fl3;0e>;50;9j73<722c8n7>5;h1e>5<148:3>N4;?1C??j4$`f95>o4=3:17d=9:188m6d=831b?k4?::m24g<722wi>:750;794?6|,8;>6494H215?M55l2.jh7?4i2794?=n;?0;66gm:188yg4003:197>50z&250<>?2B8?;5G33f8 db=92c897>5;h15>5<>i68k0;66sm26594?3=83:p(5<55;294~"69<02;6F<379K77b<,hn1=6g<5;29?l512900e>l50;9j7c<722e:t$036><1<@:9=7E==d:&b`?7>o4j3:17d=i:188k46e2900qo<6a;290?6=8r.:=84ic:J073=O;;n0e>650;9j05<722c:4750;694?6|,8;>6km4H215?M55l2c847>5;h63>5<5<54;294~"69<0mo6F<379K77b>o68l0;66a>0583>>{e:0=1<7:50;2x 4722oi0D>=9;I11`>o403:17d:?:188m46b2900c<>;:188yg4>>3:187>50z&250=831b8=4?::k24`<722e:<94?::a6=1=83>1<7>t$036>ce<@:9=7E==d:k0;6=44i02f>5<148eg>N4;?1C??j4i2:94?=n<90;66g>0d83>>i68=0;66sm29794?2=83:p(j:188k4632900qo<74;290?6=8r.:=84ic:J073=O;;n0e>650;9j05<722c:5=50;694?6|,8;>6km4H215?M55l2c847>5;h63>5<5<54;294~"69<0mo6F<379K77b>o68l0;66a>0583>>{e:8i1<7:50;2x 4722oi0D>=9;I11`>o403:17d:?:188m46b2900c<>;:188yg46j3:187>50z&250=831b8=4?::k24`<722e:<94?::a64g=83>1<7>t$036>ce<@:9=7E==d:k0;6=44i02f>5<148eg>N4;?1C??j4i2:94?=n<90;66g>0d83>>i68=0;66sm21c94?2=83:p(j:188k4632900qo650;9j05<722c:=650;694?6|,8;>6km4H215?M55l2c847>5;h63>5<5<54;294~"69<0mo6F<379K77b>o68l0;66a>0583>>{e:9<1<7:50;2x 4722oi0D>=9;I11`>o403:17d:?:188m46b2900c<>;:188yg4a<3:197>50z&250<>?2B8?;5G33f8 db=92c897>5;h15>5<>i68k0;66sm2g094?3=83:p(5;n33f?6=3th9j>4?:483>5}#98?15:5G3248L64c3-ko6<5f3483>>o4>3:17d=m:188m6`=831d==l50;9~f7`2290>6=4?{%321??03A98:6F<2e9'ea<63`9>6=44i2494?=n;k0;66g0<729q/=<;5969K760<@:8o7)ok:09j70<722c8:7>5;h1a>5<5;|`1b2<72<0;6=u+1079=2=O;:<0D>4=n;<0;66g<6;29?l5e2900e>h50;9l55d=831vn?h7:186>5<7s-;:9778;I102>N4:m1/mi4>;h16>5<>o4n3:17b??b;29?xd5nh0;684?:1y'543=1>1C?>84H20g?!gc281b?84?::k02?6=3`9i6=44i2d94?=h99h1<75rb3da>5<2290;w)?>5;;4?M54>2B8>i5+ae82?l522900e>850;9j7g<722c8j7>5;n33f?6=3th9o54?:283>5}#98?1?>;4H215?M55l2c847>5;hd1>5<148070=O;:<0D>5<4?:1y'543=;:?0D>=9;I11`>o403:17dh=:188k4632900qo650;9j05<722c:n;50;194?6|,8;>6>=:;I102>N4:m1b?54?::ke6?6=3f;;87>5;|`1f2<72=0;6=u+1079bf=O;:<0D>5<1<75rb3a7>5<4290;w)?>5;101>N4;?1C??j4i2:94?=nn;0;66a>0583>>{e:k?1<7:50;2x 4722oi0D>=9;I11`>o403:17d:?:188m46b2900c<>;:188yg4d;3:1?7>50z&250<4;<1C?>84H20g?l5?2900ek<50;9l552=831vn?l<:187>5<7s-;:97hl;I102>N4:m1b?54?::k74?6=3`;;i7>5;n330?6=3th9o?4?:283>5}#98?1?>;4H215?M55l2c847>5;hd1>5<148eg>N4;?1C??j4i2:94?=n<90;66g>0d83>>i68=0;66sm2b394?5=83:p(2B8>i5f3983>>oa:3:17b??4;29?xd5io0;694?:1y'543=nj1C?>84H20g?l5?2900e9>50;9j55c=831d==:50;9~f7e729086=4?{%321?54=2B8?;5G33f8m6>=831bj?4?::m241<722wi>lj50;694?6|,8;>6km4H215?M55l2c847>5;h63>5<5<53;294~"69<08?85G3248L64c3`936=44ig094?=h99>1<75rb3c`>5<3290;w)?>5;d`?M54>2B8>i5f3983>>o383:17d??e;29?j77<3:17pl=e683>0<729q/=<;5969K760<@:8o7)ok:09j70<722c8:7>5;h1a>5<5;|`1a0<72<0;6=u+1079=2=O;:<0D>4=n;<0;66g<6;29?l5e2900e>h50;9l55d=831vn?k<:186>5<7s-;:9778;I102>N4:m1/mi4>;h16>5<>o4n3:17b??b;29?xd5m;0;684?:1y'543=1>1C?>84H20g?!gc281b?84?::k02?6=3`9i6=44i2d94?=h99h1<75rb3g7>5<2290;w)?>5;;4?M54>2B8>i5+ae82?l522900e>850;9j7g<722c8j7>5;n33f?6=3th9i=4?:483>5}#98?15:5G3248L64c3-ko6<5f3483>>o4>3:17d=m:188m6`=831d==l50;9~f7ba290>6=4?{%321??>3A98:6F<2e9'ea<33`9>6=44i2494?=n;o0;66g>0`83>>i68k0;66sm2d394?3=83:p(5<55;294~"69<02;6F<379K77b<,hn1=6g<5;29?l512900e>l50;9j7c<722e:t$036><1<@:9=7E==d:&b`?7>o4j3:17d=i:188k46e2900qo=?e;291?6=8r.:=8467:J073=O;;n0(lj51:k01?6=3`9=6=44i2`94?=n;o0;66a>0c83>>{e;9n1<7;50;2x 47220=0D>=9;I11`>"fl3;0e>;50;9j73<722c8n7>5;h1e>5<148:3>N4;?1C??j4$`f95>o4=3:17d=9:188m6d=831b?k4?::m24g<722wi?=l50;794?6|,8;>6494H215?M55l2.jh7?4i2794?=n;?0;66gm:188yg57i3:197>50z&250<>?2B8?;5G33f8 db=92c897>5;h15>5<>i68k0;66sm31;94?3=83:p(5<55;294~"69<02;6F<379K77b<,hn1=6g<5;29?l512900e>l50;9j7c<722e:t$036><1<@:9=7E==d:&b`?7>o4j3:17d=i:188k46e2900qo=?6;291?6=8r.:=8467:J073=O;;n0(lj51:k01?6=3`9=6=44i2`94?=n;o0;66a>0c83>>{e9;21<7:50;2x 47220<0D>=9;I11`>"fl3;0e>;50;9j7g<722c8j7>5;n33f?6=3th:>44?:583>5}#98?15;5G3248L64c3-ko6<5f3483>>o4j3:17d=i:188k46e2900qo?=a;290?6=8r.:=8466:J073=O;;n0(lj51:k01?6=3`9i6=44i2d94?=h99h1<75rb00a>5<3290;w)?>5;;5?M54>2B8>i5+ae82?l522900e>l50;9j7c<722e:1<7>t$036><0<@:9=7E==d:&b`?7>o4n3:17b??b;29?xd6:m0;694?:1y'543=1?1C?>84H20g?!gc281b?84?::k0f?6=3`9m6=44o02a>5<54;294~"69<02:6F<379K77b<,hn1=6g<5;29?l5e2900e>h50;9l55d=831vn<5<7s-;:9779;I102>N4:m1/mi4>;h16>5<>i68k0;66sm12294?2=83:p(5;|`274<72=0;6=u+1079=3=O;:<0D>4=n;<0;66gm:188yg74:3:187>50z&250<>>2B8?;5G33f8 db=92c897>5;h1a>5<:50;694?6|,8;>6484H215?M55l2.jh7?4i2794?=n;k0;66g3483>1<729q/=<;5979K760<@:8o7)ok:09j70<722c8n7>5;h1e>5<148:2>N4;?1C??j4$`f95>o4=3:17d=m:188m6`=831d==l50;9~f450290?6=4?{%321??13A98:6F<2e9'ea<63`9>6=44i2`94?=n;o0;66a>0c83>>{e9:21<7:50;2x 47220<0D>=9;I11`>"fl3;0e>;50;9j7g<722c8j7>5;n33f?6=3th:?44?:583>5}#98?15;5G3248L64c3-ko6<5f3483>>o4j3:17d=i:188k46e2900qo?5<3290;w)?>5;;5?M54>2B8>i5+ae82?l522900e>l50;9j7c<722e:1<7>t$036><0<@:9=7E==d:&b`?7>o4n3:17b??b;29?xd6;m0;694?:1y'543=1?1C?>84H20g?!gc281b?84?::k0f?6=3`9m6=44o02a>5<54;294~"69<02:6F<379K77b<,hn1=6g<5;29?l5e2900e>h50;9l55d=831vn<=i:187>5<7s-;:9779;I102>N4:m1/mi4>;h16>5<>i68k0;66sm15294?2=83:p(5;|`204<72=0;6=u+1079=3=O;:<0D>4=n;<0;66gm:188yg73:3:187>50z&250<>>2B8?;5G33f8 db=92c897>5;h1a>5<86=4;:183!76=33=7E=<6:J06a=#im0:7d=::188m6d=831b?k4?::m24g<722wi=9:50;694?6|,8;>6484H215?M55l2.jh7?4i2794?=n;k0;66g4483>1<729q/=<;5979K760<@:8o7)ok:09j70<722c8n7>5;h1e>5<148:2>N4;?1C??j4$`f95>o4=3:17d=m:188m6`=831d==l50;9~f420290?6=4?{%321??13A98:6F<2e9'ea<63`9>6=44i2`94?=n;o0;66a>0c83>>{e9=21<7:50;2x 47220<0D>=9;I11`>"fl3;0e>;50;9j7g<722c8j7>5;n33f?6=3th:844?:583>5}#98?15;5G3248L64c3-ko6<5f3483>>o4j3:17d=i:188k46e2900qo?;a;290?6=8r.:=8466:J073=O;;n0(lj51:k01?6=3`9i6=44i2d94?=h99h1<75rb06a>5<3290;w)?>5;;5?M54>2B8>i5+ae82?l522900e>l50;9j7c<722e:1<7>t$036><0<@:9=7E==d:&b`?7>o4n3:17b??b;29?xd684H20g?!gc281b?84?::k0f?6=3`9m6=44o02a>5<54;294~"69<02:6F<379K77b<,hn1=6g<5;29?l5e2900e>h50;9l55d=831vn<:i:187>5<7s-;:9779;I102>N4:m1/mi4>;h16>5<>i68k0;66sm17194?2=83:p(5;|`227<72=0;6=u+1079=3=O;:<0D>4=n;<0;66gm:188yg7193:187>50z&250<>>2B8?;5G33f8 db=92c897>5;h1a>5<6484H215?M55l2.jh7?4i2794?=n;k0;66g5d83>1<729q/=<;5979K760<@:8o7)ok:09j70<722c8n7>5;h1e>5<148:2>N4;?1C??j4$`f95>o4=3:17d=m:188m6`=831d==l50;9~f43d290?6=4?{%321??13A98:6F<2e9'ea<63`9>6=44i2`94?=n;o0;66a>0c83>>{e9=9;I11`>"fl3;0e>;50;9j7g<722c8j7>5;n33f?6=3th:9l4?:583>5}#98?15;5G3248L64c3-ko6<5f3483>>o4j3:17d=i:188k46e2900qo?mc;290?6=8r.:=8466:J073=O;;n0(lj51:k01?6=3`9i6=44i2d94?=h99h1<75rb0`a>5<3290;w)?>5;;5?M54>2B8>i5+ae82?l522900e>l50;9j7c<722e:1<7>t$036><0<@:9=7E==d:&b`?7>o4n3:17b??b;29?xd6j00;694?:1y'543=1?1C?>84H20g?!gc281b?84?::k0f?6=3`9m6=44o02a>5<54;294~"69<02:6F<379K77b<,hn1=6g<5;29?l5e2900e>h50;9l55d=831vn5<7s-;:9779;I102>N4:m1/mi4>;h16>5<>i68k0;66sm1c494?2=83:p(5;|`2f0<72=0;6=u+1079=3=O;:<0D>4=n;<0;66gm:188yg7e<3:187>50z&250<>>2B8?;5G33f8 db=92c897>5;h1a>5<6484H215?M55l2B8?6*ib;16<>"fl3;0e>;50;9j7g<722c8j7>5;n33f?6=3th:4=4?:583>5}#98?15;5G3248L64c3A987)hm:27;?!gc281b?84?::k0f?6=3`9m6=44o02a>5<54;294~"69<02:6F<379K77b<@:90(kl534:8 db=92c897>5;h1a>5<6=44i2`94?=n;o0;66a>0c83>>{e9>n1<7:50;2x 47220<0D>=9;I11`>N4;2.mn7=:8:&b`?7>o4n3:17b??b;29?xd6?j0;694?:1y'543=1?1C?>84H20g?M543-li6>;7;%cg>4=n;<0;66gm:188yg70j3:187>50z&250<>>2B8?;5G33f8L65<,oh1?864$`f95>o4=3:17d=m:188m6`=831d==l50;9~f41f290?6=4?{%321??13A98:6F<2e9K76=#nk08955+ae82?l522900e>l50;9j7c<722e:1<7>t$036><0<@:9=7E==d:J07>"aj39>46*nd;38m63=831b?o4?::k0b?6=3f;;n7>5;|`23=<72=0;6=u+1079=3=O;:<0D>5;h1e>5<148:2>N4;?1C??j4H218 cd=;<20(lj51:k01?6=3`9i6=44i2d94?=h99h1<75rb0f:>5<3290;w)?>5;;5?M54>2B8>i5G329'bg<4=11/mi4>;h16>5<>i68k0;66sm1e:94?2=83:p(d683>1<729q/=<;5979K760<@:8o7E=<;%da>63?3-ko6<5f3483>>o4j3:17d=i:188k46e2900qo?k6;290?6=8r.:=8466:J073=O;;n0D>=4$g`970><,hn1=6g<5;29?l5e2900e>h50;9l55d=831vn5<7s-;:9779;I102>N4:m1C?>5+fc801==#im0:7d=::188m6d=831b?k4?::m24g<722wi=i:50;694?6|,8;>6484H215?M55l2B8?6*ib;16<>"fl3;0e>;50;9j7g<722c8j7>5;n33f?6=3th:h>4?:583>5}#98?15;5G3248L64c3A987)hm:27;?!gc281b?84?::k0f?6=3`9m6=44o02a>5<7>54;294~"69<02:6F<379K77b<@:90(kl534:8 db=92c897>5;h1a>5<6=44i2`94?=n;o0;66a>0c83>>{e;;21<7=50;2x 4722o=0D>=9;I11`>"fl3h0el?50;9je7<722e:<94?::a74g=8391<7>t$036>c1<@:9=7E==d:&b`?d>i68=0;66sm1cg94?5=83:p(5<7s-;:97h8;I102>N4:m1/mi4>2:kb5?6=3`k96=44o027>5<53;294~"69<0m;6F<379K77b<,hn1=?5fa083>>of:3:17b??4;29?xd6:?0;6>4?:1y'543=n>1C?>84H20g?!gc2880el?50;9je7<722e:<94?::a573=8391<7>t$036>c1<@:9=7E==d:&b`?753`k:6=44i`094?=h99>1<75rb007>5<4290;w)?>5;d4?M54>2B8>i5+ae826>of93:17do=:188k4632900qo?=3;297?6=8r.:=84i7:J073=O;;n0(lj5139je4<722cj>7>5;n330?6=3th:>?4?:283>5}#98?1j:5G3248L64c3-ko6<<4i`394?=ni;0;66a>0583>>{e9;;1<7=50;2x 4722o=0D>=9;I11`>"fl3;97do>:188md4=831d==:50;9~f44729086=4?{%321?`03A98:6F<2e9'ea<6:2cj=7>5;hc1>5<148e3>N4;?1C??j4$`f957=ni80;66gn2;29?j77<3:17pl>1d83>6<729q/=<;5f69K760<@:8o7)ok:008md7=831bm?4?::m241<722wi=6k94H215?M55l2.jh7?=;hc2>5<6gn1;29?lg52900c<>;:188yg76j3:1?7>50z&2505;|`25d<72:0;6=u+1079b2=O;:<0D>44>i68=0;66sm10;94?5=83:p(5<7s-;:97h8;I102>N4:m1/mi4>2:kb5?6=3`k96=44o027>5<53;294~"69<0m;6F<379K77b<,hn1=?5fa083>>of:3:17b??4;29?xd69?0;6>4?:1y'543=n>1C?>84H20g?!gc2880el?50;9je7<722e:<94?::a5f6=83>1<7>t$036>c><@:9=7E==d:&b`?7f3`k:6=44i`094?=ni:0;66a>0583>>{e9?=1<7:50;2x 4722o20D>=9;I11`>"fl3;j7do>:188md4=831bm>4?::m241<722wi=n<50;794?6|,8;>6k74H215?M55l2.jh7?;;hc2>5<>of<3:17b??4;29?xd6>00;684?:1y'543=n01C?>84H20g?!gc28>0el?50;9je7<722cj?7>5;hc7>5<148e<>N4;?1C??j4$`f9=6=ni80;66gn2;29?lg42900c<>;:188yg45m3:1?7>50z&2505;hc1>5<148e3>N4;?1C??j4$`f957=ni80;66gn2;29?j77<3:17pl>6c83>6<729q/=<;5f69K760<@:8o7)ok:008md7=831bm?4?::m241<722wi=n850;694?6|,8;>6k64H215?M55l2.jh7?n;hc2>5<>i68=0;66sm17f94?2=83:p(=83?1<7>t$036>c?<@:9=7E==d:&b`?733`k:6=44i`094?=ni:0;66gn4;29?j77<3:17pl>6g83>0<729q/=<;5f89K760<@:8o7)ok:068md7=831bm?4?::kb7?6=3`k?6=44o027>5<53;294~"69<0m;6F<379K77b<,hn1n6gn1;29?lg52900c<>;:188yg4f<3:197>50z&2501<75rb3;2>5<2290;w)?>5;d:?M54>2B8>i5+ae82=>of93:17do=:188md5=831bm94?::m241<722wi>?950;794?6|,8;>6k74H215?M55l2.jh7?:;hc2>5<>of<3:17b??4;29?xd59=0;684?:1y'543=n01C?>84H20g?!gc28?0el?50;9je7<722cj?7>5;hc7>5<148e=>N4;?1C??j4$`f95<=ni80;66gn2;29?lg42900el:50;9l552=831vn?7?:186>5<7s-;:97h6;I102>N4:m1/mi4>9:kb5?6=3`k96=44i`194?=ni=0;66a>0583>>{e:;<1<7;50;2x 4722o30D>=9;I11`>"fl3;>7do>:188md4=831bm>4?::kb0?6=3f;;87>5;|`156<72<0;6=u+1079b<=O;:<0D>43>of;3:17do;:188k4632900qo7>5;hc0>5<1<75`11694?=zj;2m6=4::183!76=3l27E=<6:J06a=#im0:56gn1;29?lg52900el=50;9je1<722e:<94?::a673=83?1<7>t$036>c?<@:9=7E==d:&b`?723`k:6=44i`094?=ni:0;66gn4;29?j77<3:17pl=1383>0<729q/=<;5f89K760<@:8o7)ok:078md7=831bm?4?::kb7?6=3`k?6=44o027>5<55;294~"69<0m56F<379K77b<,hn1=45fa083>>of:3:17do<:188md2=831d==:50;9~f7>b290>6=4?{%321?`>3A98:6F<2e9'ea<612cj=7>5;hc1>5<>i68=0;66sm23694?3=83:p(5;n330?6=3th9=<4?:483>5}#98?1j45G3248L64c3-ko6<;4i`394?=ni;0;66gn3;29?lg32900c<>;:188yg45k3:187>50z&2505<55;294~"69<0m56F<379K77b<,hn1=<5fa083>>of:3:17do<:188md2=831d==:50;9~f7g7290>6=4?{%321?`>3A98:6F<2e9'ea<612cj=7>5;hc1>5<>i68=0;66sm29f94?3=83:p(5;n330?6=3th9>>4?:483>5}#98?1j45G3248L64c3-ko6<;4i`394?=ni;0;66gn3;29?lg32900c<>;:188yg4683:197>50z&2501<75rb0aa>5<4290;w)?>5;d4?M54>2B8>i5+ae82<>of93:17do=:188k4632900qo?82;297?6=8r.:=84i7:J073=O;;n0(lj5199je4<722cj>7>5;n330?6=3th:oh4?:583>5}#98?1j55G3248L64c3-ko6<=4i`394?=ni;0;66gn3;29?j77<3:17pl>7483>1<729q/=<;5f99K760<@:8o7)ok:018md7=831bm?4?::kb7?6=3f;;87>5;|`2`5<72<0;6=u+1079b<=O;:<0D>4d>of;3:17do;:188k4632900qo?87;291?6=8r.:=84i9:J073=O;;n0(lj51c9je4<722cj>7>5;hc0>5<1<75`11694?=zj;9m6=4=:183!76=3l=7E=<6:J06a=#im0i7do>:188k4632900qo<5;|`17g<72;0;6=u+1079b3=O;:<0D>g=ni80;66a>0583>>{e::31<7<50;2x 4722o<0D>=9;I11`>"fl3h0el?50;9l552=831vn?=8:181>5<7s-;:97h9;I102>N4:m1/mi4m;hc2>5<148e2>N4;?1C??j4$`f9f>of93:17b??4;29?xd5;:0;6?4?:1y'543=n?1C?>84H20g?!gc2k1bm<4?::m241<722wi>>?50;094?6|,8;>6k84H215?M55l2.jh7l4i`394?=h99>1<75rb3``>5<5290;w)?>5;d5?M54>2B8>i5+ae8a?lg62900c<>;:188yg4ei3:1>7>50z&2502B8?;5G33f8 db=j2cj=7>5;n330?6=3th9n54?:383>5}#98?1j;5G3248L64c3-ko6o5fa083>>i68=0;66sm2c494?4=83:p(5<7>52;294~"69<0m:6F<379K77b<,hn1n6gn1;29?j77<3:17pl=b183>7<729q/=<;5f79K760<@:8o7)ok:c9je4<722e:<94?::a6dc=8381<7>t$036>c0<@:9=7E==d:&b`?dh6=4=:183!76=3l=7E=<6:J06a=#im0i7do>:188k4632900qo5;|`104<72;0;6=u+1079b5=O;:<0D>5<148e4>N4;?1C??j4i`294?=h99>1<75rb233>5<1<3:114824f=O;:<0D>d}22?0<654l:e8:>`=<:02g?!769380(l;53:&b2?5<,h=1?6*n8;18 d?=;2.jm7=4$``97>"fk390(lk53:&bb?5<,k:1?6*m1;18 g4=;2.i?7=4$c697>"e=390(o853:&a3?5<,k21?6*m9;18 gg=;2.in7=4$ca97>"el390(ok53:&ab?5<,j:1?6*l1;18 f4=;2.h?7=4$b697>"d=390(n853:&`3?5<,j21?6*l9;18 fg=;2.hn7=4$ba97>"dl390(nk53:&`b?5<,m:1?6*k1;18 a4=;2.o?7=4$e697>"c=390(i853:&g3?5<,m21?6*k9;18 ag=;2.on7=4$ea97>"cl390(ik53:&gb?5<,l:1?6*j1;18 `4=;2.n?7=4$d697>"b=390(h853:&f3?5<,l21?6*j9;18 `g=;2.nn7=4$da97>"bl390(<>i:208 `c=:2.nj7<4$211>46c3-;:>7<4i2;94?=n;h0;66g61;29?l?52900e=?:188m6562900e?850;&24<<5=2d:<54?;:k10?6=,8:26?;4n02;>4=08811>h6810976g=2;29 46>2;?0b<>7:298m77=83.:<44=5:l24=<332c9<7>5$02:>730985?>o6m3:1(<>6:378j46?2>10e<=08804>h6810;76g=f;29 46>2::0b<>7:098m7c=83.:<44<0:l24=<532c9h7>5$02:>6654i3a94?"68008<6`>0987?>o5j3:1(<>6:228j46?2<10e?o50;&24<<482d:<549;:k1=?6=,8:26>>4n02;>2=08804>h6810376g=7;29 46>2::0b<>7:898m1>=83.:<44;7:l24=<732c?:7>5$02:>110981?>o3<3:1(<>6:558j46?2:10e9=50;&24<<3?2d:<54;;:k76?6=,8:26994n02;>0=08873>h6810=76g:0;29 46>2==0b<>7:698m1`=83.:<44;7:l24=5$02:>11098b?>o3k3:1(<>6:558j46?2k10e9l50;&24<<3?2d:<54l;:k7e?6=,8:26994n02;>a=08873>h6810n76g;1;29 46>2==0b<>7:g98m0?=83.:<44:8:l24=<732c>;7>5$02:>0>46`>0981?>o2=3:1(<>6:4:8j46?2:10e8:50;&24<<202d:<54;;:k67?6=,8:26864n02;>0=0886<>h6810=76g91;29 46>2<20b<>7:698m36=83.:<44:8:l24=j7>5$02:>0>46`>098b?>o2l3:1(<>6:4:8j46?2k10e8m50;&24<<202d:<54l;:k6f?6=,8:26864n02;>a=0886<>h6810n76g:2;29 46>2<20b<>7:g98m33=83.:<4494:l24=<732c=?7>5$02:>320983?>o1>3:1(<>6:758j46?2810c:>50;&24<<1n2d:<54?;:m5a?6=,8:26;h4n02;>4=0885b>h6810976a9c;29 46>2?l0b<>7:298k3d=83.:<449f:l24=<332e=m7>5$02:>3`0985?>i003:1(<>6:7d8j46?2>10c:950;&24<<1n2d:<547;:m42?6=,8:26;h4n02;><=?1<7*>0885b>h6810j76a84;29 46>2?l0b<>7:c98k25=83.:<449f:l24=7>5$02:>3`098f?>i113:1(<>6:7d8j46?2o10c5j50;&24<4=088;4>h6810;76a8f;29 46>21:0b<>7:098k2c=83.:<4470:l24=<532e5$02:>=654o6a94?"68003<6`>0987?>i0j3:1(<>6:928j46?2<10c5o50;&24<4n02;>2=088;4>h6810376a77;29 46>21:0b<>7:898k=0=83.:<4470:l24=5$02:>=6098`?>i?;3:1(<>6:928j46?2m10c5<50;&24<4n02;>c=088;b>h6810;76a7e;29 46>21l0b<>7:098yg7di3:1:7>50z&2500583>>{e9>;1<7850;2x 4722ok0D>=9;I11`>"fl3;i7do>:188md4=831bm>4?::kb0?6=3fl86=44o027>5<m278>o4=4k4<8:?107<40279?=4;0:?177<38279?94;0:?173<38279?54;0:?17d<38279?n4;0:?17`<382795;4;0:?1=2<38279554;0:?1=<<382795l4;0:?1<6<38279494;0:?1<0<382794;4;0:?1<2<38279=44;0:?15d<38279=o4;0:?15f<38279=i4;0:?143<38279<:4;0:?14=<38279<44;0:?14d<38279mn4<8:?1fc<40279mi4;0:?1ec<38279n<4;0:?1f6<38279n84;0:?1f2<38279n44;0:?1fg<38278==4>129>746=;:;01>??:5:896772=<01>??:57896772=>01>??:5d896772=o01>??:5f896772=i01>??:4;896772<=01>??:44896772??:46896772<901>??:70896772?;01>??:72896772??:4g896772??:4a896772??:4c896772<801>??:77896772?901>??:7:896772?<0q~??0;293~;4;10:<85223d905=::0<1?55229197==::831?55221497==::hi18=5rs022>5<5s4;hm7h<;<3`f?g53ty:527=n:16=:<5a39~w4372908w0?:a;33f>;5i90j?63=8e8b7>{t9<;1<7=t=07a>46e348j<7o>;<0;`?g63ty:9?4?:2y>50e=99h01?o>:`1897>b2h90q~?:3;297~;6=m0:5<4s4;>i7??b:?1e7u2172955d<5;k86l=4=3;3>d5;7>53z?224<68k16>l=5a09>6<6=i81v<;7:180871:3;;n63=a58b7>;5180j?6s|14;94?5|58<86<>m;<0b0?g63482=7o>;|q221<72;q6=;<53g9>533=99>0q~?96;296~;6>808j63>668241=z{8<36=49{<354?5a34;=57??4:?22g6b83>7}:952z?21a<4n27::k4>059~w4172909w0?:c;1e?870:3;;86s|16194?5|58=>6l=4=054>d2<58=:6<>;;|q231<72;q6=8l53g9>523=99>0q~?86;296~;6=h08j63>768241=z{8296=4={<3;4?5a34;::7??4:p5=5=838p1<9i:2d8947028:?7p}>8583>7}:9>o1?k5210:955252z?23a<4n27:=44>059~w4>12909w0?8c;1e?876i3;;86s|19594?4|58=i6>h4=03a>4633ty:454?:3y>52g=;o16=v3>7880b>;69m0:<95rs0:b>5<5s4;<47=i;<32a?77<2wx=5l50;0x941?28:i70?<2;1e?xu60j0;6?u216;955d<58986>h4}r3;`?6=:r7:;l4>0c9>562=;o1v<6j:181870j3;;n63>3480b>{t91l1<746e34;8:7=i;|q2=5<72;q6=:j511`894502:l0q~?61;296~;6?l0:9583>7}:91;1==l4=01a>6`52z?203<4n27:??4>0c9~w4?12909w0?;7;1e?874;3;;n6s|18594?4|58>36>h4=017>46e3ty:554?:3y>51?=;o16=>;511`8yv7>13:1>v3>4`80b>;6;?0:5<5s4;?n7=i;<303?77j2wx=4l50;0x942d2:l01<=7:02a?xu61j0;6?u215f97c=:9:31==l4}r3:`?6=:r7:8h4{t90l1<746e34;<;7o>;|q2e5<72:q6=99511`894122h;01<98:`08yv7f93:18v3>49824g=:9>81m<521679e7=:9>=1m>5rs0c1>5<4s4;?57??b:?22cp1<:n:02a?871l3k870?9f;c1?87093k97p}>a583>0}:9=h1==l4=04a>d7<58d5<58=:6l=4}r3b1?6=:r7:8n4>0c9>53?=i81v668b7>;6>00j>6s|1`594?2|58>n6<>m;<351?g634;=;7o=;<35=?g43ty:m54?:4y>535=;o16=9h511`894022h801<88:`38940>2h>0q~?n9;297~;6j:0:5<4s4;i87??b:?1661;c2?xu6ij0;6>u21c4955d<5;8?6l<4=332>d453z?2f2<68k16>?;5a09>644=i81v;59;0j>6s|1`d94?5|58h26<>m;<012?g6348:?7o>;|q2f5<72:q6=oo511`897412h801??<:`08yv7e93:1?v3>bc824g=::;=1m<522069e4=z{8h96=4<{<3ag?77j279>:4n2:?151r7:n445f0=i816=n65a29>5fg=i=1v{t9j?1<76`<58i=6<>;;|q2g2<72;q6=o853g9>5f>=99>0q~?l9;296~;6j<08j63>cc8241=z{8ih6=4<{<3`a?g434;o<7o;;<3`e?77<2wx=nj50;0x94d32:l01{t9mn1<76`<588:6<>;;|q2``<72;q6=i853g9>574=99>0q~?kf;296~;6l<08j63>228241=z{8o;6=4={<3g0?5a34;987??4:p5`7=838p1e383>7}:9m81?k52134955252z?2`4<4n27:>:4>059~w4c32909w0?k1;33f>;6:108j6s|1d794?4|58n96<>m;<31=?5a3ty:i;4?:3y>5a5=99h01<v3>d5824g=:9;h1?k5rs0g;>5<5s4;o97??b:?26f<4n2wx=h750;0x94b128:i70?=d;1e?xu6mh0;6?u21e5955d<588n6>h4}r3ff?6=:r7:h54>0c9>57`=;o1v3180b>{t9ln1<746e34;8=7=i;|q2a`<72;q6=>m53g9>57>=99h0q~?jf;296~;6;m08j63>28824g=z{8l;6=4={<30a?5a34;9m7??b:p5c7=838p1<=i:2d8944e28:i7p}>f383>7}:9=:1?k5213a955d52z?204<4n27:>i4>0c9~w4`32909w0?;2;1e?875m3;;n6s|1g794?4|58>86>h4=00e>46e3ty:j;4?:3y>512=;o16=>>511`8yv7a?3:1>v3>4480b>;6;80:5<5s4;8o7??b:?2`5f`83>1}:9:o1==l4=0aa>d7<58in6l<4=0f3>d553z?27c<68k16=n65a39>5fg=i81vc78b7>;6k10j=63>c`8b6>{t9on1<7;t=062>46e34;h87o>;<3`2?g534;h47o;;<3`e?g43ty:jh4?:3y>514=99h0142824g=:9j:1m>521b09e7=z{;:;6=4;{<370?77j27:nh4n1:?2g564}r037?6=:r79<:4>059>65>=;11v?>;:18184703;;863=0880<>{t:9?1<7463348;m7=7;|q14g<72;q6>=8511g8977728:?7p}=0b83>7}::9=1==k4=332>4633ty965>=99o01??=:027?xu58l0;6?u221;955c<5;;86<>;;|q14c<72;q6>=o511g8977328:?7p}=1483>7}::831==:4=33b>6>52z?15d<68=16>b;330>;59j0846s|20:94?4|5;;h6<>;;<02`?5?3ty9=h4?:3y>64?=99o01?<<:027?xu59o0;6?u220c955c<5;8?6<>;;|q165<72;q6>7}::8i1==k4=305>4633ty9>?4?:3y>64b=99o01?<8:027?xu5:10;6?u221c9552<5;8h6l=4}r01=?6=:r79=i4>059>67e=i;1v?;5:l0j>6s|23`94?5|5;8j6>h4=30g>6`<5;8h6<>;;|q16a<72;qU?8?4=30g>46e3ty9>k4?:2y>67`=99>01?=?:2:897242:20q~<<0;297~;5;90:<95222097==::=>1?55rs312>5<4s488=7??4:?175<68l16>9=5f39~w7552908w0<<2;330>;5;=08463=4480<>{t::91<7=t=310>4633488>7??e:?101>:50;1x975328:?70<<6;1;?843>3937p}=3483>6}:::?1==:4=317>46b348?97h=;|q173<72:q6>>851168975?2:201?:8:2:8yv44?3:1?v3=368241=:::<1==k4=365>c453z?17=<68=16>>o5399>61>=;11v?=6:18084413;;863=39824`=::==1j?5rs31b>5<4s488m7??4:?17f<40279844<8:p66d=839p1?=m:027?844i3;;i63=498e6>{t::i1<7=t=31`>4633488i7=7;<07e?5?3ty9?i4?:2y>66b=99>01?=l:02f?84313l97p}=3d83>7}:::o1==:4=36a>6>53z?17c<68=16>>k511g8972f2o80q~<;0;297~;5:o0:059>61d=n;1v?:k:181841939m70<;2;330>{t:=o1<76`<5;>86<>;;|q10c<72;q6>;=53g9>612=99>0q~<:0;296~;5>=08j63=448241=z{;?:6=4={<051?5a348?:7??4:p604=838p1?89:2d8972028:?7p}=5283>7}::?=1?k5225:955287>52z?12=<4n279844>059~w7322909w0<99;1e?843i3;;86s|24494?4|5;h4=36a>4633ty99:4?:5y>623=;o16>;?511`897442h901?:>:`28yv4203:18v3=7780b>;5>;0:5<3s48<;7=i;<057?77j279>94n3:?1768o50;6x971?2:l01?8;:02a?844=3k:70<=4;c7?xu5=k0;69u226;97c=::??1==l4=306>d5<5;9<6l?4}r06g?6=>75a09>673=i=1v?;k:187840j39m70<97;33f>;5:?0j?63=3c8b5>{t:6`<5;<36<>m;<00`?g63489:7o;;|q11c<72=q6>:j53g9>63?=99h01?<8:`18975a2h;0q~<90;290~;5?l08j63=6`824g=::=i1m<522359e1=z{;d;c1?856838370<>0;c7?xu5>m0;68u2265955d<58;o6l?4=03`>d4<5;;:6l=4=233>7?55z?13=<68k16=54d=i;16?<>52`9>647=i=1v?8i:18684013;;n63>1c8b5>;69h0j>63=138b7>;49909n6s|26294?3|5;=j6<>m;<32e?g634;:57o=;<124?4d348:>7o;;|q134<72:l511`8947>2h;01??:3f8yv40:3:19v3=7b824g=:9821m<521059e7=:;8:1>h522019e1=z{;=86=4:{<04`?77j27:=:4n1:?253::50;7x971b28:i70?71;1e?876>3k:70=>0;12?846<3k?7p}=7g83>7}::191==:4=3:7>6>52z?1<1<68=16>5;5399~w7>62909w0<75;330>;50?0846s|29094?4|5;2=6<>;;<0;3?5?3ty9454?:3y>6=5=99o01?6k:027?xu5000;6?u2296955c<5;2n6<>;;|q15;511g897>a28:?7p}=8c83>7}::1<1==k4=3;3>4633ty94n4?:3y>6=1=99o01?7>:027?xu51;0;6?u22849552<5;3<6>64}r0:7?6=:r795:4>059>6<>=;11v?7;:18184>03;;863=9880<>{t:0?1<74633482m7=7;|q1=g<72;q6>48511g897g728:?7p}=9b83>7}::0=1==k4=3c2>4633ty95i4?:3y>6<>=99o01?o=:027?xu51l0;6?u228;955c<5;k86<>;;|q1=c<72;q6>4o511g897g328:?7p}=a483>7}::1=1==:4=3cb>d252z?1=d<68=16>lo5a39~w7g02909w0;5ik0j>6s|2`:94?4|V:?870{t:h31<7=t=3c;>6`<5;k<6>h4=3cb>4633ty9mn4?:2y>6de=99>01?ok:2:897e72:20q~5<4s48ji7??4:?1ea<68l16>n>5f39~w7ga2908w0;5j808463=c380<>{t:k:1<7=t=3`3>463348jj7??e:?1g4o?50;1x97d628:?706}::k81==:4=3`2>46b348h>7h=;|q1f6<72:q6>o=5116897d22:201?m;:2:8yv4e<3:1?v3=b58241=::k91==k4=3a0>c453z?1f0<68=16>o95399>6f3=;11v?l9:18084e>3;;863=b4824`=::j>1j?5rs3`4>5<4s48i;7??4:?1f<<40279o;4<8:p6g>=839p1?l7:027?84e?3;;i63=c48e6>{t:k31<7=t=3`:>463348in7=7;<0`3?5?3ty9nl4?:2y>6gg=99>01?l6:02f?84d>3l97p}=bc83>7}::kh1==:4=3a;>6>53z?1ff<68=16>ol511g897e02o80q~059>6f>=n;1v?mn:18184cm39m70{t:jh1<76`<5;i;6<>;;|q1gf<72;q6>h>53g9>6f7=99>0q~7}::l>1?k522b7955252z?1a0<4n279o;4>059~w7b52909w0h4=3a;>4633ty9h94?:5y>6ac=99h01?h=:2d897g72h>01?lj:`28yv4c=3:18v3=dg824g=::o91?k522`29e7=::ho1m<5rs3f5>5<3s48n<7??b:?1b1<4n279m<4n4:?1f5i950;6x97c628:i70h4=3c1>d2<5;h?6l?4}r0g=?6=4>0c9>6c1=;o16>l<5a39>6g0=i81v?jn:18784b<3;;n63=f980b>;5i:0j863=b98b5>{t:mh1<7:t=3g6>46e348m57=i;<0b7?g5348im7o>;|q1`f<72=q6>h8511`897`f2:l01?o;:`6897dd2h;0q~0:1m?522b;9e4=z{;o36=4<{<132?5a348m>7??b:?1h750;1x96602:l01?h<:02a?84?l3k97p}=e`83>6}:;921?k522g6955d<5;2n6l:4}r0ff?6=;r78<445k5a39~w7cd2908w0=?a;1e?84a>3;;n63=8g8b0>{t:ln1<7=t=22a>6`<5;l<6<>m;<0;b?g53ty9ih4?:2y>75e=;o16>k6511`897?72h>0q~5<4s49;i7=i;<0ee?77j2795<4n4:p6c7=839p1>>i:2d897`e28:i70<61;c1?xu5nj0;6>u2314955d<588<6l<4=233>4e54z?042<68k16=?95a09>570=i;16?<>51e9~w7`b290?w0=?8;33f>;6:?0j=63>248b6>;4990:i6s|2gd94?2|5::26<>m;<311?g634;987o=;<124?7a3ty8<=4?:5y>75g=99h01<<;:`3894442h801>??:328yv5793:18v3<0c824g=:9;91m<521309e7=:;8:1><5rs221>5<3s49;o7??b:?267<4n2:?055<5:2wx?==50;6x966c28:i70?=1;c2?87583k970=>0;00?xu48=0;69u231g955d<588;6l?4=03e>d4<5:;;6?:4}r131?6=0c9>5ag=;o16=746=:?1v>?>:181856:3;;863<118:6>{t;891<7?9{<041?51348<:7=9;<043?51348<47=9;<04=?51348n4n1:p742=8389w0=?6;15?857?39=70=?8;15?857139=70=?a;15?857j39=70=?c;15?857l39=70=?e;15?857n39=70;5ih0j?63<118:5>;49908?=5rs236>5<5s49:97??b:?1ed7;1e?856i3k:7p}<1683>6}:;8<1?;52305955d<5:;36>h4}r120c9>74g=i;1v>?6:187856m3;;m63<1g824d=:;;:1==o4=23b>4633ty8=o4?:2y>74c=99h01>?=:`18967728;?7p}<1b83>7?|5:;m6<>m;<34?1?o5226497g=::>=1?o5226:97g=::>31?o5226c97g=::>h1?o5226a97g=::>n1?o5226g97g=::?81?o52273955g<5;<>6>l4=340>6d<5;l4=34;>6d<5;<=6>l4=344>6d<5;<26>l4=34b>6d52z?064<68k16??<53g9~w645290?w0;5i>0:h4}r117?6=:r78>>4>0c9>743=;o1v><;:180855=39m70==4;33f>;4:10j=6s|33794?5|5:8>6<>m;<110?513499:7=i;|q063<72;q6??8511`8964?2h80q~==7;297~;4:k0:;;|q06<<72;3p1>39i70?;7;1a?873039i70?;9;1a?873i39i70?;b;1a?873k39i70?;d;1a?873m39i70?;f;1a?874:39i70?<3;1a?874<39i70?<5;1a?874>39i70?<7;1a?874039i70?<9;1a?874i39i70?46e349;:7=m;<133?5e349;47=m;<13=?5e349;m7=m;<13f?5e349;o7=m;<13`?5e349;i7=m;<13b?5e348oi7=m;<0f5?5e348oj7??a:?1a5<4j279i944k=53c9>6c3=;k16>k853c9>6c?=;k16>k953c9>6c>=;k16>ko53c9>6cd=;k1v>=i:181[54n278==4;1:p716=838pR>:?;<124?2>3ty88<4?:3y]717<5:;;69o4}r176?6=:rT88?5230290g=z{:>86=4={_177>;4990><6s|35694?4|V:>?70=>0;72?xu4<<0;6?uQ357896772=80q~=;7;296~X4<>16?<>5429~w62?2909wS=;8:?055<0i2wx?9750;0xZ62>349:<76=;|q00d<72;qU?9o4=233>=552z\00g=:;8:1495rs26`>5<5sW9?o63<118;=>{t;=n1<77}Y;=o01>??:6`8yv5283:1>vP<519>746=?j1v>;::1872~X4=<16>?o5349>67b=;<16?74`=;<16??>5349>740=;<16?<95349>74>=;<16>:;5349>620=;<16>:95349>62>=;<16>:75349>62g=;<16>:l5349>62e=;<16>:j5349>62c=;<16>;<5349>637=;<16>;;5349>635=;<16>;:5349>63>=;<16>;85349>631=;<16>;75349>63g=;<16=:65349>52?=;<16=:o5349>52d=;<16=:m5349>52b=;<16=:k5349>52`=;<16=5>5349>5=7=;<16=o=5349>5g2=;<16=o;5349>5g0=;<16=o95349>5g>=;<16=o75349>5gg=;<16=ol5349>5ge=;<16=>m5349>56b=;<16=>k5349>56`=;<16=9>5349>517=;<16=9<5349>515=;<16=9:5349>513=;<16=?65349>57?=;<16=?o5349>57d=;<16=?m5349>57b=;<16=?k5349>57`=;<16=>>5349>567=;<16?<>53`9~w6312908wS=:6:?057h4n1:p701=83=pR>;8;<115?77i278=;4>0`9>772=99k01><=:02b?855;3;;m63<1480f>{t;<31<7;<{_16=>;5i108963=a6801>;4:k08963<2b801>;4:808963<24801>;4:=08963<23801>;4:?08963<22801>;49<08963<07801>;48>08963<09801>;48008963<0`801>;48k08963<0b801>;48m08963<0d801>;48o08963=dd801>;5m808963=dg801>;5m908963=e5801>;5m;08963=e2801>;5m<08963=e7801>;5m>08963=f5801>;5n;08963=f2801>;5n<08963=f7801>;5n008963=f6801>;5n108963=f`801>;5nk08963>d0801>;6l;08963>d2801>;6l=08963>d4801>;6l?08963>d6801>;6l108963>d8801>;6lh08963>5`801>;6=k08963>5b801>;6=m08963>5d801>;6=o08963>61801>;6>808963>63801>;6>:08963>47801>;6<>08963>49801>;6<008963>4`801>;64b801>;64d801>;633801>;6;:08963>35801>;6;<08963>37801>;6;>08963>39801>;6;008963>3`801>;6;k08963<1180=>{t;4}O;;n0qc8<8;295~N4:m1vb;=6:182M55l2we:>o50;3xL64c3td=?o4?:0yK77b51zJ06a=zf?9o6=4>{I11`>{i>:o1<7?tH20g?xh1;o0;6i5rn766>5<6sA99h6sa65494?7|@:8o7p`94683>4}O;;n0qc8;8;295~N4:m1vb;:6:182M55l2we:9o50;3xL64c3td=8o4?:0yK77b51zJ06a=zf?>o6=4>{I11`>{i>=o1<7?tH20g?xh1i5rn776>5<6sA99h6sa64494?7|@:8o7p`95683>4}O;;n0qc8:8;295~N4:m1vb;;6:182M55l2we:8o50;3xL64c3td=9o4?:0yK77bo7>51zJ06a=zf??o6=4>{I11`>{i>i5rn746>5<6sA99h6sa67494?7|@:8o7p`96683>4}O;;n0qc898;295~N4:m1vb;86:182M55l2we:;o50;3xL64c3td=:o4?:0yK77b51zJ06a=zf?{I11`>{i>?o1<7?tH20g?xh1>o0;6i5rn756>5<6sA99h6sa66494?7|@:8o7p`97683>4}O;;n0qc888;295~N4:m1vb;96:182M55l2we::o50;3xL64c3td=;o4?:0yK77b51zJ06a=zf?=o6=4>{I11`>{i>>o1<7?tH20g?xh1?o0;66290:wE==d:m2=4=83;pD>i5rn7:6>5<6sA99h6sa69494?7|@:8o7p`98683>4}O;;n0qc878;295~N4:m1vb;66:182M55l2we:5o50;3xL64c3td=4o4?:0yK77b51zJ06a=zf?2o6=4>{I11`>{i>1o1<7?tH20g?xh10o0;683:1=vF<2e9~j3?6290:wE==d:m2<4=83;pD>i5rn7;6>5<6sA99h6sa68494?7|@:8o7p`99683>4}O;;n0qc868;295~N4:m1vb;76:182M55l2we:4o50;3xL64c3td=5o4?:0yK77b51zJ06a=zf?3o6=4>{I11`>{i>0o1<7?tH20g?xh11o0;6i5rn7c6>5<6sA99h6sa6`494?7|@:8o7p`9a683>4}O;;n0qc8n8;295~N4:m1vb;o6:182M55l2we:lo50;3xL64c3td=mo4?:0yK77b51zJ06a=zf?ko6=4>{I11`>{i>ho1<7?tH20g?xh1io0;6i5rn7`6>5<6sA99h6sa6c494?7|@:8o7p`9b683>4}O;;n0qc8m8;295~N4:m1vb;l6:182M55l2we:oo50;3xL64c3td=no4?:0yK77b51zJ06a=zf?ho6=4>{I11`>{i>ko1<7?tH20g?xh1jo0;6i5rn7a6>5<6sA99h6sa6b494?7|@:8o7p`9c683>4}O;;n0qc8l8;295~N4:m1vb;m6:182M55l2we:no50;3xL64c3td=oo4?:0yK77b51zJ06a=zf?io6=4>{I11`>{i>jo1<7?tH20g?xh1ko0;6i5rn7f6>5<6sA99h6sa6e494?7|@:8o7p`9d683>4}O;;n0qc8k8;295~N4:m1vb;j6:182M55l2we:io50;3xL64c3td=ho4?:0yK77b51zJ06a=zf?no6=4>{I11`>{i>mo1<7?tH20g?xh1lo0;6i5rn7g6>5<6sA99h6sa6d494?7|@:8o7p`9e683>4}O;;n0qc8j8;295~N4:m1vb;k6:182M55l2we:ho50;3xL64c3td=io4?:0yK77b51zJ06a=zf?oo6=4>{I11`>{i>lo1<7?tH20g?xh1mo0;6i5rn7d6>5<6sA99h6sa6g494?7|@:8o7p`9f683>4}O;;n0qc8i8;295~N4:m1vb;h6:182M55l2we:ko50;3xL64c3td=jo4?:0yK77b51zJ06a=zf?lo6=4>{I11`>{i>oo1<7?tH20g?xh1no0;6i5rn626>5<6sA99h6sa71494?7|@:8o7p`80683>4}O;;n0qc9?8;295~N4:m1vb:>6:182M55l2we;=o50;3xL64c3td<51zJ06a=zf>:o6=4>{I11`>{i?9o1<7?tH20g?xh08o0;6i5rn636>5<6sA99h6sa70494?7|@:8o7p`81683>4}O;;n0qc9>8;295~N4:m1vb:?6:182M55l2we;51zJ06a=zf>;o6=4>{I11`>{i?8o1<7?tH20g?xh09o0;6i5rn606>5<6sA99h6sa73494?7|@:8o7p`82683>4}O;;n0qc9=8;295~N4:m1vb:<6:182M55l2we;?o50;3xL64c3td<>o4?:0yK77b51zJ06a=zf>8o6=4>{I11`>{i?;o1<7?tH20g?xh0:o0;6i5rn616>5<6sA99h6sa72494?7|@:8o7p`83683>4}O;;n0qc9<8;295~N4:m1vb:=6:182M55l2we;>o50;3xL64c3td51zJ06a=zf>9o6=4>{I11`>{i?:o1<7?tH20g?xh0;o0;6i5rn666>5<6sA99h6sa75494?7|@:8o7p`84683>4}O;;n0qc9;8;295~N4:m1vb::6:182M55l2we;9o50;3xL64c3td<8o4?:0yK77b51zJ06a=zf>>o6=4>{I11`>{i?=o1<7?tH20g?xh0i5rn676>5<6sA99h6sa74494?7|@:8o7p`85683>4}O;;n0qc9:8;295~N4:m1vb:;6:182M55l2we;8o50;3xL64c3td<9o4?:0yK77bo7>51zJ06a=zf>?o6=4>{I11`>{i?i5rn646>5<6sA99h6sa77494?7|@:8o7p`86683>4}O;;n0qc998;295~N4:m1vb:86:182M55l2we;;o50;3xL64c3td<:o4?:0yK77b51zJ06a=zf>{I11`>{i??o1<7?tH20g?xh0>o0;6<;2`5;fxFGJr:vLM^t}AB \ No newline at end of file Index: cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX.gise =================================================================== --- cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX.gise (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX.gise (revision 3) @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + 11.1 + + + + + + + + + + + + Index: cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX.xise =================================================================== --- cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX.xise (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX.xise (revision 3) @@ -0,0 +1,74 @@ + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index: cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX.sym =================================================================== --- cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX.sym (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX.sym (revision 3) @@ -0,0 +1,36 @@ + + + BLOCK + 2012-8-29T7:52:55 + + + + + + + + + + + FIFORX + + + + + + + + + + + + + + + + + + + + + Index: cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX.xco =================================================================== --- cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX.xco (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX.xco (revision 3) @@ -0,0 +1,213 @@ +############################################################## +# +# Xilinx Core Generator version 14.1 +# Date: Wed Aug 29 07:50:26 2012 +# +############################################################## +# +# This file contains the customisation parameters for a +# Xilinx CORE Generator IP GUI. It is strongly recommended +# that you do not manually alter this file as it may cause +# unexpected and unsupported behavior. +# +############################################################## +# +# Generated from component: xilinx.com:ip:fifo_generator:9.1 +# +############################################################## +# +# BEGIN Project Options +SET addpads = false +SET asysymbol = true +SET busformat = BusFormatAngleBracketNotRipped +SET createndf = false +SET designentry = Verilog +SET device = xc3s500e +SET devicefamily = spartan3e +SET flowvendor = Other +SET formalverification = false +SET foundationsym = false +SET implementationfiletype = Ngc +SET package = pq208 +SET removerpms = false +SET simulationfiles = Behavioral +SET speedgrade = -4 +SET verilogsim = true +SET vhdlsim = false +# END Project Options +# BEGIN Select +SELECT Fifo_Generator xilinx.com:ip:fifo_generator:9.1 +# END Select +# BEGIN Parameters +CSET add_ngc_constraint_axi=false +CSET almost_empty_flag=false +CSET almost_full_flag=false +CSET aruser_width=1 +CSET awuser_width=1 +CSET axi_address_width=32 +CSET axi_data_width=64 +CSET axi_type=AXI4_Stream +CSET axis_type=FIFO +CSET buser_width=1 +CSET clock_enable_type=Slave_Interface_Clock_Enable +CSET clock_type_axi=Common_Clock +CSET component_name=FIFORX +CSET data_count=false +CSET data_count_width=10 +CSET disable_timing_violations=false +CSET disable_timing_violations_axi=false +CSET dout_reset_value=0 +CSET empty_threshold_assert_value=2 +CSET empty_threshold_assert_value_axis=1022 +CSET empty_threshold_assert_value_rach=1022 +CSET empty_threshold_assert_value_rdch=1022 +CSET empty_threshold_assert_value_wach=1022 +CSET empty_threshold_assert_value_wdch=1022 +CSET empty_threshold_assert_value_wrch=1022 +CSET empty_threshold_negate_value=3 +CSET enable_aruser=false +CSET enable_awuser=false +CSET enable_buser=false +CSET enable_common_overflow=false +CSET enable_common_underflow=false +CSET enable_data_counts_axis=false +CSET enable_data_counts_rach=false +CSET enable_data_counts_rdch=false +CSET enable_data_counts_wach=false +CSET enable_data_counts_wdch=false +CSET enable_data_counts_wrch=false +CSET enable_ecc=false +CSET enable_ecc_axis=false +CSET enable_ecc_rach=false +CSET enable_ecc_rdch=false +CSET enable_ecc_wach=false +CSET enable_ecc_wdch=false +CSET enable_ecc_wrch=false +CSET enable_read_channel=false +CSET enable_read_pointer_increment_by2=false +CSET enable_reset_synchronization=true +CSET enable_ruser=false +CSET enable_tdata=false +CSET enable_tdest=false +CSET enable_tid=false +CSET enable_tkeep=false +CSET enable_tlast=false +CSET enable_tready=true +CSET enable_tstrobe=false +CSET enable_tuser=false +CSET enable_write_channel=false +CSET enable_wuser=false +CSET fifo_application_type_axis=Data_FIFO +CSET fifo_application_type_rach=Data_FIFO +CSET fifo_application_type_rdch=Data_FIFO +CSET fifo_application_type_wach=Data_FIFO +CSET fifo_application_type_wdch=Data_FIFO +CSET fifo_application_type_wrch=Data_FIFO +CSET fifo_implementation=Independent_Clocks_Block_RAM +CSET fifo_implementation_axis=Common_Clock_Block_RAM +CSET fifo_implementation_rach=Common_Clock_Block_RAM +CSET fifo_implementation_rdch=Common_Clock_Block_RAM +CSET fifo_implementation_wach=Common_Clock_Block_RAM +CSET fifo_implementation_wdch=Common_Clock_Block_RAM +CSET fifo_implementation_wrch=Common_Clock_Block_RAM +CSET full_flags_reset_value=1 +CSET full_threshold_assert_value=1021 +CSET full_threshold_assert_value_axis=1023 +CSET full_threshold_assert_value_rach=1023 +CSET full_threshold_assert_value_rdch=1023 +CSET full_threshold_assert_value_wach=1023 +CSET full_threshold_assert_value_wdch=1023 +CSET full_threshold_assert_value_wrch=1023 +CSET full_threshold_negate_value=1020 +CSET id_width=4 +CSET inject_dbit_error=false +CSET inject_dbit_error_axis=false +CSET inject_dbit_error_rach=false +CSET inject_dbit_error_rdch=false +CSET inject_dbit_error_wach=false +CSET inject_dbit_error_wdch=false +CSET inject_dbit_error_wrch=false +CSET inject_sbit_error=false +CSET inject_sbit_error_axis=false +CSET inject_sbit_error_rach=false +CSET inject_sbit_error_rdch=false +CSET inject_sbit_error_wach=false +CSET inject_sbit_error_wdch=false +CSET inject_sbit_error_wrch=false +CSET input_data_width=8 +CSET input_depth=1024 +CSET input_depth_axis=1024 +CSET input_depth_rach=16 +CSET input_depth_rdch=1024 +CSET input_depth_wach=16 +CSET input_depth_wdch=1024 +CSET input_depth_wrch=16 +CSET interface_type=Native +CSET output_data_width=8 +CSET output_depth=1024 +CSET overflow_flag=false +CSET overflow_flag_axi=false +CSET overflow_sense=Active_High +CSET overflow_sense_axi=Active_High +CSET performance_options=Standard_FIFO +CSET programmable_empty_type=No_Programmable_Empty_Threshold +CSET programmable_empty_type_axis=No_Programmable_Empty_Threshold +CSET programmable_empty_type_rach=No_Programmable_Empty_Threshold +CSET programmable_empty_type_rdch=No_Programmable_Empty_Threshold +CSET programmable_empty_type_wach=No_Programmable_Empty_Threshold +CSET programmable_empty_type_wdch=No_Programmable_Empty_Threshold +CSET programmable_empty_type_wrch=No_Programmable_Empty_Threshold +CSET programmable_full_type=No_Programmable_Full_Threshold +CSET programmable_full_type_axis=No_Programmable_Full_Threshold +CSET programmable_full_type_rach=No_Programmable_Full_Threshold +CSET programmable_full_type_rdch=No_Programmable_Full_Threshold +CSET programmable_full_type_wach=No_Programmable_Full_Threshold +CSET programmable_full_type_wdch=No_Programmable_Full_Threshold +CSET programmable_full_type_wrch=No_Programmable_Full_Threshold +CSET rach_type=FIFO +CSET rdch_type=FIFO +CSET read_clock_frequency=1 +CSET read_data_count=false +CSET read_data_count_width=10 +CSET register_slice_mode_axis=Fully_Registered +CSET register_slice_mode_rach=Fully_Registered +CSET register_slice_mode_rdch=Fully_Registered +CSET register_slice_mode_wach=Fully_Registered +CSET register_slice_mode_wdch=Fully_Registered +CSET register_slice_mode_wrch=Fully_Registered +CSET reset_pin=true +CSET reset_type=Asynchronous_Reset +CSET ruser_width=1 +CSET synchronization_stages=2 +CSET synchronization_stages_axi=2 +CSET tdata_width=64 +CSET tdest_width=4 +CSET tid_width=8 +CSET tkeep_width=4 +CSET tstrb_width=4 +CSET tuser_width=4 +CSET underflow_flag=false +CSET underflow_flag_axi=false +CSET underflow_sense=Active_High +CSET underflow_sense_axi=Active_High +CSET use_clock_enable=false +CSET use_dout_reset=true +CSET use_embedded_registers=false +CSET use_extra_logic=false +CSET valid_flag=false +CSET valid_sense=Active_High +CSET wach_type=FIFO +CSET wdch_type=FIFO +CSET wrch_type=FIFO +CSET write_acknowledge_flag=false +CSET write_acknowledge_sense=Active_High +CSET write_clock_frequency=1 +CSET write_data_count=false +CSET write_data_count_width=10 +CSET wuser_width=1 +# END Parameters +# BEGIN Extra information +MISC pkg_timestamp=2012-04-13T16:13:14Z +# END Extra information +GENERATE +# CRC: 61b5545b Index: cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX.veo =================================================================== --- cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX.veo (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX.veo (revision 3) @@ -0,0 +1,74 @@ +/******************************************************************************* +* This file is owned and controlled by Xilinx and must be used solely * +* for design, simulation, implementation and creation of design files * +* limited to Xilinx devices or technologies. Use with non-Xilinx * +* devices or technologies is expressly prohibited and immediately * +* terminates your license. * +* * +* XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS" SOLELY * +* FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR XILINX DEVICES. BY * +* PROVIDING THIS DESIGN, CODE, OR INFORMATION AS ONE POSSIBLE * +* IMPLEMENTATION OF THIS FEATURE, APPLICATION OR STANDARD, XILINX IS * +* MAKING NO REPRESENTATION THAT THIS IMPLEMENTATION IS FREE FROM ANY * +* CLAIMS OF INFRINGEMENT, AND YOU ARE RESPONSIBLE FOR OBTAINING ANY * +* RIGHTS YOU MAY REQUIRE FOR YOUR IMPLEMENTATION. XILINX EXPRESSLY * +* DISCLAIMS ANY WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE * +* IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR * +* REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF * +* INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A * +* PARTICULAR PURPOSE. * +* * +* Xilinx products are not intended for use in life support appliances, * +* devices, or systems. Use in such applications are expressly * +* prohibited. * +* * +* (c) Copyright 1995-2012 Xilinx, Inc. * +* All rights reserved. * +*******************************************************************************/ + +/******************************************************************************* +* Generated from core with identifier: xilinx.com:ip:fifo_generator:9.1 * +* * +* The FIFO Generator is a parameterizable first-in/first-out memory * +* queue generator. Use it to generate resource and performance * +* optimized FIFOs with common or independent read/write clock domains, * +* and optional fixed or programmable full and empty flags and * +* handshaking signals. Choose from a selection of memory resource * +* types for implementation. Optional Hamming code based error * +* detection and correction as well as error injection capability for * +* system test help to insure data integrity. FIFO width and depth are * +* parameterizable, and for native interface FIFOs, asymmetric read and * +* write port widths are also supported. * +*******************************************************************************/ + +// Interfaces: +// AXI4Stream_MASTER_M_AXIS +// AXI4Stream_SLAVE_S_AXIS +// AXI4_MASTER_M_AXI +// AXI4_SLAVE_S_AXI +// AXI4Lite_MASTER_M_AXI +// AXI4Lite_SLAVE_S_AXI + +// The following must be inserted into your Verilog file for this +// core to be instantiated. Change the instance name and port connections +// (in parentheses) to your own signal names. + +//----------- Begin Cut here for INSTANTIATION Template ---// INST_TAG +FIFORX your_instance_name ( + .rst(rst), // input rst + .wr_clk(wr_clk), // input wr_clk + .rd_clk(rd_clk), // input rd_clk + .din(din), // input [7 : 0] din + .wr_en(wr_en), // input wr_en + .rd_en(rd_en), // input rd_en + .dout(dout), // output [7 : 0] dout + .full(full), // output full + .empty(empty) // output empty +); +// INST_TAG_END ------ End INSTANTIATION Template --------- + +// You must compile the wrapper file FIFORX.v when simulating +// the core, FIFORX. When compiling the wrapper file, be sure to +// reference the XilinxCoreLib Verilog simulation library. For detailed +// instructions, please refer to the "CORE Generator Help". + Index: cheap_ethernet/trunk/Ethernet_test/ipcore_dir/DCMMAIN.xaw =================================================================== --- cheap_ethernet/trunk/Ethernet_test/ipcore_dir/DCMMAIN.xaw (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/ipcore_dir/DCMMAIN.xaw (revision 3) @@ -0,0 +1,3 @@ +XILINX-XDB 0.1 STUB 0.1 ASCII +XILINX-XDM V1.6e +$9fx5>6339$;><5>4:3-5=2<9=$:46?9'iA3<54<9Q;0>?5=07914+67881?=6;=;424?DTD@^CQ=:5NRVX\KKJ^WJKXOLJFNF]@HN7?3HX\VRAALX]@HNOIWLR_I_@NL078EWQ]WFDGURMCKHL\RDJRM8h0M_YU_NLO]ZBDEVY\EYMGIOE\GIM682KY[WQ@NM[\@ATXK9;;7L\XZ^MMH\YCL[UH=7L\XZ^MMH\YAJVOSXH\AAM31?DTPRVEE@TQFNRV\JPKb3HX\VRAALX]SIFB6=2KY[WQ@NM[\V@UB\VFDKDM>8:CQS_YHFESTZLBFD^FEWZKHLLk0M^]@C^UJPM`2K\VRMCKCWEP\VB9VDDIIG[129BS_YDDBUDYY^ZT^VZT@eGPRVZJ^Yj4AVX\W\HS@]ED@95MOUJ7?GSAO:>0O7R_rnhfgqu[P`fbbuRJtigqj`r[ayid~hQkis^-XAEJEHCE"uox4:AOO5>8148GIM5?9?0OAE=X99@HN4_91:>7NBD9178GIMC^01H@FJY_CWEb>EKCM\TNXHH_HLPPf=DDBN]SIGYIEG:?FJLL_UDYY;4CMIEF==DDBLISD@:;BNHB]>4CMIJJZOE]OMTEC][f:AOOLHXAK_MKRAZT99@HNOIW@Dh7NBDIO]SAWOHLl1H@FGA_RP@[Q_WM880OAE@UU]SLDUBWZBBJYm4CMI\B@CCJHI@56M@MLKWP@B03JXNMYKK6:F@IZUWj2NHAR]__HLPPa=CMZAN[ROKJTQW57=CNZUM^H_ZEOAZ[HICMh1O@AQNNE]E\441OS[OCUD:8A]RBZGKGm6HNCUMQ]ZLA=2LJ@^K6;G@\WJSUKLi0JHKKB@AH[GSA12LBBR[AIUQ;?CIR\VY_^l5IOTV\QKOS[h1MCXZPV@NVA4=N=2CIYKI7;HLWAWHFD8;0FDZ[ES]JJUSSW]S[In5EIUVFVZVL:YAh7GG[TDP\RDJRM?1GCLJJD79OKFMBLh1GCNEJD^MVP6=KG^90AET8;L]UEISB?2DNXZA]K59MKKC63F20CKJKRBRFf>VOIZOT_EGIT89SMKNF[K_Xm6^FNHQDJACC02ZBBZGKTI:8TWOJ\PZN==5_RNR\TLHN[HI_E[K:;QQ@HN0VTAGIOIN=4RRV5?WUSW@Di7^GHEYVFVKGK>2YBBJBJc:QWEWRRXV]JEY84SUCWQV753ZSXXHCPSXL@LWIIG\Y87YA_4:VQQ@><]ZOTNXHH9:WPAZDRNNY>7[GJW0`8\DQX^LXXEB@>d:ZJHLH_%QNI,= > RVVF%6)9)KXODG<;YQW2>^cjVCo==5Wdl]Neoiu^lxxeb`>0:ZgiZKnffx]i}foo78_5<7U<1P<79R4:cqs5pbzzcdb-?!0g9{g6u289o&8}=09CDu213IJs>94I:982V2021214o4>3227b=<6wc6;:09m<0<13-2865?4}R65>=>=0k0:?>>;f9820fb03Z<;65658c827663n00:4n;=;R65>=>=0k0:?>>;f882=>=0k0:?>>;f882e`4>3Z<;65658c827663nj09<;89;R65>=>=0k0:?>>;fb81430c3m236=4>:0yP0242d1<1}X:h50;395?e|[==14547b;30752a03;?o4;4b6`94?6==3ip(i479:&2b?>f3-8;65m4$339<7=#090?7o:6:1827?6=8r.=i7:7;%g96`=#n3=<7)?>:378 44=:<1/=>4=9:&20?423-;>6;74$04932=#9>097)?7:758 4?==:1/=l4=2:&71?0<,:;1n6*<9;`8 6g=?2.8h7;<;%61><=#<:0>=6*;4;44?!2f2>k0(8>52:&7f?043->o6;=4$5d93f=#=;0>7);;:4a8 00=>=1/95494:&6=?><,"2n3;0(8k53:k0g?6=,?n14;5+6g84g>=n;:0;6)8k:948 3`=?j10e::50;&5`?>13-5<#>m03:6*9c;5`?>o0;3:1(;j5879'2f<0k21b;=4?:%4g>=0<,?i1;n54i5g94?"1l32=7)8l:6a8?j42290/:i476:&5b?1d3-;h6?=4$0f910=i513:1(;j58798k7g=83.=h769;:m1a?6=,?n14;5+6g84g>"6k38876a=b;29 3b=0?10c?m50;&5`?>132e897>5$7f9<3=#>o0c;00?>i4>3:1(;j58798k2?=83.=h768;%4a>2e<3f<:6=4+6e8;2>"1n3=h76a81;29 3b=0?10qo=i:181>5<7s-:4?:383>5}#>l09?6g:a;29 3b=0?1/:k48c:9l2=<72-13-5<#>m03:6*9f;5`?>{e;10;6?4?:1y'2`<5;2c>m7>5$7f9<3=#>o0!0c21<0(;h57b98yv5b2909w0:6:2a896`=>11/=o4;0:p71<72;q6844<3:?13?0?3-;i6?64}r56>5<6s4>26::4$6491d=z{;<1<70>m6s|2g83>7}:<009i63<0;7b?xu4?3:1>v3;9;16?85?22?;0(:85699~w17=83;p1>h55`9'33<2i2wx??4?:0y>75<102.<:787;|q0f?6=9r784787;%55>3>;6=4?{%55>3>3>51zm6c<728qvb>>50;3xyk56290:wp`<2;295~{i;:0;66=4>{|l02?6=9rwe?:4?:0y~j6>=83;pqc=6:182x{zuIJHw98596d63<5fuIJIw=sO@Qy~DE \ No newline at end of file Index: cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX.asy =================================================================== --- cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX.asy (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX.asy (revision 3) @@ -0,0 +1,41 @@ +Version 4 +SymbolType BLOCK +TEXT 32 32 LEFT 4 FIFORX +RECTANGLE Normal 32 32 800 4064 +LINE Normal 0 112 32 112 +PIN 0 112 LEFT 36 +PINATTR PinName rst +PINATTR Polarity IN +LINE Normal 0 208 32 208 +PIN 0 208 LEFT 36 +PINATTR PinName wr_clk +PINATTR Polarity IN +LINE Wide 0 240 32 240 +PIN 0 240 LEFT 36 +PINATTR PinName din[7:0] +PINATTR Polarity IN +LINE Normal 0 272 32 272 +PIN 0 272 LEFT 36 +PINATTR PinName wr_en +PINATTR Polarity IN +LINE Normal 0 464 32 464 +PIN 0 464 LEFT 36 +PINATTR PinName full +PINATTR Polarity OUT +LINE Normal 832 240 800 240 +PIN 832 240 RIGHT 36 +PINATTR PinName rd_clk +PINATTR Polarity IN +LINE Wide 832 272 800 272 +PIN 832 272 RIGHT 36 +PINATTR PinName dout[7:0] +PINATTR Polarity OUT +LINE Normal 832 304 800 304 +PIN 832 304 RIGHT 36 +PINATTR PinName rd_en +PINATTR Polarity IN +LINE Normal 832 496 800 496 +PIN 832 496 RIGHT 36 +PINATTR PinName empty +PINATTR Polarity OUT + Index: cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX_flist.txt =================================================================== --- cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX_flist.txt (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX_flist.txt (revision 3) @@ -0,0 +1,60 @@ +# Output products list for +FIFORX.asy +FIFORX.gise +FIFORX.ngc +FIFORX.sym +FIFORX.v +FIFORX.veo +FIFORX.xco +FIFORX.xise +FIFORX\doc\fifo_generator_v9_1_vinfo.html +FIFORX\example_design\FIFORX_exdes.ucf +FIFORX\example_design\FIFORX_exdes.vhd +FIFORX\example_design\FIFORX_exdes.xdc +FIFORX\fifo_generator_v9_1_readme.txt +FIFORX\implement\implement.bat +FIFORX\implement\implement.sh +FIFORX\implement\implement_synplify.bat +FIFORX\implement\implement_synplify.sh +FIFORX\implement\planAhead_ise.bat +FIFORX\implement\planAhead_ise.sh +FIFORX\implement\planAhead_ise.tcl +FIFORX\implement\planAhead_rdn.bat +FIFORX\implement\planAhead_rdn.sh +FIFORX\implement\planAhead_rdn.tcl +FIFORX\implement\xst.prj +FIFORX\implement\xst.scr +FIFORX\simulation\FIFORX_dgen.vhd +FIFORX\simulation\FIFORX_dverif.vhd +FIFORX\simulation\FIFORX_pctrl.vhd +FIFORX\simulation\FIFORX_pkg.vhd +FIFORX\simulation\FIFORX_rng.vhd +FIFORX\simulation\FIFORX_synth.vhd +FIFORX\simulation\FIFORX_tb.vhd +FIFORX\simulation\functional\simulate_isim.bat +FIFORX\simulation\functional\simulate_isim.sh +FIFORX\simulation\functional\simulate_mti.bat +FIFORX\simulation\functional\simulate_mti.do +FIFORX\simulation\functional\simulate_mti.sh +FIFORX\simulation\functional\simulate_ncsim.bat +FIFORX\simulation\functional\simulate_vcs.bat +FIFORX\simulation\functional\ucli_commands.key +FIFORX\simulation\functional\vcs_session.tcl +FIFORX\simulation\functional\wave_isim.tcl +FIFORX\simulation\functional\wave_mti.do +FIFORX\simulation\functional\wave_ncsim.sv +FIFORX\simulation\timing\simulate_isim.bat +FIFORX\simulation\timing\simulate_isim.sh +FIFORX\simulation\timing\simulate_mti.bat +FIFORX\simulation\timing\simulate_mti.do +FIFORX\simulation\timing\simulate_mti.sh +FIFORX\simulation\timing\simulate_ncsim.bat +FIFORX\simulation\timing\simulate_vcs.bat +FIFORX\simulation\timing\ucli_commands.key +FIFORX\simulation\timing\vcs_session.tcl +FIFORX\simulation\timing\wave_isim.tcl +FIFORX\simulation\timing\wave_mti.do +FIFORX\simulation\timing\wave_ncsim.sv +FIFORX_flist.txt +FIFORX_xmdf.tcl +_xmsgs\pn_parser.xmsgs Index: cheap_ethernet/trunk/Ethernet_test/ipcore_dir/DCMMAIN.v =================================================================== --- cheap_ethernet/trunk/Ethernet_test/ipcore_dir/DCMMAIN.v (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/ipcore_dir/DCMMAIN.v (revision 3) @@ -0,0 +1,75 @@ +//////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 1995-2012 Xilinx, Inc. All rights reserved. +//////////////////////////////////////////////////////////////////////////////// +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version : 14.1 +// \ \ Application : xaw2verilog +// / / Filename : DCMMAIN.v +// /___/ /\ Timestamp : 08/24/2012 12:52:08 +// \ \ / \ +// \___\/\___\ +// +//Command: xaw2verilog -st C:\Projects\Xilinx\Ethernet\ipcore_dir\.\DCMMAIN.xaw C:\Projects\Xilinx\Ethernet\ipcore_dir\.\DCMMAIN +//Design Name: DCMMAIN +//Device: xc3s500e-4pq208 +// +// Module DCMMAIN +// Generated by Xilinx Architecture Wizard +// Written for synthesis tool: XST +`timescale 1ns / 1ps + +module DCMMAIN(CLKIN_IN, + RST_IN, + CLKDV_OUT, + CLKIN_IBUFG_OUT, + CLK0_OUT); + + input CLKIN_IN; + input RST_IN; + output CLKDV_OUT; + output CLKIN_IBUFG_OUT; + output CLK0_OUT; + + wire CLKDV_BUF; + wire CLKFB_IN; + wire CLKIN_IBUFG; + wire CLK0_BUF; + wire GND_BIT; + + assign GND_BIT = 0; + assign CLKIN_IBUFG_OUT = CLKIN_IBUFG; + assign CLK0_OUT = CLKFB_IN; + BUFG CLKDV_BUFG_INST (.I(CLKDV_BUF), + .O(CLKDV_OUT)); + IBUFG CLKIN_IBUFG_INST (.I(CLKIN_IN), + .O(CLKIN_IBUFG)); + BUFG CLK0_BUFG_INST (.I(CLK0_BUF), + .O(CLKFB_IN)); + DCM_SP #( .CLK_FEEDBACK("1X"), .CLKDV_DIVIDE(2.5), .CLKFX_DIVIDE(1), + .CLKFX_MULTIPLY(4), .CLKIN_DIVIDE_BY_2("FALSE"), + .CLKIN_PERIOD(20.000), .CLKOUT_PHASE_SHIFT("NONE"), + .DESKEW_ADJUST("SYSTEM_SYNCHRONOUS"), .DFS_FREQUENCY_MODE("LOW"), + .DLL_FREQUENCY_MODE("LOW"), .DUTY_CYCLE_CORRECTION("TRUE"), + .FACTORY_JF(16'hC080), .PHASE_SHIFT(0), .STARTUP_WAIT("FALSE") ) + DCM_SP_INST (.CLKFB(CLKFB_IN), + .CLKIN(CLKIN_IBUFG), + .DSSEN(GND_BIT), + .PSCLK(GND_BIT), + .PSEN(GND_BIT), + .PSINCDEC(GND_BIT), + .RST(RST_IN), + .CLKDV(CLKDV_BUF), + .CLKFX(), + .CLKFX180(), + .CLK0(CLK0_BUF), + .CLK2X(), + .CLK2X180(), + .CLK90(), + .CLK180(), + .CLK270(), + .LOCKED(), + .PSDONE(), + .STATUS()); +endmodule Index: cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX_xmdf.tcl =================================================================== --- cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX_xmdf.tcl (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/ipcore_dir/FIFORX_xmdf.tcl (revision 3) @@ -0,0 +1,263 @@ +# The package naming convention is _xmdf +package provide FIFORX_xmdf 1.0 + +# This includes some utilities that support common XMDF operations +package require utilities_xmdf + +# Define a namespace for this package. The name of the name space +# is _xmdf +namespace eval ::FIFORX_xmdf { +# Use this to define any statics +} + +# Function called by client to rebuild the params and port arrays +# Optional when the use context does not require the param or ports +# arrays to be available. +proc ::FIFORX_xmdf::xmdfInit { instance } { +# Variable containing name of library into which module is compiled +# Recommendation: +# Required +utilities_xmdf::xmdfSetData $instance Module Attributes Name FIFORX +} +# ::FIFORX_xmdf::xmdfInit + +# Function called by client to fill in all the xmdf* data variables +# based on the current settings of the parameters +proc ::FIFORX_xmdf::xmdfApplyParams { instance } { + +set fcount 0 +# Array containing libraries that are assumed to exist +# Examples include unisim and xilinxcorelib +# Optional +# In this example, we assume that the unisim library will +# be available to the simulation and synthesis tool +utilities_xmdf::xmdfSetData $instance FileSet $fcount type logical_library +utilities_xmdf::xmdfSetData $instance FileSet $fcount logical_library unisim +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/doc/fifo_generator_v9_1_vinfo.html +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/example_design/FIFORX_exdes.ucf +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/example_design/FIFORX_exdes.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/example_design/FIFORX_exdes.xdc +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/fifo_generator_v9_1_readme.txt +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/implement/implement.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/implement/implement.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/implement/implement_synplify.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/implement/implement_synplify.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/implement/planAhead_ise.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/implement/planAhead_ise.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/implement/planAhead_ise.tcl +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/implement/planAhead_rdn.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/implement/planAhead_rdn.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/implement/planAhead_rdn.tcl +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/implement/xst.prj +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/implement/xst.scr +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/FIFORX_dgen.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/FIFORX_dverif.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/FIFORX_pctrl.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/FIFORX_pkg.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/FIFORX_rng.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/FIFORX_synth.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/FIFORX_tb.vhd +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/functional/simulate_isim.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/functional/simulate_isim.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/functional/simulate_mti.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/functional/simulate_mti.do +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/functional/simulate_mti.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/functional/simulate_ncsim.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/functional/simulate_vcs.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/functional/ucli_commands.key +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/functional/vcs_session.tcl +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/functional/wave_isim.tcl +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/functional/wave_mti.do +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/functional/wave_ncsim.sv +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/timing/simulate_isim.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/timing/simulate_isim.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/timing/simulate_mti.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/timing/simulate_mti.do +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/timing/simulate_mti.sh +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/timing/simulate_ncsim.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/timing/simulate_vcs.bat +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/timing/ucli_commands.key +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/timing/vcs_session.tcl +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/timing/wave_isim.tcl +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/timing/wave_mti.do +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX/simulation/timing/wave_ncsim.sv +utilities_xmdf::xmdfSetData $instance FileSet $fcount type Ignore +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX.asy +utilities_xmdf::xmdfSetData $instance FileSet $fcount type asy +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX.ngc +utilities_xmdf::xmdfSetData $instance FileSet $fcount type ngc +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX.sym +utilities_xmdf::xmdfSetData $instance FileSet $fcount type symbol +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX.v +utilities_xmdf::xmdfSetData $instance FileSet $fcount type verilog +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX.veo +utilities_xmdf::xmdfSetData $instance FileSet $fcount type verilog_template +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX.xco +utilities_xmdf::xmdfSetData $instance FileSet $fcount type coregen_ip +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount relative_path FIFORX_xmdf.tcl +utilities_xmdf::xmdfSetData $instance FileSet $fcount type AnyView +incr fcount + +utilities_xmdf::xmdfSetData $instance FileSet $fcount associated_module FIFORX +incr fcount + +} + +# ::gen_comp_name_xmdf::xmdfApplyParams Index: cheap_ethernet/trunk/Ethernet_test/ethernet_test.v =================================================================== --- cheap_ethernet/trunk/Ethernet_test/ethernet_test.v (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/ethernet_test.v (revision 3) @@ -0,0 +1,291 @@ +`timescale 1ns / 1ps +`include "const.vh" +////////////////////////////////////////////////////////////////////////////////// +// Company: +// Engineer: Ivan Krutov (grvfrv@gmail.com) +// +// Create Date: 10:36:10 08/28/2012 +// Design Name: Cheap Ethernet test project +// Module Name: ethernet_test +// Project Name: Cheap Ethernet +// Target Devices: Spartan 3E +// Tool versions: ISE 14.1 +// Description: Base functional of ARP, ICMP, UDP server, UDP client. +// +// Dependencies: EthernetRX.v, EthernetTX.v, TENBASET_RxD.v, TENBASET_TxD.v, +// const.vh +// Revision: +// Revision 0.9 beta +// Additional Comments: +// +////////////////////////////////////////////////////////////////////////////////// + +module ethernet_test(clk_in, + Ethernet_RDp, Ethernet_RDm, Ethernet_TDp, Ethernet_TDm, Ethernet_LED_Link, Ethernet_LED_Act, + PushButton, LED_Test); + +input clk_in; // 50 MHz +input Ethernet_RDp, Ethernet_RDm; // Ethernel input +output Ethernet_TDp, Ethernet_TDm; // Ethernel output +output Ethernet_LED_Link; // Ethernet link - Not realized! (VCC) +output Ethernet_LED_Act; // Etheret activity (low - active) +input PushButton; // Pushbutton for send data test +output LED_Test; + +// Server config +wire [31:0] HostIP = 32'hC0A8012C; // 192.168.1.44 +wire [47:0] HostMAC = 48'h001234567890; +wire [15:0] HostPort = 16'd1024; + +// Client config +wire [31:0] RemoteIP = 32'hC0A80102; // 192.168.1.2 +reg [47:0] RemoteMAC = 48'h0; +wire [15:0] RemotePort = 16'd1024; + +wire clk20, clk50; +wire Ethernet_RD; + +reg SendStart = 0; +wire SendDataReq; +reg [7:0] SendData = 0; +reg [9:0] SendDataLen = 0; +wire [9:0] SendDataPos; +wire SendingPacket; +reg [2:0] SendPacketType = 0; + +reg [31:0] SendToIP = 32'h0; +reg [47:0] SendToMAC = 48'h0; +reg [15:0] SendToPort = 16'h0; + +wire RcvStart, RcvStop; +wire [7:0] RcvData; +wire [9:0] RcvDataLen; +wire [9:0] RcvDataPos; +wire RcvDataAvailable; +wire RcvCRCValid; +wire ReceivingPacket; +wire [2:0] RcvPacketType; +wire [31:0] RcvFromIP; +wire [47:0] RcvFromMAC; +wire [15:0] RcvFromPort; +wire [15:0] RcvICMPId; +wire [15:0] RcvICMPSeq; +wire [15:0] RcvICMPCRC; + +wire Ethernet_LED_Link = 1; +reg Ethernet_LED_Act = 0; +reg LED_Test = 0; +reg last_btn_st = 0; + +reg PacketReceived = 0; +reg PacketProcessed = 0; +reg [7:0] Cmd = 0; +reg [7:0] Arg = 0; +reg SendReq = 0; + +reg [2:0] SavedPacketType = 0; +reg [9:0] SavedDataLen = 0; +reg [15:0] SavedPort = 0; +reg SavedEcho = 0; +reg Echo = 0; + +wire [16:0] SendICMPCRC1 = {RcvICMPCRC[15:8] + 9'h08, RcvICMPCRC[7:0]}; +wire [15:0] SendICMPCRC2 = SendICMPCRC1[15:0] + SendICMPCRC1[16]; + +wire [7:0] FIFOOut; +wire FIFOFull; +wire FIFOEmpty; + + +DCMMAIN DCMMAIN1 ( + .CLKIN_IN(clk_in), // 50 MHz + .RST_IN(1'b0), + .CLKDV_OUT(), + .CLKFX_OUT(clk20), + .CLKIN_IBUFG_OUT(), + .CLK0_OUT(clk50), + .LOCKED_OUT()); + + IBUFDS #( + .IBUF_DELAY_VALUE("0"), // Specify the amount of added input delay for + // the buffer: "0"-"12" (Spartan-3E) + .IFD_DELAY_VALUE("0"), // Specify the amount of added delay for input + // register: "AUTO", "0"-"6" (Spartan-3E) + .IOSTANDARD("DIFF_HSTL_III_18") // Specify the input I/O standard + ) IBUFDS_EthRD ( + .O(Ethernet_RD), // Buffer output + .I(Ethernet_RDp), // Diff_p buffer input (connect directly to top-level port) + .IB(Ethernet_RDm) // Diff_n buffer input (connect directly to top-level port) + ); + +FIFORX FIFO_RD ( + .rst(RcvStart), // input rst + .wr_clk(clk50), // input wr_clk + .rd_clk(clk20), // input rd_clk + .din(RcvData), // input [7 : 0] din + .wr_en(RcvDataAvailable), // input wr_en + .rd_en(SendDataReq /*&& SendingPacket*/), // input rd_en + .dout(FIFOOut), // output [7 : 0] dout + .full(FIFOFull), // output full + .empty(FIFOEmpty) // output empty +); + +EthernetTX EthTX1 (clk20, + HostIP, SendToIP, HostMAC, SendToMAC, HostPort, SendToPort, + SendStart, SendDataReq, SendData, SendDataLen, SendDataPos, SendingPacket, + SendPacketType, RcvICMPId, RcvICMPSeq, SendICMPCRC2, + Ethernet_TDp, Ethernet_TDm); + +EthernetRX EthRX1 (clk50, + Ethernet_RD, + HostIP, HostMAC, HostPort, + RcvStart, RcvStop, RcvData, RcvDataLen, RcvDataPos, RcvDataAvailable, RcvCRCValid, ReceivingPacket, + RcvPacketType, RcvICMPId, RcvICMPSeq, RcvICMPCRC, + RcvFromIP, RcvFromMAC, RcvFromPort); + + +// Ethernet LEDs +reg [19:0] EthLEDCnt = 0; +always @(posedge clk20) begin + EthLEDCnt <= EthLEDCnt + 1; + Ethernet_LED_Act <= Ethernet_LED_Act && !(ReceivingPacket | SendingPacket); + if (Ethernet_LED_Act) + EthLEDCnt <= 0; + if (&EthLEDCnt) + Ethernet_LED_Act <= 1; +end + +// Transmit packets +always @(posedge clk20) begin + SendStart = 0; + if (!SendingPacket && (PacketReceived || SendReq) && !PacketProcessed) + begin + Echo <= 0; + PacketProcessed <= 1; + SendToIP <= RcvFromIP; + SendToMAC <= RcvFromMAC; + + if (RcvPacketType == `ARPReply) // Remote MAC resolved + begin + RemoteMAC = RcvFromMAC; + SendToPort = SavedPort; + SendStart = 1; + SendPacketType = SavedPacketType; + SendDataLen = SavedDataLen; + Echo <= SavedEcho; + end + else if ((RcvPacketType == `UDP) || SendReq) // Send UDP packet + begin + if (SendReq) + begin + SendToIP <= RemoteIP; + SendToMAC <= RemoteMAC; + end + else if (Cmd == `CmdDataEcho) + Echo <= 1; + SendToPort = RemotePort; + SendStart = 1; + SendPacketType = `UDP; + SendDataLen = SendReq ? 18 : RcvDataLen; + end + else if (RcvPacketType == `ARPReq) // Send ARP reply + begin + SendStart = 1; + SendPacketType = `ARPReply; + SendDataLen = 18; + end + else if (RcvPacketType == `ICMPReq) // Send ICMP reply + begin + Echo <= 1; + SendStart = 1; + SendPacketType = `ICMPReply; + SendDataLen = RcvDataLen; + end + + if (~|RemoteMAC && SendStart && SendReq) // If remote MAC unknown send ARP request + begin // TODO: clear RemoteMAC after 2 minutes inactivity + SavedPacketType <= SendPacketType; + SavedDataLen <= SendDataLen; + SavedPort <= SendToPort; + SavedEcho <= Echo; + SendToIP <= RemoteIP; + SendStart = 1; + SendPacketType = `ARPReq; + SendDataLen = 18; + end + end + + if (!PacketReceived && !SendReq) + PacketProcessed <= 0; + + case (SendDataPos) + 0: SendData <= Cmd; + 1: SendData <= Arg; + default: SendData <= 0; + endcase + + if (Echo /*RcvPacketType == `ICMPReq*/) // Cmd: Data echo + SendData <= FIFOOut; +end + + +reg [25:0] cnt = 0; +reg AutoSend = 1; + +// Receive packets +always @(posedge clk50) begin + if (~&cnt) + cnt <= cnt + 1; + + if (PacketProcessed) + begin + PacketReceived <= 0; + SendReq <= 0; + end + + if (RcvDataAvailable) + if (RcvPacketType == `UDP) + case (RcvDataPos) + 0: Cmd <= RcvData; + 1: Arg <= RcvData; + endcase + + if (RcvStop && RcvCRCValid) + begin + PacketReceived <= 1; + if (RcvPacketType == `UDP) + begin + if (Cmd == `CmdLEDCtrl) // Received Cmd: Leds control + begin + LED_Test <= Arg[0]; + Cmd <= `CmdDone; // Send reply: Cmd: Done + end + else if (Cmd == `CmdStatus) // Received Cmd: Get Status + begin + Cmd <= `CmdStatus; // Send reply: Cmd: Status + Arg <= {5'd0, PushButton, AutoSend, LED_Test}; // Status + end + else if (Cmd == `CmdSetConfig)// Received Cmd: Set Config + begin + Cmd <= `CmdDone; // Send reply: Cmd: Status + AutoSend <= Arg[0]; + end + end + end + + if (!SendingPacket && !ReceivingPacket && !PacketProcessed) + begin + last_btn_st <= PushButton; + if (last_btn_st != PushButton || (&cnt && AutoSend)) + begin + cnt <= 0; + Cmd <= `CmdSwChanged; // Cmd: Pushbuttons state changed + if (&cnt) + Cmd <= `CmdStatus; + Arg <= {8{PushButton}}; + SendReq <= 1; + end + end +end + +endmodule Index: cheap_ethernet/trunk/Ethernet_test/ethernet_test_tb_ping.v =================================================================== --- cheap_ethernet/trunk/Ethernet_test/ethernet_test_tb_ping.v (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/ethernet_test_tb_ping.v (revision 3) @@ -0,0 +1,851 @@ +`timescale 1ns / 1ps + +//////////////////////////////////////////////////////////////////////////////// +// Company: +// Engineer: +// +// Create Date: 11:08:22 08/27/2012 +// Design Name: ethernet_test +// Module Name: C:/Projects/Xilinx/Ethernet/ethernet_test_tb.v +// Project Name: Ethernet +// Target Device: +// Tool versions: +// Description: +// +// Verilog Test Fixture created by ISE for module: ethernet_test +// +// Dependencies: +// +// Revision: +// Revision 0.01 - File Created +// Additional Comments: +// +//////////////////////////////////////////////////////////////////////////////// + +module ethernet_test_tb_ping; + + // Inputs + reg clk_in; + reg Ethernet_RDp; + reg Ethernet_RDm; + reg PushButton; + + // Outputs + wire Ethernet_TDp; + wire Ethernet_TDm; + wire Ethernet_LED_Link; + wire Ethernet_LED_Act; + wire LED_Test; + + + // Instantiate the Unit Under Test (UUT) + ethernet_test uut ( + .clk_in(clk_in), + .Ethernet_RDp(Ethernet_RDp), + .Ethernet_RDm(Ethernet_RDm), + .Ethernet_TDp(Ethernet_TDp), + .Ethernet_TDm(Ethernet_TDm), + .Ethernet_LED_Link(Ethernet_LED_Link), + .Ethernet_LED_Act(Ethernet_LED_Act), + .PushButton(PushButton), + .LED_Test(LED_Test) + ); + + initial begin + // Initialize Inputs + clk_in = 0; + Ethernet_RDp = 0; + Ethernet_RDm = 0; + PushButton = 0; + + // Wait 1000 ns for global reset to finish + #1000; + // 8'h55 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h55 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h55 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h55 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h55 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h55 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h55 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'hD5 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + // 8'h00 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h12 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h34 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h56 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h78 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h90 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + // 8'h00 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h01 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h29 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'hd1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + // 8'h6c + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h98 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + // 8'h08 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h00 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h45 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h00 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h00 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h3c + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h3e + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'hbf + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + // 8'h00 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h00 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h80 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + // 8'h01 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h78 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h83 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + // 8'hc0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + // 8'ha8 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + // 8'h01 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h02 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'hc0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + // 8'ha8 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + // 8'h01 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h2c + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h08 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h00 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h41 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h5b + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h04 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h00 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h08 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h01 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h61 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h62 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h63 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h64 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h65 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h66 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h67 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h68 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h69 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h6a + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h6b + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h6c + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h6d + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h6e + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h6f + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h70 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h71 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h72 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h73 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h74 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h75 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h76 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h77 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h61 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h62 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h63 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h64 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h65 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h66 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h67 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h68 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'h69 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + // 8'hC8 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + // 8'h95 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + // 8'hE6 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + // 8'hE0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 0; Ethernet_RDm = 1; #50; Ethernet_RDp = 1; Ethernet_RDm = 0; // 0 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + #50; Ethernet_RDp = 1; Ethernet_RDm = 0; #50; Ethernet_RDp = 0; Ethernet_RDm = 1; // 1 + + + end + + + parameter PERIOD = 20; + always begin + clk_in = 1'b0; + #(PERIOD/2) clk_in = 1'b1; + #(PERIOD/2); + end + + +endmodule + Index: cheap_ethernet/trunk/Ethernet_test/ethernet_test.xise =================================================================== --- cheap_ethernet/trunk/Ethernet_test/ethernet_test.xise (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/ethernet_test.xise (revision 3) @@ -0,0 +1,411 @@ + + + +
+ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Index: cheap_ethernet/trunk/Ethernet_test/TENBASET_RxD.v =================================================================== --- cheap_ethernet/trunk/Ethernet_test/TENBASET_RxD.v (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/TENBASET_RxD.v (revision 3) @@ -0,0 +1,91 @@ +`timescale 1ns / 1ps +// 10BASE-T receiving interface (based on fpga4fun.com version) +module TENBASET_RxD(clk48, + manchester_data_in, + RcvData, RcvStart, RcvStop, new_bit_available, new_byte_available, end_of_Ethernet_frame, sync2); + +input clk48; +input manchester_data_in; +output [7:0] RcvData; +output RcvStart; +output RcvStop; +output new_bit_available; +output new_byte_available; +output end_of_Ethernet_frame; +output [9:0] sync2; + +reg [7:0] RcvData = 0; +reg RcvStart = 0; +reg RcvStop = 0; +reg new_bit_available = 0; +reg end_of_Ethernet_frame = 0; + +reg [2:0] in_data = 0; +reg [1:0] cnt = 0; +reg [2:0] transition_timeout = 0; +reg [4:0] sync1 = 0; +reg [9:0] sync2 = 0; + +wire new_byte_available = ((new_bit_available) && (sync2[2:0] == 3'h0) && (sync2[9:3] != 0)); + +always @(posedge clk48) begin + in_data <= {in_data[1:0], manchester_data_in}; + new_bit_available <= (cnt == 3); + if (|cnt || (in_data[2] ^ in_data[1])) + cnt <= cnt + 1; + if (cnt == 3) + RcvData <= {in_data[1], RcvData[7:1]}; +end + +///////////////////////////////////////////////// +always @(posedge clk48) begin + if (end_of_Ethernet_frame) + sync1 <= 0; + else if (new_bit_available) + begin + if (!(RcvData == 8'h55 || RcvData == 8'hAA)) // not preamble? + sync1 <= 0; + else if (~&sync1) // if all bits of this "sync1" counter are one, we decide that enough of the preamble + // has been received, so stop counting and wait for "sync2" to detect the SFD + sync1 <= sync1 + 1; // otherwise keep counting + end +end + +always @(posedge clk48) begin + RcvStart <= 0; + if (end_of_Ethernet_frame) + sync2 <= 0; + else if (new_bit_available) + begin + if (|sync2) // if the SFD has already been detected (Ethernet data is coming in) + begin + sync2 <= sync2 + 1; // then count the bits coming in + if (&sync2) + sync2 <= 8; + end + else if (&sync1 && RcvData == 8'hD5) // otherwise, let's wait for the SFD (0xD5) + begin + RcvStart <= 1; + sync2 <= 1; + end + end +end + +///////////////////////////////////////////////// +// if no clock transistion is detected for some time, that's the end of the Ethernet frame + +always @(posedge clk48) begin + if (in_data[2] ^ in_data[1]) + transition_timeout <= 0; + else if (~&cnt) + transition_timeout <= transition_timeout + 1; +end + +always @(posedge clk48) begin + RcvStop <= 0; + end_of_Ethernet_frame <= &transition_timeout; + if (!end_of_Ethernet_frame && &transition_timeout && |sync2) + RcvStop <= 1; +end + +endmodule Index: cheap_ethernet/trunk/Ethernet_test/DCMMAIN_arwz.ucf =================================================================== --- cheap_ethernet/trunk/Ethernet_test/DCMMAIN_arwz.ucf (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/DCMMAIN_arwz.ucf (revision 3) @@ -0,0 +1,17 @@ +# Generated by Xilinx Architecture Wizard +# --- UCF Template Only --- +# Cut and paste these attributes into the project's UCF file, if desired +INST DCM_SP_INST CLK_FEEDBACK = 1X; +INST DCM_SP_INST CLKDV_DIVIDE = 5.0; +INST DCM_SP_INST CLKFX_DIVIDE = 5; +INST DCM_SP_INST CLKFX_MULTIPLY = 2; +INST DCM_SP_INST CLKIN_DIVIDE_BY_2 = FALSE; +INST DCM_SP_INST CLKIN_PERIOD = 20.000; +INST DCM_SP_INST CLKOUT_PHASE_SHIFT = NONE; +INST DCM_SP_INST DESKEW_ADJUST = SYSTEM_SYNCHRONOUS; +INST DCM_SP_INST DFS_FREQUENCY_MODE = LOW; +INST DCM_SP_INST DLL_FREQUENCY_MODE = LOW; +INST DCM_SP_INST DUTY_CYCLE_CORRECTION = TRUE; +INST DCM_SP_INST FACTORY_JF = C080; +INST DCM_SP_INST PHASE_SHIFT = 0; +INST DCM_SP_INST STARTUP_WAIT = FALSE; Index: cheap_ethernet/trunk/Ethernet_test/TENBASET_TxD.v =================================================================== --- cheap_ethernet/trunk/Ethernet_test/TENBASET_TxD.v (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/TENBASET_TxD.v (revision 3) @@ -0,0 +1,65 @@ +`timescale 1ns / 1ps +// 10BASE-T transmit interface (based on fpga4fun.com version) +module TENBASET_TxD(clk20, + SendingPacket, pkt_data, rdaddress, ShiftData, ShiftCount, CRCflush, CRC, readram, + Ethernet_TDp, Ethernet_TDm); + +input clk20; // a 20MHz clock (this code won't work with a different frequency) +input [7:0] pkt_data; +output [10:0] rdaddress; +input SendingPacket; +output ShiftData; +output [3:0] ShiftCount; +input CRCflush; +input CRC; +output readram; +output Ethernet_TDp, Ethernet_TDm; // the two differential 10BASE-T outputs + + +reg [10:0] rdaddress = 0; +reg [3:0] ShiftCount = 0; +wire readram = (ShiftCount == 15); +reg [7:0] ShiftData = 0; +reg [17:0] LinkPulseCount = 0; +reg LinkPulse = 0; +reg SendingPacketData = 0; +reg [2:0] idlecount = 0; +reg qo = 0; +reg qoe = 0; +reg Ethernet_TDp = 0; +reg Ethernet_TDm = 0; + + +////////////////////////////////////////////////////////////////////// +// 10BASE-T's magic + +always @(posedge clk20) begin + ShiftCount <= SendingPacket ? ShiftCount + 1 : 15; + if (ShiftCount == 15) + rdaddress <= SendingPacket ? rdaddress + 1 : 0; + if (ShiftCount[0]) + ShiftData <= readram ? pkt_data : {1'b0, ShiftData[7:1]}; +end + +// generate the NLP +always @(posedge clk20) begin + LinkPulseCount <= SendingPacket ? 0 : LinkPulseCount + 1; + LinkPulse <= &LinkPulseCount[17:1]; +end + +wire dataout = CRCflush ? CRC : ShiftData[0]; + +// TP_IDL, shift-register and manchester encoder +always @(posedge clk20) begin + SendingPacketData <= SendingPacket; + if (SendingPacketData) + idlecount <= 0; + else if (~&idlecount) + idlecount <= idlecount + 1; + qo <= SendingPacketData ? ~dataout ^ ShiftCount[0] : 1; + qoe <= SendingPacketData | LinkPulse | (idlecount < 6); + Ethernet_TDp <= (qoe ? qo : 1'b0); + Ethernet_TDm <= (qoe ? ~qo : 1'b0); +end + +endmodule Index: cheap_ethernet/trunk/Ethernet_test/ethernet_test.ucf =================================================================== --- cheap_ethernet/trunk/Ethernet_test/ethernet_test.ucf (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/ethernet_test.ucf (revision 3) @@ -0,0 +1,26 @@ +NET "clk_in" LOC = P183; +NET "clk_in" TNM_NET = "clk_in"; +TIMESPEC TS_CLK_IN = PERIOD "clk_in" 20000 ps; + +#NET "Ethernet_TDm" LOC = P55; +#NET "Ethernet_TDp" LOC = P61; +NET "Ethernet_TDp" DRIVE = 6; +NET "Ethernet_TDm" DRIVE = 6; + +NET "Ethernet_TDp" LOC = P82; +NET "Ethernet_TDm" LOC = P83; + +NET "Ethernet_RDp" IOSTANDARD = DIFF_HSTL_III_18; +NET "Ethernet_RDp" LOC = P62; +NET "Ethernet_RDm" IOSTANDARD = DIFF_HSTL_III_18; +NET "Ethernet_RDm" LOC = P63; + +NET "Ethernet_LED_Link" LOC = P84; +NET "Ethernet_LED_Link" DRIVE = 2; +NET "Ethernet_LED_Act" LOC = P86; +NET "Ethernet_LED_Act" DRIVE = 2; + +NET "LED_Test" LOC = P78; + +NET "pushbutton" PULLDOWN; +NET "pushbutton" LOC = P26; Index: cheap_ethernet/trunk/Ethernet_test/ethernet_test.ipf =================================================================== Cannot display: file marked as a binary type. svn:mime-type = application/octet-stream Index: cheap_ethernet/trunk/Ethernet_test/ethernet_test.ipf =================================================================== --- cheap_ethernet/trunk/Ethernet_test/ethernet_test.ipf (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/ethernet_test.ipf (revision 3)
cheap_ethernet/trunk/Ethernet_test/ethernet_test.ipf Property changes : Added: svn:mime-type ## -0,0 +1 ## +application/octet-stream \ No newline at end of property Index: cheap_ethernet/trunk/Ethernet_test/EthernetRX.v =================================================================== --- cheap_ethernet/trunk/Ethernet_test/EthernetRX.v (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/EthernetRX.v (revision 3) @@ -0,0 +1,284 @@ +`timescale 1ns / 1ps +`include "const.vh" +////////////////////////////////////////////////////////////////////////////////// +// Company: +// Engineer: Ivan Krutov (grvfrv@gmail.com) +// +// Create Date: 10:39:30 08/29/2012 +// Design Name: +// Module Name: EthernetRX +// Project Name: Cheap Ethernet +// Target Devices: Spartan 3E +// Tool versions: ISE 14.1 +// Description: Base functional or ARP, ICMP, UDP +// +// Dependencies: TENBASET_RxD.v, const.vh +// +// Revision: +// Revision 0.9 beta +// Additional Comments: +// +////////////////////////////////////////////////////////////////////////////////// +module EthernetRX(clk50, + Ethernet_RD, + HostIP, HostMAC, HostPort, + RcvStart, RcvStop, RcvData, RcvDataLen, RcvDataPos, RcvDataAvailable, RcvCRCValid, ReceivingPacket, + RcvPacketType, RcvICMPId, RcvICMPSeq, RcvICMPCRC, + RcvFromIP, RcvFromMAC, RcvFromPort); + +input clk50; +input Ethernet_RD; +input [31:0] HostIP; +input [47:0] HostMAC; +input [15:0] HostPort; + +output RcvStart; +output RcvStop; +output [7:0] RcvData; +output [9:0] RcvDataLen; +output [9:0] RcvDataPos; +output RcvDataAvailable; +output [31:0] RcvFromIP; +output [47:0] RcvFromMAC; +output [15:0] RcvFromPort; +output RcvCRCValid; +output ReceivingPacket; +output [2:0] RcvPacketType; +output [15:0] RcvICMPId; +output [15:0] RcvICMPSeq; +output [15:0] RcvICMPCRC; + + +wire [7:0] RcvData; +wire RcvStop; +wire new_bit_available; +wire new_byte_available; +wire end_of_Ethernet_frame; +wire [9:0] sync2; +reg [31:0] RcvFromIP = 0; +reg [47:0] RcvFromMAC = 0; +reg [15:0] RcvFromPort = 0; +//reg RcvStart = 0; +reg [9:0] RcvDataLen = 0; +reg [9:0] RcvDataPos = 0; +reg RcvDataAvailable = 0; +reg RcvUserData = 0; +reg RcvCRCValid = 0; +reg [2:0] RcvPacketType = 0; +reg [15:0] RcvICMPId = 0; +reg [15:0] RcvICMPSeq = 0; +reg [15:0] RcvICMPCRC = 0; + +reg IgnorePacket = 0; +reg [7:0] tmp = 0; +reg CRCinit = 0; +reg [31:0] CRC = 0; +reg [4:0] CRCcnt = 0; +reg CRCflush = 0; +reg MACValid = 0; +reg BroadcastValid = 0; +reg Broadcast = 0; +reg ARP = 0; +reg ICMP = 0; + +assign ReceivingPacket = |sync2[9:3]; //~end_of_Ethernet_frame; + +TENBASET_RxD TENBASET_RxD1 (clk50, + Ethernet_RD, + RcvData, RcvStart, RcvStop, new_bit_available, new_byte_available, end_of_Ethernet_frame, sync2); + +// generate the CRC32 +wire CRCinput = CRCflush ? 0 : RcvData[7] ^ CRC[31]; +always @(posedge clk50) begin + CRCinit <= (!RcvUserData && sync2 == 0); + if (new_bit_available) + CRC <= CRCinit ? ~0 : ({CRC[30:0], 1'b0} ^ ({32{CRCinput}} & 32'h04C11DB7)); + + if (end_of_Ethernet_frame) + begin + CRCcnt <= 0; + RcvCRCValid <= 0; + end + + if (new_bit_available && CRCflush && (~CRC[31] == RcvData[7])) + begin + CRCcnt <= CRCcnt + 1; + if (&CRCcnt) + RcvCRCValid <= 1; + end +end + +// Packet disasembling +always @(posedge clk50) begin + RcvDataAvailable <= 0; + if (end_of_Ethernet_frame) + begin + BroadcastValid <= 1; + MACValid <= 1; + ARP <= 0; + ICMP <= 0; + Broadcast <= 0; + CRCflush <= 0; + RcvUserData <= 0; + RcvDataPos = 0; + IgnorePacket <= 0; + end + + if (new_byte_available && !IgnorePacket) + begin + if (!RcvUserData) + case (sync2[9:3]) + 01: begin + RcvPacketType <= `Unknown; + if (RcvData != 8'hFF) + BroadcastValid <= 0; + if (RcvData != HostMAC[47:40]) + MACValid <= 0; + end + 02: begin + if (RcvData != 8'hFF) + BroadcastValid <= 0; + if (RcvData != HostMAC[39:32]) + MACValid <= 0; end + 03: begin + if (RcvData != 8'hFF) + BroadcastValid <= 0; + if (RcvData != HostMAC[31:24]) + MACValid <= 0; + end + 04: begin + if (RcvData != 8'hFF) + BroadcastValid <= 0; + if (RcvData != HostMAC[23:16]) + MACValid <= 0; + end + 05: begin + if (RcvData != 8'hFF) + BroadcastValid <= 0; + if (RcvData != HostMAC[15:8]) + MACValid <= 0; + end + 06: begin + if (RcvData != 8'hFF) + BroadcastValid <= 0; + if (RcvData != HostMAC[7:0]) + MACValid <= 0; + end + 07: begin + RcvFromMAC[47:40] <= RcvData; + if (BroadcastValid) + Broadcast <= 1; + else if (!MACValid) + IgnorePacket <= 1; + end + 08: RcvFromMAC[39:32] <= RcvData; + 09: RcvFromMAC[31:24] <= RcvData; + 10: RcvFromMAC[23:16] <= RcvData; + 11: RcvFromMAC[15:8] <= RcvData; + 12: RcvFromMAC[7:0] <= RcvData; + + 13: if (RcvData != 8) IgnorePacket <= 1; // protocol type + 14: if (RcvData == 6) ARP <= 1; + 17: tmp <= RcvData; // ICMP length + 18: RcvDataLen <= {tmp, RcvData} - 28; // ICMP length + 21: tmp <= RcvData; + 22: if (ARP) + if (tmp == 8'h00) + begin + RcvDataLen <= 18; + if (RcvData == 8'h01 && Broadcast) + RcvPacketType <= `ARPReq; + else if (RcvData == 8'h02) + RcvPacketType <= `ARPReply; + end + 23: if (ARP) RcvFromMAC[47:40] <= RcvData; + 24: if (ARP) + RcvFromMAC[39:32] <= RcvData; + else if (RcvData == 1) + ICMP <= 1; + else if (RcvData == 17) + RcvPacketType <= `UDP; + 25: if (ARP) RcvFromMAC[31:24] <= RcvData; + 26: if (ARP) RcvFromMAC[23:16] <= RcvData; + 27: if (ARP) + RcvFromMAC[15:8] <= RcvData; + else + RcvFromIP[31:24] <= RcvData; + 28: if (ARP) + RcvFromMAC[7:0] <= RcvData; + else + RcvFromIP[23:16] <= RcvData; + 29: if (ARP) + RcvFromIP[31:24] <= RcvData; + else + RcvFromIP[15:8] <= RcvData; + 30: if (ARP) + RcvFromIP[23:16] <= RcvData; + else + RcvFromIP[7:0] <= RcvData; + 31: if (ARP) RcvFromIP[15:8] <= RcvData; + 32: if (ARP) RcvFromIP[7:0] <= RcvData; + + 35: if (ICMP) begin + if (RcvData == 8) + RcvPacketType <= `ICMPReq; + end + else + RcvFromPort[15:8] <= RcvData; + 36: RcvFromPort[7:0] <= RcvData; + 37: if (!ARP) + if (ICMP) + RcvICMPCRC[15:8] <= RcvData; + else if (RcvData != HostPort[15:8]) + IgnorePacket <= 1; + 38: if (!ARP) + if (ICMP) + RcvICMPCRC[7:0] <= RcvData; + else if (RcvData != HostPort[7:0]) + IgnorePacket <= 1; + 39: if (ARP) + begin + if (RcvData != HostIP[31:24]) + IgnorePacket <= 1; + end + else if (ICMP) + RcvICMPId[15:8] <= RcvData; + else + tmp <= RcvData; + 40: if (ARP) begin + if (RcvData != HostIP[23:16]) + IgnorePacket <= 1; + end + else if (ICMP) + RcvICMPId[7:0] <= RcvData; + else + RcvDataLen <= {tmp, RcvData} - 8; + 41: if (ARP) + begin + if (RcvData != HostIP[15:8]) + IgnorePacket <= 1; + end + else if (ICMP) + RcvICMPSeq[15:8] <= RcvData; + 42: if (ARP) begin + if (RcvData != HostIP[7:0]) + IgnorePacket <= 1; + end + else if (ICMP) + RcvICMPSeq[7:0] <= RcvData; + 43: begin + RcvDataAvailable <= 1; + RcvUserData <= 1; + end + endcase + else + begin + RcvDataAvailable <= 1; + RcvDataPos = RcvDataPos + 1; + if (RcvDataPos + 1 == RcvDataLen) + CRCflush <= 1; + end + end +end + +endmodule Index: cheap_ethernet/trunk/Ethernet_test/ethernet_test_summary.html =================================================================== --- cheap_ethernet/trunk/Ethernet_test/ethernet_test_summary.html (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/ethernet_test_summary.html (revision 3) @@ -0,0 +1,79 @@ +Xilinx Design Summary + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ethernet_test Project Status
Project File:Ethernet_test.xiseParser Errors: No Errors
Module Name:ethernet_testImplementation State:New
Target Device:xc3s500e-4pq208
  • Errors:
 
Product Version:ISE 14.1
  • Warnings:
 
Design Goal:Balanced
  • Routing Results:
Design Strategy:Xilinx Default (unlocked)
  • Timing Constraints:
 
Environment: 
  • Final Timing Score:
  
+ + + + + + + + + + + + 
+ + + + + + + + + + +
Detailed Reports [-]
Report NameStatusGeneratedErrorsWarningsInfos
Synthesis Report     
Translation Report     
Map Report     
Place and Route Report     
Power Report     
Post-PAR Static Timing Report     
Bitgen Report     

+ + +
Secondary Reports [-]
Report NameStatusGenerated
+ + +
Date Generated: 09/01/2012 - 00:02:44
+ \ No newline at end of file Index: cheap_ethernet/trunk/Ethernet_test/EthernetTX.v =================================================================== --- cheap_ethernet/trunk/Ethernet_test/EthernetTX.v (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/EthernetTX.v (revision 3) @@ -0,0 +1,157 @@ +`timescale 1ns / 1ps +`include "const.vh" +////////////////////////////////////////////////////////////////////////////////// +// Company: +// Engineer: Ivan Krutov (grvfrv@gmail.com) +// +// Create Date: 22:59:14 08/28/2012 +// Design Name: +// Module Name: EthernetTX +// Project Name: Cheap Ethernet +// Target Devices: Spartan 3E +// Tool versions: ISE 14.1 +// Description: Base functional or ARP, ICMP, UDP +// +// Dependencies: TENBASET_TxD.v, const.vh +// +// Revision: +// Revision 0.9 beta +// Additional Comments: +// +////////////////////////////////////////////////////////////////////////////////// +module EthernetTX(clk20, + HostIP, RemoteIP, HostMAC, RemoteMAC, HostPort, RemotePort, + SendStart, SendDataReq, SendData, SendDataLen, SendDataPos, SendingPacket, + SendPacketType, SendICMPId, SendICMPSeq, SendICMPCRC, + Ethernet_TDp, Ethernet_TDm); + +input clk20; +input [31:0] HostIP; +input [31:0] RemoteIP; +input [47:0] HostMAC; +input [47:0] RemoteMAC; +input [15:0] HostPort; +input [15:0] RemotePort; +input SendStart; +input [7:0] SendData; +input [9:0] SendDataLen; +output [9:0] SendDataPos; +output SendingPacket; +output SendDataReq; +input [2:0] SendPacketType; +input [15:0] SendICMPId; +input [15:0] SendICMPSeq; +input [15:0] SendICMPCRC; +output Ethernet_TDp, Ethernet_TDm; + +reg [7:0] pkt_data = 0; + +reg SendingPacket = 0; +wire [10:0] rdaddress; +wire [7:0] ShiftData; +wire [3:0] ShiftCount; +wire readram; + +wire [9:0] SendDataPos = (rdaddress > 12'h32) ? (rdaddress - 12'h32) : 0; +wire [15:0] IPHLen = 8'd20 + 8'd8 + SendDataLen; +wire [15:0] UDPHLen = 8'd8 + SendDataLen; + +reg [31:0] CRC = 0; +reg CRCflush = 0; +reg CRCinit = 0; + +assign SendDataReq = (rdaddress > 8'h30) && readram; + +// calculate the IP checksum, big-endian style +wire [18:0] IPchecksum1 = (SendPacketType == `ICMPReply ? 19'hC51D : 19'hC52D) + SendDataLen + + HostIP[31:16] + HostIP[15:0] + RemoteIP[31:16] + RemoteIP[15:0]; +wire [15:0] IPchecksum2 = ~((IPchecksum1[15:0] + IPchecksum1[18:16])); + + +TENBASET_TxD TENBASET_TxD1 (clk20, + SendingPacket, pkt_data, rdaddress, ShiftData, ShiftCount, CRCflush, ~CRC[31], readram, + Ethernet_TDp, Ethernet_TDm); + + +always @(posedge clk20) begin + if (SendStart) + SendingPacket <= 1; + else if (ShiftCount == 14 && rdaddress == (54 + SendDataLen)) + SendingPacket <= 0; +end + +// generate the CRC32 +wire CRCinput = CRCflush ? 0 : (ShiftData[0] ^ CRC[31]); +always @(posedge clk20) begin + if (CRCflush) + CRCflush <= SendingPacket; + else if (readram) + CRCflush <= (rdaddress == (50 + SendDataLen)); + if (readram) + CRCinit <= (rdaddress == 7); + if (ShiftCount[0]) + CRC <= CRCinit ? ~0 : ({CRC[30:0],1'b0} ^ ({32{CRCinput}} & 32'h04C11DB7)); +end + +wire ARP = (SendPacketType == `ARPReply || SendPacketType == `ARPReq); + +always @(posedge clk20) +case (rdaddress) +// Ethernet preamble + 12'h00: pkt_data <= 8'h55; + 12'h01: pkt_data <= 8'h55; + 12'h02: pkt_data <= 8'h55; + 12'h03: pkt_data <= 8'h55; + 12'h04: pkt_data <= 8'h55; + 12'h05: pkt_data <= 8'h55; + 12'h06: pkt_data <= 8'h55; + 12'h07: pkt_data <= 8'hD5; +// Ethernet header + 12'h08: pkt_data <= SendPacketType == `ARPReq ? 8'hFF : RemoteMAC[47:40]; + 12'h09: pkt_data <= SendPacketType == `ARPReq ? 8'hFF : RemoteMAC[39:32]; + 12'h0A: pkt_data <= SendPacketType == `ARPReq ? 8'hFF : RemoteMAC[31:24]; + 12'h0B: pkt_data <= SendPacketType == `ARPReq ? 8'hFF : RemoteMAC[23:16]; + 12'h0C: pkt_data <= SendPacketType == `ARPReq ? 8'hFF : RemoteMAC[15:8]; + 12'h0D: pkt_data <= SendPacketType == `ARPReq ? 8'hFF : RemoteMAC[7:0]; + 12'h0E: pkt_data <= HostMAC[47:40]; + 12'h0F: pkt_data <= HostMAC[39:32]; + 12'h10: pkt_data <= HostMAC[31:24]; + 12'h11: pkt_data <= HostMAC[23:16]; + 12'h12: pkt_data <= HostMAC[15:8]; + 12'h13: pkt_data <= HostMAC[7:0]; +// IP header / ARP / ICMP + 12'h14: pkt_data <= 8'h08; + 12'h15: pkt_data <= ARP ? 8'h06 : 8'h00; + 12'h16: pkt_data <= ARP ? 8'h00 : 8'h45; + 12'h17: pkt_data <= ARP ? 8'h01 : 8'h00; + 12'h18: pkt_data <= ARP ? 8'h08 : IPHLen[15:8]; + 12'h19: pkt_data <= ARP ? 8'h00 : IPHLen[7:0]; + 12'h1A: pkt_data <= ARP ? 8'h06 : 8'h00; + 12'h1B: pkt_data <= ARP ? 8'h04 : 8'h00; + 12'h1C: pkt_data <= 8'h00; + 12'h1D: pkt_data <= SendPacketType == `ARPReply ? 8'h02 : SendPacketType == `ARPReq ? 8'h01 : 8'h00; + 12'h1E: pkt_data <= ARP ? HostMAC[47:40] : 8'h80; + 12'h1F: pkt_data <= ARP ? HostMAC[39:32] : SendPacketType == `ICMPReply ? 8'h01 : 8'h11; + 12'h20: pkt_data <= ARP ? HostMAC[31:24] : IPchecksum2[15:8]; + 12'h21: pkt_data <= ARP ? HostMAC[23:16] : IPchecksum2[ 7:0]; + 12'h22: pkt_data <= ARP ? HostMAC[15:8] : HostIP[31:24]; + 12'h23: pkt_data <= ARP ? HostMAC[7:0] : HostIP[23:16]; + 12'h24: pkt_data <= ARP ? HostIP[31:24] : HostIP[15:8]; + 12'h25: pkt_data <= ARP ? HostIP[23:16] : HostIP[7:0]; + 12'h26: pkt_data <= ARP ? HostIP[15:8] : RemoteIP[31:24]; + 12'h27: pkt_data <= ARP ? HostIP[7:0] : RemoteIP[23:16]; + 12'h28: pkt_data <= SendPacketType == `ARPReply ? RemoteMAC[47:40] : SendPacketType == `ARPReq ? 8'h00 : RemoteIP[15:8]; + 12'h29: pkt_data <= SendPacketType == `ARPReply ? RemoteMAC[39:32] : SendPacketType == `ARPReq ? 8'h00 : RemoteIP[7:0]; +// UDP header / ARP / ICMP + 12'h2A: pkt_data <= SendPacketType == `ARPReply ? RemoteMAC[31:24] : SendPacketType == `ICMPReply ? 8'h00 : SendPacketType == `ARPReq ? 8'h00 : HostPort[15:8]; + 12'h2B: pkt_data <= SendPacketType == `ARPReply ? RemoteMAC[23:16] : HostPort[7:0]; + 12'h2C: pkt_data <= SendPacketType == `ARPReply ? RemoteMAC[15:8] : SendPacketType == `ICMPReply ? SendICMPCRC[15:8] : SendPacketType == `ARPReq ? 8'h00 : RemotePort[15:8]; + 12'h2D: pkt_data <= SendPacketType == `ARPReply ? RemoteMAC[7:0] : SendPacketType == `ICMPReply ? SendICMPCRC[7:0] : RemotePort[7:0]; + 12'h2E: pkt_data <= ARP ? RemoteIP[31:24] : SendPacketType == `ICMPReply ? SendICMPId[15:8] : UDPHLen[15:8]; + 12'h2F: pkt_data <= ARP ? RemoteIP[23:16] : SendPacketType == `ICMPReply ? SendICMPId[7:0] : UDPHLen[7:0]; + 12'h30: pkt_data <= ARP ? RemoteIP[15:8] : SendPacketType == `ICMPReply ? SendICMPSeq[15:8] : 8'h00; + 12'h31: pkt_data <= ARP ? RemoteIP[7:0] : SendPacketType == `ICMPReply ? SendICMPSeq[7:0] : 8'h00; + default: pkt_data <= ARP ? 8'h00 : SendData; +endcase + +endmodule Index: cheap_ethernet/trunk/Ethernet_test/_xmsgs/pn_parser.xmsgs =================================================================== --- cheap_ethernet/trunk/Ethernet_test/_xmsgs/pn_parser.xmsgs (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/_xmsgs/pn_parser.xmsgs (revision 3) @@ -0,0 +1,39 @@ + + + + + + + + + + +Analyzing Verilog file "C:/Projects/Xilinx/Ethernet_test/EthernetRX.v" into library work + + +"C:/Projects/Xilinx/Ethernet_test/EthernetRX.v" Line 2. Include file found: 'C:/Projects/Xilinx/Ethernet/const.vh' in file "C:/Projects/Xilinx/Ethernet_test/EthernetRX.v" line 2 + + + +Analyzing Verilog file "C:/Projects/Xilinx/Ethernet_test/EthernetTX.v" into library work + + +"C:/Projects/Xilinx/Ethernet_test/EthernetTX.v" Line 2. Include file found: 'C:/Projects/Xilinx/Ethernet/const.vh' in file "C:/Projects/Xilinx/Ethernet_test/EthernetTX.v" line 2 + + + +Analyzing Verilog file "C:/Projects/Xilinx/Ethernet_test/TENBASET_RxD.v" into library work + + +Analyzing Verilog file "C:/Projects/Xilinx/Ethernet_test/TENBASET_TxD.v" into library work + + +Analyzing Verilog file "C:/Projects/Xilinx/Ethernet_test/ethernet_test.v" into library work + + +"C:/Projects/Xilinx/Ethernet_test/ethernet_test.v" Line 2. Include file found: 'C:/Projects/Xilinx/Ethernet/const.vh' in file "C:/Projects/Xilinx/Ethernet_test/ethernet_test.v" line 2 + + + + + Index: cheap_ethernet/trunk/Ethernet_test/const.vh =================================================================== --- cheap_ethernet/trunk/Ethernet_test/const.vh (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/const.vh (revision 3) @@ -0,0 +1,20 @@ +`ifndef _const_ +`define _const_ + +// Packet Types +`define Unknown 0 +`define UDP 1 +`define ARPReq 2 +`define ARPReply 3 +`define ICMPReq 4 +`define ICMPReply 5 + +// Commands +`define CmdDone 0 +`define CmdStatus 1 +`define CmdLEDCtrl 2 +`define CmdSetConfig 3 +`define CmdSwChanged 4 +`define CmdDataEcho 5 + +`endif Index: cheap_ethernet/trunk/Ethernet_test/Ethernet_test.gise =================================================================== --- cheap_ethernet/trunk/Ethernet_test/Ethernet_test.gise (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/Ethernet_test.gise (revision 3) @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + 11.1 + + + + + + + + + + + + + Index: cheap_ethernet/trunk/Ethernet_test/iseconfig/ethernet_test.xreport =================================================================== --- cheap_ethernet/trunk/Ethernet_test/iseconfig/ethernet_test.xreport (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/iseconfig/ethernet_test.xreport (revision 3) @@ -0,0 +1,215 @@ + + +
+ 2012-09-01T00:02:45 + ethernet_test + Unknown + C:/Projects/Xilinx/Ethernet_test/iseconfig/ethernet_test.xreport + C:/Projects/Xilinx/Ethernet_test + 2012-09-01T00:02:18 + false +
+ + + + + + + + + + + + + + + + + + + + + + + +
Index: cheap_ethernet/trunk/Ethernet_test/iseconfig/Ethernet_test.projectmgr =================================================================== --- cheap_ethernet/trunk/Ethernet_test/iseconfig/Ethernet_test.projectmgr (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/iseconfig/Ethernet_test.projectmgr (revision 3) @@ -0,0 +1,65 @@ + + + + + + + + + 2 + /Automatic `includes + /ethernet_test C:|Projects|Xilinx|Ethernet_test|ethernet_test.v + + + ethernet_test (C:/Projects/Xilinx/Ethernet_test/ethernet_test.v) + + 0 + 0 + 000000ff000000000000000100000001000000000000000000000000000000000202000000010000000100000064000000ef000000020000000000000000000000000200000064ffffffff000000810000000300000002000000ef0000000100000003000000000000000100000003 + false + ethernet_test (C:/Projects/Xilinx/Ethernet_test/ethernet_test.v) + + + + 1 + Configure Target Device + Design Utilities + Implement Design + Synthesize - XST + User Constraints + + + + + 0 + 0 + 000000ff000000000000000100000001000000000000000000000000000000000000000000000000db000000010000000100000000000000000000000064ffffffff000000810000000000000001000000db0000000100000000 + false + + + + + 1 + + + 0 + 0 + 000000ff0000000000000001000000000000000001000000000000000000000000000000000000029f000000040101000100000000000000000000000064ffffffff000000810000000000000004000000930000000100000000000000d70000000100000000000000660000000100000000000000cf0000000100000000 + false + const.vh + + + + 1 + work + + + 0 + 0 + 000000ff00000000000000010000000000000000010000000000000000000000000000000000000109000000010001000100000000000000000000000064ffffffff000000810000000000000001000001090000000100000000 + false + work + + 000000ff00000000000000020000011b0000011b01000000050100000002 + Implementation + Index: cheap_ethernet/trunk/Ethernet_test/DCMMAIN.v =================================================================== --- cheap_ethernet/trunk/Ethernet_test/DCMMAIN.v (nonexistent) +++ cheap_ethernet/trunk/Ethernet_test/DCMMAIN.v (revision 3) @@ -0,0 +1,84 @@ +//////////////////////////////////////////////////////////////////////////////// +// Copyright (c) 1995-2012 Xilinx, Inc. All rights reserved. +//////////////////////////////////////////////////////////////////////////////// +// ____ ____ +// / /\/ / +// /___/ \ / Vendor: Xilinx +// \ \ \/ Version : 14.1 +// \ \ Application : xaw2verilog +// / / Filename : DCMMAIN.v +// /___/ /\ Timestamp : 08/30/2012 14:04:33 +// \ \ / \ +// \___\/\___\ +// +//Command: xaw2verilog -intstyle C:/Projects/Xilinx/Ethernet/ipcore_dir/DCMMAIN.xaw -st DCMMAIN.v +//Design Name: DCMMAIN +//Device: xc3s500e-4pq208 +// +// Module DCMMAIN +// Generated by Xilinx Architecture Wizard +// Written for synthesis tool: XST +// Period Jitter (unit interval) for block DCM_SP_INST = 0.02 UI +// Period Jitter (Peak-to-Peak) for block DCM_SP_INST = 1.18 ns +`timescale 1ns / 1ps + +module DCMMAIN(CLKIN_IN, + RST_IN, + CLKDV_OUT, + CLKFX_OUT, + CLKIN_IBUFG_OUT, + CLK0_OUT, + LOCKED_OUT); + + input CLKIN_IN; + input RST_IN; + output CLKDV_OUT; + output CLKFX_OUT; + output CLKIN_IBUFG_OUT; + output CLK0_OUT; + output LOCKED_OUT; + + wire CLKDV_BUF; + wire CLKFB_IN; + wire CLKFX_BUF; + wire CLKIN_IBUFG; + wire CLK0_BUF; + wire GND_BIT; + + assign GND_BIT = 0; + assign CLKIN_IBUFG_OUT = CLKIN_IBUFG; + assign CLK0_OUT = CLKFB_IN; + BUFG CLKDV_BUFG_INST (.I(CLKDV_BUF), + .O(CLKDV_OUT)); + BUFG CLKFX_BUFG_INST (.I(CLKFX_BUF), + .O(CLKFX_OUT)); + IBUFG CLKIN_IBUFG_INST (.I(CLKIN_IN), + .O(CLKIN_IBUFG)); + BUFG CLK0_BUFG_INST (.I(CLK0_BUF), + .O(CLKFB_IN)); + DCM_SP #( .CLK_FEEDBACK("1X"), .CLKDV_DIVIDE(5.0), .CLKFX_DIVIDE(5), + .CLKFX_MULTIPLY(2), .CLKIN_DIVIDE_BY_2("FALSE"), + .CLKIN_PERIOD(20.000), .CLKOUT_PHASE_SHIFT("NONE"), + .DESKEW_ADJUST("SYSTEM_SYNCHRONOUS"), .DFS_FREQUENCY_MODE("LOW"), + .DLL_FREQUENCY_MODE("LOW"), .DUTY_CYCLE_CORRECTION("TRUE"), + .FACTORY_JF(16'hC080), .PHASE_SHIFT(0), .STARTUP_WAIT("FALSE") ) + DCM_SP_INST (.CLKFB(CLKFB_IN), + .CLKIN(CLKIN_IBUFG), + .DSSEN(GND_BIT), + .PSCLK(GND_BIT), + .PSEN(GND_BIT), + .PSINCDEC(GND_BIT), + .RST(RST_IN), + .CLKDV(CLKDV_BUF), + .CLKFX(CLKFX_BUF), + .CLKFX180(), + .CLK0(CLK0_BUF), + .CLK2X(), + .CLK2X180(), + .CLK90(), + .CLK180(), + .CLK270(), + .LOCKED(LOCKED_OUT), + .PSDONE(), + .STATUS()); +endmodule

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.